Skip to content

Интеграция 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

bash
curl -fsSL https://opencode.ai/install | bash
bash
npm install -g opencode-ai
bash
brew install anomalyco/tap/opencode
powershell
scoop install opencode

Требования для npm

Требуется Node.js 18 или новее.

Проверьте установку:

bash
opencode --version

Шаг 2: Добавление ключа AITUNNEL

У OpenCode есть два способа подключить кастомный провайдер.

Способ A: Через команду /connect (рекомендуется)

  1. Запустите OpenCode в любом проекте:

    bash
    cd /path/to/your/project
    opencode
  2. В TUI введите команду:

    text
    /connect
  3. Прокрутите список вниз и выберите пункт Other (произвольный OpenAI-совместимый провайдер).

  4. Введите ID провайдера — например, aitunnel:

    text
    ◇  Enter provider id
    │  aitunnel

    Запомните ID

    ID провайдера — это любая произвольная строка, но она должна совпадать с ключом в opencode.json на следующем шаге. Мы рекомендуем aitunnel.

  5. Введите ваш 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 в корне проекта:

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.aitunnelID провайдера — должен совпадать с тем, что вы ввели в /connect.
npmAI SDK пакет. @ai-sdk/openai-compatible — для обычных /v1/chat/completions. Если конкретная модель работает только через /v1/responses, используйте @ai-sdk/openai.
nameНазвание провайдера в UI выбора моделей.
options.baseURLEndpoint 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: Запуск

bash
cd /path/to/your/project
opencode

Внутри TUI выполните /models, чтобы увидеть доступные модели AITUNNEL, и выберите нужную. Все запросы теперь идут через AITUNNEL — проверьте панель активности.

Хранение ключа отдельно от конфига

Если вы не используете /connect, но не хотите держать sk-aitunnel-xxx прямо в 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",
        "apiKey": "{env:AITUNNEL_API_KEY}"
      },
      "models": {
        "claude-sonnet-4-5": { "name": "Claude Sonnet 4.5" }
      }
    }
  },
  "model": "aitunnel/claude-sonnet-4-5"
}

Затем добавьте в ~/.zshrc / ~/.bashrc:

bash
export AITUNNEL_API_KEY="sk-aitunnel-xxx"

Через файл с ключом

json
{
  "provider": {
    "aitunnel": {
      "options": {
        "apiKey": "{file:~/.secrets/aitunnel-key}"
      }
    }
  }
}

Где ~/.secrets/aitunnel-key — текстовый файл с одним ключом без переносов строк.

Расположение конфигов и приоритеты

OpenCode объединяет конфиги из нескольких источников (более поздние переопределяют более ранние):

  1. Удалённая конфигурация (.well-known/opencode у провайдера) — базовый слой для организаций.
  2. Глобальная — ~/.config/opencode/opencode.json.
  3. Пользовательский путь — переменная OPENCODE_CONFIG=/path/to/config.json.
  4. Проектная — opencode.json в корне проекта.
  5. Каталоги .opencode/ — агенты, команды, плагины.
  6. Встроенная — переменная OPENCODE_CONFIG_CONTENT.

Удобный приём: держите провайдер AITUNNEL в глобальном ~/.config/opencode/opencode.json, а в opencode.json проекта переопределяйте только model — чтобы в каждом проекте использовать свою модель.

Несколько моделей и быстрая small_model

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

json
{
  "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. Пример:

markdown
# 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 calling
  • gpt-5.2-pro — топовая модель OpenAI для сложных задач
  • gpt-5.1-codex-max — оптимизирована под код
  • moonshotai/kimi-k2 — 1T параметров, дешевле Claude/GPT, сильна в tool use
  • qwen/qwen3-coder — open-source, хорошая агентность
  • google/gemini-2.5-flash — быстрая и дешёвая, идеально как small_model

Полезные команды

В TUI (slash-команды):

  • /help — список команд
  • /connect — добавить credentials провайдера
  • /models — переключить модель
  • /agents — переключить агента (например, code-reviewer)
  • /share — поделиться сессией

В терминале:

  • opencode auth list — показать сохранённые credentials
  • opencode 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'а

Дополнительные ресурсы

AITUNNEL