LLM-агент на растущей кодовой базе теряет контекст:
- Дорогое исследование. Чтобы понять область кода, агент делает каскад
Read. Каждое чтение оседает в контексте навсегда. - Потеря рассуждения между сессиями. Решения, проговорённые в диалоге («пробовали X, не сработало из-за Y, выбрали Z»), исчезают при закрытии сессии. Commit фиксирует что сделано, не почему именно так.
- Разрастание спецификации. Проектная документация множится и сама пожирает контекст — приходится постоянно её чистить, и это урезает объём работы по каждой задаче.
Сервис хранения и поиска знаний о коде — заметок о том, как и почему пришли к текущему коду, привязанных к нему гибкими якорями. Заметка отвечает на вопрос «как пришли»; код и docstring — на «как пользоваться».
Работает как MCP-сервер. Source of truth — markdown-файлы в .memory/ внутри
репозитория проекта. SQLite рядом — производный индекс для скорости поиска.
Разворачивается как постоянный Docker-контейнер рядом с проектом — отдельный
сервис в его docker-compose.yml, со своим .memory/ и своим индексом. Claude
Code обращается к нему по MCP через HTTP. Подробности — в
08-technical-design.md.
- Заметка — запись знания.
- Якорь — связь заметки с файлом, символом, доменной сущностью или env.
- Доменная сущность — поименованный концепт предметной области.
См. 01-domain-model.md.
- Связность — только через якоря. Ни тегов, ни графа отношений.
- Markdown — source of truth; SQLite — производное, пересобираемое.
- Ленивая выдача: компактный список → разворот по требованию.
- Главное в поиске — отсечка шума, а не точная сортировка.
- Устаревание — явным статусом, не молчаливым автоапдейтом.
- Минимализм: поле или механизм существует, только если меняет поведение и не дублирует другое.
- Не индексирует код фреймворка и библиотек — это Context7 и веса модели.
- Не делает cross-reference анализ (call graph, поиск usage'ей). tree-sitter используется только для «какие символы определены в каком файле».
- Не хранит метаинформацию внутри файлов кода.
- Не привязывается к git-SHA — логическая единица это знание, не коммит.
- Не реконструирует «почему так» без явного источника.
- Context7 — знание о фреймворках и публичных библиотеках.
- Code Memory Service — решения по вашему коду.
- Векторный (семантический) слой — опционально, добавляется позже.
Каждый слой отвечает за одну вещь; пересечений нет.
Один контейнер обслуживает одну кодовую базу. Нет multi-tenancy, .memory/
лежит рядом с кодом, исключён класс багов с подтягиванием чужого контекста.
| Документ | Содержание |
|---|---|
00-overview.md |
Этот документ |
01-domain-model.md |
Три сущности на уровне бизнес-логики |
02-data-model.md |
Поля, типы, связи, индекс |
03-search-and-retrieval.md |
Поиск, ранжирование, навигация |
04-note-authoring.md |
Дисциплина создания заметки |
05-interfaces.md |
MCP-инструменты и CLI |
06-onboarding.md |
Онбординг существующих проектов |
07-skill.md |
Скилл на стороне Клода |
08-technical-design.md |
Техническое видение, стек |