refactor(codex-playbook): согласована оптика тонкого мастера
- Зачем: - нужно сохранить контекст координатора и устранить расхождения с зеркальным playbook. - Что: - закреплены делегирование, маршрутизация моделей и ограничение кругов ревью. - добавлены файловый договор ревью и согласованная эмпирика прогонов. - исправлены сборка слепых линий и компактные статусы находок. - Проверка: - quick_validate.py, git diff --check и проверка локальных Markdown-ссылок.
This commit is contained in:
1 parent
a4985b365d
commit
6cc1b26ce4
12 files changed
+470
-237
No files matched your search
@@ -1,132 +1,132 @@
|
|||||||
---
|
---
|
||||||
name: codex-subagent-playbook
|
name: codex-subagent-playbook
|
||||||
description: Оптика тонкого мастера для одной нетривиальной задачи: субагенты сохраняют контекст и приносят нужную независимость.
|
description: "Оптика тонкого мастера для одной нетривиальной задачи: исследование, планирование, реализация и независимая проверка через субагентов без поглощения контекста координатора."
|
||||||
---
|
---
|
||||||
|
|
||||||
# Тонкий мастер
|
# Тонкий мастер
|
||||||
|
|
||||||
Это оптика работы, а не обязательный конвейер. Цель — решить одну
|
Это оптика, а не обязательный конвейер. Координатор сохраняет внимание для
|
||||||
нетривиальную задачу, сохранив внимание мастера для цели, ограничений,
|
цели, ограничений, решений, рисков и приёмки. Субагенты выясняют и выполняют;
|
||||||
решений и рисков. Субагенты нужны результату, а не процессу.
|
координатор решает.
|
||||||
|
|
||||||
Тонкий мастер не пустой мастер. Он сам принимает решения, делает дешёвые
|
|
||||||
точечные проверки и смотрит ключевые артефакты. Исследование, реализацию или
|
|
||||||
проверку он отдаёт только тогда, когда отдельный контекст даст задаче
|
|
||||||
конкретное преимущество.
|
|
||||||
|
|
||||||
## Основная оптика
|
## Основная оптика
|
||||||
|
|
||||||
- Перед каждым запуском ответь: что этот агент добавит — защиту контекста,
|
- Перед запуском агента назови его вклад: защита контекста, свежий взгляд,
|
||||||
свежий взгляд, специализацию, параллельность или отдельную среду проверки?
|
специализация, параллельность или отдельная среда. Без вклада работай сам
|
||||||
Если ничего, работай сам или продолжи существующий тред.
|
либо продолжай существующий тред.
|
||||||
- Держи у мастера короткий индекс: цель, ограничения, принятые решения,
|
- Сам читай верхнеуровневые документы и принимай решения. Исследование кода,
|
||||||
риски, вердикты и доказательства, влияющие на следующий шаг. Полные diff,
|
журналов, зависимостей и вариантов с неизвестным объёмом по умолчанию
|
||||||
журналы и нарративы ему не нужны.
|
отдавай субагенту. Самостоятельно проверяй одну узкую гипотезу с коротким
|
||||||
- Исследование с неизвестным или шумным объёмом делегируй до погружения.
|
выводом; дальнейшее погружение делегируй.
|
||||||
Одну узкую гипотезу с предсказуемо короткой командой мастер может проверить
|
- Держи у себя цель, ограничения, решения, риски, краткие сводки и пути к
|
||||||
сам; если ответа нет, продолжение уходит агенту.
|
доказательствам. Полезную нагрузку передавай между агентами файлами, не
|
||||||
- Свежий тред даёт независимость от исполнителя, но не разнообразие ошибок.
|
через контекст координатора.
|
||||||
Другое семейство моделей даёт отдельную линию; второй агент того же
|
|
||||||
семейства оправдан только высоким риском или действительно иным фокусом.
|
|
||||||
- Выбирай самый дешёвый надёжный уровень для выбранной работы. Если хост не
|
|
||||||
показывает модель и глубину, считай стоимость незакреплённой и не умножай
|
|
||||||
совместимые роли без явной пользы.
|
|
||||||
- Один исполнитель владеет изменениями исходников. Его же продолжай для
|
- Один исполнитель владеет изменениями исходников. Его же продолжай для
|
||||||
исправлений; независимую оценку отдавай свежему треду. Права
|
обычных исправлений. Если исполнитель не справляется, останови его и дай
|
||||||
`workspace-write` сами по себе не делают агента владельцем исходников.
|
свежему более сильному агенту постановку, текущее дерево и файловые отчёты.
|
||||||
|
- Выбирай модель и уровень рассуждения независимо. Повышай effort, когда
|
||||||
Внешняя модель полезна как дополнительная линия, когда её родословная и цена
|
подходящей модели не хватило глубины; повышай модель, когда не хватает
|
||||||
оправданы риском. Процесс не должен от неё зависеть.
|
качества суждения. Текущая привязка ролей — в
|
||||||
|
[уровнях и ролях](references/roles.md).
|
||||||
|
|
||||||
## Контекст и обмен
|
## Контекст и обмен
|
||||||
|
|
||||||
- Если результат понадобится следующему агенту, полный отчёт запиши в
|
`$SCRATCH` — логический общий каталог одного прогона, доступный координатору и
|
||||||
уникальный файл временного обменного каталога. Мастеру верни только итог,
|
назначенным агентам. Физически это скретчпад сессии, временный каталог ОС либо
|
||||||
счётчики, вопросы-решения и путь. Короткий конечный результат можно вернуть
|
гарантированно игнорируемый каталог проекта. В нём живут временные промпты,
|
||||||
одним сообщением.
|
отчёты, триаж и перепроверки; это не артефакты проекта.
|
||||||
- Канал результата не связан с правами агента. Ревьюеру можно дать рабочие
|
|
||||||
права для тестов, кэшей, поиска и документации, а запрет менять исходники и
|
|
||||||
постоянное окружение удерживать мандатом и сверкой Git до и после.
|
|
||||||
- Не возвращай один полный отчёт одновременно файлом и сообщением. Не
|
|
||||||
переписывай находки между файлами: передавай исходный путь или собирай новый
|
|
||||||
промпт механической конкатенацией.
|
|
||||||
- Не выводи в контекст мастера полную точку отсчёта, diff, перечень хэшей или
|
|
||||||
сырой журнал. Если дерево грязное или возможны пересечения, порученный
|
|
||||||
агент либо готовый скрипт сохраняет подробности во временный файл и сообщает
|
|
||||||
только состояние, счётчики, пересечение с разрешённым объёмом и путь.
|
|
||||||
- Временные обменные файлы веди на английском. Долговечные документы и текст
|
- Временные обменные файлы веди на английском. Долговечные документы и текст
|
||||||
для пользователя пиши на языке проекта.
|
для партнёра пиши на языке проекта.
|
||||||
- Сообщай пользователю короткий статус на действительно значимых границах, а
|
- Полный результат агент пишет в назначенный уникальный файл и возвращает
|
||||||
не на каждом служебном переходе. Тайм-аут и `idle` не являются результатом.
|
краткую сводку с путём. Не возвращай тот же полный текст сообщением и не
|
||||||
|
переписывай чужой отчёт: передавай путь или собирай новый файл механически.
|
||||||
|
- Если общий каталог недоступен, передай через контекст только компактный
|
||||||
|
индекс. Сразу сообщи партнёру наблюдаемый сбой, использованный запасной
|
||||||
|
канал и то, что нужно проверить после задачи.
|
||||||
|
- Права агента не определяют канал результата. Ревьюер может иметь рабочие
|
||||||
|
права для тестов и временных файлов, но его единственный назначенный
|
||||||
|
результат — отчёт. Исходники, Git и постоянное окружение он не меняет.
|
||||||
|
|
||||||
## Когда какой приём полезен
|
Точные способы сборки файлов и промптов бери из
|
||||||
|
[нативных шаблонов](references/prompt-templates.md) только после выбора
|
||||||
|
конкретного приёма.
|
||||||
|
|
||||||
- **Самодостаточная постановка** нужна, когда исполнитель начинает без истории
|
## Выбор приёма
|
||||||
разговора или проекту важен долговечный след. Для локальной ясной правки
|
|
||||||
достаточно короткого мандата.
|
|
||||||
- **Исследователь** нужен для неизвестного объёма, внешних фактов или шумного
|
|
||||||
обхода репозитория. Его результат — факты и вопросы, не реализация.
|
|
||||||
- **Ревью постановки** окупается при скрытых проектных решениях, дорогой ошибке
|
|
||||||
или критериях, которые можно выполнить формально без нужного результата.
|
|
||||||
- **Исполнитель** нужен, когда отдельный контекст реализации ценнее прямой
|
|
||||||
работы мастера. Он не коммитит и не расширяет объём без решения мастера.
|
|
||||||
- **Проверяющий** нужен для шумных журналов, специальной среды, стенда или
|
|
||||||
независимого подтверждения команд. Не создавай отдельную роль, если те же
|
|
||||||
проверки дёшево и надёжно выполняет исполнитель либо ревьюер.
|
|
||||||
- **Свежий ревьюер** нужен, когда цена пропущенного дефекта выше стоимости
|
|
||||||
обзора. По умолчанию достаточно одного. Вторую линию добавляй ради другого
|
|
||||||
семейства моделей или отдельного класса риска, а не ради числа два.
|
|
||||||
|
|
||||||
## Типичный ход задачи
|
- **Самодостаточная постановка** нужна исполнителю без истории разговора и
|
||||||
|
там, где проекту нужен долговечный след. Для ясной локальной правки хватит
|
||||||
|
короткого мандата.
|
||||||
|
- **Исследователь** собирает факты неизвестного объёма. Он возвращает записку
|
||||||
|
решений и пути к доказательствам, а не реализацию.
|
||||||
|
- **Deep-reasoner** готовит архитектурное предложение, декомпозицию или
|
||||||
|
сравнение компромиссов. Итоговое решение остаётся у координатора. Важное
|
||||||
|
решение полезно проверить двумя слепыми линиями разных семейств.
|
||||||
|
- **Исполнитель** получает одну цель, границы и критерии. Он не коммитит и не
|
||||||
|
расширяет объём без решения координатора.
|
||||||
|
- **Проверяющий** запускает известную проверку в специальной среде или с
|
||||||
|
шумным выводом. Не создавай роль, если координатор либо исполнитель может
|
||||||
|
получить тот же надёжный результат дёшево.
|
||||||
|
|
||||||
Часто полезно уточнить постановку, дать одному исполнителю реализовать её,
|
### Режимы ревью
|
||||||
проверить обязательные свойства и при заметном риске получить свежий обзор.
|
|
||||||
Пропускай, объединяй и меняй порядок этих действий, если так надёжнее и
|
|
||||||
дешевле достигается результат.
|
|
||||||
|
|
||||||
- Перед реализацией разреши продуктовые, архитектурные и относящиеся к
|
Для нетривиальной делегируемой постановки один узкий свежий обзор — точка
|
||||||
границам решения вне мандата исполнителя. Технический способ внутри мандата
|
отсчёта. Пропускай его для ясной ограниченной задачи, если можешь коротко
|
||||||
оставь ему.
|
назвать причину. Сложную, рискованную или архитектурную постановку проверяй
|
||||||
- Пока исполнитель меняет исходники, не запускай другого владельца тех же
|
двумя слепыми линиями, когда цена оправдана.
|
||||||
файлов. Параллель разрешай для независимых неизменяемых входов, отдельных
|
|
||||||
worktree или команд без общего изменяемого состояния.
|
|
||||||
- Обязательные и доступные сквозные проверки должны пройти до финальной
|
|
||||||
приёмки. Недоступную или падающую проверку нельзя молча превратить в зелёную:
|
|
||||||
риск принимает пользователь либо полномочие, заранее записанное в задаче.
|
|
||||||
- Ревьюеру дай задачу, изменённый объём, проверки и один выбранный фокус. Он
|
|
||||||
исследует и проверяет гипотезы, но не исправляет исходники. Вердикт без
|
|
||||||
находок должен назвать просмотренный объём и выполненные проверки либо
|
|
||||||
проверенные гипотезы.
|
|
||||||
- Находки возвращай тому же исполнителю. Он исправляет или аргументированно
|
|
||||||
отклоняет их через контракт и проверку. Исходный ревьюер при необходимости
|
|
||||||
узко проверяет свои находки; новый соседний дефект не скрывает.
|
|
||||||
- На финале мастер смотрит только решения, остаточные риски, итоговые счётчики
|
|
||||||
и действительно ключевые артефакты. Полный diff и отчёты читают агенты,
|
|
||||||
которым поручена их проверка. Коммит делай только по просьбе пользователя.
|
|
||||||
|
|
||||||
## Нативные договоры
|
Реализацию проверяй по риску:
|
||||||
|
|
||||||
Если нужны готовые роли или выбор моделей, прочитай
|
- тривиальная — саморевью исполнителя;
|
||||||
[уровни и роли](references/roles.md). Если роли не настроены, не имитируй
|
- обычная — один независимый ревьюер по коду;
|
||||||
экономию названиями: честно отметь незакреплённую стоимость.
|
- сложная или рискованная — два адверсариальных ревьюера: соответствие задаче
|
||||||
|
и качество кода.
|
||||||
|
|
||||||
Когда выбран конкретный приём, возьми только его договор из
|
Разные семейства моделей предпочтительны: они дают больше разнообразия, чем
|
||||||
[сборки нативных промптов](references/prompt-templates.md). Не загружай все
|
два свежих треда одной родословной. Когда внешняя линия технически недоступна,
|
||||||
шаблоны заранее и не переписывай их текст в вызов агента.
|
используй доступных ревьюеров; процесс от неё не зависит.
|
||||||
|
|
||||||
При развитии скилла или первом прогоне в новой среде прочитай
|
Выбрав ревью постановки или реализации, прочитай единый
|
||||||
[полевые заметки](references/field-notes.md) и проверь живые предположения.
|
[договор ревью и триажа](references/review-and-triage.md). Он определяет
|
||||||
|
владельца триажа, файловый канал, повторные проверки и предохранитель кругов.
|
||||||
|
|
||||||
|
## Приёмка
|
||||||
|
|
||||||
|
Координатор принимает результат, но углубляется в доказательства постепенно:
|
||||||
|
|
||||||
|
1. состав изменений и краткие сводки ревью;
|
||||||
|
2. отдельные спорные фрагменты;
|
||||||
|
3. полный diff, только когда его объём ограничен и чтение нужно для решения.
|
||||||
|
|
||||||
|
Доступную детерминированную финальную проверку запускай сам с выводом в файл.
|
||||||
|
В контекст возьми точную команду, код возврата, итоговые счётчики, имена
|
||||||
|
упавших тестов и путь к журналу. Зелёный журнал не читай. Красный журнал
|
||||||
|
направь исполнителю или отдельному разборщику; сам открывай детали, когда они
|
||||||
|
нужны для решения о границах, риске, среде или смене исполнителя. Если
|
||||||
|
проверка доступна только проверяющему в специальной среде, явно назови
|
||||||
|
свидетельство косвенным.
|
||||||
|
|
||||||
|
Перед завершением:
|
||||||
|
|
||||||
|
- сопоставь результат с исходной целью и назови всё неподтверждённое;
|
||||||
|
- убедись, что выбранная независимая проверка завершена либо риск принят
|
||||||
|
полномочным решением;
|
||||||
|
- дай партнёру короткую саморефлексию: что больше всего потратило контекст,
|
||||||
|
оправдана ли трата, что в следующий раз направить через файл или субагента,
|
||||||
|
какие отклонения процесса произошли.
|
||||||
|
|
||||||
|
Новый урок для [эмпирики](references/lessons.md) только предложи партнёру.
|
||||||
|
Правь долговечную эмпирику после его согласия.
|
||||||
|
|
||||||
## Сбои координации
|
## Сбои координации
|
||||||
|
|
||||||
- Агент завершился без ожидаемого файла: один раз запроси короткий итог в том
|
- Нет ожидаемого файла: один раз запроси короткий итог в том же треде; после
|
||||||
же треде; после повторной тишины продолжи свежим агентом от сохранённых
|
повторной тишины продолжи свежим агентом от сохранённых артефактов.
|
||||||
артефактов.
|
- Длинный рассказ пришёл сообщением: попроси повторить ответ сводкой и путём,
|
||||||
- Агент вернул длинный рассказ в сообщение: попроси повторить ответ индексом и
|
не переноси рассказ дальше.
|
||||||
путём, не переноси рассказ дальше.
|
|
||||||
- Два исполнителя пересеклись в исходниках: останови их, установи одного
|
- Два исполнителя пересеклись в исходниках: останови их, установи одного
|
||||||
владельца и продолжи от проверенного состояния, не откатывая чужие правки.
|
владельца и продолжи от проверенного состояния без отката чужих правок.
|
||||||
- Находки не становятся слабее по раундам: если аргументы исчерпаны, вынеси
|
- Процесс не сходится: используй точки вмешательства из договора ревью,
|
||||||
пользователю противоречие, риск или неверную границу задачи.
|
объясни партнёру причину, стоимость и принятое решение.
|
||||||
- После завершения сохрани только предусмотренные проектом долговечные
|
- После завершения сохрани только предусмотренные проектом долговечные
|
||||||
решения и удали временные артефакты именно этого прогона.
|
решения и удали временные артефакты именно этого прогона.
|
||||||
+1
-1
@@ -10,7 +10,7 @@ Codex и проверит полный конвейер на боевой зад
|
|||||||
- процесс тонкого мастера — [`../SKILL.md`](../SKILL.md);
|
- процесс тонкого мастера — [`../SKILL.md`](../SKILL.md);
|
||||||
- выбор ролей и уровней — [`../references/roles.md`](../references/roles.md);
|
- выбор ролей и уровней — [`../references/roles.md`](../references/roles.md);
|
||||||
- перенесённые уроки и открытые проверки —
|
- перенесённые уроки и открытые проверки —
|
||||||
[`../references/field-notes.md`](../references/field-notes.md);
|
[`../references/lessons.md`](../references/lessons.md);
|
||||||
- точные договоры нативных агентов —
|
- точные договоры нативных агентов —
|
||||||
[`../references/prompt-templates.md`](../references/prompt-templates.md);
|
[`../references/prompt-templates.md`](../references/prompt-templates.md);
|
||||||
- явный вызов скилла — [`../agents/openai.yaml`](../agents/openai.yaml).
|
- явный вызов скилла — [`../agents/openai.yaml`](../agents/openai.yaml).
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@
|
|||||||
[`../references/roles.md`](../references/roles.md).
|
[`../references/roles.md`](../references/roles.md).
|
||||||
|
|
||||||
Факты двух прогонов и ещё непроверенные предположения дистиллированы в
|
Факты двух прогонов и ещё непроверенные предположения дистиллированы в
|
||||||
[`../references/field-notes.md`](../references/field-notes.md). Не переносить
|
[`../references/lessons.md`](../references/lessons.md). Не переносить
|
||||||
их обратно в основной файл без нового наблюдаемого сбоя.
|
их обратно в основной файл без нового наблюдаемого сбоя.
|
||||||
|
|
||||||
Ключевая граница следующей работы: субагент запускается ради конкретной пользы
|
Ключевая граница следующей работы: субагент запускается ради конкретной пользы
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
сверить её с фактическим вкладом.
|
сверить её с фактическим вкладом.
|
||||||
3. Измерить только мастерский след: какие полные отчёты или diff всё ещё попали
|
3. Измерить только мастерский след: какие полные отчёты или diff всё ещё попали
|
||||||
в его контекст, сколько агентов можно было не запускать.
|
в его контекст, сколько агентов можно было не запускать.
|
||||||
4. Проверить живые предположения из `references/field-notes.md`: управляемость
|
4. Проверить живые предположения из `references/lessons.md`: управляемость
|
||||||
ролей и стоимости, `workspace-write`-ревью, сеть и файловый канал.
|
ролей и стоимости, `workspace-write`-ревью, сеть и файловый канал.
|
||||||
5. Менять скилл только по фактам прогона; дистиллировать поглощённые уроки.
|
5. Менять скилл только по фактам прогона; дистиллировать поглощённые уроки.
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
# Полевые заметки
|
|
||||||
|
|
||||||
Читай при развитии скилла и первом прогоне в новой среде. Храни здесь только
|
|
||||||
факты, которые меняют выбор приёма, и живые предположения. Поглощённый урок
|
|
||||||
сжимай до одной строки с указателем на действующий договор.
|
|
||||||
|
|
||||||
## Наблюдения
|
|
||||||
|
|
||||||
- 2026-07-10 — хост скрыл выбор роли и модели; стоимость осталась
|
|
||||||
незакреплённой. Исследователь нашёл блокирующий `.gitignore`, но без нужды
|
|
||||||
запустил полный набор тестов. Вывод поглощён в
|
|
||||||
[основную оптику](../SKILL.md) и [мандаты](roles.md).
|
|
||||||
- 2026-07-10 — главной утечкой контекста была повторная передача отчётов и
|
|
||||||
промптов через мастера. Вывод поглощён в [правила обмена](../SKILL.md) и
|
|
||||||
[сборку промптов](prompt-templates.md).
|
|
||||||
- 2026-07-12 — разные семейства ревьюеров пересеклись в двух темах примерно из
|
|
||||||
восьми и сохранили заметный независимый вклад. Вывод поглощён в
|
|
||||||
[основную оптику](../SKILL.md).
|
|
||||||
- 2026-07-12 — самоприменение поймало сломанную сборку с необязательным
|
|
||||||
`notes.md` и показало, что язык обмена надо задавать явно. Вывод поглощён в
|
|
||||||
[сборку промптов](prompt-templates.md).
|
|
||||||
- 2026-07-12 — тот же прогон выявил регрессии производного скилла: второй
|
|
||||||
ревьюер того же семейства не давал новой родословной; мастер вывел в свой
|
|
||||||
контекст 44 хэша, полный отчёт и почти весь diff; права ревьюера смешались с
|
|
||||||
каналом результата; семь буквальных этапов породили лишние проверки. Вывод
|
|
||||||
поглощён в [основную оптику](../SKILL.md).
|
|
||||||
|
|
||||||
## Проверить боем
|
|
||||||
|
|
||||||
1. Выбирает ли текущий хост пользовательского агента по имени и показывает ли
|
|
||||||
фактически использованную модель после новой сессии с TOML.
|
|
||||||
2. Даёт ли дешёвая роль экономию без повторной работы сильной модели.
|
|
||||||
3. Остаётся ли дерево неизменным после ревьюера с `workspace-write` и явным
|
|
||||||
мандатом не менять исходники.
|
|
||||||
4. Доступны ли ревьюеру поиск и документация при текущих сетевых разрешениях.
|
|
||||||
5. Достаточно ли файлового канала, чтобы мастер не открывал полный отчёт и
|
|
||||||
сырые журналы.
|
|
||||||
6. Когда отдельный проверяющий или вторая линия ревью окупаются лучше
|
|
||||||
объединения совместимой работы.
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# Эмпирика прогонов
|
||||||
|
|
||||||
|
Храни здесь только датированные факты, которые меняют выбор приёма, и живые
|
||||||
|
гипотезы. Поглощённый урок сжимай до строки с указателем на действующий
|
||||||
|
договор. Правь этот долговечный файл только после согласования с партнёром.
|
||||||
|
|
||||||
|
## Наблюдения
|
||||||
|
|
||||||
|
- 2026-07-10 — хост скрыл выбор роли и модели; стоимость осталась
|
||||||
|
незакреплённой. Исследователь нашёл блокирующий `.gitignore`, но без нужды
|
||||||
|
запустил полный набор тестов. Вывод поглощён в
|
||||||
|
[основную оптику](../SKILL.md) и [роли](roles.md).
|
||||||
|
- 2026-07-10 — главной утечкой контекста была повторная передача отчётов и
|
||||||
|
промптов через координатора. Вывод поглощён в
|
||||||
|
[правила обмена](../SKILL.md) и [сборку промптов](prompt-templates.md).
|
||||||
|
- 2026-07-12 — разные семейства ревьюеров пересеклись в двух темах примерно из
|
||||||
|
восьми и сохранили заметный независимый вклад. Вывод поглощён в
|
||||||
|
[договор ревью](review-and-triage.md).
|
||||||
|
- 2026-07-12 — самоприменение поймало сломанную сборку с необязательным
|
||||||
|
`notes.md` и показало, что язык обмена надо задавать явно. Вывод поглощён в
|
||||||
|
[сборку промптов](prompt-templates.md).
|
||||||
|
- 2026-07-12 — второй ревьюер того же семейства не дал новой родословной;
|
||||||
|
координатор вывел в свой контекст 44 хэша, полный отчёт и почти весь diff;
|
||||||
|
права ревьюера смешались с каналом результата; семь буквальных этапов
|
||||||
|
породили лишние проверки. Вывод поглощён в
|
||||||
|
[основную оптику](../SKILL.md) и [договор ревью](review-and-triage.md).
|
||||||
|
|
||||||
|
## Проверить боем
|
||||||
|
|
||||||
|
1. Удерживает ли Sol оптику тонкого мастера: что больше всего расходует
|
||||||
|
контекст координатора и можно ли направить это через файл или субагента.
|
||||||
|
2. Достаточна ли Luna `medium` для простой ограниченной реализации и
|
||||||
|
подтверждается ли, что `low` даёт слишком много повторной работы.
|
||||||
|
3. Окупается ли Terra `medium` на узком обзоре постановки и проверке
|
||||||
|
реализации по задаче.
|
||||||
|
4. Сходится ли обычная реализация на Sol `medium`, а сложная — на Sol
|
||||||
|
`high`, с меньшей общей стоимостью петли.
|
||||||
|
5. Оправдан ли ручной `xhigh` хоть в одном классе задач; текущая гипотеза —
|
||||||
|
штатно переходить от `high` сразу к `max` только по сильному триггеру.
|
||||||
|
6. Остаётся ли дерево неизменным после ревьюера с `workspace-write` и явным
|
||||||
|
мандатом сохранять результат только в назначенный отчёт.
|
||||||
|
7. Доступны ли ревьюеру поиск и документация при текущих сетевых разрешениях.
|
||||||
|
8. Достаточно ли файлового канала, чтобы координатор не открывал полный
|
||||||
|
отчёт, diff и сырые журналы.
|
||||||
|
9. Может ли будущая линия другого семейства читать и писать общий
|
||||||
|
`$SCRATCH`. Пока адаптер запуска не проверен, он не является действующим
|
||||||
|
договором.
|
||||||
@@ -1,88 +1,134 @@
|
|||||||
# Сборка нативных промптов
|
# Сборка нативных промптов
|
||||||
|
|
||||||
Открывай только раздел выбранного приёма. Это справочник готовых договоров,
|
Это механика после выбора приёма в [основной оптике](../SKILL.md). Смысл
|
||||||
а не обязательная последовательность. Постоянный текст живёт в
|
ревью и триажа задаёт [единый договор](review-and-triage.md); здесь только
|
||||||
[prompts/](prompts/):
|
параметры, файловые пути и сборка.
|
||||||
|
|
||||||
|
Постоянный текст живёт в [prompts/](prompts/):
|
||||||
|
|
||||||
- [result-contract.md](prompts/result-contract.md) — обычный результат;
|
- [result-contract.md](prompts/result-contract.md) — обычный результат;
|
||||||
- [review-boilerplate.md](prompts/review-boilerplate.md) — слепое ревью;
|
- [review-boilerplate.md](prompts/review-boilerplate.md) — независимое ревью;
|
||||||
- [triage-header.md](prompts/triage-header.md) — закрытие находок;
|
- [triage-header.md](prompts/triage-header.md) — закрытие находок;
|
||||||
- [recheck-header.md](prompts/recheck-header.md) — узкая перепроверка;
|
- [recheck-header.md](prompts/recheck-header.md) — узкая перепроверка;
|
||||||
- [runtime-language.md](prompts/runtime-language.md) — язык временного обмена.
|
- [runtime-language.md](prompts/runtime-language.md) — язык временного обмена.
|
||||||
|
|
||||||
Текст договора меняй только в его авторитетном файле. Здесь остаются выбор и
|
Меняй договор только в его авторитетном файле. В параметрических файлах держи
|
||||||
механика сборки.
|
только факты конкретной задачи.
|
||||||
|
|
||||||
## Канал результата
|
## Каталог прогона
|
||||||
|
|
||||||
Канал выбери по [основной оптике](../SKILL.md). Здесь важна только механика:
|
`$SCRATCH` определён в основном файле как общий временный каталог. Для задачи
|
||||||
для файлового канала задай уникальный `REPORT`, для сообщения не создавай
|
создай уникальную подпапку: `D="$SCRATCH/<NN-slug>"`. `P` указывает на
|
||||||
вторую копию результата.
|
`references/prompts` этого скилла. Каждый агент получает отдельный `REPORT`.
|
||||||
|
|
||||||
## Обычный исполнитель или исследователь
|
Собирай файлы механически, не читая полезную нагрузку в контекст координатора.
|
||||||
|
Примеры ниже используют POSIX `cat`; в PowerShell применяй
|
||||||
|
`Get-Content <paths> | Set-Content -Encoding utf8 <target>`.
|
||||||
|
|
||||||
Параметрический файл содержит только нужные конкретной задаче поля:
|
## Исполнитель или исследователь
|
||||||
|
|
||||||
|
`params.md`:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
GOAL: one verifiable goal
|
GOAL: one verifiable goal
|
||||||
BOUNDARIES: allowed and forbidden work
|
BOUNDARIES: allowed and forbidden work
|
||||||
READ FIRST: paths to contracts and examples
|
READ FIRST: paths to contracts and examples
|
||||||
CHECKS: commands this agent should run
|
CHECKS: commands this agent should run
|
||||||
REPORT: path, only when the result will be reused
|
REPORT: absolute unique path
|
||||||
```
|
```
|
||||||
|
|
||||||
Добавь общий результат и язык временного обмена:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat "$D/params.md" "$P/result-contract.md" "$P/runtime-language.md" \
|
cat "$D/params.md" "$P/result-contract.md" "$P/runtime-language.md" \
|
||||||
> "$D/prompt.md"
|
> "$D/prompt.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
Самодостаточный файл задачи, критерии и подробное обязательное чтение добавляй
|
Самодостаточную постановку и подробное обязательное чтение добавляй только
|
||||||
только когда они действительно нужны выбранной работе.
|
когда они нужны выбранной работе.
|
||||||
|
|
||||||
## Свежий ревьюер
|
## Ревью постановки или реализации
|
||||||
|
|
||||||
Общая часть содержит задачу, изменённый объём и известные проверки. Фокус
|
`review-common.md` одинаков для одного обзора:
|
||||||
содержит только выбранный для этого ревью класс риска. Для одного ревьюера:
|
|
||||||
|
```text
|
||||||
|
TITLE: short review title
|
||||||
|
WORKING DIRECTORY: absolute repo path
|
||||||
|
STATEMENT: task and parent spec paths
|
||||||
|
SCOPE: changed files or task sections under review
|
||||||
|
BASELINE: what is explicitly outside this review
|
||||||
|
CHECKS: commands and expected counters
|
||||||
|
```
|
||||||
|
|
||||||
|
`review-output.md` задаёт поля конкретной линии:
|
||||||
|
|
||||||
|
```text
|
||||||
|
TYPE: spec | task | code
|
||||||
|
FINDING PREFIX: SPEC-A | SPEC-B | TASK | CODE
|
||||||
|
REPORT: absolute unique path
|
||||||
|
```
|
||||||
|
|
||||||
|
`review-focus.md` задаёт один выбранный фокус. Для постановки:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Review the task statement, not an implementation. Check facts against code,
|
||||||
|
hidden one-line decisions, boundaries, checkable acceptance criteria, and
|
||||||
|
ways to satisfy the wording without the intended result.
|
||||||
|
```
|
||||||
|
|
||||||
|
Для реализации выбери task lens или code lens из договора ревью:
|
||||||
|
|
||||||
|
```text
|
||||||
|
TASK LENS: compare the implementation with the statement, acceptance criteria,
|
||||||
|
boundaries, and intended observable result.
|
||||||
|
|
||||||
|
CODE LENS: seek correctness bugs, broken invariants, regressions, security
|
||||||
|
issues, and tests that can pass without proving the behavior.
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat "$D/review-common.md" "$D/review-focus.md" \
|
cat "$D/review-common.md" "$D/review-focus.md" "$D/review-output.md" \
|
||||||
"$P/review-boilerplate.md" "$P/runtime-language.md" \
|
"$P/review-boilerplate.md" "$P/runtime-language.md" \
|
||||||
> "$D/review-prompt.md"
|
> "$D/review-prompt.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
Если осознанно выбраны несколько линий, каждому ревьюеру дай отдельный файл
|
Для двух слепых линий создай `review-focus-a.md` и `review-focus-b.md`,
|
||||||
фокуса и отдельный путь результата. Не создавай вторую линию только ради
|
`review-output-a.md` и `review-output-b.md` со своими `TYPE`, уникальными
|
||||||
симметрии или свежего треда того же семейства.
|
`FINDING PREFIX` и разными путями `REPORT`. `review-common.md` используй один;
|
||||||
|
отчёты и финальные сообщения линий не объединяй до их завершения.
|
||||||
|
|
||||||
## Закрытие находок
|
## Триаж постановки
|
||||||
|
|
||||||
Передай исполнителю исходные индексы без пересказа. Обязательный
|
Координатор читает краткие строки и нужные подробности, принимает решение по
|
||||||
`triage-params.md` задаёт путь полного отчёта и нужные проверки. `notes.md`
|
каждому `SPEC-*` и обновляет постановку. Резолюции сохраняет в
|
||||||
добавляй только для новых решений мастера, которых у исполнителя ещё нет:
|
`spec-resolutions.md`; этот файл и новая постановка идут исходному ревьюеру
|
||||||
|
на узкую перепроверку.
|
||||||
|
|
||||||
|
## Триаж реализации
|
||||||
|
|
||||||
|
Передай исполнителю исходные отчёты без пересказа. `triage-params.md`
|
||||||
|
содержит путь итогового отчёта и проверки. `coordinator-notes.md` добавляй
|
||||||
|
только для совпадений, противоречий и новых решений уровня задачи.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat "$P/triage-header.md" "$D/triage-params.md" "$D/review-a.md" \
|
cat "$P/triage-header.md" "$D/triage-params.md" \
|
||||||
> "$D/fix-prompt.md"
|
"$D/review-a.md" > "$D/fix-prompt.md"
|
||||||
if [ -f "$D/review-b.md" ]; then
|
if [ -f "$D/review-b.md" ]; then
|
||||||
cat "$D/review-b.md" >> "$D/fix-prompt.md"
|
cat "$D/review-b.md" >> "$D/fix-prompt.md"
|
||||||
fi
|
fi
|
||||||
if [ -f "$D/notes.md" ]; then
|
if [ -f "$D/coordinator-notes.md" ]; then
|
||||||
cat "$D/notes.md" >> "$D/fix-prompt.md"
|
cat "$D/coordinator-notes.md" >> "$D/fix-prompt.md"
|
||||||
fi
|
fi
|
||||||
cat "$P/runtime-language.md" >> "$D/fix-prompt.md"
|
cat "$P/runtime-language.md" >> "$D/fix-prompt.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Узкая перепроверка
|
## Узкая перепроверка
|
||||||
|
|
||||||
Используй прежний тред ревьюера. Параметры содержат пути к его исходному
|
Продолжай исходный тред ревьюера. `recheck-params.md` задаёт пути к его
|
||||||
индексу и отчёту решений, а также проверку, если она нужна:
|
исходному отчёту и файлу резолюций, нужную проверку и новый уникальный
|
||||||
|
`REPORT`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat "$P/recheck-header.md" "$D/recheck-params.md" \
|
cat "$P/recheck-header.md" "$D/recheck-params.md" \
|
||||||
"$P/runtime-language.md" > "$D/recheck-prompt.md"
|
"$P/runtime-language.md" > "$D/recheck-prompt.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
Не запускай перепроверку автоматически: она нужна для принятых исправлений,
|
Перепроверка следует решению координатора по договору ревью, а не номеру этапа.
|
||||||
спорного отклонения или дорогой ошибки, а не для закрытия ритуального этапа.
|
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
# Narrow re-check
|
# Narrow re-check
|
||||||
|
|
||||||
Re-check only your original findings and the changes immediately adjacent to
|
Read your original report and the resolution report supplied by the caller.
|
||||||
|
Re-check only your original findings and changes immediately adjacent to
|
||||||
their resolution. Do not perform a full review.
|
their resolution. Do not perform a full review.
|
||||||
|
|
||||||
For every original finding report `CLOSED`, `NOT_CLOSED`, `REJECTION_VALID`,
|
For every original ID report `CLOSED`, `NOT_CLOSED`, `REJECTION_VALID`,
|
||||||
or `REJECTION_INVALID`, with concise evidence. If this narrow work exposes a
|
or `REJECTION_INVALID`, with concise evidence. Report a newly exposed
|
||||||
new adjacent defect, report it in the normal findings format; the scope bound
|
adjacent defect with a new stable ID; the narrow scope limits exploration, not
|
||||||
limits exploration, not honest reporting.
|
honest reporting.
|
||||||
|
|
||||||
Return the full re-check through the channel named by the caller. For a file
|
Write the detailed re-check to REPORT. Return only:
|
||||||
channel, write it to the supplied path and return only
|
|
||||||
`RECHECK: ALL_CLOSED | ISSUES_REMAIN`, counters, and `REPORT: <absolute path>`.
|
- `VERDICT: APPROVED | CHANGES_REQUESTED`;
|
||||||
For a message channel, return the concise finding statuses once.
|
- status counters;
|
||||||
|
- one line per original or new ID: `ID | status | one-phrase essence`;
|
||||||
|
- `REPORT: <absolute path>`.
|
||||||
@@ -4,7 +4,7 @@ Write the full result through the channel chosen by the caller:
|
|||||||
|
|
||||||
- `STATUS: complete | questions | blocked`
|
- `STATUS: complete | questions | blocked`
|
||||||
- `EVIDENCE:` changed files, executed commands, and final counters
|
- `EVIDENCE:` changed files, executed commands, and final counters
|
||||||
- `DECISIONS:` only questions for the orchestrator or user
|
- `DECISIONS:` only questions for the coordinator or partner
|
||||||
- `FINDINGS:` severity, location, essence, and verification method
|
- `FINDINGS:` severity, location, essence, and verification method
|
||||||
- `NEXT:` one concrete action or `none`
|
- `NEXT:` one concrete action or `none`
|
||||||
|
|
||||||
|
|||||||
+22
-13
@@ -1,21 +1,30 @@
|
|||||||
## Mandate
|
## Mandate
|
||||||
|
|
||||||
- Review and test hypotheses; do not edit source files or persistent
|
- Review independently and test hypotheses. Do not edit source files,
|
||||||
environment state.
|
persistent environment state, or Git.
|
||||||
- Use the working permissions needed for checks, caches, temporary artifacts,
|
- Use the working permissions needed for checks, caches, temporary artifacts,
|
||||||
documentation and primary-source research. The caller verifies Git before
|
documentation, and primary-source research.
|
||||||
and after the review.
|
- Write the detailed report only to REPORT. This assigned exchange file is the
|
||||||
- Do not run `git add`, `git commit`, or commands that discard changes.
|
sole write exception to the observer mandate.
|
||||||
- Report only the findings index and verdict through the channel named by the
|
- Treat another agent's claims as untrusted until evidence supports them.
|
||||||
caller.
|
|
||||||
|
|
||||||
## Findings index
|
## Detailed report
|
||||||
|
|
||||||
For each finding:
|
Use stable IDs with FINDING PREFIX:
|
||||||
|
|
||||||
`SEVERITY(BLOCKER|MAJOR|MINOR|NIT) | file:line or task section | failure scenario | evidence | how to verify`
|
`PREFIX-N | BLOCKER|MAJOR|MINOR|NIT | file:line or task section | violated
|
||||||
|
criterion | failure scenario | evidence | minimal verification`
|
||||||
|
|
||||||
If there are no findings, list the reviewed scope and every executed check or
|
If there are no findings, record the reviewed scope and every executed check
|
||||||
tested hypothesis with its outcome. A bare no-findings assertion is invalid.
|
or tested hypothesis with its outcome. A bare approval is invalid.
|
||||||
|
|
||||||
Final line: `VERDICT: APPROVED | APPROVED_WITH_MINORS | CHANGES_REQUIRED`
|
## Final message
|
||||||
|
|
||||||
|
Return only:
|
||||||
|
|
||||||
|
- `VERDICT: APPROVED | CHANGES_REQUESTED`
|
||||||
|
- severity counters;
|
||||||
|
- one line per finding: `ID | severity | area | one-phrase essence`;
|
||||||
|
- `REPORT: <absolute path>`.
|
||||||
|
|
||||||
|
Do not repeat the detailed report or reasoning narrative in the final message.
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
# Triage blind-review findings
|
# Triage independent-review findings
|
||||||
|
|
||||||
The review indexes below are immutable input. Process every finding and change
|
The review reports below are immutable input. Process every stable finding ID
|
||||||
nothing outside their scope. For each finding, either:
|
and change nothing outside their scope. Assign exactly one disposition:
|
||||||
|
|
||||||
- fix it and name the contract or check that proves closure; or
|
- `FIXED`: change it and name the contract or check that proves closure;
|
||||||
- reject it with evidence from the contract and a check, never a bare claim.
|
- `REJECTED`: cite the contract and a check, never a bare claim;
|
||||||
|
- `OUT_OF_SCOPE`: explain the boundary decision needed;
|
||||||
|
- `NEEDS_DECISION`: state the unresolved product, architecture, or risk choice.
|
||||||
|
|
||||||
Do not commit or stage changes. Propose accepted rejections and residual risks
|
Do not commit, stage, or rewrite the source reports. Write detailed resolutions
|
||||||
for the orchestrator to own and record as durable task decisions. The
|
to REPORT. Return only:
|
||||||
orchestrator cannot silently accept risk; authority must come from the user or
|
|
||||||
already be explicit in the task.
|
|
||||||
|
|
||||||
Write a full resolution report to the path supplied by the caller. Return only
|
- overall status and disposition counters;
|
||||||
status, counters, executed checks, and that path in the final message.
|
- one line per finding: `ID | disposition | one-phrase essence`;
|
||||||
|
- questions for the coordinator and executed-check counters;
|
||||||
|
- `REPORT: <absolute path>`.
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
# Ревью и триаж
|
||||||
|
|
||||||
|
Читай этот файл целиком после выбора независимого ревью постановки или
|
||||||
|
реализации. Режим и стоимость выбираются в [основной оптике](../SKILL.md);
|
||||||
|
здесь один авторитетный договор выполнения.
|
||||||
|
|
||||||
|
- [Независимость и фокус](#независимость-и-фокус)
|
||||||
|
- [Файловый маршрут](#файловый-маршрут)
|
||||||
|
- [Отчёт ревьюера](#отчёт-ревьюера)
|
||||||
|
- [Владелец триажа](#владелец-триажа)
|
||||||
|
- [Перепроверка и круги](#перепроверка-и-круги)
|
||||||
|
- [Что читает координатор](#что-читает-координатор)
|
||||||
|
|
||||||
|
## Независимость и фокус
|
||||||
|
|
||||||
|
Запускай ревьюера свежей сессией без истории исполнителя и других ревьюеров.
|
||||||
|
Повторную проверку точечных исправлений продолжает тот же ревьюер: его контекст
|
||||||
|
находок полезен и не отменяет независимость исходного обзора.
|
||||||
|
|
||||||
|
Для двойного ревью разделяй фокусы:
|
||||||
|
|
||||||
|
- **по задаче** — соответствие постановке, критериям, границам и ожидаемому
|
||||||
|
результату;
|
||||||
|
- **по коду** — корректность, межмодульные инварианты, регрессии, безопасность
|
||||||
|
и честность тестов.
|
||||||
|
|
||||||
|
Давай обоим общую постановку и изменённый объём, но отдельный файл фокуса и
|
||||||
|
отдельный путь отчёта. Они не знают о второй линии до завершения исходных
|
||||||
|
обзоров. Разные семейства моделей предпочтительны; две доступные линии одного
|
||||||
|
семейства всё равно полезны на сложной задаче, если их фокусы различаются.
|
||||||
|
|
||||||
|
Ревьюер — наблюдатель с нужными инструментами. Он может читать код, запускать
|
||||||
|
тесты, проверять гипотезы, создавать временные кэши и писать назначенный файл
|
||||||
|
отчёта. Исходники, постоянное окружение и Git он не меняет. Координатор
|
||||||
|
сверяет состояние дерева до и после.
|
||||||
|
|
||||||
|
## Файловый маршрут
|
||||||
|
|
||||||
|
Назначь каждому участнику уникальные файлы в каталоге задачи внутри
|
||||||
|
`$SCRATCH`. Временные промпты и отчёты веди на английском.
|
||||||
|
|
||||||
|
```text
|
||||||
|
reviewer -> detailed report file -> triage owner
|
||||||
|
|
|
||||||
|
+-> short summary -> coordinator
|
||||||
|
```
|
||||||
|
|
||||||
|
Ревьюер сам пишет полный отчёт в назначенный файл. Координатор не принимает
|
||||||
|
полный отчёт сообщением и не переписывает его перед передачей. Владелец
|
||||||
|
триажа читает исходные отчёты напрямую и пишет подробные резолюции в следующий
|
||||||
|
файл.
|
||||||
|
|
||||||
|
Если общий каталог недоступен, верни через контекст компактный индекс без
|
||||||
|
нарратива. Координатор сразу сообщает партнёру, какой агент не получил доступ,
|
||||||
|
к какому пути, какой запасной канал использован и что нужно проверить после
|
||||||
|
задачи. Сбой канала ухудшает экономию контекста, но не отменяет ревью.
|
||||||
|
|
||||||
|
## Отчёт ревьюера
|
||||||
|
|
||||||
|
Каждая находка получает устойчивый идентификатор с уникальным префиксом
|
||||||
|
линии: `SPEC-A-N` и `SPEC-B-N` для постановки, `TASK-N` для соответствия
|
||||||
|
реализации задаче и `CODE-N` для качества кода. Полный файл содержит:
|
||||||
|
|
||||||
|
- идентификатор, тяжесть и `файл:строка` либо раздел постановки;
|
||||||
|
- нарушенный критерий;
|
||||||
|
- сценарий сбоя и доказательство;
|
||||||
|
- минимальный способ проверки.
|
||||||
|
|
||||||
|
В сообщение координатору верни только:
|
||||||
|
|
||||||
|
- `VERDICT: APPROVED | CHANGES_REQUESTED`;
|
||||||
|
- счётчики по тяжести;
|
||||||
|
- по одной строке на находку: идентификатор, область, суть и тяжесть;
|
||||||
|
- абсолютный путь к полному отчёту.
|
||||||
|
|
||||||
|
При отсутствии находок полный файл перечисляет просмотренный объём и
|
||||||
|
выполненные проверки. Голая строка `APPROVED` без подтверждения работы не
|
||||||
|
засчитывается.
|
||||||
|
|
||||||
|
## Владелец триажа
|
||||||
|
|
||||||
|
**Постановка.** Координатор принимает или отклоняет каждую находку, потому что
|
||||||
|
цель, границы и критерии — его решения. Открытое техническое исследование он
|
||||||
|
может отдать deep-reasoner, но сам читает верхнеуровневые документы и итоговую
|
||||||
|
постановку. Продуктовый выбор и принятие риска выносит партнёру.
|
||||||
|
|
||||||
|
**Реализация.** Пофиндинговый триаж делает исполнитель, у которого есть
|
||||||
|
контекст кода. Координатор передаёт оба исходных отчёта без изменений и
|
||||||
|
добавляет отдельную короткую шапку: совпадения, противоречия и возможный выход
|
||||||
|
за границы. Он не сливает и не удаляет «дубликаты».
|
||||||
|
|
||||||
|
Для каждого идентификатора исполнитель возвращает один статус:
|
||||||
|
|
||||||
|
- `FIXED` — исправлено и названо доказательство;
|
||||||
|
- `REJECTED` — отклонено через контракт и проверку;
|
||||||
|
- `OUT_OF_SCOPE` — требует отдельного решения о границах;
|
||||||
|
- `NEEDS_DECISION` — технического решения недостаточно.
|
||||||
|
|
||||||
|
Подробности остаются в файле триажа. Координатор получает по одной компактной
|
||||||
|
строке `ID | status | essence` на находку, счётчики, вопросы уровня задачи и
|
||||||
|
путь. Риск и выход за границы решает координатор; техническую истинность
|
||||||
|
находки — исполнитель и ревьюер.
|
||||||
|
|
||||||
|
## Перепроверка и круги
|
||||||
|
|
||||||
|
Один круг — назначенные обзоры, триаж его владельца и узкая перепроверка.
|
||||||
|
Исходный ревьюер читает свой отчёт и файл резолюций, проверяет только свои
|
||||||
|
находки и соседние изменения. Выбранное независимое ревью закрывается
|
||||||
|
`APPROVED` либо явным принятием риска полномочным координатором или партнёром.
|
||||||
|
Координатор получает по одной компактной строке со статусом каждого исходного
|
||||||
|
или нового идентификатора; подробности остаются в файле перепроверки.
|
||||||
|
|
||||||
|
Повторно поднятое аргументированно отклонённое замечание пометь как спор и
|
||||||
|
отправь на отдельную узкую проверку усиленного уровня. Полный новый обзор
|
||||||
|
нужен, когда реализация широко изменилась, исходный отчёт слаб или требуется
|
||||||
|
новая независимая линия.
|
||||||
|
|
||||||
|
Третий круг — точка вмешательства: сообщи партнёру, почему процесс не сходится,
|
||||||
|
какова стоимость и что меняешь. Координатор может уточнить постановку,
|
||||||
|
повысить модель или effort, заменить исполнителя свежим сильным агентом,
|
||||||
|
разделить задачу, назначить усиленный гейт либо принять риск в пределах
|
||||||
|
мандата.
|
||||||
|
|
||||||
|
Пятый круг не начинай автоматически. Сначала прими явное решение и объясни его
|
||||||
|
партнёру; если полномочий недостаточно, остановись и запроси решение. Это
|
||||||
|
предохранитель от дорогой вложенной петли, а не запрет координатору управлять
|
||||||
|
работой.
|
||||||
|
|
||||||
|
## Что читает координатор
|
||||||
|
|
||||||
|
Краткие строки находок нужны координатору для сравнения линий. Подробный файл
|
||||||
|
открывай, когда находка меняет границы или риск, ревьюеры противоречат друг
|
||||||
|
другу, возник спор, сводка непонятна либо без деталей нельзя выбрать следующий
|
||||||
|
шаг.
|
||||||
|
|
||||||
|
Для обычной починки координатор видит переход:
|
||||||
|
|
||||||
|
```text
|
||||||
|
CHANGES_REQUESTED -> triaged -> rechecked -> APPROVED
|
||||||
|
```
|
||||||
|
|
||||||
|
Полный diff, доказательства и журналы читают назначенные агенты. Координатор
|
||||||
|
углубляется в них по правилам приёмки основной оптики, когда это нужно для его
|
||||||
|
собственного решения.
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
# Уровни и роли
|
# Уровни и роли
|
||||||
|
|
||||||
|
Маршрутизация моделей обновлена 2026-07-13. Имена и уровни здесь — датированная
|
||||||
|
настройка среды; логика [основной оптики](../SKILL.md) остаётся относительной.
|
||||||
|
|
||||||
Читай этот файл только при настройке ролей или когда нужная роль недоступна.
|
Читай этот файл только при настройке ролей или когда нужная роль недоступна.
|
||||||
[Основная оптика](../SKILL.md) описывает, когда отдельный агент вообще нужен.
|
[Основная оптика](../SKILL.md) описывает, когда отдельный агент вообще нужен.
|
||||||
Этот файл — условные настройки мандата, а не список обязательных участников.
|
Этот файл — условные настройки мандата, а не список обязательных участников.
|
||||||
@@ -7,6 +10,7 @@
|
|||||||
|
|
||||||
- [Возможности хоста](#возможности-хоста)
|
- [Возможности хоста](#возможности-хоста)
|
||||||
- [Выбор уровня](#выбор-уровня)
|
- [Выбор уровня](#выбор-уровня)
|
||||||
|
- [Текущая маршрутизация](#текущая-маршрутизация)
|
||||||
- [Роли](#роли)
|
- [Роли](#роли)
|
||||||
- [Файл пользовательского агента](#файл-пользовательского-агента)
|
- [Файл пользовательского агента](#файл-пользовательского-агента)
|
||||||
- [Пределы параллельности](#пределы-параллельности)
|
- [Пределы параллельности](#пределы-параллельности)
|
||||||
@@ -23,7 +27,7 @@
|
|||||||
`reasoning_effort` без пользовательской роли с закреплённой моделью.
|
`reasoning_effort` без пользовательской роли с закреплённой моделью.
|
||||||
Плейбук использует `fork_turns="none"` ради чистого контекста. Технически
|
Плейбук использует `fork_turns="none"` ради чистого контекста. Технически
|
||||||
ограниченный fork числом тоже допускает переопределения; только полный
|
ограниченный fork числом тоже допускает переопределения; только полный
|
||||||
fork `all` наследует модель мастера и отклоняет их.
|
fork `all` наследует модель координатора и отклоняет их.
|
||||||
- **Неуправляемая стоимость.** Интерфейс запуска принимает только задачу и
|
- **Неуправляемая стоимость.** Интерфейс запуска принимает только задачу и
|
||||||
имя треда. Передавай роль мандатом в промпте, но не утверждай, что выбрана
|
имя треда. Передавай роль мандатом в промпте, но не утверждай, что выбрана
|
||||||
дешёвая или сильная модель. `task_name` — идентификатор треда, а не выбор
|
дешёвая или сильная модель. `task_name` — идентификатор треда, а не выбор
|
||||||
@@ -69,25 +73,40 @@
|
|||||||
|
|
||||||
| Уровень | Для чего | Настройка |
|
| Уровень | Для чего | Настройка |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Быстрый | Поиск, чтение журналов, тесты, пакетная механика | Быстрая дешёвая модель, `low` или `medium` |
|
| Быстрый | Поиск, журналы, известные проверки, ограниченная механика | Дешёвая подходящая модель, обычно `medium` |
|
||||||
| Рабочий | Обычная реализация по ясной постановке | Сильная модель для кода, `medium` или `high` |
|
| Рабочий | Обычная реализация и проверка по задаче | Подходящая ролевая модель, `medium` |
|
||||||
| Глубокий | Архитектура, сложная диагностика, ревью высокого риска | Самая сильная доступная модель, `high` или выше |
|
| Глубокий | Архитектура, сложная реализация, ревью кода | Сильная модель, `high` |
|
||||||
|
| Исключительный | Необратимое решение или несходимость сильных агентов | Самая сильная модель, `max` |
|
||||||
|
|
||||||
Начинай с самого дешёвого подходящего уровня. Повышай уровень, когда агент
|
Модель задаёт потолок способности, effort — глубину работы этой модели.
|
||||||
не может проверить предположение, дважды возвращает слабый результат или
|
Повышай effort, когда подходящей модели не хватило поиска или рассуждения.
|
||||||
задача требует решения с высокой ценой ошибки. Не повышай уровень ради
|
Повышай модель, когда не хватает качества решения. После двух слабых
|
||||||
объёма механической работы: дели её на независимые части.
|
результатов замени исполнителя свежим более сильным агентом вместо переноса
|
||||||
|
его неудачного контекста.
|
||||||
|
|
||||||
- `low`/`medium`: детерминированная механика, поиск и известные проверки.
|
`xhigh` не является автоматической ступенью: текущая эмпирика показывает
|
||||||
- `medium`/`high`: реализация по ясному контракту, несколько связанных
|
малый прирост относительно `high` при заметной цене. Выбирай его вручную для
|
||||||
файлов, нет необратимых решений.
|
узкой задачи. `max` заметно сильнее и дороже; используй по явному триггеру и
|
||||||
- `high`: публичный контракт, безопасность, целостность данных, конкуренция,
|
объясняй партнёру причину.
|
||||||
миграция или неоднозначная архитектура.
|
|
||||||
- `xhigh` и выше: необратимый дорогой выбор либо повторное противоречие
|
|
||||||
сильных агентов. Это исключение, а не обычный режим ревью.
|
|
||||||
|
|
||||||
Конкретные названия моделей держи в конфигурации агентов, а не в `SKILL.md`.
|
## Текущая маршрутизация
|
||||||
Так замена модельной линейки не меняет процесс.
|
|
||||||
|
Это начальная рабочая таблица, а не рейтинг моделей. Проверяй её на прогонах и
|
||||||
|
меняй после согласования эмпирики с партнёром.
|
||||||
|
|
||||||
|
| Роль | Модель и effort |
|
||||||
|
|---|---|
|
||||||
|
| Простая ограниченная реализация, `fast-worker`, известная проверка | Luna `medium` |
|
||||||
|
| Узкий обзор постановки, проверка реализации по задаче | Terra `medium` |
|
||||||
|
| Обычная нетривиальная реализация | Sol `medium` |
|
||||||
|
| Сложная или рискованная реализация | Sol `high` |
|
||||||
|
| `deep-reasoner`: архитектурное предложение, декомпозиция, компромиссы | Sol `high` |
|
||||||
|
| Ревью кода | Sol `high` |
|
||||||
|
| Необратимое решение, спор сильных агентов, повторная несходимость | Sol `max` |
|
||||||
|
|
||||||
|
Официальное назначение текущих уровней семейства — в
|
||||||
|
[каталоге моделей OpenAI](https://developers.openai.com/api/docs/models).
|
||||||
|
Конкретные имена держи здесь и в конфигурации агентов, а не в `SKILL.md`.
|
||||||
|
|
||||||
## Возможные мандаты
|
## Возможные мандаты
|
||||||
|
|
||||||
@@ -104,7 +123,7 @@
|
|||||||
|
|
||||||
Уровень: быстрый. Строит карту кода, находит точки входа, контракты и команды
|
Уровень: быстрый. Строит карту кода, находит точки входа, контракты и команды
|
||||||
проверки. Не запускает полный набор тестов и не проектирует решение, пока
|
проверки. Не запускает полный набор тестов и не проектирует решение, пока
|
||||||
мастер прямо не попросит. Узкую команду запускает только для проверки факта,
|
координатор прямо не попросит. Узкую команду запускает только для проверки факта,
|
||||||
без которого карта ненадёжна.
|
без которого карта ненадёжна.
|
||||||
|
|
||||||
Обычно: `sandbox_mode = "read-only"`.
|
Обычно: `sandbox_mode = "read-only"`.
|
||||||
@@ -120,8 +139,8 @@
|
|||||||
### `deep-reasoner`
|
### `deep-reasoner`
|
||||||
|
|
||||||
Уровень: глубокий. Принимает одно сложное решение: архитектура, алгоритм,
|
Уровень: глубокий. Принимает одно сложное решение: архитектура, алгоритм,
|
||||||
диагноз, противоречие требований. Возвращает рекомендацию, ключевые доводы и
|
диагноз, противоречие требований. Возвращает предложение, ключевые доводы и
|
||||||
непроверенные предположения.
|
непроверенные предположения; итоговое решение принимает координатор.
|
||||||
|
|
||||||
Обычно: `sandbox_mode = "read-only"`.
|
Обычно: `sandbox_mode = "read-only"`.
|
||||||
|
|
||||||
@@ -136,7 +155,9 @@
|
|||||||
правок. Исходники и постоянное окружение защищает явный мандат, Git сверяется
|
правок. Исходники и постоянное окружение защищает явный мандат, Git сверяется
|
||||||
до и после. Доступ к сети проверять отдельно: право записи не гарантирует
|
до и после. Доступ к сети проверять отдельно: право записи не гарантирует
|
||||||
поиск и документацию. Непроверенную внешнюю механику отмечать как гипотезу.
|
поиск и документацию. Непроверенную внешнюю механику отмечать как гипотезу.
|
||||||
Канал результата от песочницы не зависит.
|
Канал результата от песочницы не зависит. При выбранном ревью используй
|
||||||
|
[единый договор](review-and-triage.md): назначенный файл отчёта — единственный
|
||||||
|
результат наблюдателя; временные кэши допустимы, исходники и Git неизменны.
|
||||||
|
|
||||||
### `verifier`
|
### `verifier`
|
||||||
|
|
||||||
@@ -169,7 +190,7 @@ developer_instructions = """
|
|||||||
## Пределы параллельности
|
## Пределы параллельности
|
||||||
|
|
||||||
- Держи глубину `1`: субагенты не создают собственное дерево исполнителей.
|
- Держи глубину `1`: субагенты не создают собственное дерево исполнителей.
|
||||||
- Оставляй один слот мастеру.
|
- Оставляй один слот координатору.
|
||||||
- Параллельно запускай только работу без конфликтующих входов, команд и
|
- Параллельно запускай только работу без конфликтующих входов, команд и
|
||||||
изменяемого состояния. Второй слепой обзор добавляй ради отдельной линии, а
|
изменяемого состояния. Второй слепой обзор добавляй ради отдельной линии, а
|
||||||
не ради заполнения свободного слота.
|
не ради заполнения свободного слота.
|
||||||
|
|||||||
Reference in new issue
Block a user