Skip to content

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

Сложность ⌨️ Средний уровень (JSON-файл конфигурации) | Формат API OpenAI-совместимый | base_url https://byesu.com/v1

Данные подключения
Адрес APIhttps://byesu.com/v1
Модельclaude-opus-4-8
Формат API OpenAI-совместимый · имена моделей — по консоли

OpenCode — один из самых популярных по звёздам open-source AI-агентов для программирования на GitHub: ассистент, ориентированный в первую очередь на терминал (есть также десктопное приложение и расширение для IDE) и сознательно независимый от провайдеров — он никогда не привязывает вас к одному поставщику моделей. Эта философия естественно сочетается с byesu — AI API-шлюзом с OpenAI-совместимым и нативным Anthropic эндпоинтами. Объявите byesu один раз как кастомный провайдер в opencode.json, и один ключ добавит Claude Opus 4.8, Claude Sonnet 5, GPT-5.6 и Grok 4.5 в список моделей OpenCode — с оплатой по факту, без подписки.

Перед началом

Зайдите в Консоль → Токены и создайте токен в группе, покрывающей модели, которые вы собираетесь использовать (см. Выбор группы). Везде, где ниже встречается sk-xxxx, замените его на ваш собственный ключ.

Требования

① Установленный OpenCode — подойдёт любой официальный способ:

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

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

bash
opencode --version

② Токен byesu — созданный в консоли, в группе, соответствующей нужным моделям (именно об этом ошибка «no available channel», о которой речь ниже).

Шаг 1: добавьте byesu как кастомный провайдер

OpenCode читает opencode.json из двух мест:

  • Глобально: ~/.config/opencode/opencode.json — действует для всех проектов. Рекомендуемое место для блока провайдера.
  • В проекте: opencode.json в корне проекта — переопределяет глобальный файл для этого проекта.

Создайте (или дополните) любой из этих файлов следующим содержимым:

json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "byesu/claude-opus-4-8",
  "small_model": "byesu/claude-sonnet-5",
  "provider": {
    "byesu": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "byesu",
      "options": {
        "baseURL": "https://byesu.com/v1",
        "apiKey": "sk-ваш-токен"
      },
      "models": {
        "claude-opus-4-8": { "name": "Claude Opus 4.8" },
        "claude-sonnet-5": { "name": "Claude Sonnet 5" },
        "gpt-5.6-terra": { "name": "GPT-5.6 Terra" },
        "grok-4.5": { "name": "Grok 4.5" }
      }
    }
  }
}

Что делает каждая часть:

ПолеЗначение
provider.byesuВыбранный здесь ключ становится идентификатором провайдера — каждая ссылка на модель имеет вид byesu/<model-id>
npmАдаптер AI SDK, который OpenCode загружает для этого провайдера. Эндпоинт byesu работает через /v1/chat/completions, поэтому это @ai-sdk/openai-compatible
options.baseURLhttps://byesu.com/v1 — заканчивается на /v1, не добавляйте /chat/completions
options.apiKeyВаш токен sk-; OpenCode сам отправляет его в заголовке Bearer
modelsКаждый ключ — это идентификатор модели ровно в том виде, как в консоли; name — лишь отображаемое имя в списке
model / small_modelМодель по умолчанию и лёгкая вспомогательная модель (заголовки сессий, сводки) — обе в формате provider_id/model_id

Три самые частые ошибки

  1. npm должен быть @ai-sdk/openai-compatible. Пакет @ai-sdk/openai нацелен на API /v1/responses от OpenAI и с этим эндпоинтом не совместим.
  2. Ключи моделей в models должны точно совпадать с именами в консоли (claude-opus-4-8, а не claude-opus-4.8).
  3. Во всех остальных местах конфигурации модели указываются с префиксом провайдера: byesu/claude-opus-4-8, никогда — голое имя.

Дополнительно каждая запись модели принимает объект limit ({ "context": ..., "output": ... }), чтобы индикатор контекста в OpenCode был точным. Без него всё тоже работает.

Шаг 2 (необязательно): уберите ключ из файла

Два аккуратных способа не хранить ключ открытым текстом в opencode.json:

