OpenCode Agents: исполнитель делает, проверяющий принимает

Опубликовано 08.11.20267 мин чтенияСредний
Артемий Миллер в кепке с логотипом OpenCode рядом с надписью «ПРОВЕРКА ЗАДАЧИ» и логотипами OpenCode.
Что узнаешь
  • Как создать reviewer для приёмки готового документа
  • Как выбрать модель и ограничить права чтением входов
  • Как вернуть замечания исполнителю и повторить приёмку
Средний

В OpenCode Agents исполнитель делает работу, отдельный проверяющий принимает результат по брифу и эталону. Создайте reviewer - помощника с режимом subagent, явно выбранной моделью и правом читать только файлы для приёмки.

В Hermes я поручил сделать шахматы для ребёнка. От голосового поручения до показанного приложения прошло 8 часов. Внутри были план, исполнители, проверяющие и автотесты.

Зачем отдельный проверяющий, если исполнитель уже сказал «готово»?

Проверяющий сверяет готовую работу с брифом и эталоном по своему набору правил. Ему не нужно пересматривать весь ход работы исполнителя: что тот искал и как думал.

В OpenCode отдельно задаются контекст, модель и права:

СвойствоЧто настраиваемЧего это не гарантирует
Дочерняя сессияmode: subagent, свежий контекстПроектные инструкции и другие источники правил продолжают добавляться
МодельЯвное model; без него наследуется модель родителяУказанный ID может совпасть с моделью исполнителя
Праваpermissions для разрешённых действийИмя reviewer и hidden сами по себе ничего не запрещают

Навык «Статейник» я отдаю бесплатно, файлом. Он сам пишет статьи для сайта в 16 этапов на субагентах. Пост закреплён в канале. Забрать можно здесь.

Схема приёмки документа:

Бриф + эталон → исполнитель → результат → проверяющий
                                            ↓
Повторная приёмка ← исполнитель ← замечания

Проверяющий объясняет, где нарушены требования, и возвращает на переделку. Исправляет исполнитель.

Больше примеров работы ИИ-агентов - в моём ролике про Hermes ниже и в канале:

Кто здесь исполнитель: Build, Plan или свой агент?

Поручите документ встроенному агенту Build в отдельном проекте без подключений к рабочим системам. Агент с режимом primary ведёт основную сессию, с subagent - дочернюю, all допускает оба режима. Без mode новая пользовательская роль станет primary.

Plan исследует и планирует без изменения обычных файлов проекта. По запросу может писать план-файлы OpenCode; команды оболочки регулируются разрешениями. Переключение на Plan отдельного приёмщика не создаёт.

Если OpenCode ещё не установлен, начните с установки и подключения модели.

Шаг 1. Задайте образ результата: бриф, эталон и готовый документ

Для примера возьмите памятку сотруднику: что делать с новым обращением. Создайте каталог review-input, в нём brief.md, reference.md, result.md. Это вымышленное задание; реальные контакты и подключения к рабочим системам не нужны.

Компактный бриф для review-input/brief.md:

Подготовить памятку новому сотруднику.
Разобрать обращение с полными данными и без способа связи.
Ничего не отправлять клиенту автоматически.
Готовить черновик ответа человеку.
Если данных нет, указать, чего не хватает.
Для каждого обращения указать следующее действие
и ответственного человека.

Эталон для review-input/reference.md:

Ситуация → действие → что передать человеку.
Конкретные действия, без вымышленных сведений.

В review-input/result.md положите неполный документ:

Ситуация: обращение содержит полные данные и способ связи.
Действие: подготовить черновик ответа, ничего не отправлять.
Передать ответственному менеджеру черновик на согласование.

Здесь намеренно пропущена ситуация, когда нет способа связи. Проверьте, заметит ли её reviewer.

До запуска закрепите критерии:

Группа критериевКак проверить на памятке
Образ из брифаОписаны обе ситуации; автоматической отправки нет
Соответствие эталонуУ каждой ситуации есть действие и передача человеку
Правила хорошего результатаДействия конкретны, отсутствующие сведения не придуманы
Ключевой глубинный элементДля каждого обращения понятны следующее действие и ответственный

Поручите Build менять только result.md, не трогая бриф и эталон. Это условие задания исполнителю; технические права ниже задаём проверяющему.

Шаг 2. Создайте reviewer: только чтение и свой набор правил

Пример использует V2 из английской справки OpenCode. Перед применением сверьте формат с документацией вашей установки. На русской странице есть другая схема полей:

Русская страницаАнглийская V2
agentagents
promptsystem
permissionpermissions
bashshell

