- Зачем:
- зафиксировать уроки боевого прогона для сессии доработки скилла.
- Что:
- handoff с шестью уроками: таймер-подстраховка и её экономика, прямой
codex exec вместо плагина (с номерами issues), поправки пользователя
к флагам CLI, идея читающего форвардера, вердикт из логов умершего
агента, паттерн ожидания через отслеживаемый фоновый Bash.
- Проверка:
- чтение handoff; коммит только одного файла, чужие untracked не задеты.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5.7 KiB
5.7 KiB
Handoff: уроки прогона 2026-07-07 для доработки скилла
Дата: 2026-07-07 22:34. Прогон: проверка пути менти + диагноз флаки-гейта в репозитории clickstream-ch-kafka-superset-demo (Claude — оркестратор, два Claude-субагента, Codex-диагност через плагин).
Что сработало
- Пара «читатель-скептик (Opus) + прогонщик-механик (Sonnet)» параллельно: читатель нашёл 4 доковых находки, прогонщик — реальное падение гейта.
- «Шум в файлы» окупился дважды: когда прогонщик умер без отчёта, вердикт собрался из его логов; когда форвардер Codex соврал «finished», результат забрался из output-файла фонового задания.
- Перепроверка ключевого факта диагноза своими глазами (grep по коду) — дёшево и поймала бы подмену анализа (bug #158 плагина).
Находки для SKILL.md / references/lessons.md
- Таймер-подстраховка для фоновых субагентов (совет пользователя): субагенты молча останавливаются («жду уведомления», которого не будет; «закончил и умер без отчёта»). Ставить ScheduleWakeup сроком больше ожидаемой длительности, при пробуждении смотреть логи агента самому, снимать таймер по приходу результата. Экономика: кэш мастер-сессии живёт ~1 час — пробуждение в пределах часа тёплое (~0,1×); таймер — страховка, не поллинг.
- Прямой
codex execвместо плагина (веб-ресёрч, первоисточники): обёртка codex-companion.mjs — багованная машина фоновых задач (openai/codex-plugin-cc issues #279, #158, #49, #277; #158 — молчаливая подмена Codex своим анализом, ломает слепое ревью разных родословных). Рекомендация: CLI в собственном run_in_background Bash оркестратора (pid/код выхода/лог у нас),codex exec resume <session-id>для раундов. - Поправки пользователя к флагам CLI (важно, расходится с ресёрчем):
НЕ дефолтить
-s read-only -c approval_policy=never. Рабочая практика: сессия с правом записи, ограниченная промтом (иначе Codex не гоняет тесты и не гуглит), плюс авто-режим аппрува, где отдельная модель оценивает безопасность действий.timeout 600мал — сессии запросто длиннее, таймаут подбирать под задачу. В скилле развести два режима: «ревьюер» (можно жёстко read-only) и «исполнитель/диагност» (запись + авто-аппрув). - Идея пользователя для форвардера: субагент-обёртка мог бы читать историю сессии Codex (JSONL / resume) и отвечать на поллинг оркестратора, вместо «выстрелил и умер». Казус прогона: codex-rescue отказался проверять статус своего же вызова, сославшись на мандат «только один проброс».
- Казус «умер без отчёта»: правильный ход — не воскрешать агента ради отчёта, а собрать вердикт из его логов (дополнение к приёму «шум в файлы»).
- Правильный паттерн ожидания у субагента (это реально разбудило
заснувшего прогонщика): долгий шаг ждать через отслеживаемый харнесом
фоновый Bash (
run_in_background) с командой-ожидателем подtimeout—until grep -q '<маркер>' <лог>; do sleep 30; done— тогда харнес переинвоцирует агента по выходу процесса. Самодельные «фоновые мониторы» и «жду уведомления» без отслеживаемого процесса не будят никогда. Вписывать этот паттерн в промпт раннера сразу, а не после двух побудок.
Открытое
- Механику references/codex-companion.md стоит пересмотреть в пользу прямого CLI (пункты 2–3); плагин оставить для интерактива.
- Определения deep-reasoner/fast-worker из references/claude-agents.md созданы в репозитории демо (закоммичены); фрагмент «Orchestration workflow» в CLAUDE.md демо-репозитория НЕ добавлен — пользователь решил не засорять учебный контракт, вопрос «куда класть» открыт.