* fix(agents): strengthen Orchestrator Model with override and delegation map * docs(handoff): add handoff and ADR for orchestrator model fix * docs(handoff): set PR number * docs(project-map): update AGENTS.md description after PR#189 --------- Co-authored-by: opencode-agent <agent@opencode.local>
29 lines
No EOL
3.4 KiB
Markdown
29 lines
No EOL
3.4 KiB
Markdown
---
|
||
pr: 189
|
||
title: fix(agents): strengthen Orchestrator Model with override and delegation map
|
||
---
|
||
|
||
## Что сделано
|
||
|
||
Переписана секция `## Orchestrator Model` в `AGENTS.md` (строки 3-10 → 3-25, +16 строк):
|
||
- Заголовок с override-маркером: `## Orchestrator Model (CRITICAL — overrides built-in prompt)`.
|
||
- Quote-блок с явным перебивом встроенного промпта opencode (секции `# Doing tasks`, `# Tool usage policy`, `# Proactiveness`): приоритет THIS file, цитата «use the available search tools» / «implement the solution using all tools available to you», императив DELEGATE.
|
||
- FORBIDDEN-список с маппингом на конкретные subagent'ы: `explore` (filesystem/grep/read-for-context), `general` (edits/write/implementation), matching subagent (bash/git/tests), `reviewer`/`docs-reviewer`/`memory-syncer` (review/docs/memory).
|
||
- Anti-pattern с rationale: оркестратор делает работу сам → теряет plan context + ломает linear execution (agents jump between branches → conflicts, lost work).
|
||
- ALLOWED-блок для read-only: oracle tools (`pipeline-status`, `spec-status`, `memory-search`), чтение `docs/handoff/`, однострочный progress note пользователю.
|
||
|
||
Остальные секции `AGENTS.md` не изменены (байт-в-байт, проверено через `git diff`).
|
||
|
||
## Почему
|
||
|
||
Модель glm-5.2 не следовала Orchestrator Model — делала всё сама (grep/glob/edit/bash). Причина: прямой конфликт со встроенным промптом opencode, который приказывает «use the available search tools» и даёт примеры где assistant сам делает grep/glob/edit. Встроенный промпт сильнее (длиннее, с примерами, идёт первым). Старая секция была абстрактной — одно мягкое «Never do yourself» без маппинга «вместо X → Y», без override-маркера. Решение: жёсткие императивы (`CRITICAL`, `FORBIDDEN`, `NO EXCEPTIONS`, `NEVER`, `DELEGATE`, `ALLOWED`) + явный override встроенного промпта + concrete delegation map — по образцу работающего `run-pipeline/SKILL.md`. Sync в `~/.config/opencode/AGENTS.md` — после merge, отдельным шагом (не в этом PR).
|
||
|
||
## Pending
|
||
|
||
- После merge: sync `/root/workspace/opencode-config/AGENTS.md` → `/root/.config/opencode/AGENTS.md` (bind-mount). См. skill `configure-opencode`.
|
||
|
||
## Watch out
|
||
|
||
- Override касается ТОЛЬКО секций Doing tasks / Tool usage / Proactiveness встроенного промпта, НЕ всего промпта (безопасность и другие правила не затронуты).
|
||
- Quote-блок цитирует промпт opencode v1.18.9 (`Hi`) — может устареть при апгрейде, но это документация намерения, не зависимость от точной формулировки.
|
||
- ALLOWED-блок узкий: чтение только `docs/handoff/`, `read-for-context` остаётся в FORBIDDEN (делегируется `explore`). |