Большинство продуктов, которые называют себя «AI-коучами» или «AI-психологами», устроены одинаково: промпт с инструкцией «веди себя как коуч», несколько условий на кнопки и последние N сообщений в контексте вместо памяти. Каждая сессия начинается с нуля, а любой «вывод» о пользователе — это просто последний ответ модели, сгенерированный заново без опоры на предыдущие разговоры.

Автор серии статей о продукте для самопознания публикует полную спецификацию до написания первой строки кода — чтобы впоследствии честно сравнить замысел с реальностью. Продукт называется ÆON Map System и работает в мессенджере MAX. Центральная идея: языковая модель — не ядро системы, а один из узлов, причём не самый важный.

Архитектурная основа — event sourcing. Когда пользователь отвечает на вопрос, в таблицу events в PostgreSQL записывается событие answer.given с полями session_id, question_id, answer_value и answered_at. Таблица работает в режиме append-only: никаких UPDATE и DELETE. Это не технический каприз, а содержательное решение: если человек вчера назвал себя экстравертом, а сегодня — интровертом, это не ошибка данных, требующая исправления, а два факта о двух разных состояниях. Профиль пользователя (AeonProfile) — read model, проекция над этим event log. Его можно пересобрать с нуля в любой момент, прогнав все события через движок aeon_engine. Баг в логике построения профиля превращается не в катастрофу, а в патч плюс пересборку проекции.

Карта личности назначается только при confidence ≥ 0,72 — порог проверяет детерминированный код, а не LLM.

ИИ-бот для самопознания: event sourcing вместо промптов и LLM на периферии
· Источник: Habr AI

Профиль устроен как карта из семи слоёв. В MVP реализуются три: слой I (когнитивный стиль и поведенческие паттерны), слой II (реальная мотивация и ценности-ядро) и слой IV (архетипическая матрица, составленная из сигналов предыдущих слоёв). Разблокировка слоёв линейная, но маршрутизация сигналов сквозная: ответ на вопрос из слоя II может дать сигнал в карту слоя IV, если классификатор увидит там релевантный паттерн. Карта назначается только при confidence ≥ 0,72 — это инвариант INV-03, и проверяет его детерминированный код в модуле Stability Engine, а не языковая модель. Минимальный порог ответов для открытия следующего слоя — четыре.

Отдельного внимания заслуживает обработка кризисных ситуаций. Многие продукты отправляют сообщение пользователя в LLM и ждут, пока модель «решит», кризис это или нет. Такой подход означает расходы на токены при каждом тревожном сообщении и делегирование критически важной детекции стохастической системе. В ÆON Map System Safety Gate 1 — rule-based проверка на кризисные маркеры (суицид, самоповреждение, насилие) — срабатывает до любого вызова LLM. Если маркер обнаружен, бот отвечает тепло и даёт телефон доверия 8-800-2000-122; никакой языковой модели при этом не вызывается. Gate 2 встроен в system prompt основного LLM как второй рубеж для пограничных случаев.

Вся спецификация написана по методологии PDA (Possibility-Driven Architecture): сначала карта неопределённости, потом граф домена, инварианты, константы, события, архитектура и наблюдаемость — и только в самом конце код. В спеке зафиксированы 10 доменных инвариантов и 2 safety-инварианта, каждый с указанием точки enforcement в коде. Покрытие — property-based тестами на Vitest совместно с fast-check: вместо проверки одного случая генерируется 1000 случайных последовательностей событий. Финальный артефакт для пользователя — глиф, уникальное визуальное изображение профиля, которое перегенерируется по мере уточнения данных, и Book of Consciousness — таймлайн трансформации, куда попадает каждая завершённая сессия.

Подход контрастирует с тем, как устроено большинство конкурирующих решений. MBTI и соционика дают статичный результат без динамики. Психотерапия медленна и дорога. Чат-боты страдают амнезией. ÆON Map System пытается занять нишу между ними: система с памятью, воспроизводимой логикой и явными порогами уверенности — где LLM отвечает за генерацию вопросов и интерпретацию сигналов, но не за принятие решений о профиле.