Cognitive Memory System · Цифровой двойник

ANIMUSv2.0

Система, которая помнит человека. Битемпоральный граф памяти о целой жизни — на собственной инфраструктуре.

СтатусВ продакшене
КлассSelf-hosted
ПриватностьЛокальная
ГоризонтГоды
Тезис

Большинство ассистентов забывают вас после каждой сессии. Этот — наоборот.

Анимус 2.0 — приватный цифровой двойник: долговременная память о жизни владельца, выстроенная как строгая инженерная система, а не как свалка заметок.

Каждый факт живёт во времени, знает свой источник и никогда не исчезает бесследно. Память — главная ценность; код — расходуемый материал вокруг неё.

Долгосрочный проект: строится месяцами, рассчитан на годы жизни. Не демо — фундамент.

Архитектура · Однонаправленный поток

Три слоя. Правда течёт только вниз.

Дисциплина потока данных — то, что отличает систему памяти от заметок. Источник правды защищён и неизменен; всё производное можно снести и собрать заново.

Слой 01 Сырьё Архив и все новые разговоры на диске. Append-only, с контрольными суммами. Никогда не редактируется — только дополняется. append-only · checksums · immutable
Единственный источник правды Слой 02 Память Факты с «паспортом» + реестр сущностей + онтология. Отдельный приватный репозиторий, который никогда не покидает сервер. facts · entities · ontology · private git
Слой 03 Индекс Граф знаний как индекс для поиска. Расходуемый: сносится и перестраивается из памяти одной командой. Никогда не является источником правды. knowledge graph · vectors · rebuildable

Записывать факты в обход памяти — запрещено. Индекс можно потерять целиком — правда не пострадает: она восстанавливается из Слоя 02 детерминированно.

Что делает систему уникальной

Память с инженерной строгостью

Не «бот с заметками». Каждое решение здесь — про целостность, прослеживаемость и защиту правды во времени.

Битемпоральность

Факты живут во времени

У каждого факта — интервал действия. Устаревшее не удаляется: ему проставляется «закрытие», а новый факт встаёт рядом. История правды сохраняется целиком.

Провенанс

Паспорт у каждого факта

Постоянный ID, субъект-предикат-объект, уверенность, ссылка на источник и кем извлечён. Любое утверждение прослеживается до сырья.

Шлюз записи

Единственный писатель

Бот только читает память. Писать может лишь автономный конвейер — защищённый контур против порчи и дрейфа памяти.

Приватность

Данные не покидают сервер

Личное и публичный код — в разных репозиториях с жёстким разделением. Персональные факты запрещены в коде, тестах и фикстурах.

Достоверность

Анти-галлюцинации

Ответы опираются на найденные факты с провенансом. Чего нет в памяти — модель не выдумывает; это часть протокола ответа.

Recall

Гибридный поиск

Четыре канала — сущности · ключи · смысл · граф — сливаются алгоритмом Reciprocal Rank Fusion. Смысловой поиск локально, на CPU.

Возможности

Полноценный продукт, не прототип

Мультимодальный ввод, автономная переработка, два интерфейса и независимость от вендоров — всё на самохостинге.

Мультимодальный ввод

Голос, рукописи, документы

Локальное распознавание речи (GigaAM), чтение рукописей с фото vision-моделью (не OCR), приём PDF / DOCX / txt.

Автономный конвейер

Ночная переработка памяти

Извлечение → разрешение сущностей → темпоральность → загрузка. С «критиком» — второй дешёвой проверкой каждого факта против источника.

Интерфейсы

Веб и Telegram

Стриминговый чат (SSE), установка как приложение (PWA), общая история с поиском по всей переписке.

Независимость

Любой LLM-провайдер

Переключение в настройках на любой OpenAI-совместимый API: OpenRouter, OpenAI, DeepSeek, Claude, локальный Ollama. Ноль привязки к вендору.

Модульность

Фичи-тумблеры

Способности включаются и выключаются без перезапуска. Новая функция — это модуль плюс строчка в реестре.

Сохранность

Шифрованные бэкапы

Ежедневный GPG-архив памяти по расписанию, ротация, проверенное восстановление. Память переживает потерю сервера.

Под капотом · Как это работает внутри

Внутренняя механика

