Используйте этот сценарий, если изменение в одном репозитории может затронуть код, зависимости или похожие реализации в других. Результат — список затронутых репозиториев, зависимостей и похожих реализаций со свидетельствами для ревью.
Когда применять
Сценарий подходит для ограниченного рабочего каталога с несколькими репозиториями и одним конкретным вопросом:
- какие репозитории вызывают или дублируют изменяемый интерфейс;
- где общая зависимость создаёт цикл или сильную связанность;
- какие кандидаты на консолидацию требуют ручной проверки.
Для структуры внутри одного репозитория используйте сценарий 11, для массовой миграции кода — сценарий 13.
Предварительные условия и область
Подготовьте окружение Python и локальную конфигурацию по руководству CLI и программному интерфейсу. Нужны принятая задача рецензента, актуальный CPG проекта, необходимые сервисы графа и настроенная LLM. До запуска зафиксируйте список репозиториев и ревизию каждого из них.
Запускайте файл Python из рабочего каталога, содержащего нужные репозитории. Для приведённого ниже вызова сценарий ищет Git-репозитории в непосредственных подкаталогах этого каталога. Например, если рабочий каталог содержит billing-service и billing-client, оба репозитория входят в поиск. Зафиксируйте рабочий каталог и сверяйте найденный список с выбранной областью анализа.
Сначала импортируйте нужные репозитории. Для каждого найденного репозитория сценарий собирает число методов и строк из существующего графа. Он сопоставляет имя репозитория с началом пути файла в CPG. Если число методов равно нулю, сравните пути в графе с путями репозитория и проверьте результат импорта.
Запуск типизированного сценария
Сохраните пример в файл Python в настроенном окружении и выполните его из выбранного рабочего каталога. Пакет src должен быть доступен в этом окружении, как описано в руководстве программного вызова. Замените обозначения в контексте на принятую задачу, проект, namespace, ссылки на свидетельства и пути исходников. Уточните вопрос для реального интерфейса.
from src.digital_employees.runtime.scenarios import (
RoleBoundScenarioInvocationRequest,
invoke_role_bound_scenario_request,
)
request = RoleBoundScenarioInvocationRequest(
query="Найди межрепозиторные зависимости, затронутые изменением BillingClient.",
employee_id="codegraph_reviewer",
scenario_id="scenario_10",
event_type="review_start",
context={
"project_key": "codegraph",
"namespace": "default",
"task_id": "<task-id>",
"source_refs": ["<revision-manifest-ref>"],
"file_paths": ["<bounded-source-path>"],
},
)
result = invoke_role_bound_scenario_request(request)
if result.get("error"):
raise RuntimeError(result["error"])
if not result.get("scenario_id") or not result.get("answer"):
raise RuntimeError("Scenario returned no scenario identity or answer")
print(result["answer"])
Сценарий 10 запускается через типизированный ролевой вызов. Запрос передаёт сотрудника, событие и свидетельства привязки к задаче вместе с вопросом о межрепозиторных зависимостях.
Как читать результат
Сохраните вместе с результатом:
answer— сводное объяснение;evidence— сведения о зависимостях, дубликатах и циклах;metadata.role_bound_scenario_invocation— сотрудника, событие, workflow и результат preflight;- исходный список репозиториев и их ревизии.
Проверяйте важные утверждения в названном репозитории и ревизии. Сходство или зависимость создают повод для ревью; взаимозаменяемость двух реализаций подтверждается сравнением и решением владельца.
План консолидации
Используйте найденные зависимости и похожие реализации, чтобы выбрать кандидатов на консолидацию. Сравните их интерфейсы, поведение и тесты. Согласуйте изменения с владельцами затронутых репозиториев и сохраните план вместе с результатом анализа.
Ошибки и восстановление
- В списке только текущий каталог
.: проверьте, что нужные Git-репозитории находятся в непосредственных подкаталогах рабочего каталога. Запустите файл примера из этого каталога и сверяйте полученный список с выбранной областью. - Результаты устарели или смешались: обновите только нужные репозитории и повторите анализ на тех же ревизиях.
- Ошибка при запуске: прочитайте сообщение в
error, проверьте доступность CPG и сохраните сведения о недоступном источнике. После восстановления повторите запрос на той же области. - Найдены посторонние репозитории: сохраните полученный список, исправьте границу рабочего каталога и повторите анализ.