Codebase Memory (skill) v200.4.0
Полный текст skill графа кода: search_graph, trace_path, покрытие индекса.
MCP и установка: codebase-memory-mcp, страница MCP. Ниже — полное содержимое skill-обвязки.
Файл агента: skill codebase-memory. Граф кода (символы, вызовы), не факты о человеке. Триггеры: устройство кода, кто вызывает X, что вызывает X, цепочка вызовов, влияние правок, мёртвый код, Cypher, search_graph.
Инструменты графа дают узкий структурный ответ (~сотни токенов) вместо огромного обхода файлов.
Какой tool
| Вопрос | Вызов |
|---|---|
| Кто вызывает X? | trace_path(direction="inbound") |
| Что вызывает X? | trace_path(direction="outbound") |
| Полный контекст вызовов | trace_path(direction="both") |
| Найти по имени | search_graph(name_pattern="...") |
| Мёртвый код | search_graph(max_degree=0, exclude_entry_points=true) |
| Рёбра между сервисами | query_graph с Cypher |
| Влияние локальных правок | detect_changes() |
| Трасса с метками риска | trace_path(risk_labels=true) |
| Поиск по тексту | search_code или Grep |
Обзор кодовой базы
list_projects— есть ли индекс.get_graph_schema— типы узлов и рёбер.search_graph(label="Function", name_pattern=".*Pattern.*")— найти код.get_code_snippet(qualified_name="project.path.FuncName")— прочитать исходник.
Трасса
search_graph(name_pattern=".*FuncName.*")— точное имя.trace_path(function_name="FuncName", direction="both", depth=3)— цепочка.detect_changes()— git diff → затронутые символы.
Уровни доказательности
- Scout (1): быстрый поиск, мало вызовов графа, точечное чтение исходника. Результат предварительный. Нельзя утверждать «этого нет», «весь граф покрыт», «мёртвый код доказан».
- Verify (2, по умолчанию): целевые поиски, нужные направления трассы, точные фрагменты для важных утверждений, все релевантные страницы результатов.
- Auditor (3): полная проверка в ограниченном контуре: свежая генерация графа, полная пагинация, оба направления вызовов и смежные связи, явно перечислить, что не закрыто.
- Любой уровень: когда пути-кандидаты известны — один раз
check_index_coverageпо всем путям-доказательствам. Для отрицательных и «исчерпывающих» утверждений — ещё и нужные scope. Чистый ответ = в индексе нет записанного пробела, не доказательство полноты. Дыры покрытия — читать/Grep по указанным диапазонам, не полагаться на граф.
Сессии и дочерние агенты
В начале сессии или после сжатия контекста: list_projects / index_status, затем выбрать Scout / Verify / Auditor.
Перед делегированием родитель сам спрашивает граф и покрытие. Ребёнку передать: уровень, проект, свежесть индекса, границы, запросы и пагинацию, квалифицированные имена, пути, цепочки вызовов, покрытие, уже сделанный fallback на исходник, открытые вопросы.
Изолированный ребёнок не наследует MCP. Без MCP он не имеет права вызывать граф и врать, что вызывал: работает по переданным фактам и читает исходник, особенно диапазоны с дырами покрытия.
Качество кода (по графу)
- Мёртвый код:
search_graph(max_degree=0, exclude_entry_points=true) - Много исходящих вызовов:
search_graph(min_degree=10, relationship="CALLS", direction="outbound") - Много входящих: то же с
direction="inbound"
Tools MCP (15)
index_repository, index_status, list_projects, delete_project, search_graph, search_code, trace_path, detect_changes, query_graph, get_graph_schema, get_code_snippet, get_architecture, check_index_coverage, manage_adr, ingest_traces
Типы рёбер
CALLS, HTTP_CALLS, ASYNC_CALLS, DATA_FLOWS, IMPORTS, DEFINES, DEFINES_METHOD, HANDLES, IMPLEMENTS, OVERRIDE, USAGE, CALL_REFERENCE, CONFIGURES, FILE_CHANGES_WITH, SIMILAR_TO, SEMANTICALLY_RELATED, CONTAINS_FILE, CONTAINS_FOLDER, CONTAINS_PACKAGE
Примеры Cypher (query_graph)
MATCH (a)-[r:HTTP_CALLS]->(b) RETURN a.name, b.name, r.url_path, r.confidence LIMIT 20
MATCH (f:Function) WHERE f.name =~ '.*Handler.*' RETURN f.name, f.file_path
MATCH (a)-[r:CALLS]->(b) WHERE a.name = 'main' RETURN b.nameЛовушки
search_graph(relationship="HTTP_CALLS")фильтрует узлы по степени — сами рёбра смотреть черезquery_graphи Cypher.- У
query_graphпотолок ~100k строк — в широких запросах ставитьLIMITили листатьsearch_graph. trace_pathхочет точное имя — сначалаsearch_graph(name_pattern=...).direction="outbound"не видит чужие сервисы-вызывающие — для полной картиныboth.- У
search_graphпо умолчанию 50 записей на страницу — смотретьhas_moreиoffset.
В DevCraft primary-корень индекса — сайт dle210.test; dle200test — legacy. После правок engine/** и indexed devcraft/src|config|locales|*.php — обновить индекс (не после чистых docs / .cursor).