docs(skills): плейбук — структурный рефакторинг: ось вкуса, брифы, два Опус-агента
Зачем. Отдельный осознанный заход, закрывающий открытые вопросы 2026-07-26 и 2026-07-31: две ручки выбора (модель, эффорт) были про силу, вкус ими не выражался; константы линий дрейфовали через перепечатку; правила координации прогона #18 жили только в журнале; у Agent-тула нет ручки effort — карта была нереализуема разовым вызовом. Что. - Третья ось выбора — вкус: references/model-matrix.md (матрица Тео с поправкой пользователя под gpt-5.6-sol/Opus 5); разрез по подзадачам на этапе 1, сначала вкусовая часть. - «Родословная» разведена на семейство (классы находок) и свежесть (независимость); линия дефектов — по различию, уместности — по умению. - Ступень эффорта выбирается выбором агента: определений столько, сколько пар (модель, ступень) — deep-reasoner (high), craftsman (medium, исполнение брифов: реализация/ревью/перепроверки; поглотил adversarial-reviewer), fast-worker; карта с обоснованиями — SSOT в claude-agents.md. - Константы — файлами в prompts/: line-task/code/rev, self-review; line-taste — вкусовая линза с 12 запахами Фаулера из /code-review. - Правила #18 — в механизм: инкрементальная запись индекса, глубина один и проверка среды в мандате, признак жизни / другой путь вердикта замене / среда своими глазами в «Сбоях», стенд одной линии, stdin фона. - lessons дистиллирован (586→533), handoff захода — в handoffs/. Проверка. Слепое ревью Опусом по writing-great-skills: CHANGES_REQUIRED (7 MAJOR, 17 MINOR, 3 NIT) — все закрыты или отклонены с доводом в lessons; ссылки пакета проверены скриптом, битых нет. Боевой прогон новой структуры — следующим заходом (чек-лист в handoff). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6070810c2d
commit
3e0498e242
12 files changed
+466
-259
No files matched your search
@@ -381,31 +381,14 @@ Opus 5 по отдаче ближе к прежнему `xhigh`, а `medium` —
|
||||
главный предел — от уверенной выдумки внешних фактов не страхует никакой
|
||||
эффорт (казус CODE-1).
|
||||
|
||||
### Открытый вопрос 2026-07-26: чем координатор выставляет effort субагенту
|
||||
### Открытый вопрос 2026-07-26 — закрыт 2026-07-31
|
||||
|
||||
Правило «effort задавай явно» предполагает, что ручка у оркестратора
|
||||
есть. По схеме Agent-тула в текущем харнессе её нет: параметры вызова —
|
||||
`model`, `subagent_type`, `isolation`, `run_in_background`, но не
|
||||
`effort`. Достоверно ступень задаётся двумя путями: фронтматтером в
|
||||
определении агента (`effort:` — как у `deep-reasoner`) и `opts.effort` в
|
||||
скрипте Workflow. Значит для разового вызова без определения — вариант
|
||||
«скептический `general-purpose`» из SKILL.md, этап 4 — карта
|
||||
нереализуема: агент приедет на эффорте сессии.
|
||||
|
||||
Обход, доступный уже сейчас (решение пользователя): нужного субагента
|
||||
нет в репозитории — **предложи пользователю его создать** по заготовке
|
||||
из [claude-agents.md](claude-agents.md) (в том числе роль с нужным
|
||||
`effort:` во фронтматтере) и дальше работай уже им, а не разовым
|
||||
`general-purpose`. Определение — одноразовая цена, ступень и модель
|
||||
после него заданы явно и переживают сессию. Заводить молча не надо:
|
||||
файлы в `.claude/agents/` — территория пользователя.
|
||||
|
||||
Пользователь предполагал, что ручка координатору доступна, — проверить
|
||||
на ближайшем прогоне. Если подтвердится, что нет, это тема рефакторинга
|
||||
скилла: либо карта явно расписывается «через определение агента / через
|
||||
Workflow», либо для каждой роли карты заводится определение с пришитым
|
||||
эффортом (и фолбэк «скептический general-purpose» из этапа 4 уходит).
|
||||
До проверки карту не переписывать — вопрос механики, не решения.
|
||||
Проверено по схеме Agent-тула: ручки `effort` у него нет — ступень
|
||||
задаётся только `effort:` во фронтматтере определения агента или
|
||||
`opts.effort` в Workflow. Поглощено рефакторингом 2026-07-31: карта в
|
||||
SKILL.md переписана на определения, в claude-agents.md добавлена
|
||||
заготовка `adversarial-reviewer` (opus, medium), фолбэк «скептический
|
||||
general-purpose» снят.
|
||||
|
||||
### 2026-07-30: классификатор авторежима блокирует `-s danger-full-access`
|
||||
|
||||
@@ -510,9 +493,11 @@ compose down`); отдельных событий эскалации в `--json`
|
||||
одно из двух ревью этого не видело. Приёмка оркестратора нашла то, чего
|
||||
не нашли обе линии — потому что запускала иначе.
|
||||
|
||||
Эти четыре правила пока живут только здесь — то есть повторяют ровно тот
|
||||
отказ, который диагностирует запись выше. Поглощение — в рефакторинге
|
||||
(см. открытый вопрос ниже).
|
||||
Поглощено рефакторингом 2026-07-31: обёртка Клод-ревьюера
|
||||
(инкрементальная запись индекса), «Сбои координации» SKILL.md (признак
|
||||
жизни — уведомление; замене — другой путь вердикта; среда — своими
|
||||
глазами), этап 4 (стенд одной линии), этап 6 (stdin фонового запуска),
|
||||
мандат review-boilerplate (глубина один; проверка восстановления среды).
|
||||
|
||||
**Цифры:** тикет — 20 критериев, переписан дважды (двойное ревью постановки
|
||||
сняло невозможный критерий: ноды кластера — шарды, не реплики). Саморевью
|
||||
@@ -522,65 +507,38 @@ compose down`); отдельных событий эскалации в `--json`
|
||||
пороге 3,4 ГБ, `make smoke-cluster` 8/8 за 7 с — и одно зависание на 23
|
||||
минуты до починки.
|
||||
|
||||
### Открытый вопрос 2026-07-31: рефакторинг заготовок линий
|
||||
### Открытый вопрос 2026-07-31 — закрыт рефакторингом того же дня
|
||||
|
||||
Решение пользователя: скилл важный и работает регулярно, структурные
|
||||
правки — отдельной осознанной работой, не походя. Накопилось на один
|
||||
заход:
|
||||
|
||||
- `line-task.md` / `line-code.md` не содержат ни одного `{{...}}` — это
|
||||
константы, но лежат не в `prompts/`, и оркестратор перепечатывает их
|
||||
Write'ом каждый прогон. Тот самый канал дрейфа, ради которого правка
|
||||
2026-07-31 и делалась. Перенести в `prompts/`, подшивать `cat`'ом;
|
||||
блок `Taste:` — отдельным файлом, тогда разрез по родословной станет
|
||||
выбором файла, а не пересказом границы.
|
||||
- Четыре правила координации выше поглотить в механизм: два — в обёртку
|
||||
вызова Клод-ревьюера (свой путь вердикта, инкрементальная запись), два —
|
||||
в «Сбои координации» SKILL.md (проверка среды своими руками, стенд не
|
||||
делить между линиями).
|
||||
- Заодно проверить остальные заготовки на то же расхождение «константа
|
||||
живёт в документации вместо `prompts/`».
|
||||
- **Третья ось выбора — вкус.** Наши две ручки (эффорт, модель) обе про
|
||||
силу; матрица Тео (@t3dotgg) разводит стоимость, интеллект и вкус и
|
||||
заставляет выбирать исполнителя на каждую задачу, а не наследовать
|
||||
дефолт. Прогон #18 показал цену: код технически безупречен и при этом
|
||||
неправильной формы. Решение пользователя 2026-07-31 — то, что читает
|
||||
человек, пишет модель со вкусом (в учебном репозитории это почти всё);
|
||||
Кодексу — техническая работа, где его лимиты и работают на нас; ось
|
||||
ревью переворачивается. **Спроси у пользователя матрицу и примеры её
|
||||
применения**: числа Тео расписаны под другой набор моделей (gpt-5.5,
|
||||
opus-4.8) и требуют пересчёта под наш.
|
||||
Разрез идёт не по тикету, а **по подзадачам, и назначается на этапе 1**:
|
||||
что человек будет читать и разбирать — Опусу, руки (сборка образа,
|
||||
обвязка проверок, повторяющиеся правки) — Кодексу. Два ограничения.
|
||||
Порядок: сначала вкусовая часть — она задаёт форму, имена и границы,
|
||||
под которые механическая потом подстраивается; наоборот получится
|
||||
ретрофит. И один писатель в дереве остаётся в силе — либо
|
||||
последовательно, либо по разным worktree, шов вести по файлам, которые
|
||||
не пересекаются.
|
||||
- **Под «родословной» ехали два механизма.** Различие семейств нужно для
|
||||
покрытия классов ошибок, свежая сессия — для независимости от рассуждений
|
||||
автора. Пока они склеены, разговор о ревью упирается в ложный выбор между
|
||||
независимостью и компетентностью: «линию уместности ведёт тот, кто не
|
||||
писал» звучит безупречно и при Опусе-исполнителе отдаёт вкусовую линию
|
||||
Кодексу, у которого вкуса нет. Разведя механизмы, получаем два основания:
|
||||
линия дефектов назначается по различию, линия уместности — по умению,
|
||||
даже если умеет автор. Плата — общая слепота автора и ревьюера одной
|
||||
родословной проходит дважды; гасится свежей сессией и другой линзой, но
|
||||
не до конца, поэтому при высокой цене ошибки линию уместности берёт
|
||||
третья модель. Принято 2026-07-31 в `AGENTS.md` стенда кликстрима; в
|
||||
плейбуке этап 4 и эффорт-карта всё ещё исходят из того, что пишет всегда
|
||||
Codex, — при рефакторинге решить, переносить ли.
|
||||
- **Принести ревьюеру набор запахов.** В `/code-review` Мэтта Покока
|
||||
(`~/dotfiles/agents/.agents/skills/code-review/SKILL.md`) есть готовая
|
||||
база из двенадцати запахов Фаулера, которая вклеивается ревьюеру в
|
||||
промпт целиком, с оговорками «документированный стандарт репозитория
|
||||
побеждает» и «каждый запах — суждение, не нарушение». Это сильнее моих
|
||||
трёх самодельных примеров в блоке `Taste:`: имена вроде Speculative
|
||||
Generality или Data Clumps — слова из претрейна, они поднимают целый
|
||||
пласт поведения, а пересказ своими словами — нет. Наши CODE и TASK
|
||||
повторяют его оси Standards и Spec, придуманные независимо; забрать
|
||||
оттуда стоит и правило «находки двух осей не сливать и не
|
||||
переранжировать» — оно прямо про то, как уверенный вердикт одной линии
|
||||
закрывает собой другую. Показательно, что Codex-ревьюер #18 открыл этот
|
||||
файл сам первой командой прогона: механизма нет, а нужда есть.
|
||||
- Константы — файлами в `prompts/`: line-task, line-code, line-rev,
|
||||
self-review; вкусовая линза с базой двенадцати запахов Фаулера из
|
||||
`/code-review` Мэтта Покока — `line-taste.md`, разрез — выбором файла
|
||||
в `cat`. Оттуда же правило «линии не сливать в один ранжир» — этап 5.
|
||||
- Третья ось — вкус: матрица Тео (@t3dotgg) получена от пользователя с
|
||||
поправкой под gpt-5.6-sol/Opus 5 (интеллект вырос, вкус прежний) —
|
||||
references/model-matrix.md. Разрез по подзадачам на этапе 1, сначала
|
||||
вкусовая часть (задаёт форму), один писатель в дереве — в силе.
|
||||
- «Родословная» разведена на **семейство** (классы находок) и
|
||||
**свежесть** (независимость от автора): «Роли» и этап 4 — линия
|
||||
дефектов по различию семейства, линия уместности по умению (модель со
|
||||
вкусом), при высокой цене ошибки уместность — третьей модели. Перенос
|
||||
из `AGENTS.md` стенда кликстрима состоялся.
|
||||
- Дополнение того же дня (решение пользователя): вкусовую реализацию
|
||||
ведёт `craftsman` (opus, `medium`) — ошибка реализации громкая,
|
||||
конвейер ловит, вкус едет с моделью, не с эффортом; `high` на
|
||||
реализации не дефолтить.
|
||||
- Слепое ревью рефакторинга (Опус, по writing-great-skills):
|
||||
CHANGES_REQUIRED — 7 MAJOR, 17 MINOR, 3 NIT; закрыто тем же днём.
|
||||
Главное: эффорт-карта с обоснованиями демотирована в claude-agents.md
|
||||
(SSOT — там, где живут `effort:`), хвост «Ролей» ужат втрое, фрагмент
|
||||
CLAUDE.md приведён к прямому exec и ревью-линии Codex, критерий
|
||||
этапа 3 обобщён на двух исполнителей, конфликт имён этапа 2 снят
|
||||
(ревьюер постановок — `deep-reasoner`). Отклонено два: порог
|
||||
«вкус ≥ 7» (содержательная граница: пропускает Sonnet, отсекает Sol) и
|
||||
мандат внутри определения `craftsman` (определение уезжает в
|
||||
репозитории без скилла — самодостаточность важнее дедупликации).
|
||||
- Позже тем же днём (решение пользователя): три Опус-определения
|
||||
избыточны — определений нужно ровно столько, сколько различных пар
|
||||
(модель, ступень) в карте, а роли живут в бриф-файлах.
|
||||
`adversarial-reviewer` слит в `craftsman` (opus, medium — исполнение
|
||||
брифов: вкусовая реализация, слепое ревью, перепроверки); упоминание
|
||||
заготовки adversarial-reviewer в записях выше — история того дня.
|
||||
Reference in new issue
Block a user