Не смешивайте эти схемы. В Markdown-файле инструкция находится в теле, поэтому system в шапку не добавляем.

Создайте .opencode/agents/reviewer.md. Вместо <provider/model> укажите точный ID доступной модели. Для проверки другой моделью он должен отличаться от ID фактической модели исполнителя.

Шаблон для учебной задачи:

markdown
---
description: Принимает готовый документ по брифу и эталону
mode: subagent
model: "<provider/model>"
permissions:
  - action: "*"
    resource: "*"
    effect: deny
  - action: read
    resource: "review-input/**"
    effect: allow
---

Ваша задача - приёмка готового документа.
Прочитайте переданные brief.md, reference.md и result.md
из review-input. Не изменяйте файлы.
Проверьте готовый результат по группам:
- образ результата из брифа;
- соответствие эталону;
- правила хорошего результата;
- ключевые глубинные элементы.
Не меняйте критерии под ответ.
Для каждого замечания верните: критерий; цитата или место;
расхождение; требуемая правка.
Не объявляйте неподтверждённое предположение ошибкой.
Отчёт верните текстом в ответе.
Завершите вердиктом: принято / правка / брак.
Если входов недостаточно, не объявляйте работу принятой.

Шаблон составлен под учебную задачу. Вердикты заданы инструкцией: «принято» - критерии выполнены; «правка» - нужны конкретные изменения; «брак» - нет обязательного входа или представлен другой результат.

