Перейти к содержимому

Агенты

Агент — именованный профиль: системный промпт, модель, режим работы и разрешения. В 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-файл. Этот пример добавляет ревьюера только на чтение:

.opencode/agents/reviewer.md
---
description: Reviews changes for correctness and regressions
mode: subagent
model: zubriq/zubr-coder
permissions:
- 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.