Подстановка переменных окружения. OpenCode раскрывает плейсхолдеры {env:VAR} внутри конфигурации:

json
"options": {
  "baseURL": "https://byesu.com/v1",
  "apiKey": "{env:BYESU_API_KEY}"
}
bash
# Добавьте в ~/.zshrc или ~/.bashrc, затем откройте терминал заново
export BYESU_API_KEY="sk-ваш-токен"

Команда /connect. Запустите opencode, введите /connect, выберите Other, укажите byesu в качестве идентификатора провайдера и вставьте ключ. OpenCode сохранит учётные данные в собственном хранилище, а apiKey из конфигурации можно полностью убрать.

WARNING

Идентификатор провайдера, введённый в /connect, должен совпадать с ключом под provider в opencode.json (здесь: byesu), иначе сохранённые учётные данные никогда не будут использованы.

Шаг 3: запустите и проверьте

Перейдите в каталог любого проекта и запустите:

bash
opencode

Введите /models — в списке должны появиться четыре записи byesu. Выберите одну и задайте что-нибудь простое (например, «покажи список файлов в текущем каталоге»). Если ответ пришёл нормально — подключение работает ✅

Переключение моделей, Plan и Build

/models позволяет сменить модель в любой момент сессии. Tab переключает между агентом Build (полный доступ к инструментам) и агентом Plan (режим анализа, который спрашивает перед правкой файлов), и каждому агенту можно закрепить свою модель byesu:

json
{
  "agent": {
    "plan": { "model": "byesu/claude-sonnet-5" }
  }
}

Типичное разделение: Opus 4.8 как модель по умолчанию для Build, Sonnet 5 — для агента Plan и роли small_model.

Возникли проблемы?

  • 401 / invalid token → ключ неверный, либо идентификатор провайдера в /connect не совпадает с ключом provider в конфигурации (подробнее)
  • No available channel → группа токена не покрывает выбранную модель; создайте токен в правильной группе (Выбор группы, подробнее)
  • Model not found → ключ в models не совпадает точно с именем модели в консоли, либо в ссылке на модель пропущен префикс byesu/ (подробнее)
  • Insufficient balance → пополните баланс в консоли через USDT, Alipay или WeChat Pay (подробнее)
  • По остальным вопросам см. Частые ошибки и решения

FAQ

Как добавить кастомный OpenAI-совместимый провайдер в OpenCode?

Объявите его под ключом provider в opencode.json: укажите npm равным @ai-sdk/openai-compatible, options.baseURL равным https://byesu.com/v1, options.apiKey — ваш токен sk-, а идентификаторы моделей перечислите в models. Далее каждая модель указывается как byesu/<model-id>.

Какой npm-пакет должен использовать кастомный провайдер OpenCode?

@ai-sdk/openai-compatible — это адаптер для провайдеров, работающих через /v1/chat/completions, именно так устроен OpenAI-совместимый эндпоинт byesu. @ai-sdk/openai нацелен на API /v1/responses от OpenAI и не подойдёт.

Можно ли не хранить API-ключ в opencode.json?

Да, два способа: подстановка переменных окружения ("apiKey": "{env:BYESU_API_KEY}" плюс export в профиле оболочки) либо команда /connect внутри OpenCode с сохранением ключа под идентификатором провайдера, совпадающим с ключом в конфигурации.

Почему OpenCode возвращает ошибку «no available channel»?

Токен был создан в группе, которая не покрывает выбранную модель. Создайте токен в подходящей группе в консоли byesu (см. Выбор группы), подставьте новый ключ и повторите попытку.

Могут ли агенты Plan и Build в OpenCode использовать разные модели?

Да. Tab переключает между Build и Plan во время сессии, и каждый агент принимает собственное переопределение model в opencode.json — например, agent.plan.model со значением byesu/claude-sonnet-5, пока Build остаётся на byesu/claude-opus-4-8.

Как тарифицируется использование OpenCode через byesu?

Оплата по факту за токены, с прозрачными коэффициентами относительно официальных цен и без подписки. В консоли рядом с каждой моделью отображается актуальная тарифицируемая цена, пополнить баланс можно через USDT, Alipay или WeChat Pay.

Возникла проблема? Напишите в поддержку или в наш чат.