
Simba
3 поста
3 поста
Всем привет.
В первой статье я рассказал свою историю, но сегодня я хочу поговорить о том, что по-настоящему меня волнует. О той огромной ответственности, которая лежит на любом, кто пытается скрестить психологию и искусственный интеллект.
Новости за последнее время показывают, что AI становится мощнейшим инструментом, но в то же время опасным зеркалом. ИИ часто отражает и усиливает наши внутренние проблемы, тем самым загоняет в цикл навязчивых мыслей, иногда подтолкивая к краю.
Когда я решил посвятить себя созданию AI-помощника Simba, было ясно:
главная задача сделать AI безопасным
Я не строю игрушку. Я всерьез пытаюсь создать персонального помощника, который будет помогать людям анализировать себя и планировать шаги к улучшению жизни. Поэтому хочу поделиться с думающей и критичной аудиторией теми принципами, которые закложены в основу проекта. А так же, спросить совета.
Первое, что делают те кто работает с психикой, создают безопасное пространство. Не бросают клиента с порога в анализ детских травм.
Simba устроен так же встречает, легким, ни к чему не обязывающим диалогом.
Задача познакомиться, а не нагрузить.
Но для тех, кто готов пойти глубже, бот устраивает сессию самоанализа. По запросу "включается" особый режим "Профайлер". Цель помочь человеку составить карту внутреннего мира для себя самого. В мягкой, диалоговой форме Simba помогает посмотреть на сферы жизни, оценить текущий эмоциональный фон, нащупать внутренние опоры.
Это шаг, для тех, кто хочет лучше понять себя.
Запросы:
"Я хочу похудеть" или "хочу больше зарабатывать" — это редко о деньгах или лишнем весе.
Чаще— это желание нравиться себе, потребность в безопасности или стремление к свободе.
Поэтому, когда пользователь готов сформулировать цель, с ним начинает работать "AI-Коуч". Задача помочь докопаться до истинной мотивации.
Задать вопросы, которые помогают отделить навязанные обществом цели от собственных, глубинных ценностей.
Только когда появляется ясное "Зачем?", пора переходить к "Что?". Этот принцип не дает пользователю броситься выполнять цели, которые на самом деле не нужны и которые уже завтра забросит, почувствовав себя неудачником.
И вот здесь начинается магия, которая в КПТ называется "поведенческая активация". Когда цель ясна, на сцену выходит "AI-Менеджер".
Задача помочь разбить пугающую цель на микроскопические первые шаги.
Не "Написать книгу", а "Открыть ноутбук и написать одно предложение".
Не "Начать бегать", а "Достать кроссовки и поставить у двери".
Это нужно чтобы разорвать порочный круг "тревога -> паралич -> еще тревога". Выполнение такого крошечного, не требующего воли действия дает мозгу микро-дозу дофамина и создает импульс. Это превращает борьбу с собой в игру, в которой легко побеждать.
Постоянно развивая продукт пришло понимание куда двигаться дальше. Хочу создать безопасный инструмент, цифровой дневник самонаблюдения, чтобы в конце дня человек мог в спокойном диалоге проанализировать прошедшие события, реакции и чувства, например записать голосовое на пол часа в котором выговорит, что накипело, или просто поговорить с кем-то поддерживающим.
И здесь я зашел на территорию, где вовсе не хочется рисковать. Поэтому прошу совета, как экспертов так и неравнодушных людей.
Какие "грабли" здесь самые опасные? Как не превратить полезную рефлексию в деструктивное самокопание и бесконечное пережевывание мыслей?
На месте клиента. Какие вопросы в конце трудного дня ему бы действительно помогли, а какие — лишь усугубили бы его состояние?
Где проходит этическая черта? Может, стоит программно запрещать боту обсуждать определенные темы или мягко предлагать обратиться к специалисту, если диалог становится слишком тревожным?
Ваши мысли с предостережениями или критикой подхода.
Я строю этот проект не как всезнающий гуру, а как исследователь, открытый к диалогу. И ваш взгляд со стороны — от практикующих специалистов до людей, которые глубоко в теме, — для меня бесценен.
Спасибо.
Привет, коллеги!
Сегодня я хочу поделиться не просто кодом, а архитектурной философией, которая помогла мне построить сложный AI-проект и не сойти с ума. Речь пойдет о том, как я организовал свой "Театр AI-агентов" для своего бота Simba.
Все мы знаем, что LLM — это хаос. Они могут быть невероятно мощными, но при этом совершенно непредсказуемыми. Моя работа с разными моделями, включая ранние эксперименты с OpenAI, быстро показала: для моей задачи — создания человечного, но управляемого собеседника — нужен был не просто "хороший промпт", а система. Система, которая бы изолировала ядро приложения от капризов AI.
Опираясь на свой опыт, я с самого начала решил применить принципы DDD, чтобы качественно и безопасно отделить работу агентов от бизнес логики. Идея была в том, чтобы построить настоящий театр, где у каждого есть своя четкая роль.
Мой театр стоит на простом разделении ролей.
Сцена (Scene): Текущий контекст диалога. Например, "Знакомство" или "Декомпозиция цели". Каждое сообщение содержит не только chat_id но и scene_id
Режиссер (ConversationFlowService): Управляет сценами и решает, какие "актеры" сейчас играют.
Актеры (Asker-Agent): для каждой сцены свой. Его задача — красиво говорить, вести диалог.
Статисты (CRUD-Агент): Рабочие сцены. Они молча слушают диалог и меняют декорации (данные в БД), когда asker подает сигнал.
Первые версии сценариев были кошмаром. Я хранил промпты в i18n-файлах, и они быстро превратились в "Промптов Франкенштейна" — огромные, нечитаемые портянки, где смешались код, тексты и правила. Редактировать их было невозможно.
Так родился PromptManagerService — фабрика сценариев, которая решила эту боль:
Сценарии переехали в .md файлы. Тексты отдельно, код отдельно.
Сложные сценарии собираются из частей с помощью {{include}}. Больше никакой копипасты.
В сценарий динамически вставляется реквизит. Контекст (профиль, цели, задачи...) подставляется в промпт в формате YAML. Я выбрал его из-за экономии токенов — для сложных объектов он оказался эффективнее JSON.
Этот сервис сразу при запуске вычитывает все md файлы и кэширует их, а дальше рендерит промпт для каждого из агентов по его запросу.
Как заставить актеров играть слаженно? Через строгие контракты и четкие команды.
Контракт — это Zod. С самого начала я использовал Zod-схемы для получения структурированного вывода от AI. Это мой "Единый Язык": одна и та же схема используется для генерации responseSchema для Gemini и для валидации DTO в NestJS.
Команда — это ChatWithReplies. И вот здесь произошла главная эволюция.
Изначально это работало проще и грубее. Asker-агент заканчивал реплику и просто говорил "режиссеру": "Я все, проверь сцену". После этого "режиссер" запускал всех CRUD-агентов, доступных на текущей сцене. Это работало, но было неэффективно и вело к лишним операциям.
Это привело к текущему, более изящному решению. Теперь Asker-агент умнее. Проанализировав диалог, он возвращает режиссеру DTO ChatWithReplies, в котором есть поле updateAgents: string[].
Это не просто сигнал. Это точечная команда: "Я закончил реплику. А теперь вызови, пожалуйста, конкретно ProfileCrudAgent и TaskCrudAgent".
Asker-агент сам решает, каких именно статистов нужно активировать. Эта простая, на первый взгляд, доработка полностью изменила поток данных, сделав его эффективным и предсказуемым.
В итоге я полностью перешел на Gemini, так как его модели лучше подошли для задачи создания "человечного" собеседника, с ним получилось добиться человечности и следованию логики. Но главный урок не в выборе конкретной LLM.
Главный урок в том, что нельзя доверять AI. Нельзя строить бизнес-логику на надежде, что модель поведет себя правильно. Единственный рабочий путь — построить архитектуру, которая относится к AI как к непредсказуемому внешнему сервису.
Мой "театр" — это просто один из способов построить такую отказоустойчивую систему. Он позволяет мне менять актеров (модели), переписывать сценарии (промпты), но быть уверенным, что само представление не развалится, даже если кто-то из актеров забудет свою реплику.
Надеюсь, эта метафора и мой опыт будут кому-то полезны. Было бы интересно услышать в комментариях, как вы решаете подобные архитектурные задачи, и объективную критику. Ну и если хотите увидеть театр в действии — ссылка на Simba.
Статья 1: Я устал быть «ленивым пиздаболом» и создал AI-коуча...
Статья 2: Психология AI: Как я научил Simba быть наставником, а не просто чат-ботом (скоро)
Статья 3: Театр AI-агентов: Как я применил DDD для создания управляемого коуча на NestJS (вы здесь)
Статья 4: Каким я вижу будущее AI-коучинга: философия и дорожная карта Simba (скоро)
Привет, Пикабу. Особенно пламенный привет братьям и сестрам из Лиги Лени.
Меня можно описать как «токсично позитивного материалиста-романтика». А если по-честному, для своих я просто «ленивый пиздабол». Знаете, тот самый тип, который может придумать миллион гениальных способов решить задачу, а потом… пойти пить чай. У меня на компе есть священная папка ~/projects. Это не просто папка. Это настоящее кладбище блестящих идей, умерших в муках от первого же реального шага.
Знакомо?
Моя история стара как мир. Я три года "собираюсь" сдать на права. Мой балкон — это портал в Нарнию, заваленный вещами, которые ждут своего часа. И, конечно, я — ветеран войны с таск-менеджерами.
Jira, Notion, AnyType… О, сколько раз я с энтузиазмом заводил там аккаунты! Тратил часы на создание идеальной структуры, раскладывал всё по колоночкам, ставил теги, смайлики. Чувствовал себя богом продуктивности. Ровно до следующего утра. А через неделю открывал всё это великолепие, видел список просроченных задач и испытывал…
Ничего. Чистый, кристальный, благородный похуизм. И закрывал вкладку.
Список дел не работал. Он лишь служил немым укором и источником глухой тревоги, которую я научился мастерски игнорировать.
Последней каплей стал не какой-то конкретный день. Это был медленный, тягучий период осознания: я больше не хочу делать тупые задачи для тупых менеджеров. Я хочу делать что-то своё. Что-то, что изменит мир хотя бы для нескольких человек. Идея была простой и пафосной: «увеличить количество рациональных и осознанных людей в мире».
И я это сделал. Я уволился.
Казалось бы, вот она, свобода! Делай, твори, меняй мир! И первую неделю на энтузиазме это работало, но день сурка никуда не делся. Он просто сменил декорации. Теперь я прокрастинировал не на работе, а дома, работая над СВОИМ проектом. Целый день я мог с упоением заниматься рефакторингом, отладкой какого-то никому не нужного модуля или выбором идеального оттенка для кнопки, вместо того чтобы делать главное — показывать бота людям и двигаться дальше. Я уволился, чтобы перестать выполнять бессмысленные задачи, и тут же начал придумывать их сам для себя.
В этот момент до меня дошло. Проблема не в отсутствии плана. Проблема в том, что я один на один с этим планом.
Мне нужен был не надсмотрщик, а собеседник. Не таск-менеджер, а напарник по мышлению.
Так я начал делать Simba. AI-коуча в Telegram. Не очередную "напоминалку", а партнера, который задает правильные вопросы и помогает сдвинуться с мертвой точки. Я связался со знакомым коучем, изучил запросы его клиентов и понял: я не один такой. Всем нам нужен кто-то, кто поможет сделать тот самый, первый, самый страшный шаг.
И знаете, какую первую, самую главную задачу я поставил в Simba, когда заработал первый прототип?
«Доделать Simba».
Это сработало. Бот заставлял меня самого декомпозировать эту гигантскую цель на микроскопические, нестрашные шаги. "Выложить историю в тг для гаражного тестирования", "спросить 5 человек", "поправить одну ошибку". И я начал двигаться.
Как это работает (очень просто):
Шаг 1: Разговор по душам. Сначала Simba просто общается с тобой. Без анкет и тупых форм. Его задача — вытащить из тебя то, что действительно болит и чего действительно хочется. За этим диалогом стоит продуманная коучинговая методология, которая помогает отделить зёрна от плевел. Об этом я расскажу в следующей статье.
Шаг 2: От мечты к первому шагу. Потом он помогает превратить это «хочу» в конкретную цель и разбить её на маленькие, понятные шаги. "Начать ходить в зал" превращается в "Найти 3 зала рядом с домом за 15 минут".
Моя цель — не создать еще один таск-менеджер, который вы забросите через неделю. Моя цель — дать инструмент, который помогает в самом сложном: в честном диалоге с самим собой. Помогает пройти путь от "я ленивый пиздабол" до "о, я сегодня что-то сделал, я молодец". О том, каким я вижу будущее проекта и как вы можете на него повлиять, я расскажу в заключительной части нашей истории.
Если вам всё это откликается, если у вас тоже есть свой "засранный балкон" или папка-кладбище проектов, попробуйте @SimbaDimbaBot. Он сейчас на самой ранней стадии, и я буду чертовски благодарен за любую обратную связь.
Статья 1: Я устал быть «ленивым пиздаболом» и создал AI-коуча... (вы здесь)
Статья 2: Психология AI: Как я научил Simba быть наставником, а не просто чат-ботом (скоро)
Статья 3: Закулисье AI-коуча: театр AI-агентов на NestJS (скоро)
Статья 4: Каким я вижу будущее AI-коучинга: философия и дорожная карта Simba (скоро)
Тыкаем declare
Заполняем как на скрине