122 lines
7.6 KiB
Markdown
122 lines
7.6 KiB
Markdown
# Правила работы агента
|
||
|
||
## Общий принцип
|
||
|
||
Работа ведется этапами.
|
||
|
||
После завершения каждого смыслового этапа агент:
|
||
- кратко фиксирует, что сделано
|
||
- предлагает пользователю название коммита
|
||
- ждет явного подтверждения на коммит
|
||
- только после подтверждения выполняет `git commit`
|
||
|
||
Коммиты не должны идти бессистемным потоком.
|
||
|
||
Каждый коммит должен визуально читаться по заголовку и сразу показывать:
|
||
- какой это слой изменений
|
||
- к какому направлению относится этап
|
||
- что именно сделано на этом этапе
|
||
|
||
## Формат названия коммита
|
||
|
||
Формат:
|
||
|
||
```text
|
||
<ТИП> - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: <НАЗВАНИЕ ЭТАПА>
|
||
```
|
||
|
||
## Типы коммитов
|
||
|
||
Использовать верхний уровень по смыслу изменений:
|
||
|
||
- `UI` — если изменения в интерфейсе, текстах, навигации, отображении, UX
|
||
- `ФУНКЦИИ` — если изменения в прикладной логике, API, действиях, синхронизации, обработчиках
|
||
- `АРХ` — если изменения в архитектуре, структуре данных, инфраструктурных правилах, каркасе реализации
|
||
|
||
Если этап затрагивает несколько слоев, выбирать доминирующий.
|
||
|
||
## Правило предложения коммита
|
||
|
||
После каждого завершенного этапа агент должен предлагать пользователю готовое название коммита.
|
||
|
||
Перед предложением названия коммита агент должен отдельным коротким блоком указывать следующую задачу.
|
||
|
||
Порядок вывода в конце этапа:
|
||
- что сделано
|
||
- следующая задача
|
||
- предлагаемое название коммита
|
||
|
||
Пример:
|
||
|
||
```text
|
||
Следующая задача:
|
||
добрать source-side индикатор изменений в списке внешних контуров
|
||
|
||
UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: переименование модуля во внутренний контур
|
||
```
|
||
|
||
Пользователь отвечает подтверждением в духе:
|
||
- `коммитить`
|
||
- `да, коммить`
|
||
- `ок, коммит`
|
||
|
||
Только после этого агент делает коммит.
|
||
|
||
## Примеры
|
||
|
||
```text
|
||
UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: переименование модуля во внутренний контур
|
||
ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: создание запроса в целевой проект
|
||
ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: синхронизация статусов источника и цели
|
||
АРХ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: каркас source-target связи
|
||
АРХ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: регламент этапов и именования коммитов
|
||
```
|
||
|
||
## Дополнение
|
||
|
||
Если пользователем не сказано иное:
|
||
- не делать `amend`
|
||
- не переписывать историю
|
||
- не объединять несколько отдельных этапов в один коммит постфактум
|
||
|
||
## Ведение карточек задач Codex
|
||
|
||
Карточка задачи должна разделять постановку, план этапов и фактическую реализацию.
|
||
|
||
Заголовок карточки:
|
||
- передает основную суть задачи
|
||
- должен быть коротким, читаемым в списке и без служебного шума
|
||
|
||
Основное тело карточки:
|
||
- хранит концептуальное описание задачи, цель, контекст, ограничения и критерии приемки
|
||
- описывает, зачем делается изменение и как система должна работать на среднем уровне детализации
|
||
- не превращается в журнал работ и не дублирует чекеры
|
||
- остается читаемым входом в задачу после нескольких итераций
|
||
|
||
Подэлементы-чекеры:
|
||
- создаются через `Добавить подэлемент` как отдельный чекер на каждый смысловой этап
|
||
- заголовок чекера должен называться как этап, например `Этап 1. Backend enforcement лимитов`
|
||
- пункты внутри чекера должны быть короткими проверяемыми действиями по этапу
|
||
- пункт закрывается только после реализации и проверки, а не по намерению
|
||
- чекеры используются как рабочий план, а не как место для длинных объяснений
|
||
|
||
Текстовые блоки фактической реализации:
|
||
- создаются через `Добавить подэлемент` под соответствующим чекером этапа
|
||
- заголовок текстового блока должен явно связывать его с этапом, например `Реализация этапа 1`
|
||
- блок фиксирует, что реально сделано, какие файлы/модули затронуты, какие проверки прошли и какие ограничения остались
|
||
- важные нюансы для дальнейшего масштабирования записываются именно сюда, а не теряются в чате
|
||
- после каждого осмысленного этапа соответствующий текстовый блок обновляется
|
||
|
||
Статус карточки:
|
||
- `В работе` ставится только когда задача реально взята в исполнение
|
||
- `Готово` ставится после проверки результата и закрытия рабочих чекеров
|
||
- `Отложено` используется для задач, которые больше не входят в текущий рабочий план
|
||
- backlog не должен хранить уже сделанные или сознательно отложенные задачи как активные
|
||
|
||
## Публикация фронта
|
||
|
||
После каждой правки интерфейса агент должен:
|
||
- залить изменения на локально доступный frontend
|
||
- сообщить пользователю, по какому URL смотреть результат
|
||
- не считать этап завершенным, пока пользователь не сможет открыть измененную страницу в браузере, если этому не мешают внешние технические ограничения
|