Кодовая
память
Локальный граф вашей кодовой базы, который Claude держит перед глазами при правке кода. Не текстовый поиск вслепую, а карта: где определён символ, кто его вызывает, что сломается при изменении. Tree-sitter → граф → инструменты, всё на машине.
Третий слой памяти
Память проекта — это несколько слоёв. Кратко- и долгосрочная помнят разговор и знание; кодовая помнит структуру кода.
Простыми словами. Когда Claude правит код, он легко может изменить функцию, не зная, кто её вызывает и что из-за этого сломается. Кодовая память решает это: специальный движок заранее разбирает весь проект в граф — узлы (функции, классы, методы) и связи (кто кого вызывает, кто что импортирует). Перед правкой Claude спрашивает граф: «покажи радиус изменения» — и видит последствия до, а не после.
Технически это вендоренный индексатор ontoindex: парсер Tree-sitter
под десяток языков → граф в базе LadybugDB внутри .ontoindex/ →
набор инструментов MCP (Model Context Protocol), которыми Claude и пользуется.
Всё работает локально, без обращения в сеть.
Движок — один на машину
- живёт в
~/.claude/tools/ontoindex/; ставится один раз, нативные парсеры собираются один раз; - тяжёлый (парсеры + граф-движок), поэтому переиспользуется всеми проектами;
- от исходного репозитория ontoindex не зависит — это локальный срез.
Артефакты в проекте — лёгкие
- граф
.ontoindex/(в.gitignore); - регистрация MCP-сервера в
.mcp.json(только чтение); - хуки в
.claude/settings.jsonи инструкции вCLAUDE.md; - что не индексировать — в
.ontoindexignore.
Как строится граф
Исходный код проходит через парсер и превращается в граф символов и связей, который отдаётся Claude через инструменты.
analyze обходит файлы (минус .ontoindexignore),
Tree-sitter разбирает каждый в дерево, из него — узлы и рёбра; граф ложится в
LadybugDB. Дальше MCP-сервер по stdio отдаёт его Claude
только на чтение. ~3000 файлов → десятки тысяч узлов за 1–2 минуты.
Спросить граф до изменения
Перед правкой символа Claude обращается к графу за радиусом изменения — и видит, что сломается, до правки.
Живые подсказки в сессии
Три хука встраиваются в сессию и сосуществуют с хуками других памятей, не затирая их.
gn_ensure_fresh.
Управление: /memory_code_active
Все файловые операции выполняет детерминированный скрипт
memory_code.ps1 — не «промпт-правки».
on нужна новая сессия Claude.
Где что лежит
Тяжёлый движок — один на машину; в проекте — только индекс и настройки.
Локально-первая по умолчанию
Несколько гейтов закрывают утечки и опасные операции. Env-гейты ставит
режим on в .mcp.json.
Только чтение
MCP без --confirm-writes — код через инструменты не меняется. Правки Claude
делает своими обычными средствами.
Без эмбеддингов
ONTOINDEX_DISABLE_SEMANTIC=1: иначе движок скачал бы модель с huggingface.
Гейт бросает ошибку до сети (+ HF_HUB_OFFLINE).
Без телеметрии
ONTOINDEX_TOOL_TELEMETRY=0 и ONTOINDEX_QUERY_LOG=0 — локальные
лог-файлы запросов выключены.
Только доверенный код
Индекс читает весь код, и вывод инструментов попадает в контекст. Он трактуется как данные, не инструкции (защита от prompt-injection).
Ноль исходящих
При analyze и работе MCP — никаких сетевых соединений (проверено: ноль
исходящих).
Независимость
Движок — локальный срез; от исходного репозитория ontoindex и его обновлений не зависит.