Сценарий 18: Интерактивная оптимизация кода

Сценарий 18: Интерактивная оптимизация кода

Разработчик или технический лидер, улучшающий качество кода с помощью предложений на основе ИИ и рабочих процессов утверждения.

Содержание

Быстрый старт

/select 18

Обзор

Сценарий 18 предоставляет оптимизацию кода на основе ИИ с интерактивным рабочим процессом утверждения. Он анализирует код на предмет улучшений производительности, безопасности и читаемости, а затем представляет предложения для рассмотрения перед применением изменений.

Запрос пользователя → Движок анализа → Предложения → Рабочий процесс утверждения → Применение правок
                           ↓
            ┌──────────────┬──────────────┐
            ↓              ↓              ↓
      Производительность  Безопасность  Читаемость

Категории оптимизации

Оптимизация производительности

Выявление узких мест производительности и неэффективностей:

> Проанализировать src/core/ на проблемы производительности

╭─────────────── Анализ производительности ────────────────╮
                                                            
  Итоги по категориям:                                      
  - Производительность: 12                                  
                                                            
  Предложения:                                              
                                                            
  1. [Предупреждение] Инвариантное вычисление в цикле       
     Файл: `src/core/processor.py:45`                       
     ID: `opt_001`                                          
     Вынести `len(data)` за пределы цикла                   
                                                            
  2. [Предупреждение] Неэффективная конкатенация строк      
     Файл: `src/core/formatter.py:89`                       
     ID: `opt_002`                                          
     Использовать join вместо += в цикле                    
                                                            
  3. [Рекомендация] Отсутствует декоратор кэширования       
     Файл: `src/core/calculator.py:34`                      
     ID: `opt_003`                                          
     Добавить @lru_cache для чистой функции                 
                                                            
  Используйте `/optimize approve --id <id>` для утверждения.
                                                            
╰────────────────────────────────────────────────────────────╯

Оптимизация безопасности

Выявление уязвимостей безопасности и возможностей укрепления:

> Проанализировать src/api/ на проблемы безопасности

╭─────────────── Анализ безопасности ──────────────────────╮
                                                            
  Итоги по категориям:                                      
  - Безопасность: 8                                         
                                                            
  Предложения:                                              
                                                            
  1. [Критическое] Риск SQL-инъекции                        
     Файл: `src/api/user_handler.py:67`                     
     ID: `sec_001`                                          
     Использовать параметризованные запросы                 
                                                            
  2. [Предупреждение] Отсутствует валидация входных данных  
     Файл: `src/api/data_handler.py:23`                     
     ID: `sec_002`                                          
     Добавить проверку длины для пользовательского ввода    
                                                            
  3. [Предупреждение] Жёстко заданный таймаут               
     Файл: `src/api/client.py:45`                           
     ID: `sec_003`                                          
     Использовать настраиваемое значение таймаута           
                                                            
  Используйте `/optimize approve --id <id>` для утверждения.
                                                            
╰────────────────────────────────────────────────────────────╯

Оптимизация читаемости

Выявление запахов кода и проблем сопровождаемости:

> Проанализировать src/utils/ на читаемость

╭─────────────── Анализ читаемости ────────────────────────╮
                                                            
  Итоги по категориям:                                      
  - Читаемость: 15                                          
                                                            
  Предложения:                                              
                                                            
  1. [Рекомендация] Длинная функция (52 строки)             
     Файл: `src/utils/parser.py:89`                         
     ID: `read_001`                                         
     Выделить вспомогательные функции                       
                                                            
  2. [Рекомендация] Глубокая вложенность условий            
     Файл: `src/utils/validator.py:34`                      
     ID: `read_002`                                         
     Использовать ранние возвраты для упрощения логики      
                                                            
  3. [Информация] Отсутствует docstring                     
     Файл: `src/utils/helpers.py:12`                        
     ID: `read_003`                                         
     Добавить документацию функции                          
                                                            
╰────────────────────────────────────────────────────────────╯

Рабочий процесс утверждения

Просмотр предложений

Просмотр подробной информации о предложении:

> Показать детали для opt_001

╭─────────────── Детали предложения ───────────────────────╮
                                                            
  ID: opt_001                                               
  Категория: Производительность                             
  Серьёзность: Предупреждение                               
                                                            
  Название: Инвариантное вычисление в цикле                 
  Файл: src/core/processor.py:45                            
                                                            
  Текущий код:                                              
  ```python                                                 
  for i in range(len(data)):                                
      if i < len(data) - 1:                                 
          process(data[i])                                  
  ```                                                       
                                                            
  Предлагаемое исправление:                                 
  ```python                                                 
  data_len = len(data)                                      
  for i in range(data_len):                                 
      if i < data_len - 1:                                  
          process(data[i])                                  
  ```                                                       
                                                            
  Эффект: ~15% улучшение в итерациях цикла                  
  Уверенность: 0.95                                         
                                                            
╰────────────────────────────────────────────────────────────╯

Утвердить/Отклонить/Отложить

> /optimize approve --id opt_001

╭─────────────── Предложение утверждено ───────────────────╮
│                                                            │
│  ID: opt_001                                               │
│  Статус: УТВЕРЖДЕНО                                        │
│                                                            │
│  Правка добавлена в очередь. Используйте `/optimize apply` │
│  для применения всех утверждённых изменений.               │
│                                                            │
╰────────────────────────────────────────────────────────────╯

> /optimize reject --id opt_002 --reason "Неприменимо"

> /optimize defer --id opt_003 --until "2024-02-01"

Применение утверждённых изменений

> /optimize apply

