Перейти к содержимому
Прогресс курса
0 из 8 модулей

Модуль 4

Субагенты и MCP

Свой агент-ревьюер в markdown-файле с read-only правами, скиллы для повторяемых процедур и MCP-серверы как источник внешних инструментов.

15 мин

Чему научишься

  • отличать 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 целиком становится системным промптом ревьюера.

.opencode/agents/reviewer.mdДока: свои агенты
---
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.

Подключение Context7Дока: MCP-серверы
# добавить remote-сервер в конфиг проекта
opencode mcp add context7 --url https://mcp.context7.com/mcp

# список серверов из терминала
opencode mcp list

# список серверов в TUI
# /mcps

Практика модуля

  1. ---
    description: Код-ревьюер. Читает код, находит баги, предлагает правки текстом. Файлы не меняет.
    mode: subagent
    permissions:
      - action: read
        resource: "*"
        effect: allow
      - action: edit
        resource: "*"
        effect: deny
      - action: shell
        resource: "*"
        effect: deny
    ---
    
    Ты — код-ревьюер TypeScript-сервисов.
    
    Правила:
    - читай присланные файлы и смежные: роуты, сервисы, типы, фикстуры
    - находи баги, дыры в валидации и расхождения между комментариями и кодом
    - предлагай правки текстом: файл, место, что изменить и почему
    - не изменяй и не создавай файлы: ты консультант
    
    Формат ответа: нумерованный список замечаний по убыванию важности, в конце — что проверить руками.
  2. /agents
    Дока: TUI
  3. @reviewer сделай ревью src/routes/orders.ts и src/services/pricing.ts перед мерджем
  4. @reviewer примени замечание 1: реализуй скидку в src/services/pricing.ts
  5. opencode mcp add context7 --url https://mcp.context7.com/mcp
    Дока: MCP-серверы
  6. opencode mcp list
    Дока: MCP-серверы

Отмечено 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