DevCraft Документации
Помощь в разработкеSkills

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

Обзор кодовой базы

  1. list_projects — есть ли индекс.
  2. get_graph_schema — типы узлов и рёбер.
  3. search_graph(label="Function", name_pattern=".*Pattern.*") — найти код.
  4. get_code_snippet(qualified_name="project.path.FuncName") — прочитать исходник.

Трасса

  1. search_graph(name_pattern=".*FuncName.*") — точное имя.
  2. trace_path(function_name="FuncName", direction="both", depth=3) — цепочка.
  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

Ловушки

  1. search_graph(relationship="HTTP_CALLS") фильтрует узлы по степени — сами рёбра смотреть через query_graph и Cypher.
  2. У query_graph потолок ~100k строк — в широких запросах ставить LIMIT или листать search_graph.
  3. trace_path хочет точное имя — сначала search_graph(name_pattern=...).
  4. direction="outbound" не видит чужие сервисы-вызывающие — для полной картины both.
  5. У search_graph по умолчанию 50 записей на страницу — смотреть has_more и offset.

В DevCraft primary-корень индекса — сайт dle210.test; dle200test — legacy. После правок engine/** и indexed devcraft/src|config|locales|*.php — обновить индекс (не после чистых docs / .cursor).

См. также

На этой странице