Агенты
Агент — именованный профиль: системный промпт, модель, режим работы и
разрешения. В TUI агентов переключает Shift+Tab, полный список —
/agents или Ctrl+X, затем A.
Готовые агенты
Заголовок раздела «Готовые агенты»| Агент | Режим | Что делает |
|---|---|---|
Build (build) |
primary |
основной агент для кода: правит файлы, запускает команды (с подтверждением) |
Plan (plan) |
primary |
исследует и планирует, обычные файлы проекта не правит |
General (general) |
subagent |
исследования и многошаговая работа с широким доступом к инструментам |
Explore (explore) |
subagent |
ищет и читает код, ничего не меняя |
Скрытые агенты compaction, title и summary ведут служебную работу и не
выбираются напрямую. Встроенного агента можно переопределить — достаточно
задать своё определение с тем же именем:
{ "agents": { "build": { "permissions": [ { "action": "shell", "resource": "git push *", "effect": "ask" } ] } }}Свои агенты
Заголовок раздела «Свои агенты»Создайте Markdown-файл. Этот пример добавляет ревьюера только на чтение:
---description: Reviews changes for correctness and regressionsmode: subagentmodel: zubriq/zubr-coderpermissions: - action: edit resource: "*" effect: deny - action: shell resource: "*" effect: deny---
Review the current changes. List findings in severity order with file and line references.Попросите основного агента его использовать:
Проверь мои текущие изменения субагентом reviewer.Тело Markdown-файла становится системным промптом агента; frontmatter
принимает те же поля, что и запись agents в конфигурации. Агентов можно
хранить глобально и в проекте:
~/.config/zubrcode/agents/<name>.md.opencode/agents/<name>.mdВложенный путь становится частью id:
.opencode/agents/team/reviewer.md → team/reviewer.
То же определяется в JSON — в opencode.json или opencode.jsonc:
{ "agents": { "reviewer": { "description": "Reviews current changes", "mode": "subagent", "system": "Report findings in severity order.", "permissions": [ { "action": "edit", "resource": "*", "effect": "deny" } ] } }}| Режим | Поведение |
|---|---|
primary |
работает основным агентом сессии (по умолчанию для нового агента) |
subagent |
запускается только в дочерней сессии инструментом subagent |
all |
подходит для обоих случаев |
Субагенты работают со свежим контекстом в фоне или на переднем плане.
Разрешения subagent родителя определяют, каких агентов он может запускать;
дочерняя сессия пользуется разрешениями своего агента:
{ "agents": { "orchestrator": { "permissions": [ { "action": "subagent", "resource": "*", "effect": "deny" }, { "action": "subagent", "resource": "reviewer", "effect": "allow" } ] } }}Поля агента
Заголовок раздела «Поля агента»| Поле | Что делает |
|---|---|
description |
назначение агента — его видит модель, выбирая субагента |
mode |
primary, subagent или all |
model |
модель в формате провайдер/модель (можно с #вариант) |
system |
системный промпт; непустое значение заменяет базовый промпт провайдера |
permissions |
упорядоченный список правил (Разрешения) |
steps |
максимум шагов модели; на последнем шаге инструменты убираются и просят резюме |
hidden |
скрыть агента из списков и каталога субагентов (это видимость, не безопасность) |
color |
цвет агента в интерфейсе, шестнадцатеричный |
disabled |
убрать агента (в том числе встроенный) |
Подсагент без своей модели наследует модель родительской сессии. Модель, выбранная в сессии, хранится отдельно: выбор агента её не меняет.
Слияние определений
Заголовок раздела «Слияние определений»Определения складываются в порядке конфигурации: поздние скалярные значения
заменяют ранние, правила разрешений дописываются в конец. Глобальные
permissions применяются раньше правил агента, поэтому правила агента могут
их уточнять.
Агент по умолчанию
Заголовок раздела «Агент по умолчанию»Когда сессия не выбрала агента, используется default_agent:
{ "default_agent": "build"}Если он не существует, скрыт или не подходит для основной работы, берётся
build, затем первый видимый агент режима primary.