OpenCode V2

Установка, бесплатная модель, GPT 6 Luna, Claude Opus 5.5 и рабочие приёмы

Введение

OpenCode — бесплатный ИИ-агент для программирования с открытым исходным кодом. Он живёт в терминале, настольном приложении и веб-приложении, читает и правит ваши файлы, запускает команды оболочки, ищет в интернете и проходит задачу шаг за шагом. Если он ещё не установлен, начните с материала «OpenCode: скачать и установить», а потом возвращайтесь сюда за моделями и ежедневной работой.

Везде речь идёт о OpenCode V2, если вам явно не нужна V1. В V2 новый API плагинов, новый серверный API и клиенты, а вместо нескольких слоёв tui.json один глобальный файл конфигурации терминала cli.json. Обычная конфигурация сервера, агенты, команды, навыки и файлы .opencode/ остаются совместимыми — если поддерживаемое в V1 поведение ломается в V2, считайте это багом.

Модель оплаты простая: сам OpenCode ничего не стоит. Вы платите только за токены модели — или не платите ничего, если работаете на бесплатных или локальных моделях. OpenCode разговаривает напрямую с 75+ провайдерами, а также с локальными Ollama, LM Studio и vLLM, так что вы не привязаны к одному вендору. Курируемый шлюз теперь называется OpenCode Console (в старых текстах — Zen): проверенные модели для программирования, кредиты по факту, месячные лимиты, автопополнение и сменяющийся бесплатный тариф без платёжных данных.

Модели, которые важны

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

МодельId в ConsoleЦена / 1M вход+выходДля чего
Бесплатная модель OpenCodeopencode/deepseek-v4.1-flash-freeБесплатноЕжедневная работа с публичным кодом: вопросы, черновики, массовые правки, изучение кодовой базы
GPT 6 Lunaopencode/gpt-6-luna$0.10 / $0.50Дешёвый платный шаг, когда упёрлись в бесплатные лимиты: рефакторинг, ревью в CI, длинные сессии
Claude Opus 5.5opencode/claude-opus-5-5$4.00 / $20.00Лучшее качество: архитектура, сложные баги, проверка безопасности, финальный проход

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

Для чего нужен каждый тариф, как записываются id и варианты, как выдать каждому агенту свою модель и как держать счёт на виду — это материал «Модели в OpenCode». Сами модели — семейства, цены, контекст — разобраны в разделе «Модели ИИ».

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

1. Цены за 1M токенов, тарифы кешированного чтения и записи и пороги по объёму токенов лежат на странице моделей в Console:

https://opencode.ai/docs/console/models

Читайте именно строку своей модели, включая строку выше порога (Luna дороже выше 272K, Sonnet выше 200K, Haiku выше 100K). Всё, что названо в статьях, — только ориентир.

2. Живая доступность — какие id существуют прямо сейчас, в том числе с суффиксом -free, — приходит из эндпоинта моделей. Он возвращает только id, без цен:

curl https://opencode.ai/inference/v1/models

Прежде чем закреплять id в opencode.jsonc, найдите его в JSON через grep. В TUI та же проверка — /models, из оболочки — opencode models.

3. Собственные расходы на текущий момент, по моделям и с деталями по токенам:

opencode stats --cost --models

Страница документации для тарифа, эндпоинт для id, статистика для счёта — все три должны сходиться до долгого платного прогона.

Скачивание и установка V2

Рекомендуемый путь — установочный скрипт V2 (Linux, macOS, WSL2)

curl -fsSL https://opencode.ai/v2/install | bash

Через npm (любая ОС с Node.js, имя пакета V2)

npm install -g @opencode/cli

Через Homebrew (macOS и Linux, формула V2)

brew install anomalyco/tap/opencode-v2

Подробности — Bun, pnpm, yarn, Arch AUR, Docker, настольное приложение, отдельные бинарники, заметки по Windows, проверка и обновление — читайте на отдельной странице «OpenCode: скачать и установить».

Подключение модели

Запустите OpenCode в любом каталоге и подключитесь один раз:

cd /path/to/project

opencode

Дальше в TUI наберите /connect, выберите провайдера, вставьте ключ. Для Console: войдите на веб-странице Console, пополните кредиты только для платных моделей, скопируйте ключ и вставьте его. Бесплатным моделям Console платёжные данные не нужны. Из оболочки то же самое:

opencode auth login opencode

opencode models

