@gian-tiaga/eda 3.3.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/lib/install.js +33 -1
- package/package.json +1 -1
- package/skills/eda-plan-execute/SKILL.md +67 -27
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ eda update-all ~/Code
|
|
|
51
51
|
| `eda-plan-review` | Одним read-only проходом проверяет план по фиксированному чек-листу из 16 пунктов: покрытие запроса, отсутствие развилок, соответствие правилам и архитектуре, дубли, регистр текста, фазы и объём. Замечания вне списка не принимает. Оценка — доля закрытых пунктов, поэтому растёт монотонно. План не меняет | `docs/artifacts/plan-reviews/` |
|
|
52
52
|
| `eda-plan-review-fix` | Закрывает проваленные пункты чек-листа минимальным изменением плана с совпадающим SHA-256. План не растёт: сначала удаление и замена, прирост объёма за один заход не больше 3%. Новое ревью не делает и код не меняет | `docs/artifacts/plan-review-fixes/` |
|
|
53
53
|
| `eda-plan-polish` | Оркестрирует изолированный цикл plan-review → plan-review-fix. Хранит снапшот лучшей версии плана: как только score перестаёт расти, останавливается и восстанавливает лучшую версию, а не последнюю. По умолчанию две review-итерации. Кросс-CLI strict не используется | `docs/artifacts/plan-reviews/`, `docs/artifacts/plan-review-fixes/` |
|
|
54
|
-
| `eda-plan-execute` | Управляет выполнением плана по
|
|
54
|
+
| `eda-plan-execute` | Управляет выполнением плана по фазам в режиме `subagents`, `single` или `auto`. В `subagents` каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила, архитектуру и только business/reference-карточки затронутого поведения и компонентов. Фазы проходят строго последовательно и принимаются независимыми проверяющими. В `single` весь план по тем же правилам выполняет и проверяет основной агент в одном контексте, а `auto` выбирает режим по плану. Отметки подтверждённых задач и журнал ведёт основной агент | `docs/artifacts/executions/` |
|
|
55
55
|
| `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или плану. Перед правками читает правила, архитектуру и только применимые карточки, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/artifacts/fixes/` |
|
|
56
56
|
| `eda-review` | Оркестрирует отдельные read-only проверки корректности, архитектуры, правил, references, business-правил, плана, качества, тестов, безопасности, производительности, frontend/UI/UX, API, БД, документации и предыдущих ревью. Сохраняет только доказанные дефекты, которые обязательно исправить; косметические и спекулятивные предложения отбрасывает. Любая находка даёт `changes-required`, а чистое ревью — `clean` и 100/100. Без аргументов ревьюит `git diff HEAD` | `docs/artifacts/reviews/` |
|
|
57
57
|
| `eda-fix-by-review` | Применяет все находки из ревью с учётом правил, архитектуры и применимых карточек. Спрашивает только при неоднозначности, конфликте, расширении scope или рискованном действии. В конце ссылается на отчёт прямо в файле ревью | `docs/artifacts/review-fixes/` |
|
|
@@ -124,6 +124,8 @@ eda update-all ~/Code
|
|
|
124
124
|
|
|
125
125
|
У некоторых скилов есть флаг `strict` — он включает дополнительные тяжёлые проверки. Передаётся как часть запроса агенту, например: `eda-explore strict <тема>`. Также strict можно включить отдельно в `docs/settings.yaml`, например через `explore.strict: true`. У `eda-review` вместо общего режима каждая проверка имеет собственные `mode` и `model`.
|
|
126
126
|
|
|
127
|
+
У `eda-plan-execute` есть режимы `subagents` / `single` / `auto`. Режим можно разово указать в вызове, например `eda-plan-execute single docs/artifacts/plans/....md`; без него используется `plan-execute.mode` из настроек, а без настроек — `auto`.
|
|
128
|
+
|
|
127
129
|
У `eda-aim` есть режимы `automatic` / `manual`. В автоматическом основной агент сам отвечает на безопасные рабочие вопросы по рекомендации субагента и фактам проекта, в ручном передаёт их человеку. Режим можно разово указать в вызове; без него используется `aim.mode` из настроек. Точный список новых целей перед записью в `docs/artifacts/aims/` всё равно один раз подтверждает человек.
|
|
128
130
|
|
|
129
131
|
Скилы, которых нет в таблице ниже, не поддерживают эти флаги. Набор проверок `eda-review` отдельно управляется через `review.agents`.
|
|
@@ -135,6 +137,7 @@ eda update-all ~/Code
|
|
|
135
137
|
| `eda-explore` | `strict` | После сохранения отчёта отдаёт его соседнему CLI (Claude → Codex или наоборот) на критическое ревью конкретности, фактов, развилок, рисков и версий; затем доправляет отчёт по замечаниям | Серьёзные исследования, которые лягут в основу больших решений; когда хочется второго мнения от другой модели/среды |
|
|
136
138
|
| `eda-plan` | `strict`, `без ревью плана`, `без проверок` | `strict` независимо включает кросс-CLI проверку; `без ревью плана` отключает встроенный review/fix; `без проверок` отключает оба вида ревью | Когда нужно разделить создание плана и его последующую полировку |
|
|
137
139
|
| `eda-plan-review` | `threshold N` | Разово меняет долю закрытых пунктов, при которой план считается готовым | Для самостоятельного аудита готового плана |
|
|
140
|
+
| `eda-plan-execute` | `subagents` / `single` / `auto` | Разово меняет, где выполняются фазы, поверх `plan-execute.mode` | `single` для небольшого плана в одном контексте, `subagents` для большого или тяжёлого |
|
|
138
141
|
| `eda-plan-polish` | `threshold N`, `limit N` | Меняет gate и максимальное число подтверждающих review-итераций | Для доводки ответственных планов перед `eda-plan-execute` |
|
|
139
142
|
|
|
140
143
|
---
|
|
@@ -229,6 +232,11 @@ plan-polish:
|
|
|
229
232
|
# Максимальное число подтверждающих review-итераций.
|
|
230
233
|
limit: 2
|
|
231
234
|
|
|
235
|
+
plan-execute:
|
|
236
|
+
# Где eda-plan-execute выполняет фазы плана.
|
|
237
|
+
# subagents — каждая фаза в отдельном субагенте, single — весь план одним контекстом, auto — решает по плану.
|
|
238
|
+
mode: auto
|
|
239
|
+
|
|
232
240
|
review:
|
|
233
241
|
# Каждая проверка имеет собственный режим запуска и модели для обеих сред.
|
|
234
242
|
agents:
|
|
@@ -377,6 +385,7 @@ discover-automations:
|
|
|
377
385
|
- `plan.size`, `plan.decision_mode`, `plan.test_strategy`, `plan.logging_strategy` — режим и структура работы `eda-plan`.
|
|
378
386
|
- `plan-review.threshold` — доля закрытых пунктов чек-листа для статуса `ready`, default `100`. Отдельных агентов у `plan-review` больше нет: проверку целиком делает один субагент.
|
|
379
387
|
- `plan-polish.limit` — максимальное число подтверждающих review-итераций; default `2`. Цикл останавливается раньше, если score перестал расти.
|
|
388
|
+
- `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `single` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
|
|
380
389
|
- `review.agents.<check>.mode` — запускать проверку всегда, автоматически по контексту или отключить.
|
|
381
390
|
- `review.agents.<check>.model.claude` и `.codex` — модель конкретной проверки в соответствующей среде.
|
|
382
391
|
- `eda-review` не делит находки по обязательности: каждый принятый пункт требует исправления, а предложения без доказанного практического дефекта отбрасываются. Score остаётся экспертной оценкой серьёзности; любая находка блокирует `clean` независимо от score.
|
package/lib/install.js
CHANGED
|
@@ -274,6 +274,9 @@ const DEFAULT_SETTINGS = {
|
|
|
274
274
|
planPolish: {
|
|
275
275
|
limit: 2
|
|
276
276
|
},
|
|
277
|
+
planExecute: {
|
|
278
|
+
mode: 'auto'
|
|
279
|
+
},
|
|
277
280
|
review: {
|
|
278
281
|
agents: DEFAULT_REVIEW_AGENTS
|
|
279
282
|
},
|
|
@@ -291,6 +294,7 @@ const SETTINGS_SECTION_NAMES = [
|
|
|
291
294
|
'plan',
|
|
292
295
|
'plan-review',
|
|
293
296
|
'plan-polish',
|
|
297
|
+
'plan-execute',
|
|
294
298
|
'review',
|
|
295
299
|
'send-review',
|
|
296
300
|
'discover-automations'
|
|
@@ -364,6 +368,20 @@ const PLAN_POLISH_LIMIT_CHOICES = [1, 2, 3].map(value => ({
|
|
|
364
368
|
value,
|
|
365
369
|
name: `${value} ${value === 1 ? 'итерация' : value < 5 ? 'итерации' : 'итераций'}`
|
|
366
370
|
}));
|
|
371
|
+
const PLAN_EXECUTE_MODE_CHOICES = [
|
|
372
|
+
{
|
|
373
|
+
value: 'auto',
|
|
374
|
+
name: 'Решать по плану: один контекст для простого плана, субагенты для остальных'
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
value: 'subagents',
|
|
378
|
+
name: 'Каждую фазу выполнять отдельным изолированным субагентом'
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
value: 'single',
|
|
382
|
+
name: 'Выполнять весь план одним контекстом без субагентов'
|
|
383
|
+
}
|
|
384
|
+
];
|
|
367
385
|
const PLAN_SIZE_CHOICES = [
|
|
368
386
|
{
|
|
369
387
|
value: 'normal',
|
|
@@ -715,7 +733,8 @@ export async function askSettings({
|
|
|
715
733
|
['plan', 'plan.testStrategy', settings.plan, 'testStrategy', 'Какую стратегию тестов eda-plan использовать по умолчанию?', TEST_STRATEGY_CHOICES],
|
|
716
734
|
['plan', 'plan.loggingStrategy', settings.plan, 'loggingStrategy', 'Какую стратегию логирования eda-plan использовать по умолчанию?', LOGGING_STRATEGY_CHOICES],
|
|
717
735
|
['plan-review', 'planReview.threshold', settings.planReview, 'threshold', 'Какой порог готовности использовать в eda-plan-review?', PLAN_REVIEW_THRESHOLD_CHOICES],
|
|
718
|
-
['plan-polish', 'planPolish.limit', settings.planPolish, 'limit', 'Сколько review-итераций разрешить eda-plan-polish?', PLAN_POLISH_LIMIT_CHOICES]
|
|
736
|
+
['plan-polish', 'planPolish.limit', settings.planPolish, 'limit', 'Сколько review-итераций разрешить eda-plan-polish?', PLAN_POLISH_LIMIT_CHOICES],
|
|
737
|
+
['plan-execute', 'planExecute.mode', settings.planExecute, 'mode', 'Как eda-plan-execute должен выполнять фазы по умолчанию?', PLAN_EXECUTE_MODE_CHOICES]
|
|
719
738
|
];
|
|
720
739
|
for (const [section, key, target, property, message, choices] of scalarPrompts) {
|
|
721
740
|
if (!requestedSections.has(section) || !shouldAsk(key)) continue;
|
|
@@ -1149,6 +1168,14 @@ function migrateSettingsContent(content) {
|
|
|
1149
1168
|
const planPolish = objectValue(raw['plan-polish']);
|
|
1150
1169
|
transfer('planPolish.limit', planPolish.limit, positiveInt, value => { settings.planPolish.limit = value; });
|
|
1151
1170
|
|
|
1171
|
+
const planExecute = objectValue(raw['plan-execute']);
|
|
1172
|
+
transfer(
|
|
1173
|
+
'planExecute.mode',
|
|
1174
|
+
planExecute.mode,
|
|
1175
|
+
oneOf(['subagents', 'single', 'auto']),
|
|
1176
|
+
value => { settings.planExecute.mode = value; }
|
|
1177
|
+
);
|
|
1178
|
+
|
|
1152
1179
|
const review = objectValue(raw.review);
|
|
1153
1180
|
transferAgentSettings({
|
|
1154
1181
|
rawAgents: objectValue(review.agents),
|
|
@@ -1368,6 +1395,11 @@ plan-polish:
|
|
|
1368
1395
|
# Положительное целое число.
|
|
1369
1396
|
limit: ${settings.planPolish.limit}
|
|
1370
1397
|
|
|
1398
|
+
plan-execute:
|
|
1399
|
+
# Где eda-plan-execute выполняет фазы плана.
|
|
1400
|
+
# subagents — каждая фаза в отдельном субагенте, single — весь план одним контекстом, auto — решает по плану.
|
|
1401
|
+
mode: ${settings.planExecute.mode}
|
|
1402
|
+
|
|
1371
1403
|
review:
|
|
1372
1404
|
# Каждая проверка имеет собственный режим запуска и модели для обеих сред.
|
|
1373
1405
|
agents:
|
package/package.json
CHANGED
|
@@ -5,24 +5,54 @@ description: 'Выполняет готовый план последовате
|
|
|
5
5
|
|
|
6
6
|
# Скил: Управляющий выполнением плана (eda-plan-execute)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Веди выполнение плана: фазы строго по порядку, каждая с проверяемым результатом, прогресс и журнал в актуальном состоянии. Где именно выполняются фазы, задаёт режим.
|
|
9
|
+
|
|
10
|
+
## Настройки
|
|
11
|
+
|
|
12
|
+
Прочитай только раздел `plan-execute` из `docs/settings.yaml`, если файл есть. Применяй только `version: 3`.
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
plan-execute:
|
|
16
|
+
mode: auto
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`plan-execute.mode` принимает `subagents`, `single` или `auto`; при отсутствующем или невалидном значении используй `auto`. Файл настроек не изменяй.
|
|
9
20
|
|
|
10
21
|
## Вход из сообщения пользователя
|
|
11
22
|
|
|
12
|
-
Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу,
|
|
23
|
+
Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения, прямые указания и режим:
|
|
24
|
+
|
|
25
|
+
- `subagents`, `субагенты`, `по фазам`, `изолированно` → `$MODE=subagents`;
|
|
26
|
+
- `single`, `один`, `одним контекстом`, `без субагентов`, `сам` → `$MODE=single`;
|
|
27
|
+
- `auto`, `авто`, `автоматически` → `$MODE=auto`;
|
|
28
|
+
- без явного режима → `$MODE=plan-execute.mode` из валидных настроек, иначе `$MODE=auto`.
|
|
29
|
+
|
|
30
|
+
Режим из вызова важнее настройки, настройка важнее умолчания.
|
|
13
31
|
|
|
14
32
|
Если входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных планов или есть риск выполнить не тот план.
|
|
15
33
|
|
|
34
|
+
## Режимы выполнения
|
|
35
|
+
|
|
36
|
+
| Режим | Кто выполняет фазу | Кто проверяет фазу и финал |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `subagents` | отдельный изолированный субагент на каждую фазу | отдельные субагенты-проверяющие |
|
|
39
|
+
| `single` | основной агент подряд в одном контексте | сам основной агент |
|
|
40
|
+
| `auto` | решает по плану до старта: `single` или `subagents` | по выбранному режиму |
|
|
41
|
+
|
|
42
|
+
`auto` выбирай `single`, только когда весь план реально помещается в один контекст: немного фаз, небольшой объём задач и файлов, одна область кода, нет тяжёлых по контексту фаз вроде крупного рефакторинга, миграции данных или множества карточек. Иначе — `subagents`; при сомнении тоже `subagents`. Решение и его причину запиши в журнал.
|
|
43
|
+
|
|
44
|
+
В `single` следи за собственным контекстом. Если план оказался тяжелее оценки или контекст заканчивается, переключи оставшиеся фазы на `subagents`, запиши переключение в журнал и продолжи с текущей фазы.
|
|
45
|
+
|
|
16
46
|
## Главные правила
|
|
17
47
|
|
|
18
|
-
1.
|
|
19
|
-
2. **Фазы выполняй строго последовательно.** Не
|
|
20
|
-
3.
|
|
21
|
-
4. **Рамку читает
|
|
22
|
-
5. **Исполнитель не додумывает план.** Если в фазе не хватает решения,
|
|
23
|
-
6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке,
|
|
24
|
-
7. **Отмечай только подтверждённое.** Фазу закрывай только после `completed` от исполнителя и
|
|
25
|
-
8. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки,
|
|
48
|
+
1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `single` основной агент выполняет фазы и проверки сам и остаётся единственным исполнителем.
|
|
49
|
+
2. **Фазы выполняй строго последовательно.** Не начинай следующую, пока текущая не выполнена и её проверка не прошла.
|
|
50
|
+
3. **В `subagents` одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Идентификатор исполнителя сохраняй и продолжай его же для вопросов и исправлений этой фазы.
|
|
51
|
+
4. **Рамку читает тот, кто выполняет фазу.** Он целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, он читает эту карточку целиком перед соответствующим изменением. Нерелевантные карточки не загружает.
|
|
52
|
+
5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде. В `subagents` исполнитель возвращает `needs_input`, в `single` основной агент останавливается и спрашивает.
|
|
53
|
+
6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке, останови фазу и через `AskUserQuestion` спроси: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`.
|
|
54
|
+
7. **Отмечай только подтверждённое.** Фазу закрывай только после выполнения и прошедшей проверки: в `subagents` это `completed` от исполнителя и отдельный `passed` от проверяющего, в `single` — пройденные критерии и команды проверки фазы с сохранённым выводом. При последующем опровержении верни отметку в незавершённое состояние.
|
|
55
|
+
8. **Проверки нельзя подавлять.** Не отключай и не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, не добавляй игноры и не ослабляй команды и правила. Сначала исправляется причина падения, затем проверка повторяется.
|
|
26
56
|
9. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
|
|
27
57
|
|
|
28
58
|
## Вопросы
|
|
@@ -43,7 +73,7 @@ description: 'Выполняет готовый план последовате
|
|
|
43
73
|
|
|
44
74
|
Через `AskUserQuestion` предложи текущую ветку, новую ветку от `main`, новую ветку от текущей или worktree от `main`. Если вызывающий оркестратор уже передал подтверждённый выбор, не спрашивай повторно.
|
|
45
75
|
|
|
46
|
-
|
|
76
|
+
В `subagents` git-команды сам не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения; в `single` подготовь окружение сам. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
|
|
47
77
|
|
|
48
78
|
### 3. Прочитать план и проверить фазы
|
|
49
79
|
|
|
@@ -51,7 +81,9 @@ description: 'Выполняет готовый план последовате
|
|
|
51
81
|
|
|
52
82
|
Если фаза не описывает проверяемый результат или её проверку нечем выполнить, не достраивай смысл молча: через `AskUserQuestion` предложи вернуть план в `eda-plan` или `eda-plan-polish`.
|
|
53
83
|
|
|
54
|
-
### 4.
|
|
84
|
+
### 4. Определить режим и инициализировать прогресс
|
|
85
|
+
|
|
86
|
+
Если `$MODE=auto`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `single` или `subagents` до первой фазы. Дальше действуй по зафиксированному режиму.
|
|
55
87
|
|
|
56
88
|
Создай `$EXECUTION_FILE` по пути `docs/artifacts/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. В `$PLAN_FILE` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на журнал и списком фаз.
|
|
57
89
|
|
|
@@ -60,6 +92,7 @@ description: 'Выполняет готовый план последовате
|
|
|
60
92
|
plan: <путь>
|
|
61
93
|
started: <YYYY-MM-DD HH:MM>
|
|
62
94
|
status: in_progress
|
|
95
|
+
mode: subagents | single
|
|
63
96
|
current_phase: <номер>
|
|
64
97
|
---
|
|
65
98
|
|
|
@@ -69,8 +102,8 @@ current_phase: <номер>
|
|
|
69
102
|
| Фаза | Результат | Проверка | Статус |
|
|
70
103
|
|---|---|---|---|
|
|
71
104
|
|
|
72
|
-
## Запуски
|
|
73
|
-
| Время |
|
|
105
|
+
## Запуски
|
|
106
|
+
| Время | Исполнитель | Фаза | Результат | Файлы | Проверки |
|
|
74
107
|
|---|---|---|---|---|---|
|
|
75
108
|
|
|
76
109
|
## Решения и блокеры
|
|
@@ -78,10 +111,12 @@ current_phase: <номер>
|
|
|
78
111
|
## Финальная проверка
|
|
79
112
|
```
|
|
80
113
|
|
|
81
|
-
|
|
114
|
+
Журнал и отметки прогресса в плане ведёт только основной агент. В `single` записывай выбор режима с причиной, а в колонке «Исполнитель» — `основной агент`; в `subagents` явно запрети субагентам менять `$PLAN_FILE` и `$EXECUTION_FILE`.
|
|
82
115
|
|
|
83
116
|
### 5. Запускать изолированных субагентов
|
|
84
117
|
|
|
118
|
+
Весь этап — только для `subagents`. В `single` пропусти его и выполняй фазы сам; переключился на `subagents` — вернись к нему.
|
|
119
|
+
|
|
85
120
|
В Codex используй `spawn_agent` с `fork_turns: "none"`, в Claude Code — новый `Agent` с самодостаточным сообщением. Если изоляция или субагенты недоступны, остановись: `blocked: недоступно изолированное выполнение`. Работу основным агентом не делай и CLI-fallback не добавляй.
|
|
86
121
|
|
|
87
122
|
#### Технические остановки субагентов
|
|
@@ -121,7 +156,7 @@ questions: [<вопросы или пусто>]
|
|
|
121
156
|
|
|
122
157
|
### 6. Выполнять фазы
|
|
123
158
|
|
|
124
|
-
|
|
159
|
+
В `subagents` для каждой фазы по порядку:
|
|
125
160
|
|
|
126
161
|
1. Запусти одного нового изолированного исполнителя и сохрани его идентификатор как исполнителя этой фазы.
|
|
127
162
|
2. Проверь YAML-контракт, фактический scope файлов и результаты проверок. Запиши запуск в журнал.
|
|
@@ -130,9 +165,11 @@ questions: [<вопросы или пусто>]
|
|
|
130
165
|
5. `blocked` — останови выполнение. Внешний блокер или изменение scope выноси вопросом; сам его не устраняй.
|
|
131
166
|
6. После `completed` запусти независимую проверку фазы.
|
|
132
167
|
|
|
168
|
+
В `single` перед первой фазой один раз прочитай план целиком, `docs/rules.md` и `docs/arch.md`, а карточки выбирай по правилу 4 под каждую фазу. Затем для каждой фазы по порядку выполни работу фазы, запиши в журнал сделанное, изменённые файлы и результаты проверок и переходи к проверке фазы. Не хватает решения — спроси пользователя; конфликт с правилами или карточками — останови фазу как `blocked`; та же причина падения дважды подряд без содержательного изменения — остановись: `blocked: выполнение не сходится`.
|
|
169
|
+
|
|
133
170
|
### 7. Проверять каждую фазу
|
|
134
171
|
|
|
135
|
-
|
|
172
|
+
В `subagents` после `completed` запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, читает только применимые карточки, выполняет все проверки фазы и подтверждает критерии результата.
|
|
136
173
|
|
|
137
174
|
```yaml
|
|
138
175
|
status: passed | failed | blocked
|
|
@@ -146,27 +183,30 @@ business_read: [<пути или пусто>]
|
|
|
146
183
|
references_read: [<пути или пусто>]
|
|
147
184
|
```
|
|
148
185
|
|
|
149
|
-
При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует.
|
|
186
|
+
При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует.
|
|
187
|
+
|
|
188
|
+
В `single` сам выполни все проверки фазы и сверь результат с критериями плана, а не с собственным впечатлением. Падение исправляй и повторяй проверку заново целиком.
|
|
189
|
+
|
|
190
|
+
При `passed` отметь фазу завершённой и только тогда переходи к следующей.
|
|
150
191
|
|
|
151
192
|
### 8. Финальная проверка
|
|
152
193
|
|
|
153
|
-
После всех фаз
|
|
194
|
+
После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `single` тот же полный набор запускает основной агент.
|
|
154
195
|
|
|
155
|
-
Падение из-за сделанных изменений сопоставь с фазами и передай каждую группу исполнителю соответствующей
|
|
196
|
+
Падение из-за сделанных изменений сопоставь с фазами и исправь по порядку плана: в `subagents` передай каждую группу исполнителю соответствующей фазы. Затем повтори всю финальную проверку целиком. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
|
|
156
197
|
|
|
157
198
|
Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь `status: done` и время завершения. Если обязательная проверка объективно недоступна, сохрани `status: blocked`, причину и непройденные критерии; выполненным план не объявляй.
|
|
158
199
|
|
|
159
200
|
### 9. Финал
|
|
160
201
|
|
|
161
|
-
Коротко сообщи пути к плану и журналу, завершённые фазы, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
|
|
202
|
+
Коротко сообщи режим выполнения, пути к плану и журналу, завершённые фазы, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
|
|
162
203
|
|
|
163
204
|
## Чего НЕ делать
|
|
164
205
|
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
- Запускать следующую фазу до успешной
|
|
169
|
-
-
|
|
170
|
-
- Давать субагентам историю диалога или разрешать менять план и журнал.
|
|
206
|
+
- В `subagents` самому менять код, тесты, миграции, конфиги и зависимости или самому запускать проверки проекта.
|
|
207
|
+
- В `subagents` дробить фазу между исполнителями, давать одному исполнителю несколько фаз, давать субагентам историю диалога или разрешать менять план и журнал.
|
|
208
|
+
- Выполнять большой или тяжёлый по контексту план в `single`, если режим не задан явно.
|
|
209
|
+
- Запускать следующую фазу до успешной проверки текущей.
|
|
210
|
+
- Додумывать недостающее решение вместо вопроса.
|
|
171
211
|
- Подавлять ошибки проверок, ослаблять правила или менять команды ради зелёного результата.
|
|
172
212
|
- Коммитить, пушить, создавать PR или делать ревью.
|