AITools
Namespace: Vortex.Unity.Extensions.Editor.AITools
Assembly: ru.vortex.aitools
Назначение
Инструментарий для взаимодействия с внешними системами анализа кода (LLM). Агрегирует исходный код и документацию из указанной директории в текстовые артефакты, пригодные для передачи в языковую модель. Содержит готовые промпты для типовых задач.
Возможности:
- Агрегация всех
.csи.mdфайлов из выбранной папки в единый текстовый файл - Рекурсивный обход подкаталогов с сохранением относительных путей
- Раздельные артефакты для кода и документации
- Размещение результатов вне дерева проекта (не попадают в VCS и сборку)
- Готовые промпты для оценки качества кода и генерации документации
Вне ответственности:
- Взаимодействие с API языковых моделей
- Парсинг или анализ кода
- Модификация исходных файлов
Зависимости
- UniTask — асинхронная обработка (
UniTask.Yield()каждые 100 файлов) - UnityEditor —
MenuItem,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
При вызове:
- Сканирует выбранную папку рекурсивно
- Собирает
.csфайлы в{FolderName}_{Timestamp}.txt - Собирает
.mdфайлы в{FolderName}_MD_{Timestamp}.txt - Сохраняет на два уровня выше
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 файлов |