OpenCode в России — настройка CLI через AITUNNEL
OpenCode — open-source AI-агент для терминала через AITUNNEL с доступом ко всем моделям
OpenCode — open-source агентный CLI для программирования в терминале. Построен на Vercel AI SDK, поддерживает 75+ провайдеров «из коробки» и умеет подключаться к любым OpenAI-совместимым endpoints. В России самый простой способ использовать OpenCode — через AITUNNEL: один API-ключ, один baseURL, и в меню выбора модели появляются Claude, GPT-5, Gemini, Kimi, Qwen, DeepSeek и десятки других моделей — без VPN и зарубежных аккаунтов.
Что такое OpenCode?
OpenCode (opencode.ai, github.com/sst/opencode) — это терминальный AI-агент с TUI (text user interface), который умеет:
- Читать и редактировать файлы — автоматически вносит правки в код
- Выполнять shell-команды — запускает тесты, билды, git-команды
- Держать контекст всего проекта — анализирует структуру, импорты, зависимости
- Переключать модели — команда
/modelsпрямо в сессии - Запускать headless-режим —
opencode runдля скриптов и CI - Работать как HTTP-сервер —
opencode serveиopencode web(UI в браузере) - Читать файл правил —
AGENTS.md(аналогCLAUDE.mdилиQWEN.md) - Подключать кастомных агентов —
.opencode/agents/с отдельными промптами и tools
Почему OpenCode через AITUNNEL
Прямое подключение OpenCode к Anthropic, OpenAI или Google требует зарубежной карты и стабильного VPN. AITUNNEL предоставляет OpenAI-совместимый API с российским эндпоинтом api.aitunnel.ru — OpenCode подключается как custom provider:
- Без VPN — запросы идут через российский домен
- Оплата в рублях — пополнение от 399₽, карты МИР и СБП
- Один ключ — все модели — Claude, GPT-5, Gemini, Kimi K2, Qwen3-Coder, DeepSeek через один
baseURL - Для бизнеса — договор, акты, счета-фактуры
- Панель активности — все запросы и расходы видны в реальном времени
Установка OpenCode
Скрипт установки (macOS, Linux, WSL)
curl -fsSL https://opencode.ai/install | bashЧерез npm
npm install -g opencode-aiТребуется Node.js 18 или новее.
Через Homebrew (macOS, Linux)
brew install anomalyco/tap/opencodeWindows (Scoop)
scoop install opencodeПроверка установки
opencode --versionНастройка OpenCode с AITUNNEL
OpenCode подключает AITUNNEL как custom provider через AI SDK пакет @ai-sdk/openai-compatible. Настройка занимает две минуты.
Шаг 1: Добавление API-ключа
Есть два способа.
Способ A: через команду /connect (рекомендуется)
Запустите OpenCode и выполните /connect:
cd /path/to/your/project
opencodeВ TUI введите:
/connect- Прокрутите список вниз и выберите Other (произвольный OpenAI-совместимый провайдер)
- Введите ID провайдера — рекомендуем
aitunnel - Введите ваш API-ключ (начинается с
sk-aitunnel-)
OpenCode сохранит ключ в ~/.local/share/opencode/auth.json. ID провайдера должен совпадать с ключом в opencode.json на следующем шаге.
Способ B: прямо в конфиге
Пропустите /connect и укажите ключ через поле options.apiKey в opencode.json (см. ниже).
Шаг 2: Настройка `opencode.json`
Создайте файл ~/.config/opencode/opencode.json (глобально) или opencode.json в корне проекта:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"aitunnel": {
"npm": "@ai-sdk/openai-compatible",
"name": "AITUNNEL",
"options": {
"baseURL": "https://api.aitunnel.ru/v1"
},
"models": {
"claude-sonnet-4-5": {
"name": "Claude Sonnet 4.5",
"limit": { "context": 200000, "output": 64000 }
},
"gpt-5.2-pro": {
"name": "GPT-5.2 Pro",
"limit": { "context": 400000, "output": 128000 }
},
"moonshotai/kimi-k2": {
"name": "Kimi K2",
"limit": { "context": 200000, "output": 32000 }
}
}
}
},
"model": "aitunnel/claude-sonnet-4-5",
"small_model": "aitunnel/moonshotai/kimi-k2"
}Что означает каждое поле
| Поле | Описание |
|---|---|
provider.aitunnel | ID провайдера — совпадает с тем, что ввели в /connect |
npm | AI SDK пакет. @ai-sdk/openai-compatible — для /v1/chat/completions. Для Responses API используйте @ai-sdk/openai |
name | Название провайдера в меню выбора моделей |
options.baseURL | Эндпоинт AITUNNEL: https://api.aitunnel.ru/v1 (с /v1, без слеша в конце) |
models | Словарь моделей — ключ это ID для API, name — отображаемое имя |
limit.context / limit.output | Размер окна контекста и ответа — OpenCode показывает остаток |
model | Модель по умолчанию в формате providerID/modelID |
small_model | Дешёвая модель для вспомогательных задач (заголовки сессии, суммаризация) |
Актуальный список моделей и их ID — в каталоге AITUNNEL.
Шаг 3: Запуск
cd /path/to/your/project
opencodeВнутри TUI выполните /models, чтобы увидеть подключённые модели AITUNNEL и выбрать нужную. Запросы должны появиться в панели активности AITUNNEL — если их нет, проверьте baseURL и providerID.
Хранение ключа отдельно от конфига
Если вы не используете /connect, OpenCode поддерживает подстановку значений — можно не держать sk-aitunnel-xxx в JSON.
Через переменную окружения
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"aitunnel": {
"npm": "@ai-sdk/openai-compatible",
"name": "AITUNNEL",
"options": {
"baseURL": "https://api.aitunnel.ru/v1",
"apiKey": "{env:AITUNNEL_API_KEY}"
},
"models": {
"claude-sonnet-4-5": { "name": "Claude Sonnet 4.5" }
}
}
},
"model": "aitunnel/claude-sonnet-4-5"
}Добавьте в ~/.zshrc или ~/.bashrc:
export AITUNNEL_API_KEY="sk-aitunnel-xxx"Через файл с ключом
{
"provider": {
"aitunnel": {
"options": {
"apiKey": "{file:~/.secrets/aitunnel-key}"
}
}
}
}Где ~/.secrets/aitunnel-key — текстовый файл с одним ключом без переносов строк.
Приоритет конфигов
OpenCode объединяет конфиги из нескольких источников (более поздние переопределяют более ранние):
- Удалённая конфигурация (
.well-known/opencodeу провайдера) — базовый слой для организаций - Глобальная —
~/.config/opencode/opencode.json - Пользовательский путь — переменная
OPENCODE_CONFIG=/path/to/config.json - Проектная —
opencode.jsonв корне проекта - Каталоги
.opencode/— агенты, команды, плагины - Встроенная — переменная
OPENCODE_CONFIG_CONTENT
Удобный приём: держите провайдер AITUNNEL в глобальном ~/.config/opencode/opencode.json, а в opencode.json проекта переопределяйте только model — чтобы каждый проект использовал свою модель.
Быстрая `small_model` для экономии
OpenCode использует small_model для лёгких задач: генерация заголовков сессии, суммаризация контекста, быстрые ответы. По умолчанию туда стоит ставить быструю и дешёвую модель:
{
"model": "aitunnel/gpt-5.2-pro",
"small_model": "aitunnel/gemini-2.5-flash"
}Это заметно экономит деньги, если основная модель — Opus 4.5 или GPT-5.2 Pro.
Файл правил `AGENTS.md`
OpenCode читает AGENTS.md в корне проекта как системные инструкции для агента — аналог CLAUDE.md или QWEN.md. Пример:
# Мой проект
## Стек
- Next.js 15 + TypeScript
- PostgreSQL, Redis
- Деплой через Vercel
## Правила
- Все новые публичные функции документируются JSDoc
- Писать тесты для новых route handlers
- Не коммитить секреты и .env файлыOpenCode автоматически подхватит этот файл при старте сессии. Работает и глобальный ~/.config/opencode/AGENTS.md для личных предпочтений.
Рекомендуемые модели через AITUNNEL
| Модель | Назначение | Контекст |
|---|---|---|
Claude Sonnet 4.5 (claude-sonnet-4-5) | Баланс качества и скорости, сильное tool calling | 1M |
Claude Opus 4.5 (claude-opus-4-5) | Сложные рассуждения и архитектура | 200K |
GPT-5.2 Pro (gpt-5.2-pro) | Топовая модель OpenAI для сложных задач | 400K |
GPT-5.1 Codex Max (gpt-5.1-codex-max) | Оптимизирована под код | 400K |
Kimi K2 (moonshotai/kimi-k2) | 1T параметров, дешевле Claude/GPT, сильна в tool use | 200K+ |
Qwen3-Coder (qwen/qwen3-coder) | Open-source, хорошая агентность | 256K |
Gemini 2.5 Flash (gemini-2.5-flash) | Быстрая и дешёвая — идеально для small_model | Большой |
| DeepSeek V3.2 | Экономичный вариант | 131K |
Актуальные цены и полный список — в каталоге моделей AITUNNEL.
Полезные команды
В TUI (slash-команды)
| Команда | Описание |
|---|---|
/help | Список команд |
/connect | Добавить credentials провайдера |
/models | Переключить модель |
/agents | Переключить агента (например, code-reviewer) |
/share | Поделиться сессией |
В терминале
| Команда | Описание |
|---|---|
opencode auth list | Показать сохранённые credentials |
opencode run "промпт" | Headless-запрос (для скриптов и CI) |
opencode serve | Запустить HTTP-сервер |
opencode web | Запустить сервер с UI в браузере |
opencode --help | Полный список CLI-флагов |
Headless-режим для CI/CD
OpenCode можно запускать без TUI — удобно для автоматизации:
export AITUNNEL_API_KEY="sk-aitunnel-xxx"
opencode run "Напиши unit-тесты для src/utils.ts и положи их в src/utils.test.ts"Это читает глобальный opencode.json, выполняет одноразовую задачу и возвращает результат в stdout. Подходит для GitHub Actions, GitLab CI и любых других CI/CD систем.
Примеры задач
Рефакторинг
> Преобразуй все callback-функции в async/await в src/api/*.jsГенерация тестов
> Напиши vitest-тесты для всех публичных методов UserServiceCode review
> Проверь код в src/auth/ на security-уязвимости и предложи правкиДокументация
> Добавь JSDoc ко всем экспортируемым функциям в src/utils/Устранение неполадок
Провайдер не появляется в `/models`
- Убедитесь, что ID в
provider.<ID>совпадает с тем, что вы ввели в/connect(например,aitunnel) - Проверьте
opencode auth list— ваш провайдер должен быть в списке с сохранённым ключом - Если используете
options.apiKeyнапрямую,/connectне нужен - Перезапустите OpenCode после изменения
opencode.json
Ошибка 401 / 403
- Проверьте, что ключ действителен в личном кабинете AITUNNEL
- Убедитесь, что баланс положительный
baseURLдолжен бытьhttps://api.aitunnel.ru/v1— с/v1, без слеша в конце- Если ключ в
auth.jsonустарел — удалите черезopencode auth listи заново вызовите/connect
«Model not found» / 404
- Проверьте точный ID в каталоге моделей — у некоторых провайдеров есть префикс (например,
moonshotai/kimi-k2,qwen/qwen3-coder) - ID модели в
modelsдолжен совпадать с тем, что отправляется в API. Отображаемоеname— произвольное
Ошибка AI SDK / несовместимый формат ответа
- По умолчанию AITUNNEL работает через
/v1/chat/completions→ используйте"npm": "@ai-sdk/openai-compatible" - Если нужно Responses API через
/v1/responses— меняйте на"npm": "@ai-sdk/openai" - Смешанный режим: можно переопределить
npmдля конкретной модели черезprovider.<id>.models.<model>.npm
Ошибка лимита контекста
- Увеличьте
limit.contextв конфиге модели - Используйте модели с большим окном (Claude Sonnet 4.5 — 1M токенов, GPT-5.2 Pro — 400K)
- Убедитесь, что
small_modelвыбрана компактная — она тоже берёт контекст на суммаризацию
Безопасность
- Не коммитьте
opencode.jsonс прописанным ключом в публичный репозиторий. Используйте{env:AITUNNEL_API_KEY}или{file:~/.secrets/...} - Ключ, сохранённый через
/connect, лежит в~/.local/share/opencode/auth.json— этот файл не попадает в git по умолчанию - Для CI/CD передавайте ключ только через переменные окружения вашего runner'а
Сравнение с другими AI CLI
| Параметр | OpenCode + AITUNNEL | Claude Code | Codex CLI | Qwen Code |
|---|---|---|---|---|
| Работа в России | ✅ без VPN | ❌ | ❌ | ❌ (без AITUNNEL) |
| Оплата в рублях | ✅ | ❌ | ❌ | ❌ |
| Поддержка провайдеров | 75+ | только Anthropic | только OpenAI | OpenAI-compatible |
| Custom providers | ✅ полная | ограничена | ограничена | ✅ |
Выбор модели в сессии (/models) | ✅ | ✅ | ограничен | ✅ |
| HTTP-сервер / Web UI | ✅ (serve, web) | ❌ | ❌ | ❌ |
| Headless / CI-режим | ✅ (run) | ✅ | ✅ | ✅ |
| Open-source | ✅ | ❌ | ❌ | ✅ |
Дополнительные ресурсы
Ключевые возможности
- Open-source AI-агент для терминала
- Поддержка 75+ провайдеров через AI SDK
- Подключение AITUNNEL как custom provider
- Claude, GPT-5, Gemini, Kimi, Qwen через один ключ
- Переключение моделей командой /models
- Headless-режим opencode run для CI/CD
- HTTP-сервер и Web UI (opencode serve / web)
- Файл правил AGENTS.md
- Подстановка {env:...} и {file:...} в конфиге
- Проектные и глобальные opencode.json
Подключите этот инструмент через AITUNNEL
Все инструменты и модели доступны через единый API. Работает из России, оплата в рублях.