AITools

Namespace: Vortex.Unity.Extensions.Editor.AITools Assembly: ru.vortex.aitools

Назначение

Инструментарий для взаимодействия с внешними системами анализа кода (LLM). Агрегирует исходный код и документацию из указанной директории в текстовые артефакты, пригодные для передачи в языковую модель. Содержит готовые промпты для типовых задач.

Возможности:

  • Агрегация всех .cs и .md файлов из выбранной папки в единый текстовый файл
  • Рекурсивный обход подкаталогов с сохранением относительных путей
  • Раздельные артефакты для кода и документации
  • Размещение результатов вне дерева проекта (не попадают в VCS и сборку)
  • Готовые промпты для оценки качества кода и генерации документации

Вне ответственности:

  • Взаимодействие с API языковых моделей
  • Парсинг или анализ кода
  • Модификация исходных файлов

Зависимости

  • UniTask — асинхронная обработка (UniTask.Yield() каждые 100 файлов)
  • UnityEditorMenuItem, Selection, AssetDatabase

Архитектура

AITools/
├── AIContextCreator.cs                  # Editor-only утилита агрегации
├── Prompt code quality analysis.md      # Промпт: оценка качества кода
├── Prompt create docs.md                # Промпт: генерация документации
└── ClaudeCodeSkills/                    # Скиллы для Claude Code (+ собственный README)

Подпакет ClaudeCodeSkills содержит набор скиллов для Claude Code, упаковывающих методики Vortex (определение слоя, начальная архитектура, оценка качества, оформление ТЗ) в исполняемый формат. Подробности — в его собственном README.

AIContextCreator

Статический класс за #if UNITY_EDITOR. Запускается через контекстное меню: Assets → Vortex → Debug → Create Context for AI

При вызове:

  1. Сканирует выбранную папку рекурсивно
  2. Собирает .cs файлы в {FolderName}_{Timestamp}.txt
  3. Собирает .md файлы в {FolderName}_MD_{Timestamp}.txt
  4. Сохраняет на два уровня выше Application.dataPath

Формат каждого файла в артефакте:

// ============================================================
// FILE: относительный/путь/от/Assets/MyFile.cs
// ============================================================
<содержимое файла>

Готовые промпты

Пакет содержит два промпт-файла для использования с языковыми моделями.

Prompt code quality analysis.md

Методика количественной оценки качества кода по 10-балльной шкале в четырёх категориях:

Категория Что оценивает
Документируемость Соотношение документации к системам, комментарии, контракты
Масштабируемость Нейтральные классы, атомарность, чистота паттернов, глубина наследования, цикломатическая сложность
Поддерживаемость Размер классов, константы, дублирование, магические числа
Производительность Аллокации в горячих путях, кэширование GetComponent, строковые операции в циклах

Содержит формулы для каждой метрики, шкалы оценки, маркеры архитектурных проблем и итоговую формулу качества.

Критерии применимости:

Объём кода Применимость Причина
1 система / пакет (до ~3000 LOC) Полная Каждый файл читается целиком
2–5 систем (до ~10 000 LOC) Частичная Количественные метрики работают, маркеры проблем пропускаются
Весь фреймворк (10 000+ LOC) Неприменим LLM переключается на каталогизацию вместо построчного анализа

Промпт требует глубокого чтения: проверка каждого интерфейса на ISP, каждого as ConcreteType на ложную расширяемость, каждого async void, подсчёт полей с учётом всей иерархии наследования. При большом контексте LLM заменяет этот анализ обзором папок и namespace'ов — формально выполняя задачу, но пропуская все реальные проблемы.

Правило: если код не помещается в контекст так, чтобы каждый файл был прочитан целиком — разбить на пакеты и анализировать по одному.

Prompt create docs.md

Правила оформления README-документации для пакетов Vortex Framework:

  • Структура из 8 разделов (назначение → зависимости → архитектура → контракт → использование → граничные случаи)
  • Стиль: академический, фактологический, без маркетинга
  • Правила для многокомпонентных систем и debug-секций
  • Разделение Core/Unity документации

Контракт

Вход

  • Одна выделенная папка в Project Window

Выход

  • Два текстовых файла вне проекта (.cs и .md артефакты)

Ограничения

  • Только editor-режим
  • Ровно одна папка в выделении
  • Файлы должны быть внутри Assets/

Граничные случаи

Ситуация Поведение
Выделено 0 или >1 объектов Пункт меню недоступен (validate)
Выделен файл вместо папки Пункт меню недоступен
Папка не содержит .cs/.md LogWarning, артефакт не создаётся
Ошибка чтения файла LogWarning для файла, остальные обрабатываются
>100 файлов Асинхронный yield каждые 100 файлов