Список моделей и переключение в TUI — /models (или Ctrl+X, затем M). Id модели записывается как провайдер/модель с необязательным #вариант для глубины рассуждений, например anthropic/claude-opus-5-5 или openai/gpt-5.2#high. Модели Console используют opencode/<model-id>. Ваши собственные ключи провайдеров (Anthropic, OpenAI, Google) оплачивает этот провайдер. Один практичный способ держать 300+ моделей под одним ключом — OpenRouter через запись провайдера, совместимого с OpenAI.

Закрепите модель по умолчанию для проекта в opencode.jsonc в корне проекта:

vi opencode.jsonc

{ "$schema": "https://opencode.ai/config.json", "model": "opencode/deepseek-v4.1-flash-free" }

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

{ "$schema": "https://opencode.ai/config.json", "model": "opencode/gpt-6-luna" }

Топовая модель на трудную неделю плюс переопределение для отдельного агента, чтобы на Opus шло только ревью, — в том же файле:

{ "$schema": "https://opencode.ai/config.json", "model": "opencode/gpt-6-luna", "agents": { "reviewer": { "description": "Final correctness and security pass", "mode": "subagent", "model": "opencode/claude-opus-5-5" } } }

Локальным моделям ключ не нужен. Если запущен ollama serve, OpenCode находит их сам по адресу по умолчанию, то же с LM Studio и vLLM. Достаточно выбрать ollama/qwen3:8b или похожую в /models. Смотрите Ollama: локальные модели простым способом и Qwen: скачать, установить, дообучить и применять.

Настройка

Две конфигурации, две разные задачи. opencode.jsonc — поведение сервера и проекта (модель, агенты, разрешения, MCP, навыки). cli.json — только терминал (тема, привязки клавиш, вкладки, диффы, уведомления). Никогда не кладите тему и привязки клавиш в opencode.jsonc.

Дайте каждому проекту постоянные указания через AGENTS.md и закоммитьте его. Один раз запустите /init, чтобы его сгенерировать, затем держите там правила сборки, тестов и стиля. Глобальные значения по умолчанию живут в ~/.config/opencode/AGENTS.md, правила на весь репозиторий — в корневом файле, правила отдельного пакета — во вложенных файлах. V2 читает только AGENTS.md, запасного CLAUDE.md нет.

Безопасная база разрешений в проектном opencode.jsonc — спрашивать про оболочку, разрешать осмотр, никогда не пушить:

vi opencode.jsonc

{ "$schema": "https://opencode.ai/config.json", "model": "opencode/deepseek-v4.1-flash-free", "permissions": [ { "action": "shell", "resource": "*", "effect": "ask" }, { "action": "shell", "resource": "git status *", "effect": "allow" }, { "action": "shell", "resource": "git diff *", "effect": "allow" }, { "action": "shell", "resource": "npm test *", "effect": "allow" }, { "action": "shell", "resource": "git push *", "effect": "deny" }, { "action": "read", "resource": "*.env", "effect": "deny" } ] }

Жёсткие командные запреты, которые проекты не могут переопределить, идут в policies, а не в permissions. Пример: запретить провайдера или опасный инструмент глобально. Контроль контекста: formatter: true форматирует после write и edit, tool_output ограничивает строки и байты, compaction сохраняет свежие токены в долгих сессиях, warming держит простаивающие сессии тёплыми за небольшую плату в токенах. После правок перезагружайте без перезапуска:

opencode reload

Навыки и агенты: куда их класть

Навыки хранят чек-листы, агенты хранят роль. И то и другое — файлы в репозитории, и работают они одинаково на бесплатной модели OpenCode, GPT 6 Luna и Claude Opus 5.5 — различается только строгость, которую им можно доверить. Полные руководства с пятью готовыми навыками и четырьмя готовыми агентами: Как писать навыки для ИИ-ассистентов и Создание и развитие агентов.

Где лежит каждый файл, в виде вывода tree. Каждый элемент ссылается на главу, где он объяснён:

my-app/ ├── opencode.jsonc ├── AGENTS.md ├── .opencode/skills/ │ ├── commit-style.md │ ├── db-migrate/ │ │ ├── SKILL.md │ │ ├── scripts/rollback.sh │ │ └── references/policy.md │ ├── test-writer/ │ │ └── SKILL.md │ └── api-review/ │ └── SKILL.md ├── .opencode/agents/ │ ├── triage.md │ ├── builder.md │ ├── reviewer.md │ └── team/orchestrator.md └── .opencode/commands/ ├── review.md └── build-feature.md

Разделение моделей, которое работает на практике: triage на бесплатной модели объясняет и направляет, ничего не правя, builder на Luna реализует вместе с test-writer, reviewer на Opus 5.5 судит вместе с api-review. Один opencode.jsonc в корне проекта связывает всё вместе:

