Модуль 4
Субагенты и MCP
Свой агент-ревьюер в markdown-файле с read-only правами, скиллы для повторяемых процедур и MCP-серверы как источник внешних инструментов.
Чему научишься
- отличать primary-агента от субагента и знать, как вызывается каждый
- создать агента-ревьюера в .opencode/agents/reviewer.md и вызвать его через @reviewer
- подключить MCP-сервер Context7 и выключить лишние серверы в конфиге
До этого момента ты работал с primary-агентами build и plan: с ними идёт диалог, build правит файлы, plan только анализирует, переключение через Shift+Tab, список через /agents. Субагент — специалист на один вызов. Его упоминают в диалоге по имени, он решает задачу со своим системным промптом и своими permissions и возвращает результат в общую сессию. В OpenCode встроены субагенты general и explore, а своего можно завести markdown-файлом за пару минут.
Сейчас заведём ревьюера кода для orders-api и дадим ему read-only права: читать файлы и советовать можно, записать ничего не получится физически. Папку .opencode/agents/ создавай в корне репозитория.
Агент-ревьюер в markdown-файле
Имя файла задаёт идентификатор агента: reviewer.md превращается в вызов @reviewer. Frontmatter описывает агента: description виден в списке /agents, mode: subagent не даёт выбрать его как primary, permissions ограничивает действия по тем же правилам, что ты настраивал в модуле 3. Тело файла после frontmatter целиком становится системным промптом ревьюера.
---
description: Код-ревьюер. Читает код, находит баги, предлагает правки текстом. Файлы не меняет.
mode: subagent
permissions:
- action: read
resource: "*"
effect: allow
- action: edit
resource: "*"
effect: deny
- action: shell
resource: "*"
effect: deny
---
Ты — код-ревьюер TypeScript-сервисов.
Правила:
- читай присланные файлы и смежные: роуты, сервисы, типы, фикстуры
- находи баги, дыры в валидации и расхождения между комментариями и кодом
- предлагай правки текстом: файл, место, что изменить и почему
- не изменяй и не создавай файлы: ты консультант
Формат ответа: нумерованный список замечаний по убыванию важности, в конце — что проверить руками.@reviewer сделай ревью src/routes/orders.ts и src/services/pricing.ts перед мерджем
Прочитал оба файла, смежные src/db.ts и data/db.json. Замечания по убыванию важности: 1) src/services/pricing.ts — TODO про скидку 10% при заказе от 1000 ₽ не реализован, заказ ord-003 на 1740 ₽ уходит без скидки; 2) POST /api/orders не проверяет menuId: на неизвестной позиции orderTotal бросает исключение, оно не перехвачено, клиент получит 500 вместо 400; 3) на src/routes/orders.ts нет тестов, в tests/ лежит только pricing.test.ts; 4) PATCH /api/orders/:id/status принимает статусы в любом порядке, done можно откатить в new. Файлы не менял, права read-only. Руками прогони curl из комментария в orders.ts.
Скиллы
Скилл — это папка с файлом SKILL.md внутри .opencode/skills/. В frontmatter name и description, в теле инструкция для повторяемой процедуры: регламент проверки PR, настройка окружения, релизный чек-лист. Агент подбирает скилл по description, когда задача подходит, либо ты вызываешь его явно через @skill-id. OpenCode читает и папки .claude/skills, и .agents/skills, поэтому скиллы из команды с Claude Code или Codex заработают без переноса. Структура и примеры — в доке скиллов.
MCP как USB-порт для инструментов
MCP (Model Context Protocol) — это USB-порт для инструментов. Подключаешь сервер, и агент получает его инструменты: Context7 даёт поиск по актуальной документации библиотек, сервер БД — запросы к данным, сервер трекера — работу с задачами. Инструменты зовутся по имени вида <server>_<tool>, например context7_resolve-library-id, и работают наравне со встроенными чтением файлов и shell.
# добавить remote-сервер в конфиг проекта
opencode mcp add context7 --url https://mcp.context7.com/mcp
# список серверов из терминала
opencode mcp list
# список серверов в TUI
# /mcpsПрактика модуля
--- description: Код-ревьюер. Читает код, находит баги, предлагает правки текстом. Файлы не меняет. mode: subagent permissions: - action: read resource: "*" effect: allow - action: edit resource: "*" effect: deny - action: shell resource: "*" effect: deny --- Ты — код-ревьюер TypeScript-сервисов. Правила: - читай присланные файлы и смежные: роуты, сервисы, типы, фикстуры - находи баги, дыры в валидации и расхождения между комментариями и кодом - предлагай правки текстом: файл, место, что изменить и почему - не изменяй и не создавай файлы: ты консультант Формат ответа: нумерованный список замечаний по убыванию важности, в конце — что проверить руками./agents@reviewer сделай ревью src/routes/orders.ts и src/services/pricing.ts перед мерджем@reviewer примени замечание 1: реализуй скидку в src/services/pricing.tsopencode mcp add context7 --url https://mcp.context7.com/mcpopencode mcp list
Отмечено 0 из 6
Проверь себя
Вопрос 1 из 4
Шпаргалка модуля
Агенты и скиллы
- .opencode/agents/reviewer.md
- свой субагент: frontmatter description, mode, permissions; тело файла — системный промпт
- @reviewer
- вызов субагента из диалога; primary-агенты build и plan переключаются Shift+Tab
- .opencode/skills/<имя>/SKILL.md
- скилл с frontmatter name и description; совместимы папки .claude/skills и .agents/skills
MCP
- opencode mcp add context7 --url https://mcp.context7.com/mcp
- подключить remote-сервер в конфиг проекта
- /mcps и opencode mcp list
- список подключённых серверов в TUI и в терминале
- enabled: false
- выключить лишний сервер в opencode.jsonc внутри mcp.servers