В работе

Context

Личная память для AI-агентов

Свой сервис памяти для AI-агентов с доступом по MCP.

Сервис работает на своём хостинге. Агенты вызывают его по MCP: search, remember, read и timeline. На 60 синтетических заметках 10 из 12 вопросов получили полные ответы.

Задача

Я работаю с несколькими AI-агентами: ChatGPT, Codex, свои боты. У каждого своя память, и при смене клиента или провайдера она теряется. Решения по проектам приходилось пересказывать заново. Нужна была одна память, которая принадлежит мне, живёт на моём сервере и доступна любому агенту.

Что сделано

Context: сервис с открытым кодом под MIT для одного владельца. Один контейнер, одна база SQLite, стандартный MCP. Агенту видны четыре инструмента: search, remember, read и timeline. Заметка, сохранённая одним агентом, находится другим. Архивы можно загрузить из GitHub и сессий Codex. Каждую ночь сервис проверяет копию базы, склеивает почти одинаковые записи и разбирает inbox через Codex.

Ключевые решения

  • Хранить оригиналы, а понимание строить отдельно

    Источник сохраняется неизменным, с датой и контрольной суммой, после удаления секретов. В синтетическом эксперименте на 60 заметках 10 из 12 вопросов получили полные ответы, а фоновое извлечение знаний ответы не улучшило. Семантического поиска тогда ещё не было. Поэтому агент отвечает по оригиналам, а выжимки остаются вспомогательными.

  • Заменять факты только явно

    Сначала ночная уборка сама решала, какая заметка устарела. Автозамену я убрал. Теперь агент сам передаёт supersedes, когда точно знает, что факт изменился.

  • Поиск без платных сервисов

    Полнотекстовый поиск SQLite с морфологией русского и английского плюс маленькая модель эмбеддингов на том же сервере. Если модель недоступна, работает обычный поиск.

  • Свой вход вместо отдельного сервиса

    Сначала авторизацию держал Keycloak со своей базой. Я заменил его встроенным OAuth 2.1 с паролем и passkey. Агентам без браузера выдаю токены с правами на конкретные области.

Стек

  • TypeScript
  • Node.js
  • SQLite
  • MCP SDK
  • OAuth 2.1 и WebAuthn
  • Transformers.js с моделью multilingual-e5-small
  • Docker
  • Шаги с моделью идут через OpenAI-совместимый API или Codex.

Статус и что дальше

Работает на моём сервере как общая память моих агентов. Дальше: веб-интерфейс владельца для поиска, inbox и удаления, импорт из ChatGPT и Telegram, окончательное удаление записей.