РелизКод / SDK · В работуHabr AI→ оригинал

OpenCode: как собрать команду ИИ-агентов на любом OpenAI-совместимом шлюзе

OpenCode — open-source harness под MIT, который не привязан к одному вендору: модели подключаются через любой OpenAI-совместимый шлюз. Автор статьи собрал команду из оркестратора, архитектора, кодера, ревьюера и других субагентов, каждому дал свою модель и права. Ключевая идея: править файлы может только кодер, а запреты вроде git push зашиты в конфиг, а не в промпт.

AI-обработка оригинала Habr AI; редакция Hamidun News
OpenCode: как собрать команду ИИ-агентов на любом OpenAI-совместимом шлюзе
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Установкаnpm i -g @opencode/cli, ключ — через opencode auth login
Bun плохо дружит с проксиsocks5 не работает, нужен NO_PROXY
Права bash точечноgit diff разрешён, git push запрещён

Чат с моделью быстро упирается в потолок: она не видит ваш проект, не запускает тесты и не помнит контекст. Поэтому все говорят про агентов, а агент по сути равен модели плюс harness, то есть обвязке со скиллами, контекстом, интеграциями и мультиагентной логикой. Claude Code и Codex задали планку, но первый привязан к моделям Anthropic, а второй остаётся продуктом OpenAI. OpenCode предлагает третий путь: MIT-лицензия, 75+ провайдеров, локальные модели через Ollama или vLLM и свободный выбор модели для каждой роли.

Материал опубликован на Habr AI и написан сотрудником сервиса Bothub, так что шлюз и реферальная ссылка в нём рекламные. Но сама конфигурация универсальна и подойдёт для любого OpenAI-совместимого эндпоинта.

Подключение провайдера и грабли с прокси

Актуальная ветка v2 ставится как npm i -g @opencode/cli. Старый пакет opencode-ai относится к линии 1.x, и это легко перепутать. Есть и альтернативы: brew, bun или официальный install-скрипт.

Провайдер описывается в opencode.json через пакет @ai-sdk/openai-compatible: указываете baseURL шлюза и перечисляете ID моделей. Ключ лучше не класть ни в конфиг, ни в переменные окружения, а вводить через opencode auth login. Тогда он не окажется в файлах проекта.

Главная практическая ловушка связана с прокси. OpenCode работает на Bun, а его нативный fetch нестабильно обрабатывает HTTP_PROXY и HTTPS_PROXY. При установке плагинов можно получить ошибку fetch() proxy.url must be a non-empty string: агент возвращает объект URL, а fetch ждёт строку. Формат socks5:// Bun не принимает, нужен http://. Даже в правильной настройке нужен NO_PROXY с localhost и 127.0.0.1, иначе интерфейс может зациклиться на собственных запросах. Самое простое решение: снять все прокси-переменные и перезапустить сервис. Только после этого имеет смысл собирать агентов.

Команда агентов и разделение прав

В OpenCode есть два типа агентов. Primary — тот, с кем вы говорите напрямую. Subagent работает в дочерней сессии со своим контекстом и возвращает в основной чат только результат. Встроенные build и plan являются primary, а general и explore субагентами. Их можно не трогать и просто добавить своих.

Автор собрал семь ролей:

  • orchestrator (GPT-6.1 Sol) разбивает задачу и делегирует, сам код не пишет;
  • architect (Gemini 4 Argon) проектирует модули и потоки данных;
  • coder (Claude Sonnet 5.5) реализует и делает минимальные диффы;
  • reviewer (Claude Opus 5.5) только ревьюит, без патчей;
  • security (GLM-5.3) ищет уязвимости;
  • docs (GPT-6 Luna) пишет документацию;
  • tests (GLM-5.3 Flash) пишет тесты.

Модели распределены по принципу «дорогая там, где нужен ум, дешёвая там, где хватит и её». Автор подчёркивает, что выбор частично субъективный: он ориентировался на новости и хотел попробовать разные, в том числе открытые модели.

Главное правило схемы: edit: allow есть только у coder. Если файлы правят все, diff разрастается, и уже непонятно, кто что изменил. При этом ревьюеру и security оставлен bash: allow, потому что им нужно гонять линтеры, смотреть git diff и проверять тесты.

Запреты на уровне harness, а не промпта

Фразу «не делай git push» в промпте модель может проигнорировать, особенно при двусмысленной задаче. Запрет в permission обойти нельзя. Правила задаются точечно: по умолчанию bash спрашивает подтверждение, git status и git diff разрешены, git commit и git push запрещены. Агентов можно также вынести из JSON в markdown-файлы .opencode/agents/<name>.md: имя файла становится именем агента, frontmatter конфигом, а тело системным промптом. Это удобно, когда промпты длинные и их нужно версионировать.

Что с этим делать

Если вы уже работаете с Claude Code или Codex, OpenCode стоит попробовать хотя бы ради того, чтобы сравнить модели на своих задачах за один день. Заберите себе принцип: один агент с правом записи, остальные советуют и проверяют, а критичные запреты задавайте через permissions. Конкретный набор моделей лучше проверить на своём коде, потому что выбор автора основан скорее на впечатлениях, чем на бенчмарках. Статья не заменяет документацию, но экономит несколько часов на типичных граблях.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: подключение провайдера и грабли с прокси?

Актуальная ветка v2 ставится как npm i -g @opencode/cli. Старый пакет opencode-ai относится к линии 1.x, и это легко перепутать. Есть и альтернативы: brew, bun или официальный install-скрипт. Провайдер описывается в opencode.json через пакет @ai-sdk/openai-compatible: указываете baseURL шлюза и перечисляете ID моделей. Ключ лучше не класть ни в конфиг, ни в переменные окружения, а вводить через opencode auth login. Тогда он не окажется в файлах проекта. Главная практическая ловушка связана с прокси.

Что известно по теме: команда агентов и разделение прав?

В OpenCode есть два типа агентов. Primary — тот, с кем вы говорите напрямую. Subagent работает в дочерней сессии со своим контекстом и возвращает в основной чат только результат. Встроенные build и plan являются primary, а general и explore субагентами. Их можно не трогать и просто добавить своих.

Что известно по теме: запреты на уровне harness, а не промпта?

Фразу «не делай git push» в промпте модель может проигнорировать, особенно при двусмысленной задаче. Запрет в permission обойти нельзя. Правила задаются точечно: по умолчанию bash спрашивает подтверждение, git status и git diff разрешены, git commit и git push запрещены. Агентов можно также вынести из JSON в markdown-файлы .opencode/agents/<name>.md: имя файла становится именем агента, frontmatter конфигом, а тело системным промптом. Это удобно, когда промпты длинные и их нужно версионировать.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Практика · Hamidun Academy

Соберите рабочего ИИ-агента или сервис своими руками без ручного кода

В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.

Открыть 72ч бесплатный доступ →Интенсив по Вайб-кодингу
Что вы думаете?
Загружаем комментарии…