Первое правило запрещает всё, следующее разрешает read в review-input/**. Точные пути передаём при вызове. Поиск, запись, оболочку, дочерние роли и веб-инструменты не открываем.

Побеждает последнее совпавшее правило. При объединении конфигурации поздние разрешения добавляются в конец. Проверяйте итог с учётом глобальных настроек и проекта. Эти права ограничивают инструменты роли, но не доказывают полной системной изоляции.

Шаг 3. Передайте готовую работу и назовите фактическую модель

Дождитесь готового result.md и убедитесь, что бриф и эталон сохранились без изменений. Затем поручите основному агенту вызвать проверяющего. Документированную формулировку вызова дополните точными входами:

Use the reviewer subagent to review my current changes.
Вместо проверки кода примите review-input/result.md
по review-input/brief.md и review-input/reference.md.
Верните отчёт в ответе, файлы не меняйте.

Разрешения основного агента определяют, каких помощников он может запускать. Если reviewer не запускается, проверьте у основного агента разрешение subagent для этой роли. Проверяющий работает со своими правами; открывать ему все инструменты не нужно.

О том, как выбрать модель под задачу, читайте в отдельной статье.

Проверьте, какая модель запустилась:

  • Запишите фактическую модель основной сессии.
  • Сравните её с ID в model проверяющего.
  • Проверьте сведения о запуске. Одного ответа модели о самой себе недостаточно.

Для сравнения уберите model в учебной копии роли: по справке она наследует модель родителя. Запишите, что запустилось фактически. Выбор основного агента по ID сам по себе не меняет модель, сохранённую в сессии.

Если хотите собрать команду ИИ-агентов под свои задачи, посмотрите программу практикума СмыслоКода.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - инструменты, метод, первый проект
Старт 17–19 ноября  ·  2 000 ₽
Записаться →

Не верьте обещанию: проверьте запреты на безвредных файлах

Не верьте уверенности агента, даже проверяющего.

Проверяйте роль в отдельном проекте без секретов и рабочих подключений. Сохраните исходный result.md, запишите версию OpenCode и итоговый порядок правил. Для каждой попытки сравните ожидание с фактическим результатом:

ПопыткаОжидание по правиламЧто записать после попытки
Прочитать review-input/brief.mdЧтение разрешеноПрочитанный фрагмент либо реальный отказ
Изменить копию review-input/result.md через edit/write/patchЗапись запрещенаДля каждого инструмента: вызов, ответ, изменился ли файл
Выполнить безвредную команду оболочкиshell запрещёнПопытку вызова и отказ либо недоступность инструмента
Запустить дочернюю рольsubagent запрещёнОтвет инструмента и было ли делегирование

Если инструмент доступен, сохраните сведения о фактическом вызове и ответе. Ответ «я не буду» не доказывает технический запрет. Если инструмент недоступен роли, так и запишите, не выдавая это за выполненный вызов с отказом.

Действие edit охватывает редактирование, запись и применение исправлений. Проверьте каждый доступный инструмент отдельно: отказ одного не доказывает отказ остальных. Сравните файл с исходником. Чтение тоже должно сработать, иначе проверяющий не получит документы.

Если запись или запуск неожиданно прошли, рабочие данные роли не передавайте. Восстановите файл, проверьте поздние правила и объединение настроек роли, уберите лишние разрешения и повторите попытки.

Кстати, я снял ролик «Полная схема по Hermes Agent: 13 ИИ-агентов для бизнеса», обязательно посмотрите.

Видео загрузится при скролле
Полная схема по Hermes Agent: 13 ИИ-агентов для бизнеса

В нём показал путь от вопросов до автотестов и шахматы для ребёнка. Ещё там есть проверка ответа вторым агентом. Посмотрите, как устроены исполнение и проверка в Hermes.

Как вернуть результат исполнителю и повторить приёмку

Критик находит пропуски, судья проверяет замечания. Исправляем там, где это нужно.

В замечании укажите нарушенное требование и место в документе:

КритерийЦитата или местоРасхождениеТребуемая правка
Описаны обе ситуации из брифаВ result.md есть только ситуация с полными даннымиНет действий при отсутствии способа связиДобавить ветку: чего не хватает, что передать человеку и кто отвечает

Это образец замечания о намеренном пропуске, не ответ модели.

Сначала подтвердите замечание по брифу и эталону. Затем исполнитель исправляет result.md, сохраняя требования. Снова вызовите reviewer с теми же входами и критериями. Сопоставьте исходный дефект, изменение документа и новый отчёт.

После исправлений снова нужна приёмка. Сообщения исполнителя «всё поправил» недостаточно. Проверяющий возвращает отчёт в ответе; если нужен файл, сохраните ответ сами.

Если вместо документа принимаете код от ИИ и не умеете его читать, проверки разобраны в отдельной статье.

Если reviewer не запускается или пытается писать - что проверить?

СимптомКуда смотреть
Роль не найденаИмя reviewer, путь .opencode/agents/reviewer.md, поле mode
Родитель не вызывает рольЕго разрешение subagent для reviewer
Модель осталась прежнейПропущенное model, совпадение ID, модель основной сессии
Вход не читаетсяТочный путь и разрешение read для него
Запись неожиданно доступнаПоследние совпавшие правила, объединение определений роли
Проверяющий просит сохранить отчётУберите требование записи из задания, получите ответ текстом
Конфигурация отвергаетсяСоответствие схеме вашей установки, смешение полей V1 и V2

Проверьте, что всё готово: роль вызывается, модель сверена, нужные файлы читаются, запреты работают. После исправления подтверждённых ошибок повторите приёмку по тем же критериям.

Частые вопросы

А ваш проверяющий объясняет, где нарушены требования, или ограничивается словом «готово»? Напишите в комментариях в канале, какие ошибки он пропускает.

Источники

  • OpenCode: Agents - роли, режимы Build и Plan, схема V2, файл reviewer, модели, наследование и разрешения.
  • OpenCode: Агенты - русская страница и отличия используемых в ней полей от английской схемы V2.
  • Артемий Миллер: полная схема по Hermes Agent - шахматный проект, 8 часов полного цикла, исполнение по фазам, автотесты и сверка с планом.
Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - инструменты, метод, первый проект
Старт 17–19 ноября  ·  2 000 ₽
Записаться →

Новые материалы - дайджестом, без спама

Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

Была инструкция полезна?
Артемий Миллер
Автор
Артемий Миллер
Предприниматель и вайб-кодер

Артемий Миллер - предприниматель и вайб-кодер. Бывший программист, собирает продукты исключительно вместе с ИИ-агентами, без найма разработчиков.

Связанные инструкции

OpenCode Skills: не ставь лишнего - добавь навык и проверь

Положите SKILL.md в проектную папку .opencode/skills/check-readme/ и вызовите навык через @check-readme. Подтвердите загрузку нужной инструкции и проверьте созданный отчёт по её требованиям.

8 мин

Playwright MCP: запускаешь проверку своего сайта

Playwright MCP позволяет агенту открыть ваш сайт, нажать кнопки и заполнить формы. Для проверки задайте разрешённые страницы, ожидаемый результат и предел повторов.

4 мин

OpenCode MCP: подключи нужное и проверь, что работает

Для подключения MCP в OpenCode сначала проверьте версию, затем добавьте нужный сервер в проект. Проверьте соединение, доступ и реальный ответ инструмента: одного connected недостаточно.

8 мин

Как сделать ИИ-мультик: первый ролик с навыком «Мультик»

Первый ИИ-мультик можно собрать с навыком «Мультик» для Claude Code: от темы и постоянного героя до вертикального MP4. Сам навык открытый; доступ к модели, разборы и клон голоса оплачиваются отдельно.

9 мин