fix(agents): planned issues via main chat, found issues via subagents #88

Closed
opened 2026-08-16 20:12:24 +03:00 by slaid098 · 0 comments
Owner

Контекст

Сейчас правила противоречат практике: AGENTS.md (Orchestrator Model) и issue SKILL.md предписывают создавать issues через сабагента («Issues are created by ONE agent at a time (batch creation)», issue SKILL.md — раздел про subagent). Обсуждением установлено: плановые issues рождаются в контексте main-chat обсуждения плана, и передача тел сабагенту — это сломанный телефон + лишние токены (контекст плана приходится дублировать в промпт). Плюс runtime-практика: у оркестратора может быть deny на делегирование general, и без create-issue в main chat создание встает.

При этом bug-discovery протокол менять НЕ нужно: сабагент, нашедший баг в ходе исполнения, создаёт issue сам — контекст обнаружения (файл, стек, что делал) у него, передача наверх теряет детали.

Единый критерий: issue создаёт тот, в чьём контексте родилось знание о задаче.

Задача

  1. AGENTS.md (источник — /root/workspace/opencode-config/AGENTS.md; bind-mount копия подтягивается git pull на хосте, напрямую не править):
    • в Orchestrator Model добавить явное исключение: плановые issues (декомпозиция после согласования плана) создаёт main-chat оркестратор сам, последовательными вызовами create-issue;
    • в секции Pipeline заменить «батч ишусов одним агентом (последовательно, через create-issue tool)» → «батч ишусов оркестратором в main chat (последовательно, через create-issue tool)»;
    • в Bug Discovery Protocol добавить границу: найденное в ходе исполнения — создаёт сабагент сам; плановое — main chat;
    • добавить фразу-критерий «issue создаёт тот, в чьём контексте родилось знание о задаче».
  2. .opencode/skills/issue/SKILL.md: убрать инструкцию делегировать создание плановых issues сабагенту; main chat создаёт сам (последовательные create-issue), возврат списка [{number, url, title}] в отчёте пользователю. Feature-spec gate (PR#82) не трогаем — Q&A и так в main chat, теперь это последовательно: Q&A → тут же create-issue.
  3. .opencode/skills/bug-discovery/SKILL.md: одна строка о границе (найденные в ходе исполнения — создаёт сам сабагент; плановые — main chat).

Контракты

  • create-issue tool не меняется; 8-заголовочная валидация и feature-spec gate сохраняются.
  • Правило линейности (создание строго последовательно, не параллельно) сохраняется независимо от владельца процесса.

Инварианты

  • Bug-discovery: нашедший сабагент по-прежнему обязан создать issue через create-issue и сообщить оркестратору Created issue #N: ....
  • Обязательность загрузки bug-discovery скилла при находке — без изменений.

Граничные случаи

  • Сабагент в ходе исполнения формулирует не баг, а плановую доработку/улучшение → НЕ создаёт сам, а сообщает оркестратору; issue создаёт main chat. Это зафиксировать в AGENTS.md/issue-скилле.

Влияние на связанные компоненты

  • spec-скилл (создаёт issues пачкой после спеки) — его исполнительская часть тоже приводится к правилу «готовые body уже есть из спеки → создаёт исполнитель напрямую, без лишнего делегирования».
  • Sync: правки только в workspace-клоне; на хост подтягивается git pull.

Вне scope

  • Изменение create-issue tool, permission-конфига, структуры pipeline-фаз.

Критерии приемки

  • AGENTS.md содержит carve-out для плановых issues + границу для bug-discovery + фразу-критерий.
  • grep: issue SKILL.md не содержит инструкции делегировать создание плановых issues сабагенту.
  • bug-discovery SKILL.md содержит строку границы.
## Контекст Сейчас правила противоречат практике: AGENTS.md (Orchestrator Model) и issue SKILL.md предписывают создавать issues через сабагента («Issues are created by ONE agent at a time (batch creation)», issue SKILL.md — раздел про subagent). Обсуждением установлено: плановые issues рождаются в контексте main-chat обсуждения плана, и передача тел сабагенту — это сломанный телефон + лишние токены (контекст плана приходится дублировать в промпт). Плюс runtime-практика: у оркестратора может быть deny на делегирование `general`, и без create-issue в main chat создание встает. При этом bug-discovery протокол менять НЕ нужно: сабагент, нашедший баг в ходе исполнения, создаёт issue сам — контекст обнаружения (файл, стек, что делал) у него, передача наверх теряет детали. Единый критерий: **issue создаёт тот, в чьём контексте родилось знание о задаче.** ## Задача 1. AGENTS.md (источник — /root/workspace/opencode-config/AGENTS.md; bind-mount копия подтягивается git pull на хосте, напрямую не править): - в Orchestrator Model добавить явное исключение: плановые issues (декомпозиция после согласования плана) создаёт main-chat оркестратор сам, последовательными вызовами `create-issue`; - в секции Pipeline заменить «батч ишусов одним агентом (последовательно, через `create-issue` tool)» → «батч ишусов оркестратором в main chat (последовательно, через `create-issue` tool)»; - в Bug Discovery Protocol добавить границу: найденное в ходе исполнения — создаёт сабагент сам; плановое — main chat; - добавить фразу-критерий «issue создаёт тот, в чьём контексте родилось знание о задаче». 2. `.opencode/skills/issue/SKILL.md`: убрать инструкцию делегировать создание плановых issues сабагенту; main chat создаёт сам (последовательные create-issue), возврат списка `[{number, url, title}]` в отчёте пользователю. Feature-spec gate (PR#82) не трогаем — Q&A и так в main chat, теперь это последовательно: Q&A → тут же create-issue. 3. `.opencode/skills/bug-discovery/SKILL.md`: одна строка о границе (найденные в ходе исполнения — создаёт сам сабагент; плановые — main chat). ## Контракты - `create-issue` tool не меняется; 8-заголовочная валидация и feature-spec gate сохраняются. - Правило линейности (создание строго последовательно, не параллельно) сохраняется независимо от владельца процесса. ## Инварианты - Bug-discovery: нашедший сабагент по-прежнему обязан создать issue через create-issue и сообщить оркестратору `Created issue #N: ...`. - Обязательность загрузки bug-discovery скилла при находке — без изменений. ## Граничные случаи - Сабагент в ходе исполнения формулирует не баг, а плановую доработку/улучшение → НЕ создаёт сам, а сообщает оркестратору; issue создаёт main chat. Это зафиксировать в AGENTS.md/issue-скилле. ## Влияние на связанные компоненты - spec-скилл (создаёт issues пачкой после спеки) — его исполнительская часть тоже приводится к правилу «готовые body уже есть из спеки → создаёт исполнитель напрямую, без лишнего делегирования». - Sync: правки только в workspace-клоне; на хост подтягивается `git pull`. ## Вне scope - Изменение create-issue tool, permission-конфига, структуры pipeline-фаз. ## Критерии приемки - AGENTS.md содержит carve-out для плановых issues + границу для bug-discovery + фразу-критерий. - grep: issue SKILL.md не содержит инструкции делегировать создание плановых issues сабагенту. - bug-discovery SKILL.md содержит строку границы.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/opencode-config#88
No description provided.