CodeGraph — граф знаний для AI-агентов

источник ↗ ·

CodeGraph создаёт локальный граф знаний кода, позволяя AI-агентам (Claude Code, Cursor и др.) работать с кодовой базой через индекс вместо сканирования файлов, снижая стоимость на ~35% и количество вызовов инструментов на ~70%.

privacy

Эта заметка участвует в semantic memory.

AI Summary

  1. Краткий обзор сути: CodeGraph индексирует кодовую базу в SQLite-граф (символы, вызовы, импорты, наследование) и отдаёт его AI-агентам через MCP-инструменты, заменяя дорогостоящие grep/Read/glob.

  2. Ключевые тезисы:

  • Средняя экономия: 35% стоимости, 59% токенов, 49% времени, 70% вызовов инструментов.
  • Выигрыш растёт с размером репозитория; на больших проектах агент отвечает за 1–2 вызова без чтения файлов.
  • Индекс строится tree-sitter + language-specific queries, хранится в .codegraph/codegraph.db с FTS5.
  • Авто-синхронизация через OS file events (debounce 2 сек).
  • Специальная поддержка web-фреймворков: извлекает роуты и связывает их с handler’ами.
  1. Важные детали и нюансы:
  • Установка: npm install -g @colbymchenry/codegraph; интерактивный установщик codegraph init -i.
  • MCP-конфиг: {"mcpServers":{"codegraph":{"type":"stdio","command":"codegraph","args":["serve","--mcp"]}}}.
  • Инструкции для Claude Code в CLAUDE.md: НЕ использовать codegraph_explore в основной сессии — только через Explore-агента; в основной сессии разрешены только лёгкие инструменты (search, callers, impact и т.д.).
  • Команды: codegraph install, init, index, sync, status, query, context, affected.
  • Проблемы: «Backend: wasm» — нужно собрать better-sqlite3; «MCP not connecting» — проверить путь и инициализацию.
  • Конфиг .codegraph/config.json: languages, exclude, maxFileSize, extractDocstrings, trackCallSites.
  1. Практические выводы / следующие шаги:
  • Запустить codegraph install --yes, затем codegraph init -i в проекте.
  • Перезапустить Claude Code / Cursor.
  • Для CI: codegraph affected --stdin | npx vitest run.
  • При проблемах: проверить Backend через codegraph status и пересобрать native SQLite.

Мои мысли