* 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>
3.2 KiB
ADR-083: Strengthen Orchestrator Model with explicit built-in prompt override
Статус
Accepted (2026-07-31)
Контекст
Модель glm-5.2 в главном чате opencode не следовала Orchestrator Model из AGENTS.md — выполняла работу сама (filesystem research, grep/glob, edits, bash, git) вместо делегирования subagent'ам. Анализ выявил, что встроенный промпт opencode прямо приказывает «use the available search tools» / «implement the solution using all tools available to you» и даёт примеры где assistant сам делает grep/glob/edit. Этот промпт сильнее AGENTS.md: длиннее, с примерами, идёт первым, а AGENTS.md воспринимается как «справка о проекте» а не поведенческий протокол. Текущая секция Orchestrator Model была абстрактной — одно мягкое «Never do yourself» без маппинга на конкретные subagent'ы, без override-маркера, без anti-patterns с rationale.
Решение
Переписать секцию ## Orchestrator Model в AGENTS.md с жёсткими императивами по образцу работающего run-pipeline/SKILL.md:
- Override-маркер в заголовке:
(CRITICAL — overrides built-in prompt). - Quote-блок с явным перебивом встроенного промпта — приоритет THIS file, цитата «use the available search tools» / «implement the solution using all tools», императив DELEGATE. Override касается только секций Doing tasks / Tool usage / Proactiveness.
- FORBIDDEN-список с concrete delegation map:
explore(filesystem/grep/read-for-context),general(edits/write/implementation), matching subagent (bash/git/tests),reviewer/docs-reviewer/memory-syncer. - Anti-pattern с rationale: оркестратор делает работу сам → теряет plan context + ломает linear execution.
- ALLOWED-блок для read-only операций (oracle tools, чтение docs/handoff, progress note).
Альтернативы
- Правка встроенного промпта opencode (бинарник). Невозможно — промпт зашит в бинарник v1.18.9, не настраивается пользователем.
- Перевод AGENTS.md на русский. Отвергнуто пользователем: дело не в языке, а в жёсткости формулировок и конкретике процедуры.
- Дублирование Orchestrator Model в каждом subagent. Избыточно, проблема в оркестраторе, не в subagent'ах.
- Расширение ALLOWED-блока (разрешить read-for-context). Отвергнуто: read-for-context оставлен в FORBIDDEN (делегируется
explore), иначе оркестратор снова начнёт читать всё сам.