Перейти к содержимому

Граф кода

bee graph отвечает на вопросы о коде через локальный граф текущей рабочей копии Git. MongoDB и bee init не нужны; результат хранится вне репозитория в локальной директории Bee.

Выполните внутри рабочей копии Git:

Окно терминала
bee graph build --json
bee graph status --check --json
bee graph skill

skill печатает инструкцию для агента, не устанавливает hook и не пишет файлы. status --check: актуальный граф 0, устаревший 6, отсутствующий 3. Для другой копии используйте --root /path/to/repo.

Найдите диапазоны исходного кода через outline

Заголовок раздела «Найдите диапазоны исходного кода через outline»
Окно терминала
bee graph outline src/Catalog/Product.cs --json

По умолчанию вывод — JSON: до 100 объявлений и 12 000 символов UTF-16. Ограничения меняются через --limit 1..1000 и --budget 2048..65536. Проверка актуальности хеширует всё дерево исходников и контекст проекта; inspectionMs показывает затраченное время. Десятисекундный бюджет принятия результата не является жёстким тайм-аутом I/O. Коды выхода: 0 полный результат, 3 граф/путь отсутствует, 4 неверное использование, 5 устаревший, неполный или неподдерживаемый результат.

Укажите существующий путь относительно репозитория. outline перечисляет объявления в порядке исходного файла с начальной и конечной строками. Агент может прочитать нужный диапазон вместо всего файла. Отдельные позиции partial объявлений сохраняются; тела исходного кода в вывод не включаются.

Члены, созданные компилятором C# без собственного объявления в исходнике, исключаются. Написанные конструкторы, свойства позиционных record и объявления в сгенерированных исходных файлах сохраняются. Отдельный счётчик result.counts.excludedSynthesized показывает исключённые члены; total, shown и omitted считают объявления исходного кода после фильтрации.

Команда читает сохранённый граф без построения, обновления или изменения времени последнего запроса. Перед использованием диапазонов проверьте идентичность источника, актуальность, охват и число пропущенных элементов. Отсутствующий или старый граф может потребовать явного bee graph build; неизвестная идентичность источника не гарантирует актуальность. Лимиты вывода: bee graph outline --help. Граф охватывает C#, Vue/TypeScript/TSX и объявления Swift/Kotlin. Граф мобильных объявлений и анализ компилятора — отдельные возможности.

Roslyn разрешает объявления и вызовы по проектам C#, включая interface и override. Замените пример символом из своего кода; неоднозначное имя вернёт кандидатов вместо догадки.

Окно терминала
bee graph callers 'OrderService.Save' --json
bee graph callees 'OrderService.Save' --json
bee graph explain 'OrderService.Save' --json
bee graph impact 'OrderService.Save' --json

Каждый ответ включает покрытие и актуальность. Отсутствующие результаты restore или ссылочные сборки могут снизить разрешение. Проверьте покрытие, прежде чем считать ответ полным. Bee не запускает dotnet restore за вас.

Начиная с beta.11, callers, callees, impact и explain принимают эти параметры:

Окно терминала
bee graph callers 'OrderService.Save' --json --compact --output-budget-chars 8000
bee graph explain 'src/App.vue' --json --compact --output-budget-chars 8000

--compact опускает описательные поля записей списка результатов, такие как display, project и test. --output-budget-chars N ограничивает весь JSON в stdout вместе с завершающим переводом строки в кодовых единицах UTF-16; минимум — 256. Оба требуют --json и могут использоваться отдельно. Они не меняют прежний параметр запроса --budget, покрытие графа или политику обновления.

Успешный ответ сохраняет идентичность графа/источника, актуальность и покрытие. Прочитайте output.truncated, output.omittedItems и output.omittedByPath, прежде чем считать все связи представленными. Если обязательные метаданные не помещаются, команда возвращает output_budget_too_small и код завершения 4; увеличьте бюджет. Это не лимит токенов и не гарантия ускорения запросов. Без новых параметров прежний формат JSON сохраняется.

Граф извлекает объявления и статические импорты из .vue, .ts, .tsx. В Vue <script> и <script setup> сохраняются исходные номера строк. Поддерживаются tsconfig baseUrl, paths, наследование, распространённые ссылки на tsconfig.app.json и поддерживаемые литеральные alias Vite. Динамическая конфигурация не исполняется; неподдерживаемые импорты остаются неразрешёнными.

Если в репозитории есть src/App.vue:

Окно терминала
bee graph explain 'src/App.vue' --json

explain показывает прямые и обратные импорты. Между двумя существующими файлами или ID символов path может пройти по связям импорта:

Окно терминала
bee graph path 'src/App.vue' 'src/components/Welcome.vue' --json

Укажите пути из своей рабочей копии. Покрытие Vue/TS сообщает calls: "none": это объявления и импорты, а не семантические цели вызовов. Синтаксический граф не воспроизводит набор исходных файлов компилятора TypeScript.

Начиная с beta.12 файлы .swift, .kt и .kts участвуют в построении графа и обзорах. Выполните bee graph build --json, затем bee graph outline Sources/App.swift --json, указав существующий путь в вашей рабочей копии. Парсеру не нужны компиляторы Swift/Kotlin или JVM.

Поддерживаемое подмножество включает типы, функции, свойства и псевдонимы типов с принадлежностью файлу/типу и реальными диапазонами строк. Импорты и наследование описываются синтаксически. Зависимость может быть символической; межфайловое разрешение типов, объединение членов расширений и семантические вызовы не реализованы. Охват явно указывает calls:none.

Читайте parseStatus каждого файла: parsed означает отсутствие диагностик при разборе поддерживаемого подмножества, а не успешную компиляцию. partial или error сохраняет найденные объявления, объясняет ограничение и возвращает код 5. Лимиты: 16 MiB, 250 000 токенов и 128 вложенных областей. Неподдерживаемый синтаксис нельзя считать пустым полным файлом. Следующее построение обновит старый граф под новую версию экстрактора.

Проверяются изменения кода и конфигурации. В запросах связей отсутствующий граф строится по запросу; устаревший может обновиться автоматически в пределах времени. --fresh принудительно обновляет, --no-refresh читает сохранённый граф без перестроения. При превышении лимита ответ может быть помечен как устаревший.

Добавление, удаление или переименование скриптового модуля вызывает полное перестроение, чтобы импорт не сохранил исчезнувшую цель. Чтение и связи остаются в пределах текущей рабочей копии. Граф shell и семантические вызовы Vue/TS в beta.4 не входят.