vi opencode.jsonc

{ "$schema": "https://opencode.ai/config.json", "model": "opencode/deepseek-v4.1-flash-free", "skills": ["./team-skills"], "permissions": [ { "action": "shell", "resource": "*", "effect": "ask" }, { "action": "shell", "resource": "npm test *", "effect": "allow" }, { "action": "shell", "resource": "git push *", "effect": "deny" } ], "agents": { "builder": { "model": "opencode/gpt-6-luna" }, "reviewer": { "model": "opencode/claude-opus-5-5" } } }

Ежедневные запросы, которые используют такую раскладку: With triage, explain src/auth.ts login flow, затем With builder and @test-writer, add validation and keep tests green, затем Use the reviewer subagent with @api-review on the staged diff. Личные эксперименты идут в ~/.config/opencode/skills/ и ~/.config/opencode/agents/, командные договорённости остаются в репозитории и коммитятся.

Три модели, один проект

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

РольФайл агентаМодельКакие навыки видитМожет править
Triagetriage.mdбесплатная модель OpenCodeникаких, только объясняетнет
Buildbuilder.mdGPT 6 Lunatest-writer, db-migrateда, без push
Reviewreviewer.mdClaude Opus 5.5api-review и только оннет, только отчёт

1. Один AGENTS.md направляет все три роли. Держите корневой файл маленьким и пусть он указывает на роли, а не на названия моделей. Каждый агент читает его при запуске, поэтому это единственная карта, куда смотреть:

# Project instructions - Triage: explain only, never edit, never read .env files. - Build: implement in src/, tests in tests/, run npm test -- --run <file>. - Review: read staged diff only, rubric in .opencode/skills/api-review/SKILL.md. - DB rules: .opencode/skills/db-migrate/references/policy.md is normative.

Вложенные файлы для отдельных областей уточняют, но никогда не повторяют. Пример src/database/AGENTS.md с двумя строками про имена миграций читается, когда исследуется этот каталог — triage видит его при объяснении, builder при правке, reviewer при аудите.

2. Описания — это указатели. Модель выбирает навыки и субагентов только по тексту описания, поэтому пишите каждое описание как маршрут: глагол плюс путь плюс отрицание. Сравните:

description: Safe database migration with review and rollback plan description: Review API diffs for bugs, security, and missing tests

Описания агентов делают то же самое для родителя: Explains code and sorts tasks without editing против Final correctness and security pass over staged diffs. Оркестратору тогда не нужны названия моделей, только намерение: With team/orchestrator, plan cursor pagination for orders расходится по explore, builder и reviewer по совпадению описаний.

3. Ограничивайте навыки по агентам, чтобы каждая роль видела свою полку. Хранилище навыков одно, видимость разная. Triage не видит ничего для загрузки, builder видит два рабочих чек-листа, reviewer видит только строгую рубрику — всё в opencode.jsonc:

{ "$schema": "https://opencode.ai/config.json", "model": "opencode/deepseek-v4.1-flash-free", "permissions": [ { "action": "skill", "resource": "*", "effect": "allow" }, { "action": "shell", "resource": "git push *", "effect": "deny" }, { "action": "read", "resource": "*.env", "effect": "deny" } ], "agents": { "triage": { "model": "opencode/deepseek-v4.1-flash-free", "permissions": [ { "action": "edit", "resource": "*", "effect": "deny" }, { "action": "skill", "resource": "*", "effect": "deny" } ] }, "builder": { "model": "opencode/gpt-6-luna", "permissions": [ { "action": "skill", "resource": "*", "effect": "deny" }, { "action": "skill", "resource": "test-writer", "effect": "allow" }, { "action": "skill", "resource": "db-migrate", "effect": "allow" } ] }, "reviewer": { "model": "opencode/claude-opus-5-5", "permissions": [ { "action": "edit", "resource": "*", "effect": "deny" }, { "action": "shell", "resource": "*", "effect": "deny" }, { "action": "skill", "resource": "*", "effect": "deny" }, { "action": "skill", "resource": "api-review", "effect": "allow" } ] } } }

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

With triage, explain src/auth.ts login flow and route the refresh bug as small fix or feature

With builder and @test-writer, implement the small fix with three tests, show git diff --stat and stop

Use the reviewer subagent with @api-review on git diff --cached, verdict ship or fix first

