Сценарий 18 помогает разработчику найти участки кода для проверки и возвращает предложения по категориям. Сначала выберите файл и категорию проверки, затем изучите найденные предложения. Принятое предложение передайте в отдельную задачу реализации; маршруты анализа сохраняют исходники без изменений.
Выбор поддерживаемого маршрута анализа
Для локального сканирования нужны исходники CodeGraph, установленное
Python-окружение и включённая локальная CLI. Подготовка описана в
руководстве CLI. В корне репозитория сохраните файл
optimization_example.py:
def total(items):
result = 0
for index in range(len(items)):
result += items[index]
return result
В PowerShell выполните:
python -m src.cli optimize analyze optimization_example.py --category performance --output suggestions.json
python -m src.cli optimize patterns --category performance
Get-Content suggestions.json -Raw | ConvertFrom-Json | Select-Object pattern_id, category, severity, start_line
Ожидаемый результат: файл suggestions.json содержит предложение PERF-002
с категорией performance, серьёзностью suggestion и строкой 3.
Команда patterns перечисляет правила этой категории. Исходный файл не меняется.
Это совпадение с регулярным выражением, а не доказательство замедления.
В этом примере len(items) вычисляется до начала цикла; название правила
о повторном вызове функции не подтверждает такой вызов. Проверьте смысл
предложения по исходникам и измерьте эффект на своей нагрузке.
analyze принимает файл или каталог. --category можно повторять;
значения: performance, security, readability, best_practice.
Без фильтра проверяются все категории. --severity задаёт минимальную
серьёзность: critical, warning, suggestion, info.
--limit ограничивает число показанных и сохранённых предложений, по умолчанию 50.
--output задаёт JSON-файл. Если предложений нет, команда выводит
No optimization suggestions found., возвращает 0 и не записывает файл.
Для каждого запуска выбирайте новое имя отчёта и сопоставляйте файл
с текущим выводом команды.
Запуск типизированного сценария
from src.digital_employees.runtime.scenarios import (
RoleBoundScenarioInvocationRequest,
invoke_role_bound_scenario_request,
)
request = RoleBoundScenarioInvocationRequest(
query="Проанализируй возможности оптимизации в optimization_example.py.",
employee_id="codegraph_developer",
scenario_id="scenario_18",
event_type="implementation_start",
context={
"project_key": "codegraph",
"namespace": "default",
"task_id": "<task-id>",
"source_refs": ["<revision-ref>", "<measurement-ref>"],
"file_paths": ["optimization_example.py"],
},
)
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"])
print(result.get("optimization_suggestions", []))
Замените область задачи и ссылки на ревизию и измерения своими значениями.
Условия выполнения описаны в руководстве программного вызова:
рабочий сценарий требует настроенного runtime и доступного контекста проекта.
При наличии предложений результат содержит optimization_suggestions.
Сопоставьте metadata.analyzed_paths с нужными файлами, а metadata.suggestion_count —
с числом предложений. Пустой список читайте вместе с ответом, путями и сообщениями
анализа. Сохраните ролевые свидетельства; предложения передайте в отдельную задачу реализации.
MCP и композитный анализ
Инструмент codegraph_runtime_composition_workflow_run использует проект из активного MCP-подключения. Передайте запрос анализа, orchestrator, namespace и task_id:
{
"query": "Проанализируй возможности оптимизации в файле optimization_example.py",
"orchestrator": "s18",
"language": "ru",
"namespace": "<namespace>",
"task_id": "<task-id>"
}
Значение s18 запускает ролевой сценарий scenario_18. Ответ содержит answer, evidence и metadata: предложения смотрите в ответе, а metadata.analyzed_paths и metadata.suggestion_count сверьте с запросом.
CLI-команда python -m src.cli composition run "<query>" -o s18 запускает более широкий композитный анализ и хранит сессию в текущем процессе. Сохраните результат анализа и используйте его при подготовке задачи реализации.
От анализа к реализации
Используйте analyze и patterns, чтобы изучить предложения. Принятое предложение реализуйте в отдельном изменении. Запустите целевые тесты, сравните измерения с исходным уровнем и проверьте diff. Подкоманды list-suggestions, approve, reject, apply и undo зарегистрированы; их обработчики печатают not yet implemented и возвращают код 1.
composition apply также не применяет изменения. Сессия хранится только
в текущем процессе: отдельный запуск команды обычно возвращает
Session not found и код 1. Если сессия есть, обработчик печатает
Edit application not implemented in CLI demo, не редактирует файл
и возвращает 0. Проверяйте применение по изменениям исходников и результатам тестов
в задаче реализации. Инструмент MCP для композитного анализа возвращает
предложения для этого этапа.
Проверка предложений
Каждое предложение проверьте по привязанной ревизии, измеримой цели, ограничениям совместимости и целевым тестам. Ускорение, устранение уязвимости и улучшение сопровождаемости подтверждаются измерениями и тестами.
Ошибки и восстановление
- Путь не найден: команда сообщает
Path not found:и возвращает 1. Исправьте путь файла или каталога. - Предложений нет: проверьте выбранную категорию, список правил и путь анализа.
- Команда сообщает
not yet implemented: вернитесь к отчёту анализа и оформите выбранное предложение в задаче реализации. - Сессия композитного анализа потеряна: повторите анализ, сохраните результат и передайте предложения в задачу реализации.