Создание ИИ-агентов: OpenCode и Claude Code в одном репозитории

Агент и чат-бот

Чат-бот отвечает; агент действует. Разница в цикле: агент читает цель, выбирает инструмент, смотрит на результат и повторяет, пока цель не достигнута или пока он не застрянет и не попросит помощи. Если ваша система не умеет вызывать инструменты и видеть результат, это чат-бот с хорошим маркетингом.

Эта страница не привязана к инструменту: роли и правила работы одинаковы в OpenCode и Claude Code. Точные форматы файлов и frontmatter описаны в отдельных руководствах: «Агенты OpenCode» и «Субагенты Claude Code». Читайте эту страницу ради «зачем», а затем открывайте руководство по своему инструменту.

Одни роли, два инструмента

Оба инструмента пришли к одним и тем же четырём ролям: дешёвый triage, который читает и маршрутизирует, builder, который правит и тестирует, reviewer только для чтения, который судит diff, и оркестратор, который раздаёт работу детям. Отличаются только имена файлов:

ЧастьOpenCodeClaude Code
Инструкции проектаAGENTS.md + opencode.jsoncCLAUDE.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, планы и задачи — в markdown, и пусть каждый инструмент читает свою историю сессий. Не редактируйте один файл в двух сессиях одновременно; когда параллельные правки неизбежны, используйте изоляцию worktree в Claude Code или отдельный checkout в OpenCode. И пропускайте церемонии ради мелких исправлений: один агент плюс хороший навык лучше конвейера из двух инструментов.

Заставить агентов работать

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

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

От демо до продакшена

Демо выживают на счастливом пути; продакшен — всё остальное. Взрослейте в этом порядке, с конкретным шлюзом на каждом шаге:

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

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

Краткосрочная память (текущий трассировщик) умирает вместе с процессом; решения должны попадать в файлы, чтобы выжить. Держите три хранилища: глобальные правила пользователя, правила корня репозитория в 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.

Держите корневой файл коротким и проверяемым; процедура, которая его переросла, принадлежит навыку. Правки файлов инструкций применяются до следующего запроса в обоих инструментах; новые вложенные файлы загружаются по требованию, когда работа доходит до этого каталога.

Сначала замеры, потом мнения

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

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

Подробные руководства по инструментам

Автор статьи: Клавдия Кондакова