Что переходит между шагами: triage возвращает маршрут в две строки плюс список файлов, builder возвращает дифф плюс вывод тестов, reviewer возвращает находки с файлом и строкой плюс вердикт. Больше ничего не передаётся — ни копия всего репозитория, ни повторное чтение файлов политик, потому что все три разрешают одни и те же относительные пути от тех же базовых каталогов SKILL.md. Держите секреты подальше от первого шага: бесплатная модель может быть тарифом для участников, который учится на запросах, поэтому .env и код клиентов отправляйте сразу на Luna, Opus или локальную модель.

Трио Aredel на одном репозитории

Та же схема трио, применённая к самому репозиторию aredel: сайт на PHP, в докруте которого больше 7000 PHP-файлов. Корень репозитория и докрут:

/home/andrei/github/aredel

container/src/

Раскладка ниже — результат аудита от 22.10.2026: навыки в одном месте, которое читают и OpenCode, и Claude Code, одни и те же три роли в каждом инструменте и лаунчер, проверяющий закреплённые id моделей. Тексты навыков — в карте проекта Aredel:

aredel/ ├── AGENTS.md ├── opencode.jsonc ├── .claude/skills/ │ ├── aredel-map/ │ ├── aredel-page/ │ ├── aredel-blocks/ │ ├── aredel-css/ │ ├── aredel-tooling/ │ ├── aredel-verify/ │ └── ai-style/ ├── .claude/agents/ ├── .opencode/agents/ │ ├── triage.md │ ├── builder.md │ └── reviewer.md ├── .opencode/commands/review.md └── container/tools/ai/opencode.sh

Правила размещения:

Связка ролей и навыков для aredel, от дешёвого к дорогому:

АгентМодельВидитТипичный запрос
triageбесплатная модель OpenCodeтолько aredel-mapWith triage, is src/ao/chessboard/game.php a page or a tool
builderLunaвсе навыки aredelWith builder, add the lesson plus tcont and sitemap run
reviewerOpus 5.5все навыки aredel, git только на чтение/review

Корневой AGENTS.md — это таблица маршрутизации от задачи к навыкам плюс несколько правил, нужных каждой задаче; процедуры несут навыки. Его полный текст и причины каждого изменения — в материале «Аудит настройки агентов».

Старые и новые возможности

Классический ежедневный набор (всё ещё здесь). Полноэкранный TUI плюс mini для маленьких терминалов, настольное приложение с управлением браузером и веб-интерфейс через opencode pair и opencode serve. Наберите @, чтобы нечётким поиском найти файл и прикрепить его содержимое, например @src/auth.ts (контекст файла через @), ! для одноразовой команды оболочки, / для слэш-команд, Tab или Shift+Tab для переключения агентов Build и Plan. /new, /sessions, /undo и /redo со снимками файловой системы на основе Git, /share, /editor с EDITOR, /btw для побочных вопросов, которые не засоряют контекст. Рабочие лошадки CLI: run для одноразовых ответов и CI, session list/export/import, stats --cost --models, api GET /api/session, debug config/paths.

Агенты: 4 встроенных, которые важны. build (основной, программист по умолчанию), plan (основной, исследует, не правя файлы проекта), general (субагент для исследования и многошаговой работы), explore (субагент, поиск по коду и интернету только на чтение). Переопределяйте или добавляйте своих в .opencode/agents/reviewer.md или в разделе agents конфигурации, со своей моделью, системным промптом, лимитом шагов, цветом и разрешениями. Субагенты работают со свежим контекстом на переднем или заднем плане — родитель остаётся доступным.

Инструменты: небольшое фиксированное ядро плюс расширения. Файлы: read, glob, grep, edit, write (patch для правок в нескольких файлах на моделях GPT). Команды: shell с таймаутом на переднем плане и фоновым режимом для dev-серверов. Веб: webfetch, websearch с выбираемым провайдером. Взаимодействие: question приостанавливает работу и просит выбрать, skill загружает текст одного навыка по требованию, subagent запускает дочернего агента, execute выполняет параллельные вызовы инструментов в Code Mode, не заливая контекст. MCP-серверы добавляют инструменты с именем server_tool, пространство имён браузера управляет настольным браузером (вкладки, снимки, клики, скриншоты, Lighthouse). Каждый инструмент проверяет упорядоченные permissions: последнее совпадение побеждает, allow / ask / deny, с постоянными подтверждениями Allow always на проект.