╭─────────────── Применение изменений ─────────────────────╮
│                                                            │
│  Утверждённых предложений: 5                               │
│                                                            │
│  Применение opt_001... Готово                              │
│  Применение sec_001... Готово                              │
│  Применение read_001... Готово                             │
│  Применение read_002... Готово                             │
│  Применение sec_003... Готово                              │
│                                                            │
│  Итого:                                                    │
│    Успешно применено: 5                                    │
│    Неудачно: 0                                             │
│    Изменено файлов: 4                                      │
│                                                            │
│  Резервные копии созданы в: .codegraph/backups/            │
│                                                            │
╰────────────────────────────────────────────────────────────╯

Отмена применённых изменений

> /optimize undo

╭─────────────── Отмена изменений ─────────────────────────╮
│                                                            │
│  Последний пакет: 5 изменений применено в 14:35:21         │
│                                                            │
│  Отмена opt_001... Готово                                  │
│  Отмена sec_001... Готово                                  │
│  Отмена read_001... Готово                                 │
│  Отмена read_002... Готово                                 │
│  Отмена sec_003... Готово                                  │
│                                                            │
│  Все изменения успешно отменены.                           │
│                                                            │
╰────────────────────────────────────────────────────────────╯

Композитный режим (Оркестратор)

Сценарий 18 может работать как композитный оркестратор, вызывая несколько подсценариев для комплексного анализа:

┌─────────────────────────────────────────────────────────────┐
│              КОМПОЗИТНЫЙ ОРКЕСТРАТОР S18                    │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │             ВЫЗОВ СЦЕНАРИЕВ                             │ │
│  │  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐          │ │
│  │  │ S02 │  │ S05 │  │ S06 │  │ S11 │  │ S12 │          │ │
│  │  │Безоп│  │Рефак│  │Произ│  │Архит│  │Долг │          │ │
│  │  └──┬──┘  └──┬──┘  └──┬──┘  └──┬──┘  └──┬──┘          │ │
│  └─────┼────────┼───────┼────────┼────────┼──────────────┘ │
│        │        │       │        │        │                 │
│        └────────┴───────┴────────┴────────┘                 │
│                         ↓                                   │
│  ┌────────────────────────────────────────────────────────┐ │
│  │                  ОБЪЕДИНЕНИЕ РЕЗУЛЬТАТОВ                │ │
│  │          (дедупликация, разрешение конфликтов)          │ │
│  └────────────────────────────────────────────────────────┘ │
│                         ↓                                   │
│  ┌────────────────────────────────────────────────────────┐ │
│  │               КАЛЬКУЛЯТОР ПРИОРИТЕТОВ                   │ │
│  │     (серьёзность × влияние × roi × уверенность × консенсус) │
│  └────────────────────────────────────────────────────────┘ │
│                         ↓                                   │
│                 УНИФИЦИРОВАННЫЕ НАХОДКИ                     │
└─────────────────────────────────────────────────────────────┘

Подсценарии

Сценарий Вес Вклад
S02 (Аудит безопасности) 1.5 Уязвимости безопасности
S05 (Рефакторинг) 1.0 Запахи кода, мёртвый код
S06 (Производительность) 1.2 Узкие места производительности
S11 (Архитектура) 1.1 Нарушения архитектуры
S12 (Технический долг) 0.9 Элементы технического долга

Запуск композитного режима

# CLI
codegraph composition run "Оптимизировать src/" -o s18

# API
POST /api/v1/composition/query
{
  "query": "Оптимизировать src/",
  "orchestrator": "scenario_18"
}

Стратегии объединения

Стратегия Описание
union Включить все находки (по умолчанию)
intersection Только находки из 2+ сценариев
weighted Взвешивать по приоритету сценария
consensus Только находки с согласием

Команды CLI

# Анализ по всем категориям
codegraph optimize analyze src/

# Анализ по конкретной категории
codegraph optimize analyze src/ --performance
codegraph optimize analyze src/ --security
codegraph optimize analyze src/ --readability

# Список ожидающих предложений
codegraph optimize list

# Показать детали предложения
codegraph optimize show --id opt_001

# Утвердить предложение
codegraph optimize approve --id opt_001

# Отклонить предложение
codegraph optimize reject --id opt_002 --reason "Не требуется"

# Применить все утверждённые
codegraph optimize apply

# Отменить последний пакет
codegraph optimize undo

Команды TUI

Команда Описание
/optimize analyze <путь> Анализ на оптимизации
/optimize list Список ожидающих предложений
/optimize show --id <id> Показать детали предложения
/optimize approve --id <id> Утвердить предложение
/optimize reject --id <id> Отклонить предложение
/optimize defer --id <id> Отложить на потом
/optimize apply Применить утверждённые изменения
/optimize undo Отменить последний пакет

Примеры вопросов

  • “Оптимизировать src/core/ для производительности”
  • “Найти улучшения безопасности в src/api/”
  • “Проанализировать src/utils/ на проблемы читаемости”
  • “Показать все ожидающие предложения по оптимизации”
  • “Утвердить предложение opt_001”
  • “Применить все утверждённые оптимизации”
  • “Каково будет влияние исправления sec_001?”

Конфигурация

Настройка поведения оптимизации в config.yaml:

scenarios:
  code_optimization:
    categories:
      - performance
      - security
      - readability
    severity_threshold: info  # info, warning, critical
    max_suggestions: 50
    auto_backup: true
    composite:
      enabled: true
      sub_scenarios:
        - scenario_02  # Безопасность
        - scenario_05  # Рефакторинг
        - scenario_06  # Производительность
        - scenario_11  # Архитектура
        - scenario_12  # Технический долг
      parallel_execution: true
      merge_strategy: weighted

Связанные сценарии