VanguardReMaster/docs/Development/AGENT-WORKFLOW.md

154 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Процесс: анализ → реализация (DeepSeek)
Двухэтапный процесс для задач, которые меняют игру, клиент, сервер, контент или
инфраструктуру. Оба этапа выполняет DeepSeek, но в разных проходах и, как
правило, в разных сессиях: сначала фиксируется план, затем по нему пишется код.
Разделение нужно, чтобы анализ не смешивался с правками, а объём не
расширялся по ходу. Общий контекст — только файлы репозитория и Git, не память
модели.
## 1. Роли
### DeepSeek — анализ и план
- Читает `AGENTS.md`, Skill `vanguard-remaster`, `docs/SESSION-STATE.md`,
`docs/HANDOFF.md` и связанный код.
- Изучает историю, договорённости и существующую реализацию.
- Задаёт вопросы через инструмент `question`, если без ответа нельзя
корректно спланировать изменение.
- Создаёт или обновляет раздел задачи в `docs/Development/IMPLEMENTATION_PLAN.md`.
- **Не изменяет игровой код, сцены, префабы, ScriptableObject и конфиги.**
- Может обновлять только документацию и план.
### DeepSeek — реализация
- Читает `AGENTS.md`, Skill и раздел задачи по её ID.
- Проверяет актуальное состояние Git и кода; сверяет план с реальными
классами/методами.
- Реализует только согласованный объём.
- Запускает доступные проверки.
- Обновляет статусы пунктов и результат проверки в плане.
- Обновляет Skill, если пользователь согласовал новое постоянное правило.
- **Не придумывает новые правила/архитектуру и не расширяет задачу.**
## 2. Как модели получают инструкции и доступ
- Оба этапа используют **тот же репозиторий** и те же `AGENTS.md`/Skill.
Отдельные копии правил не создаются.
- Оператор выбирает модель в OpenCode. В текущей установке доступны
DeepSeek-модели (подтверждено каталогом моделей):
`opencode-go/deepseek-v4.1-flash`, `opencode-go/deepseek-v4-pro`,
`deepseek/deepseek-flash`, `deepseek/deepseek-v4-pro`,
`opencode/deepseek-v4.1-flash-free`. Конкретную модель выбирает
пользователь; этапы анализа и реализации могут идти на разных моделях
DeepSeek.
- Передача работы — через:
1. план задачи в `docs/Development/IMPLEMENTATION_PLAN.md`;
2. текущий Git-коммит/ветку/рабочую копию;
3. `docs/SESSION-STATE.md` и `docs/HANDOFF.md` для состояния.
- Не полагайся на «предыдущий чат» как на единственный источник: если чего-то
нет в файлах, это неизвестно.
- Если агенты работают в разных ветках/копиях, это должно быть явно указано в
плане; не создавай ветки и не делай merge без разрешения.
## 3. Этап 1 — анализ
1. **Пожелание:** сформулируй ожидаемый результат, ограничения и критерии
готовности. Не пересказывай задачу в плане длиннее, чем нужно.
2. **Правила:** найди применимые разделы Skill. Отметь обязательные ограничения.
3. **Код:** проследи существующие классы, методы, вызовы, подписки, состояние,
UI и данные. Не ограничивайся файлами из сообщения пользователя.
4. **Пробелы:** проверь историю и документацию; если правило не подтверждено,
пометь `[O]`. Не выдумывай.
5. **Вопросы:** если неизвестность влияет на реализацию, задай вопрос через
`question` с 2–4 вариантами.
6. **План:** добавь раздел `TASK-YYYY-NNN` в `IMPLEMENTATION_PLAN.md` по шаблону:
цель, текущее состояние, чек-лист, последовательность, проверки, риски.
7. **Проверка плана:** каждый пункт должен быть выполним другим агентом;
зависимости и ожидаемый результат должны быть явными.
8. **Стоп:** после анализа не переходи к коду.
## 4. Этап 2 — реализация
1. **Подготовка:** прочитай `AGENTS.md`, Skill, нужный раздел плана.
2. **Git:** `git status`, `git log -1`, при необходимости `git diff`; не
присваивай чужие незакоммиченные изменения.
3. **Актуальность:** сверь файлы/методы плана с кодом. Если код изменился:
- план остаётся верным — продолжай;
- появились новые зависимости — обнови план с причиной;
- требования/архитектура неоднозначны — останови зависимую часть и спроси.
4. **Реализация:** выполняй пункты по порядку, минимальными изменениями, без
необязательного рефакторинга и без несвязанных файлов.
5. **Проверки:** тесты, сборка/компиляция, smoke, `validate`,
`translations check`, `git diff` — только доступные и подтверждённые.
6. **Статусы:** обнови каждый пункт:
- `[x]` — реализовано и проверено;
- `[!]` — блокер/вопрос с причиной;
- `[-]` — отменено после согласованного изменения.
Если код есть, а проверки не было — не ставь `[x]`; пиши
«Реализация: выполнена. Проверка: не выполнена — причина».
7. **Skill:** если появилось постоянное правило — обнови существующий раздел,
не создавай дубликат; временные решения в Skill не писать.
8. **Итог:** краткий отчёт: что сделано, файлы, проверки, незавершённое,
вопросы, обновлялся ли Skill.
## 5. Защита от устаревших планов и конфликтов
- План — не безусловное разрешение на изменение кода.
- Перед каждым блоком проверяй актуальный файл и Git, а не только текст плана.
- Не перезаписывай разделы других задач; не удаляй невыполненные пункты.
- Если два плана затрагивают один класс/систему, проверь пересечение и
зафиксируй порядок.
- Если план противоречит Skill/подтверждённому требованию — остановись,
зафиксируй противоречие и задай вопрос.
- Не смешивай анализ, реализацию и приёмку в один непроверенный статус.
## 6. Границы
### Можно на этапе анализа
- читать код, конфиги, тесты, историю;
- создавать/обновлять план и только документацию;
- задавать вопросы.
### Нельзя на этапе анализа
- менять игровой код, сцены, префабы, ScriptableObject, YAML-контент и
настройки;
- «попутно» исправлять найденные баги без отдельной задачи/плана;
- объявлять реализацию начатой.
### Можно на этапе реализации
- менять только файлы, перечисленные в плане (или обоснованно добавленные с
обновлением плана);
- добавлять тесты для изменённой механики;
- обновлять план и Skill по правилам выше.
### Нельзя на этапе реализации
- менять несвязанные системы;
- переписывать архитектуру без решения пользователя;
- удалять чужую работу;
- выдавать непроверенный результат за проверенный;
- проходить геймплей за пользователя и называть это приёмкой.
## 7. Проверки и окружение
- Серверные тесты, `validate`, `translations check` — только `ssh home` /
Docker, не локальный `dotnet`/Docker.
- Unity batch/EditMode/smoke — в копии проекта без `Library`; не открывать
второй Unity с тем же проектом.
- Перед коммитом: `git diff --check`, просмотр `git diff`, проверка отсутствия
несвязанных файлов.
- После блока: коммит/push, если пользователь не запретил.
- Геймплей вручную проверяет пользователь; агент фиксирует, что именно
осталось на ручную проверку.
## 8. Исторические документы
`IMPLEMENTATION_CHECKLIST.md` и `DEVELOPMENT_CHECKLIST.md` — исторические
планы/решения. Новые задачи ведутся только в
`docs/Development/IMPLEMENTATION_PLAN.md`; не добавляй новые задачи в старые
чек-листы.