Интеграция OpenCode
Подключите OpenCode — open-source AI-агента для терминала — к AITUNNEL и получите доступ к Claude, GPT, Gemini, Qwen и другим моделям через один API-ключ, без VPN и зарубежных аккаунтов.
OpenCode — это open-source агентный CLI для работы с кодом в терминале. Построен на AI SDK и поддерживает 75+ провайдеров «из коробки», включая OpenAI-совместимые endpoints — а значит, идеально подходит для работы через AITUNNEL.
AITUNNEL подключается к OpenCode как custom provider: мы добавляем один endpoint с baseURL https://api.aitunnel.ru/v1, и все модели AITUNNEL (Anthropic Claude, OpenAI GPT, Google Gemini, Moonshot Kimi, DeepSeek, Qwen и другие) становятся доступны в меню выбора модели.
Быстрый старт
Шаг 1: Установка OpenCode
curl -fsSL https://opencode.ai/install | bashnpm install -g opencode-aibrew install anomalyco/tap/opencodescoop install opencodeТребования для npm
Требуется Node.js 18 или новее.
Проверьте установку:
opencode --versionШаг 2: Добавление ключа AITUNNEL
У OpenCode есть два способа подключить кастомный провайдер.
Способ A: Через команду /connect (рекомендуется)
Запустите OpenCode в любом проекте:
bashcd /path/to/your/project opencodeВ TUI введите команду:
text/connectПрокрутите список вниз и выберите пункт Other (произвольный OpenAI-совместимый провайдер).
Введите ID провайдера — например,
aitunnel:text◇ Enter provider id │ aitunnelЗапомните ID
ID провайдера — это любая произвольная строка, но она должна совпадать с ключом в
opencode.jsonна следующем шаге. Мы рекомендуемaitunnel.Введите ваш API ключ AITUNNEL (начинается с
sk-aitunnel-):text◇ Enter your API key │ sk-aitunnel-xxx
OpenCode сохранит ключ в ~/.local/share/opencode/auth.json. Вы увидите предупреждение, что это только сохранение credentials — полную настройку проведём в opencode.json.
Способ B: Прямо в конфиге
Если вы хотите всё держать в одном месте, можно не использовать /connect, а сразу прописать ключ в opencode.json (см. следующий шаг — используйте поле options.apiKey).
Шаг 3: Настройка 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. Если конкретная модель работает только через /v1/responses, используйте @ai-sdk/openai. |
name | Название провайдера в UI выбора моделей. |
options.baseURL | Endpoint AITUNNEL: https://api.aitunnel.ru/v1. |
models | Словарь моделей — ключ это ID, который отправляется в API, name — отображаемое имя. |
limit.context / limit.output | Максимальный размер окна контекста и ответа. OpenCode использует эти числа, чтобы показывать, сколько места осталось. |
model | Модель по умолчанию в формате providerID/modelID, например aitunnel/claude-sonnet-4-5. |
small_model | Модель для вспомогательных задач (генерация заголовков сессии, суммаризация) — выбирайте что-то дешёвое. |
Актуальный список моделей и их ID — на странице моделей AITUNNEL.
Шаг 4: Запуск
cd /path/to/your/project
opencodeВнутри TUI выполните /models, чтобы увидеть доступные модели AITUNNEL, и выберите нужную. Все запросы теперь идут через AITUNNEL — проверьте панель активности.
Хранение ключа отдельно от конфига
Если вы не используете /connect, но не хотите держать sk-aitunnel-xxx прямо в JSON, OpenCode поддерживает подстановку значений.
Через переменную окружения
{
"$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 или GPT Pro.
Файл правил AGENTS.md
OpenCode читает файл AGENTS.md в корне проекта как системные инструкции для агента — аналог CLAUDE.md или QWEN.md. Пример:
# AITUNNEL API CF
## Стек
- Cloudflare Workers + Hono
- TypeScript, деплой через Wrangler
## Правила
- Все обращения к провайдерам (OpenAI, OpenRouter, GigaChat) идут через единый failover-слой
- Писать тесты для новых route handlers
- Не коммитить секреты и `.dev.vars`OpenCode автоматически подхватит этот файл при старте сессии.
Рекомендуемые модели через AITUNNEL
Актуальный список и цены — на aitunnel.ru/models. Универсальный стартовый набор:
claude-sonnet-4-5— баланс качества и скорости, отличное tool callinggpt-5.2-pro— топовая модель OpenAI для сложных задачgpt-5.1-codex-max— оптимизирована под кодmoonshotai/kimi-k2— 1T параметров, дешевле Claude/GPT, сильна в tool useqwen/qwen3-coder— open-source, хорошая агентностьgoogle/gemini-2.5-flash— быстрая и дешёвая, идеально какsmall_model
Полезные команды
В TUI (slash-команды):
/help— список команд/connect— добавить credentials провайдера/models— переключить модель/agents— переключить агента (например, code-reviewer)/share— поделиться сессией
В терминале:
opencode auth list— показать сохранённые credentialsopencode run "промпт"— headless-запрос (для скриптов и CI)opencode --help— полный список CLI-флаговopencode serve— запустить HTTP-сервер (opencode web— с UI в браузере)
Устранение неполадок
Провайдер не появляется в списке /models
- Убедитесь, что ID провайдера в
provider.<ID>совпадает с тем, что вы ввели в/connect(например,aitunnel) - Проверьте
opencode auth list— должен быть ваш провайдер с сохранённым ключом - Если используете
options.apiKeyнапрямую, то/connectне нужен - Перезапустите OpenCode после изменения
opencode.json
401 / 403 при запросе
- Проверьте, что ключ действителен в личном кабинете
- Убедитесь, что баланс положительный
baseURLдолжен бытьhttps://api.aitunnel.ru/v1(с/v1, без слеша в конце)- Если ключ в
auth.jsonустарел, удалите его черезopencode auth listи заново вызовите/connect
«Model not found» / 404
- Проверьте точный ID модели на странице моделей — у некоторых провайдеров есть префикс (например,
moonshotai/kimi-k2,openai/gpt-5.2-pro) - 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в конфиге конкретной модели - Используйте модели с большим окном (например,
gemini-2.5-pro— до 1M токенов) - Убедитесь, что
small_modelвыбрана компактная — она тоже берёт контекст на суммаризацию
Безопасность
- Не коммитьте
opencode.jsonс прописанным ключом в публичный репозиторий. Используйте{env:AITUNNEL_API_KEY}или{file:~/.secrets/...} - Ключ, сохранённый через
/connect, лежит в~/.local/share/opencode/auth.json— этот файл не попадает в git по умолчанию - Для CI/CD передавайте ключ только через переменные окружения вашего runner'а