Об этом проекте
ohmyboring — это самостоятельно размещаемая система личной памяти для кодирующих агентов. Она фиксирует, как вы решали задачи в Claude Code, Kimi Code и подходящих сессиях Codex, превращает каждую сессию в выверенную markdown-заметку, хранящуюся в локальном хранилище, и возвращает эти заметки, когда вы спрашиваете «как я делал это в прошлый раз?». Всё работает локально: эмбеддинг и синтез идут через локальный сервер LLM (Ollama, LM Studio или другую конечную точку, совместимую с OpenAI), без внешних API и токенов.
Как память попадает в систему:
- Автоматически по завершении сессии: хук SessionEnd превращает транскрипт в заметку и сохраняет её; парный хук UserPromptSubmit внедряет до трёх релевантных прошлых фрагментов в новые промпты, каждый из которых несёт устоявшиеся утверждения.
- Воркер Codex: поскольку в Codex нет хука SessionEnd, хостовый воркер каждые 20 минут сканирует ~/.codex/sessions и забирает подходящие транскрипты.
- Бэкфилл: `make collect` наполняет иначе пустое хранилище из прошлой истории Claude Code (от новых к старым, идемпотентно, N за запуск); `make collect-kimi` делает то же самое для Kimi Code.
- В середине сессии: `make distill-now` повторно дистиллирует текущий транскрипт, а `make remember M="..."` сохраняет явную заметку.
Память в первую очередь markdown: простые, удобочитаемые человеком, пригодные для git-diff заметки в vault/wiki, которые можно открыть напрямую как хранилище Obsidian для графового представления, обратных ссылок, тегов и полнотекстового поиска. Необязательный ускоритель pgvector (BORING_VECTOR=on) добавляет поиск по сходству и GraphRAG, когда этого требует масштаб.
Архитектура разделяет быструю дверь чтения без LLM (`make ask`, recall.py, MCP recall) и управляемую дверь записи (distill-session.py вызывает локальную LLM и пишет через детерминированный инструмент remember MCP). Шлюз дубликатов пропускает повторяющиеся заметки, но позволяет более богатой заметке перезаписать тот же файл вики. Типизированный контракт графа рабочих процессов на стороне Rust в drudge/src/workflow.rs определяет словарь узлов/рёбер для обнаружения сессий, дистилляции, верификации, восстановления, remember, обновления маркеров, журналирования событий и проекции готовности, тогда как хуки и воркеры на Python по-прежнему выполняют хостовый ввод-вывод.
Конфигурация находится в boring.json (из boring.example.json): язык заметок, провайдер LLM/base_url/model/модель эмбеддингов и размерность, правила происхождения репозитория и адаптеры транскриптов агентов. Переключение бэкендов — это один блок конфигурации; `make up` направляет к скриптам начальной настройки, специфичным для провайдера. Смена модели эмбеддингов меняет размерность вектора, поэтому нужно обновить llm.embed_dim и выполнить `make reset`. Файл .env хранит секреты и переопределения времени выполнения, такие как BORING_VECTOR, переопределения LLM, ограничения дистилляции, количество утверждений при recall и измерение релевантности, настройки приёмника/буфера событий, окна готовности и токен владельца для вызовов записи.
Операционный инструментарий включает `make verify-llm` (провайдер, идентификаторы моделей, размерность эмбеддингов), `make doctor` (стек, хуки, воркер/очередь Codex, последний ingest), `make readiness` (строгий шлюз перед брифингом), `make peek` (локальная страница только для чтения, показывающая, какие заметки внедрил recall и как далеко добрался ретривер) и `make usage` (использование токенов и моделей, собранное из локальных транскриптов). Шлюз PII/чувствительных данных в vault/rules/pii.yaml поддерживает действия block, redact и flag с построчными маркерами исключений. Необязательные интеграции включают ассистента Slack и cron-воркеры Hermes для утренних брифингов.
Требования: Docker, Python 3, jq, curl, git, make и локальный сервер LLM. Свежий клон начинается с пустого хранилища, поэтому в первый день recall ничего не находит, пока история не будет заполнена бэкфиллом. Проект распространяется под лицензией MIT и документирует рекомендации по подбору локальных моделей в зависимости от оперативной памяти машины, команды бенчмарков и измеренное поведение дистилляции/эмбеддингов.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.