From 03030d4f2428b194d338d57813b90967a66821ad Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sun, 5 Jul 2026 20:32:27 +0300 Subject: [PATCH] =?UTF-8?q?fix(skill):=20coordinator-loop=20=E2=80=94=20?= =?UTF-8?q?=D1=88=D1=83=D0=BC=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D1=8B=20=D0=B3=D0=B5=D0=B9=D1=82=D0=B0=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D1=84=D0=B0=D0=B9=D0=BB-=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - на прогоне 2026-07-05 make generator-test с зашитым pytest -v высыпал в контекст координатора полный список из 181 теста: правило «только сводка» было, а механики не было. - Что: - шаг 7: гейт координатор гоняет сам (не через субагента), шумные команды — в файл-лог, в контекст только код возврата и итоговые строки; интерпретация объёмного вывода — разборщику логов экономного уровня. - ведущее правило и чек-лист дополнены той же механикой. - effort-levels: «разбор логов» добавлен в экономный ярус Claude Code. - Проверка: - вычитка SKILL.md; grep по pytest/сводка/файл-лог — противоречий нет. --- .../.agents/skills/coordinator-loop/SKILL.md | 18 +++++++++++++++--- .../references/effort-levels.md | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/agents/.agents/skills/coordinator-loop/SKILL.md b/agents/.agents/skills/coordinator-loop/SKILL.md index 6cdb530..8dbf10d 100644 --- a/agents/.agents/skills/coordinator-loop/SKILL.md +++ b/agents/.agents/skills/coordinator-loop/SKILL.md @@ -18,6 +18,8 @@ description: >- твой контекст, — это **индекс**: находка, `файл:строка`, какой критерий нарушен, минимальный путь воспроизведения. Полного diff, вывода тестов и нарратива ревью в твоём контексте быть не должно — их читают субагенты у себя, а тебе возвращают индекс. +Твоих собственных команд это тоже касается: шумный вывод гони в файл-лог, в контекст +бери код возврата и итоговые строки (механика — шаг 7). Верификацию находок делает ревьюер, не ты. (Исключение — состав diff на коммит-гейте: `git diff --stat`/`--name-only`, какие файлы и в границах ли; это не полный текст, см. шаг 7.) Проверяй себя каждый цикл: *в мой контекст попал полный текст вместо индекса? @@ -102,8 +104,16 @@ worker-у их индексы **дословно**, без своих интер - независимо от споров больше **четырёх** кругов ревью на issue → стоп, вынеси человеку вопрос «дробить issue или принимать риск». 6. **Классифицируй по индексу — только chain-level** (см. «Классификация»). -7. **Коммит-гейт.** Прогони полный тест-сет, но в контекст возьми **только сводку**: код - возврата и имена упавших тестов (`pytest -q`/хвост вывода), не полный вывод. Так же +7. **Коммит-гейт.** Прогони полный тест-сет **сам**: код возврата, который ты видел + своими глазами, — это и есть твоя проверка; прогон через субагента превращает гейт + обратно в чужой пересказ. Шумные команды гоняй через файл-лог + (`<команда> > /tmp/<лог> 2>&1`), в контекст возьми **только сводку**: код возврата + и итоговые строки (`tail`, имена упавших — `grep FAILED`). На «тихие» флаги вроде + `pytest -q` не полагайся: цель сборки может зашивать подробный вывод (эмпирика + 2026-07-05: `make generator-test` с зашитым `pytest -v` высыпал в контекст + координатора полный список из 181 теста). Если сводки мало и вывод нужно + **интерпретировать** — лог сам не читай, спавни разборщика логов экономного уровня + ([references/effort-levels.md](references/effort-levels.md)), он вернёт индекс. Так же проверь **состав** diff (`git diff --stat`/`--name-only`: какие файлы, в границах ли — не полный текст) и коммить. Упали тесты — верни их worker-у по именам, трейсбеки в свой контекст не тащи. Сверь по журналу, что назначенный режим ревью выполнен: каждый @@ -300,7 +310,9 @@ Per-finding триаж («реально / ложно / чинить») дела - [ ] Журнал ведётся append-only по ходу, каждая запись с меткой `HH:MM`; точки записи не пропущены. - [ ] Chain-level классификация сделана по индексу (риск / вне скоупа). -- [ ] Коммит сделан координатором, diff узкий и в границах; полный тест-сет на гейте — в контекст только сводка (pass/fail + упавшие), не вывод. +- [ ] Коммит сделан координатором, diff узкий и в границах; полный тест-сет на гейте + прогнал я сам, шумные команды — через файл-лог: в контекст только сводка + (pass/fail + упавшие), не вывод. - [ ] Статусы закрытых issue переведены в `done` и ушли docs-коммитом вместе с журналом. - [ ] PRD/трекер приведены **до** финального ревью; ревью на соответствие замыслу — сильная модель на усиленном уровне; дрейф от спеки проверен. diff --git a/agents/.agents/skills/coordinator-loop/references/effort-levels.md b/agents/.agents/skills/coordinator-loop/references/effort-levels.md index 14bb80a..b6df503 100644 --- a/agents/.agents/skills/coordinator-loop/references/effort-levels.md +++ b/agents/.agents/skills/coordinator-loop/references/effort-levels.md @@ -1,6 +1,6 @@ # Уровни мышления и модели по ролям -Обновлено: 2026-07-04. Логика скилла оперирует относительными уровнями +Обновлено: 2026-07-05. Логика скилла оперирует относительными уровнями (экономный / рабочий / усиленный) и «моделью по роли»; здесь — привязка к конкретным настройкам хостов. Вышла новая модель или переименовались уровни — правится этот файл, не `SKILL.md`. @@ -37,7 +37,7 @@ issue), ревью — один короткий прогон; глубина д | Роль | Уровень | Настройка | |---|---|---| -| worker на обычном issue; task-lens ревью, диагностика | экономный | модель ступень ниже, effort `low`–`medium` | +| worker на обычном issue; task-lens ревью, диагностика, разбор логов | экономный | модель ступень ниже, effort `low`–`medium` | | любое code review; worker на гейтовом issue | рабочий | модель сессии, effort `high` | | узкий гейт по спору, финальное chain-ревью | усиленный | сильная модель, effort `xhigh`–`max` |