From 8312ef071e13bf05dba4c1c8a2ff08e63104b7cb Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Thu, 23 Jul 2026 10:43:14 +0300 Subject: [PATCH] =?UTF-8?q?fix(skills):=20=D1=83=D1=80=D0=BE=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B3=D0=BE=D0=BD=D0=B0=202026-07-22=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BB=D0=BE=D0=B4=D0=BE=D0=B2=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BB=D0=B5=D0=B9=D0=B1=D1=83=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - вчерашний патч 43a93cd лёг не в тот скилл: уроки клодовского координатора попали в codex-subagent-playbook — близнец для координатора на стороне Codex; там «канал codex exec» — бессмыслица, а правила канала давно живут в claude-subagent-playbook/codex-exec.md. - Что: - codex-subagent-playbook: три файла возвращены к состоянию до 43a93cd; во фронтматтер добавлен disable-model-invocation и адресное описание против повторного промаха; - claude-subagent-playbook: запись прогона issue #5 в lessons.md (чужой скилл, плагин вместо CLI, два писателя, приёмочный сценарий); в SKILL.md — владение деревом после остановки прежнего владельца и проверка команд приёмки на живом объекте. - Проверка: - git diff 43a93cd^ по трём файлам codex-плейбука — только фронтматтер; перечитка lessons.md на связность. Co-Authored-By: Claude Fable 5 --- .../skills/claude-subagent-playbook/SKILL.md | 7 ++-- .../references/lessons.md | 36 +++++++++++++++++++ .../skills/codex-subagent-playbook/SKILL.md | 8 ++--- .../references/lessons.md | 20 ++--------- .../references/roles.md | 11 +----- 5 files changed, 48 insertions(+), 34 deletions(-) diff --git a/agents/.agents/skills/claude-subagent-playbook/SKILL.md b/agents/.agents/skills/claude-subagent-playbook/SKILL.md index f2fdbf0..b128d2f 100644 --- a/agents/.agents/skills/claude-subagent-playbook/SKILL.md +++ b/agents/.agents/skills/claude-subagent-playbook/SKILL.md @@ -218,7 +218,9 @@ description: >- отдай исполнителю или разборщику; проверку, доступную только агенту в спецсреде, называй косвенным свидетельством. Ключевые артефакты проверь **своими глазами** (счётчик тестов, картинки, прогон CLI) — ревью не - заменяет твою приёмку. Чекбоксы, статус и выжимку резолюций в тикет + заменяет твою приёмку. Команды нового приёмочного сценария проверь на + живом объекте до полного прогона; сложные вставки собирай файлами, не + экранированием. Чекбоксы, статус и выжимку резолюций в тикет переносит fast-worker из файла отчёта исполнителя (не твой Write). Коммит — по `/conventional-commits`, пользователю — выжимка: вердикты, что принято/отклонено, что осталось — плюс короткая саморефлексия: что @@ -244,7 +246,8 @@ teammate-субагентов — шум, а не событие: не докл ## Сбои координации - Нет ожидаемого файла или отчёта: один запрос короткого итога в тот же - тред; повторная тишина — свежий агент от сохранённых артефактов. + тред; повторная тишина — свежий агент от сохранённых артефактов, владение + деревом — только после остановки прежнего владельца. - Длинный рассказ пришёл сообщением: попроси сводку с путём к файлу, рассказ дальше не переноси. - Два писателя пересеклись в дереве: стоп обоим, назначь одного владельца, diff --git a/agents/.agents/skills/claude-subagent-playbook/references/lessons.md b/agents/.agents/skills/claude-subagent-playbook/references/lessons.md index 1257b5b..4b418d0 100644 --- a/agents/.agents/skills/claude-subagent-playbook/references/lessons.md +++ b/agents/.agents/skills/claude-subagent-playbook/references/lessons.md @@ -276,3 +276,39 @@ git (`git show HEAD:path`) + повторным наложением право артефакта» (сверка с пользователем = первая линия); шкала риска этапа 2 (срез по принятой спеке без новых решений — внешнюю линию пропустить с одной фразой обоснования). + +## Прогон 2026-07-22: clickstream-demo, issue #5 — счётчики стартовой истории + +Полный конвейер (исполнитель → два слепых ревью → триаж → узкая +перепроверка → стендовая приёмка) дошёл до цели, но шёл под ЧУЖИМ скиллом: +вместо этого плейбука вызван codex-subagent-playbook — близнец для +координатора на стороне Codex, на тот момент единственный из пары видимый +модели для автовызова. Отсюда главный казус: канал запуска Codex +«унаследовался» из handoff — конвейер пошёл через плагин-обёртку вопреки +codex-exec.md и воспроизвёл её известные баги (ложный «started» с подменой +ответа — issue #158, потерянные уведомления, несбрасываемый статус +остановленной задачи, read-only песочница ревьюера — вердикт извлекали из +лога задачи). Спас файловый контроль: мандаты и отчёты жили в `$SCRATCH`, +дерево сверялось тестами. Поглощено 2026-07-23: близнецу поставлен +`disable-model-invocation` и адресное описание («со стороны Claude Code — +claude-subagent-playbook»); правила канала в codex-exec.md были и остаются +действующим договором. + +Казус двух исполнителей: молчащего исполнителя заменили свежим без +остановки прежнего — в одном дереве оказались два писателя, дерево +пришлось перепроверять тестами. Поглощено: «Сбои координации» (владение — +только после остановки прежнего владельца). + +Казус приёмки: сценарий стендовой приёмки трижды падал на непроверенных +командах (способ аутентификации Airflow, маскировка кода выхода, имя +колонки витрины), а инлайн-python с экранированием в heredoc сломался и +после проверки. Поглощено: SKILL.md этап 6 (команды нового сценария — на +живом объекте до полного прогона, сложные вставки — файлами). Попутно: +`pkill -f` в одной команде с запуском/ожиданием находит шаблон в +собственной командной строке и убивает свой же Bash — дисциплина фоновых +процессов зафиксирована в памяти проекта. + +**Цифры:** триаж закрыл обе находки ревью (фрагментация наборов ID сняла +потолок Kafka: манифест 3 152 байта вместо ~0,81 МБ); приёмка — плоское +время next-day 716/718/716 с, мир 3 → 6 дней, 561 942 события; тесты +216 + 31 зелёные. diff --git a/agents/.agents/skills/codex-subagent-playbook/SKILL.md b/agents/.agents/skills/codex-subagent-playbook/SKILL.md index 12c0f14..0e22ab6 100644 --- a/agents/.agents/skills/codex-subagent-playbook/SKILL.md +++ b/agents/.agents/skills/codex-subagent-playbook/SKILL.md @@ -1,6 +1,7 @@ --- name: codex-subagent-playbook -description: "Оптика тонкого мастера для одной нетривиальной задачи: как выбирать делегирование, независимую проверку и файловый обмен, сохраняя контекст координатора для решений." +disable-model-invocation: true +description: "Оптика тонкого мастера для координатора на стороне Codex (spawn_agent, TOML-роли). Со стороны Claude Code используй claude-subagent-playbook." --- # Тонкий мастер @@ -101,8 +102,6 @@ description: "Оптика тонкого мастера для одной не 3. полный diff, только когда его объём ограничен и чтение нужно для решения. Доступную детерминированную финальную проверку запускай сам с выводом в файл. -Команды нового сценария проверь на живом объекте до полного прогона; сложные -вставки собирай файлами, не экранированием. В контекст возьми точную команду, код возврата, итоговые счётчики, имена упавших тестов и путь к журналу. Зелёный журнал не читай. Красный журнал направь исполнителю или отдельному разборщику; сам открывай детали, когда они @@ -125,8 +124,7 @@ description: "Оптика тонкого мастера для одной не ## Сбои координации - Нет ожидаемого файла: один раз запроси короткий итог в том же треде; после - повторной тишины продолжи свежим агентом от сохранённых артефактов, передав - владение только после остановки прежнего владельца. + повторной тишины продолжи свежим агентом от сохранённых артефактов. - Длинный рассказ пришёл сообщением: попроси повторить ответ сводкой и путём, не переноси рассказ дальше. - Два исполнителя пересеклись в исходниках: останови их, установи одного diff --git a/agents/.agents/skills/codex-subagent-playbook/references/lessons.md b/agents/.agents/skills/codex-subagent-playbook/references/lessons.md index 0ed4a39..d504100 100644 --- a/agents/.agents/skills/codex-subagent-playbook/references/lessons.md +++ b/agents/.agents/skills/codex-subagent-playbook/references/lessons.md @@ -24,18 +24,6 @@ права ревьюера смешались с каналом результата; семь буквальных этапов породили лишние проверки. Вывод поглощён в [основную оптику](../SKILL.md) и [договор ревью](review-and-triage.md). -- 2026-07-22 — конвейер пошёл через плагин-обёртку вопреки ресёрчу - 2026-07-07 и воспроизвёл её известные сбои: ложный старт с пустым - запросом, потерянные уведомления, несбрасываемый статус остановленной - задачи, read-only песочница ревьюера (вердикт извлекли из лога задачи). - Результаты спас файловый контроль координатора: мандаты и отчёты жили в - `$SCRATCH`, дерево сверялось тестами. Вывод поглощён в - [роли](roles.md): канал командной строки. -- 2026-07-22 — приёмочный сценарий трижды падал на непроверенных командах - (способ аутентификации, маскировка кода выхода, имя колонки), а - инлайн-python с экранированием в heredoc сломался и после проверки. - Вывод поглощён в [основную оптику](../SKILL.md): проверка команд на - живом объекте, сборка сценария из файлов. ## Проверить боем @@ -54,8 +42,6 @@ 7. Доступны ли ревьюеру поиск и документация при текущих сетевых разрешениях. 8. Достаточно ли файлового канала, чтобы координатор не открывал полный отчёт, diff и сырые журналы. -9. Работает ли канал командной строки (`codex exec` фоном у координатора) - на полном конвейере: запуск, resume треда ревьюера, чтение и запись - общего `$SCRATCH`. Прогон 2026-07-22 проверил только плагинный канал — - он забракован; при workspace-write запись в `$SCRATCH` работала, - read-only песочница — нет. +9. Может ли будущая линия другого семейства читать и писать общий + `$SCRATCH`. Пока адаптер запуска не проверен, он не является действующим + договором. diff --git a/agents/.agents/skills/codex-subagent-playbook/references/roles.md b/agents/.agents/skills/codex-subagent-playbook/references/roles.md index 24ce8bc..661d5e1 100644 --- a/agents/.agents/skills/codex-subagent-playbook/references/roles.md +++ b/agents/.agents/skills/codex-subagent-playbook/references/roles.md @@ -18,8 +18,7 @@ ## Возможности хоста Сначала установи, позволяет ли текущий хост выбрать пользовательского агента -и его конфигурацию, а для линии другого семейства — каким каналом её -запускать. +и его конфигурацию. - **Управляемая стоимость.** Хост видит агентов из `~/.codex/agents` или `.codex/agents` и схема `spawn_agent` открывает `agent_type`, `model` и @@ -33,14 +32,6 @@ имя треда. Передавай роль мандатом в промпте, но не утверждай, что выбрана дешёвая или сильная модель. `task_name` — идентификатор треда, а не выбор конфигурации агента. -- **Канал командной строки.** Хост другого семейства запускай напрямую: - `codex exec` в собственной фоновой команде координатора — pid, код выхода - и лог принадлежат координатору, а не посреднику. Модель и effort задавай - явно; тред продолжай через `codex exec resume `. - Плагин-обёртку с фоновыми задачами для конвейера не используй: известные - сбои — ложный «started» с подменой ответа, зависшие фоновые ревью, воркеры - без признаков жизни (openai/codex-plugin-cc issues #279, #158, #49, #277); - она годится только для интерактива по явному запросу партнёра. Если способ выбора роли не виден в доступном инструменте, считай стоимость неуправляемой, отметь это в итоговом отчёте и не разделяй совместимую работу