Все записи
БлогВыпускРасширенияИнтеграции

Граф кода и Context7: агенты, которые проверяют, а не угадывают

Агенты тратят ходы на grep по коду, о котором можно просто спросить, и пишут под API библиотек такими, какими их помнит модель. В NeuroSquad 0.1.230 для этого два плагина: «Граф кода» — карта вашего кода, и Context7 — документация на сегодня.

7 мин чтенияЧто вошло в 0.1.230

Посмотрите, как агент работает в незнакомом репозитории. Чтобы ответить «кто вызывает эту функцию?», он ищет имя через grep, открывает файл, ищет снова другим шаблоном, открывает ещё два файла — каждый шаг отдельный ход, каждый прочитанный файл занимает контекст. Потом он пишет код под библиотеку, и API берёт таким, каким его помнит модель по обучающим данным, — а это может быть версия на одну-две старше той, что в вашем package.json.

NeuroSquad 0.1.230 добавляет две карточки-плагина ровно под эти две привычки. «Граф кода» держит граф знаний о коде воркспейса, который агенты спрашивают вместо поиска по файлам. Context7 приносит актуальную документацию для нужной версии библиотеки, которой агент собирается пользоваться. Как и любой плагин, каждый из них — карточка на холсте, и пользоваться ею агенту позволяет стрелка от него.

Карточка Claude Code со стрелками к «Графу кода», «Документации» и «Памяти команды». Агент отвечает, кто вызывает localHref, по графу, отвечает на вопрос про useEffect по документации React через Context7, затем сохраняет заметку в «Память команды»
Три хода — три плагина: кто вызывает localHref — из графа, правило очистки — с react.dev через Context7, заметка — для следующего агента. Для скриншота агент работает со сценарной локальной моделью; граф, ответы Context7 и память — настоящее приложение.

Карта кода вместо grep

«Граф кода» построен на codebase-memory-mcp — открытом (MIT) движке, который разбирает проект через tree-sitter и сохраняет найденное — функции, классы, переменные, вызовы, импорты, маршруты — в виде графа. Проведите стрелку от агента к карточке, и у агента появятся 12 инструментов: codegraph_search_graph ищет символы по имени или смыслу, codegraph_trace_path идёт по вызывающим и вызываемым, codegraph_get_code_snippet, codegraph_get_architecture, codegraph_query_graph для запросов к графу только на чтение и ещё несколько — вплоть до codegraph_reindex. Вопрос «кто вызывает localHref?» становится одним вызовом, который возвращает четыре функции, доходящие до неё, две из них напрямую, — а не цепочкой grep.

Для скриншотов мы проиндексировали копию нашего же лендинга: 222 файла на TypeScript, 1903 символа, 2179 вызовов. Первая сборка на этой машине заняла 29 секунд вместе с запуском движка; повторная индексация — 6,6 секунды. Карточка показывает эти числа, из чего состоит код, поиск по именам и какой агент вызывал какой инструмент.

Карточка «Граф кода»: 1 903 символа, 222 файла, 2 179 вызовов, «Актуален», проиндексирован за 6,6 с; поиск localHref находит функцию в lib/blog.ts на строке 182; ниже — доли функций, переменных, интерфейсов и типов и агент «Фронтенд» с последним вызовом trace_path
Карточка после вопроса агента. Поиск на карточке идёт по тому же графу, что и у агентов.

Свежий без напоминаний

Граф, отстающий от кода, хуже, чем никакой, поэтому карточка держит его актуальным сама. Она следит за папкой и переиндексирует через несколько секунд после последнего изменения; устаревший граф обновляется и тогда, когда подключённый агент заканчивает ход, и один раз за запуск приложения — вдруг файлы менялись, пока оно было закрыто. Запрос, пришедший во время обновления, сообщает об этом в ответе. С выключенным автообновлением карточка пишет «Файлы изменились» и показывает кнопку «Обновить».

Чего это стоит

Движок — одна самодостаточная программа под каждую платформу. Карточка скачивает её один раз — около 40 МБ, около 300 МБ после распаковки — и до первого запуска сверяет с SHA-256, закреплённым в приложении. Движок работает на вашем компьютере без аккаунта и телеметрии, код не покидает машину. Индекс лежит в папке данных приложения: в репозиторий и в домашнюю папку ничего не пишется — мы сверили обе до и после прогона.

Документация на сегодня, а не из обучения