Три опоры системы: атомарный формат факта, гибридный движок вспоминания и детерминированная пересборка. Ниже — схематично, на нейтральных данных.

fact.yaml Слой 02 · атом памяти
id:           01J8F2Q···ZKQ4   # ULID · неизменен
subject:      Проект «Атлас»
predicate:    срок_сдачи
object:       2026 Q3
valid_from:   2026-05-01
valid_to:     null          # ⟵ актуален сейчас
confidence:   0.92
source:       layer1/…#L142  # → до сырья
extracted_by: fable-5 · prompt@v3

Устареет — valid_to проставится, новый факт встанет рядом. Правда не переписывается.

animus2 · console Слой 03 · пересборка
$ animus2 rebuild
  ↳ Слой 2 → индекс … 72 сущности, 235 фактов
  ↳ векторизация … 235/235 
$ animus2 memory-eval
  ▸ мини-экзамен памяти … 10/10 PASS
$ animus2 extract   # ночной конвейер
  ↳ extract → resolve → temporal → critic → load
  ↳ новых: +6  закрыто: 1  конфликтов: 0

Индекс — расходник: одна команда собирает его из памяти заново.

Движок recall · гибридный поиск по памяти
ВходЗапрос
4 каналаПараллельный поиск
Сущности · граф-обходКлючи · лексикаСмысл · векторы e5Связи · граф
СлияниеRRF-ранжирование
ВыходКонтекст + провенанс → ответ
На горизонте · Roadmap Следующий рубеж

Дать двойнику руки

Память — это разум без тела. Следующий рубеж — действие.

Через Model Context Protocol (MCP) Анимус получает единый протокол работы с инструментами: календарь, задачи, файлы, внешние сервисы — как способности, которыми он пользуется сам. Двойник перестаёт быть собеседником и становится агентом: планирует, напоминает, выполняет.

ПротоколЕдиный интерфейс действияОдин стандарт (MCP) вместо десятка разрозненных интеграций — инструменты подключаются как модули.
КонтурБезопасность по тому же принципуДействия проходят через защищённый шлюз — та же дисциплина, что оберегает память от порчи.
АвтономияОт диалога — к делуНе «ответить и забыть», а довести до результата: отслеживание целей во времени и проактивность.
Технологический стек

Чем это построено

Современный self-hosted стек: графовая память, локальные модели, стриминг и контейнеризация — без единой внешней зависимости, которую нельзя заменить.

Память · Граф · Поиск
FalkorDB graph graphiti-core RRF-слияние mpnet-multilingual e5-large эмбеддинги векторный индекс
Ядро · Сервисы
Python 3.13 FastAPI SSE-стриминг aiogram SQLite ULID id фактов
ИИ · Мультимодальность
OpenRouter API GigaAM STT локально vision рукописи версионирование промптов провайдер-агностик
Инфраструктура · Ops
Docker Compose изолированная сеть GPG-бэкапы cron-конвейер PWA ADR-журнал
Масштаб памяти

Цифры на текущем этапе

Ядро памяти уже работает и растёт от каждого разговора. База фактов расширяется ночным конвейером автоматически.

18 018файлов в манифесте архива, с контрольными суммами
1.2ГБсырья жизненного архива в Слое 01
235+фактов в графе — все с векторами
72сущности в онтологии знаний
10/10мини-экзамен памяти пройден
1кмдполная пересборка индекса одной командой
Инженерная дисциплина

Построено как система, а не скрипт

Практики, которые отличают продакшен от эксперимента — и переживают смену людей за клавиатурой.

ТестыИзолированные тестыСвоя тест-БД и фикстуры; тесты никогда не бьют по живому боту, графу или памяти. Выучено ценой реального инцидента.
ADRЖурнал решенийКаждое архитектурное решение зафиксировано письменно: «почему» важнее, чем «что». Знание не умирает вместе с контейнером.
СекретыРазделение репозиториевКод и личная память — в разных репозиториях. Личное физически не может утечь в публичный код.
ДеплойИдемпотентностьИндекс собирается из памяти детерминированно — пересборка безопасна и повторяема, откат предсказуем.
GitДисциплина коммитовConventional commits, один коммит — одно изменение, ветка main всегда рабочая.