Создание ИИ-агентов: OpenCode и Claude Code в одном репозитории
Агент и чат-бот
Чат-бот отвечает; агент действует. Разница в цикле: агент читает цель,
выбирает инструмент, смотрит на результат и повторяет, пока цель не
достигнута или пока он не застрянет и не попросит помощи. Если ваша
система не умеет вызывать инструменты и видеть результат, это чат-бот с
хорошим маркетингом.
Эта страница не привязана к инструменту: роли и правила работы одинаковы
в OpenCode и Claude Code. Точные форматы
файлов и frontmatter описаны в отдельных руководствах: «Агенты OpenCode»
и «Субагенты Claude Code». Читайте эту страницу ради «зачем», а затем
открывайте руководство по своему инструменту.
Одни роли, два инструмента
Оба инструмента пришли к одним и тем же четырём ролям: дешёвый triage, который читает и маршрутизирует, builder, который правит и тестирует, reviewer только для чтения, который судит diff, и оркестратор, который раздаёт работу детям. Отличаются только имена файлов:
| Часть | OpenCode | Claude Code |
|---|---|---|
| Инструкции проекта | AGENTS.md + opencode.jsonc | CLAUDE.md, или AGENTS.md, когда CLAUDE.md нет |
| Описание агента | .opencode/agents/<name>.md | .claude/agents/<name>.md |
| Модель на роль | provider/model#variant | алиас (opus, sonnet, haiku) или полный id |
| Ограничения инструментов | упорядоченные правила permissions, побеждает последнее совпадение | списки tools / disallowedTools и правила разрешений |
| Вызов субагента | инструмент subagent, @name | инструмент Agent; попросите субагента по имени |
| Навыки | .opencode/skills/ (читает и .claude/skills/) | .claude/skills/<name>/SKILL.md |
| Команды | .opencode/commands/*.md | навыки; .claude/commands/*.md всё ещё работает |
| MCP | блок mcp в конфиге | claude mcp add, .mcp.json |
Роли соответствуют разделению моделей, принятому в этом разделе: бесплатная модель OpenCode для triage, GPT 6 Luna для сборки, Claude Opus 5.5 для ревью. Дешёвое чтение, стандартная сборка, дорогие вердикты.
Общие навыки, раздельные агенты
Навыки — переносимая половина. Они следуют открытому стандарту Agent Skills, и OpenCode также читает .claude/skills/ как совместимое место, поэтому именно этот каталог — единственное место, где оба ассистента загружают одни и те же процедуры. Агенты — локальная половина: файлы агентов называют инструменты и модели в формате конкретного инструмента, поэтому они остаются раздельными.
repo/ ├── AGENTS.md shared instructions ├── .claude/skills/ read by OpenCode and Claude Code │ ├── api-review/SKILL.md │ └── test-writer/SKILL.md ├── .opencode/agents/ OpenCode roles │ ├── triage.md │ ├── builder.md │ └── reviewer.md └── .claude/agents/ Claude Code roles ├── code-reviewer.md └── test-runner.md
- Инструкции: держите один закоммиченный AGENTS.md. OpenCode читает только его. Claude Code читает его, когда нет CLAUDE.md, поэтому либо не заводите CLAUDE.md, либо сделайте его однострочным импортом @AGENTS.md.
- Навыки: пишите один раз в .claude/skills/. OpenCode их подхватывает; Claude Code считает их родными.
- Агенты: дублируйте определения ролей для каждого инструмента, а не прозу. Сохраняйте одни и те же имена (triage, builder, reviewer), чтобы процесс читался одинаково.
- Разрешения: дайте каждой роли одинаковые права в обоих инструментах: triage не может править файлы и запускать shell, builder не может пушить, reviewer умеет только читать.
Совместный процесс
Запускайте двух ассистентов в одном репозитории, когда роли действительно разные, а не чтобы удвоить шум. Схема, которая окупается:
- 1. Дешёвый triage. Начните день в более дешёвом инструменте: With triage, explain the failing checkout flow and route the fix to builder or plan. Только чтение, без правок, без риска.
- 2. Сборка в настроенном инструменте. Репозиторий с самым богатым конфигом OpenCode собирается там: With builder, add retry handling to the payment client and cover it with test-writer. Builder правит и запускает узкие тесты.
- 3. Ревью в другом инструменте. Переключитесь на Claude Code и вызовите reviewer только для чтения: Use the code-reviewer subagent on my staged changes. Другая модель с другим промптом ловит то, что builder нормализовал и потерял.
- 4. Исправление и повторная проверка. Примените находки в сессии builder, затем попросите reviewer вынести вердикт по новому diff. Два прохода — норма; три означают, что задача была недоопределена.
Передача идёт через файлы, а не через чат: фиксируйте решения в AGENTS.md, планы и задачи — в markdown, и пусть каждый инструмент читает свою историю сессий. Не редактируйте один файл в двух сессиях одновременно; когда параллельные правки неизбежны, используйте изоляцию worktree в Claude Code или отдельный checkout в OpenCode. И пропускайте церемонии ради мелких исправлений: один агент плюс хороший навык лучше конвейера из двух инструментов.
Заставить агентов работать
Правильный файл агента сам по себе ничего не делает. Должны произойти ещё две вещи: ассистент должен загрузить конфиг проекта, а человек или команда должен выбрать роль. Большинство заявок «агентов создали, агенты не используются» — это одно из двух, либо id модели, который перестал разрешаться.
- 1. Запускайте там, где лежит конфиг. Оба инструмента находят инструкции и агентов по каталогу проекта: OpenCode — из opencode.jsonc и .opencode/agents/, Claude Code — из CLAUDE.md (или AGENTS.md) и .claude/agents/. Сессия, начатая в домашнем каталоге или в соседнем checkout, не видит ничего из этого и работает со встроенными агентами.
- 2. Добейтесь, чтобы каждый id модели разрешался. OpenCode хочет provider/model плюс вариант; Claude Code принимает алиасы, полные id или inherit. Устаревший id откатывается к модели сессии или отказывается запускаться, а allowlist может подменить модель лишь с предупреждением.
- 3. Выбирайте роль под задачу. В OpenCode есть выбор и default_agent; Claude Code делегирует субагентам по описанию или по просьбе. Определение роли никогда не делает её ролью по умолчанию.
- 4. Дайте каждой роли канареечную задачу. Triage объясняет один поток и называет следующего агента; builder делает одну небольшую правку и показывает diff; reviewer находит один подложенный баг в staged diff; оркестратор возвращает два результата детей. Одна строка pass/fail на роль лучше страницы конфига.
- 5. Читайте историю, а не каталог. OpenCode записывает агента и модель для каждой сессии; Claude Code показывает запущенных субагентов и их модели по /tasks. Роль, которая никогда не появляется в истории, — украшение.
- 6. Батчите только независимую работу. Параллельные дети — настоящий выигрыш: пять проверок только для чтения или пять черновиков уроков сразу. Правка в одну строку — нет: запуск стоит дороже задачи.
Разрешения — ловушка, которая выглядит как сломанная модель: правила упорядочены, побеждает последнее совпадение, и агент, которому запретили единственный нужный инструмент, отвечает извинением вместо ошибки. Перечитайте правила перед первым замером.
От демо до продакшена
Демо выживают на счастливом пути; продакшен — всё остальное. Взрослейте в этом порядке, с конкретным шлюзом на каждом шаге:
- 1. Побочные эффекты в песочнице: builder просит shell, но пушить не может. Запускайте git diff --stat перед каждым коммитом.
- 2. Одобрение человеком: навыки миграции и деплоя показывают diff и ждут. Инструмент-вопрос спрашивает перед ломкой API.
- 3. Постоянная память: коммитьте AGENTS.md, навыки и агентов, чтобы перезапуск загружал те же указания.
- 4. Замеры по каждой задаче: отслеживайте успех triage, сборки и ревью отдельно. Сначала чините худшую роль — часто дело в триггерах, а не в модели.
Повторяйте, пока готовность не подтвердят цифры, а не впечатления. Держите одну рабочую схему, пока новое поведение не проверено: смена инструкций на ходу делает все измерения бессмысленными.
Память, которая переживает перезапуск
Краткосрочная память (текущий трассировщик) умирает вместе с процессом; решения должны попадать в файлы, чтобы выжить. Держите три хранилища: глобальные правила пользователя, правила корня репозитория в AGENTS.md для обоих инструментов и вложенные файлы для областей, которым нужны свои правила. Claude Code может наложить сверху CLAUDE.md и ведёт собственную авто-память; OpenCode перезагружает общие файлы при старте.
# AGENTS.md - Run the narrowest test before every commit. - Keep database queries in src/database. - Do not edit generated files directly.
Держите корневой файл коротким и проверяемым; процедура, которая его переросла, принадлежит навыку. Правки файлов инструкций применяются до следующего запроса в обоих инструментах; новые вложенные файлы загружаются по требованию, когда работа доходит до этого каталога.
Сначала замеры, потом мнения
Десять фиксированных задач с проверяемым результатом лучше сотни впечатлений от демо. Стартовый набор для четырёх ролей, запускаемый в обоих инструментах:
- Triage x3: объяснить поток входа, направить правку документации в отличие от фичи, отказаться от задачи с секретами. Не должен ничего править.
- Builder x3: добавить валидацию с зелёными тестами, переименовать в двух файлах, сохранить публичный API стабильным.
- Reviewer x2: поймать отсутствующий 401 на истёкшем токене, потребовать тест на повтор. Не должен ничего править.
- Оркестратор x2: распланировать пагинацию тремя пунктами, раздать и слить три результата детей.
Прогоняйте набор при каждом изменении промпта, инструмента или модели и храните историю: падение на два пункта после улучшения — норма, а не исключение. Один раз прогоните тот же набор на бесплатной модели OpenCode, Luna и Opus — разрыв покажет, какая роль заслуживает дорогой модели.
Подробные руководства по инструментам
- OpenCode: скачать, установить и пользоваться — конфигурация, модели, процессы.
- «Агенты OpenCode» — файлы агентов, frontmatter, четыре полных примера, команды.
- «Claude Code: установка, настройка и работа» — память, разрешения, навыки, серверы MCP.
- «Субагенты Claude Code» — каждое поле frontmatter, ограничения инструментов, пять примеров, замеры.
- Как писать навыки для ИИ-ассистентов — переносимая половина, общая для обоих инструментов.
- «Модели для агентов программирования» — какая модель на какую роль, с id.
- «Агент-исследователь» и «Агент-аналитик» — два разобранных примера OpenCode.
- «Claude Code, OpenCode и человек в одном репозитории» — worktree и ветка на агента, ревью и слияние человеком.
- «Трёхуровневые агенты в VS Code» — пользовательские агенты GitHub Copilot на Claude Opus 5.5, Claude Haiku 5.5 и GPT-6 Luna.
Автор статьи: Клавдия Кондакова