Context7 от Upstash индексирует документацию множества открытых библиотек и отдаёт фрагменты, подходящие к вопросу. Карточка даёт агенту два его инструмента: context7_resolve_library_id превращает название вроде «react» в идентификатор библиотеки, а context7_query_docs возвращает фрагменты по этой библиотеке и вопросу, каждый со ссылкой на источник. Context7 распространяется как MCP-сервер, которому нужен Node; приложение делает те же два запроса само, так что ставить ничего не нужно и лишний процесс не запускается.

Карточка Context7 «Документация»: «Готово», осталось 131 из 200 запросов, сброс 1 нояб., без ключа. Последние запросы: два с самой карточки по next.js и два от агента «Фронтенд» по react и /reactjs/react.dev про очистку useEffect
Каждый запрос в списке с автором: агент или вы с карточки. Счётчик — настоящая анонимная квота из заголовков ответа самого Context7.

Ответы кешируются на вашем компьютере на 24 часа, поэтому тот же вопрос от второго агента ничего не стоит, а одинаковые одновременные запросы делят одну загрузку. «Проверить запрос» внизу карточки повторяет тот же поиск вручную: библиотека, вопрос, подходящие библиотеки и документация лучшей из них.

«Проверить запрос» на карточке Context7: next.js и вопрос про generateStaticParams; результат — свежая документация из /vercel/next.js со списком других подходящих библиотек и пометкой, что названия библиотек и вопросы уходят на серверы Context7
Запрос с карточки: документация берётся из репозитория-источника, со ссылкой на место каждого фрагмента.

Автодокументация — переключатель на карточке, по умолчанию выключенный, — снимает с агента необходимость помнить. Когда промпт называет зависимость проекта — из package.json, requirements.txt, pyproject.toml, Cargo.toml или go.mod, — к ходу агента добавляется короткая подсказка про инструменты документации с объявленной вами версией. Если в промпте есть ещё и слово «context7», добавляется сама документация, если успевает прийти. Промпты не отправляются в Context7 только потому, что в них названа библиотека: так тратилась бы месячная квота, о чём никто не просил.

Ограничения как есть

  • 200 запросов в месяц без ключа. Анонимная квота Context7 считается по IP-адресу, поэтому в неё входят и другие инструменты из той же сети. Когда она кончается, карточка говорит об этом, а инструменты не шлют запросов до сброса — зациклившийся агент не сделает хуже, — при этом ответы из кеша работают. Бесплатный ключ Context7 поднимает лимит; он хранится в зашифрованном виде и уходит только в заголовке запроса.
  • Что уходит с компьютера. Название библиотеки и вопрос отправляются на серверы Context7. Ваш код — нет, но не пишите в вопросах секреты. Карточка говорит об этом под полем запроса.

Решает стрелка

Оба плагина следуют правилу всех карточек на холсте: стрелка — это доступ. Проведите её, и у агента появятся инструменты — большинство CLI подхватывают их без перезапуска. Уберите — и их нет. Codex, Kimi Code, Cursor и Crush читают список инструментов один раз при запуске, поэтому у них инструменты видны всегда, а пройдёт ли вызов, решает стрелка. Оба плагина работают со всеми агентными CLI в NeuroSquad, которые поддерживают MCP. На скриншоте агент подключён ещё и к «Памяти» из прошлого релиза и сохраняет то, что узнал, для следующего агента.

В WSL и по SSH

С версии 0.1.214 воркспейс может находиться в дистрибутиве WSL или на SSH-хосте. «Графу кода» нужно читать файлы, поэтому там движок запускается рядом с кодом. На Linux для x86-64 или ARM64 карточка при первой индексации копирует туда проверенный архив — около 40 МБ, а не распакованный движок, — ещё раз сверяет хеш на той стороне и распаковывает его в собственную папку приложения на той машине; там же хранится индекс. Домашняя папка и репозиторий там не затрагиваются, а при выходе из приложения движок останавливается. Для хоста на macOS карточка пишет «Для этого хоста нет сборки движка».

Папка WSL на диске Windows отслеживается как обычно. На собственном диске дистрибутива и по SSH дешёвых событий файловой системы нет, поэтому граф обновляется в конце хода подключённого агента и по запросу. «Памяти» и Context7 на той машине ничего не нужно: они работают в приложении на вашем компьютере и доходят до агента в WSL или на SSH-хосте по стрелке, как любой другой инструмент. Автодокументация читает манифесты проекта на той машине.

У каждого плагина своя страница — «Граф кода», Context7 и «Память» — и руководство в документации: «Граф кода» и Context7. Полный список изменений — в журнале изменений 0.1.230.