Новое в V2, что стоит освоить. Варианты моделей #high, #low, #fast у каждой модели, свои варианты и псевдонимы в конфигурации, настройки на провайдера и на модель, заголовки и наложения на тело запроса, автоматические точки кеширования промптов (формат Anthropic, формат Alibaba). Обнаружение локальных моделей для Ollama, LM Studio и vLLM с обновлением в фоне. Сжатие: автоматические локальные пересказы плюс родные контрольные точки сжатия у провайдера с бюджетами keep.tokens и buffer. Прогрев с интервалом простоя. Именованные references на локальные каталоги или git-репозитории как вспомогательный контекст. Создание git worktree и перенос сессии для параллельных задач. Новая форма плагинов (хуки, преобразования, инструменты, расширения TUI и RPC) — плагины V1 не работают, переносите их. ACP-сервер через stdin и stdout для интеграций с редакторами, SDK и сгенерированный клиент TypeScript для HTTP API, OpenAPI по адресу /openapi.json.

Навыки, команды, MCP, политики. Навыки — это переиспользуемые пакеты инструкций: .opencode/skills/git-release/SKILL.md со скриптами и ссылками рядом, автоматически находятся в глобальном, проектном и явно указанном каталоге skills или в HTTP-каталогах, объявляются по описанию и загружаются через @skill-id. Команды — шаблоны промптов: .opencode/commands/review.md с $ARGUMENTS, $1, $2 и блоками оболочки !`git diff --cached`, необязательным агентом, моделью и фоновым subagent: true. MCP подключает локальные и удалённые инструменты: opencode mcp add playwright --global -- bunx @playwright/mcp, OAuth через /mcps, секреты через {env:KEY}, никогда открытым текстом. Политики жёстко запрещают провайдеров, инструменты, MCP, навыки и плагины после того, как отработали разрешения.

Рабочие приёмы

1. Ежедневный цикл сначала на бесплатном (бесплатная модель OpenCode). Поставьте бесплатную модель по умолчанию, делайте на ней всё, повышайте модель только при неудаче. F2 переключает недавние модели, Ctrl+X, затем M открывает список, не теряя контекст.

opencode

Explain lines 1-120 of @src/auth.ts, then list edge cases you are unsure about

Add validation to login, keep the public API, run npm test and show the diff

Если ответ слабый, оставайтесь в той же сессии и скажите Retry the fix with opencode/claude-opus-5-5, keep the passing tests green. Берегите Opus для финального прохода, а не для каждого нажатия клавиши — одно это снижает расходы на порядок.

2. Сначала Plan, потом Build (трудные задачи). Никогда не давайте сильной модели править по первому промпту. Нажмите Tab для режима Plan, опишите задачу как младшему разработчику, итерируйте, затем вернитесь по Tab в Build.

Plan: add cursor pagination to /api/orders. Show files to touch, schema change, and test plan. No edits yet.

Looks good, now implement step 1 and 2 only, then stop for review

Агент Plan по умолчанию не может править файлы проекта, поэтому он не сломает код, пока думает. Сохраняйте план в файл, если он растягивается на дни.

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

Ask the explore subagent to map the auth flow and return key files, then ask general to compare with docs in references/docs

То же самое в Code Mode: читайте package.json и README параллельно через execute, а возвращайте только детали настройки. Фоновые субагенты сообщают о завершении — запустите два и продолжайте работу в родителе.

4. Команда ревью для команды на Opus 5.5. Создайте один раз, используйте всегда. Файл .opencode/commands/review.md:

--- description: Review staged changes agent: general model: opencode/claude-opus-5-5 --- Review this diff for bugs, security and missing tests: !`git diff --cached`

Run /review, report findings in severity order with file and line

Дополните его агентом-ревьюером только на чтение, который запрещает edit и shell, чтобы ревью никогда не меняло код. Запускайте его в фоне через subagent: true, пока пишете следующую задачу.

5. Навыки плюс AGENTS.md для командных договорённостей. Кладите повторяемые командные знания в навык, а не в каждый промпт. Пример — .opencode/skills/db-migrate/SKILL.md с политикой миграций и скриптом отката рядом. Упомяните @db-migrate один раз, и агент загрузит весь чек-лист. Держите AGENTS.md крошечным: команды сборки, проверки типов и тестов, где живут запросы, что нельзя править никогда. Коммитьте оба, чтобы каждая сессия и каждый коллега получали одни и те же указания.

6. Ревью в CI, worktrees и длинные сессии. Одноразовое ревью в GitHub Actions на дешёвой модели, без TUI:

opencode run --standalone --model opencode/gpt-6-luna "Review this repository for correctness and summarize issues"

Параллельные задачи без боли с ветками: создайте worktree, перенесите в него сессию, основную ветку держите чистой. Для сессий дольше часа включайте автоматическое сжатие с щедрым бюджетом keep.tokens, а перед большими откатами коммитьте или делайте session export — снимки это удобство, а не резервная копия, и побочные эффекты оболочки никогда не откатываются.

Решение проблем

Официальные источники:

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