Подключение OpenCode
Сложность ⌨️ Средний уровень (JSON-файл конфигурации) | Формат API OpenAI-совместимый | base_url
https://byesu.com/v1
https://byesu.com/v1claude-opus-4-8OpenCode — один из самых популярных по звёздам 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 — подойдёт любой официальный способ:
curl -fsSL https://opencode.ai/install | bashnpm install -g opencode-aibrew install anomalyco/tap/opencodeПосле установки проверьте:
opencode --version② Токен byesu — созданный в консоли, в группе, соответствующей нужным моделям (именно об этом ошибка «no available channel», о которой речь ниже).
Шаг 1: добавьте byesu как кастомный провайдер
OpenCode читает opencode.json из двух мест:
- Глобально:
~/.config/opencode/opencode.json— действует для всех проектов. Рекомендуемое место для блока провайдера. - В проекте:
opencode.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.baseURL | https://byesu.com/v1 — заканчивается на /v1, не добавляйте /chat/completions |
options.apiKey | Ваш токен sk-; OpenCode сам отправляет его в заголовке Bearer |
models | Каждый ключ — это идентификатор модели ровно в том виде, как в консоли; name — лишь отображаемое имя в списке |
model / small_model | Модель по умолчанию и лёгкая вспомогательная модель (заголовки сессий, сводки) — обе в формате provider_id/model_id |
Три самые частые ошибки
npmдолжен быть@ai-sdk/openai-compatible. Пакет@ai-sdk/openaiнацелен на API/v1/responsesот OpenAI и с этим эндпоинтом не совместим.- Ключи моделей в
modelsдолжны точно совпадать с именами в консоли (claude-opus-4-8, а неclaude-opus-4.8). - Во всех остальных местах конфигурации модели указываются с префиксом провайдера:
byesu/claude-opus-4-8, никогда — голое имя.
Дополнительно каждая запись модели принимает объект
limit({ "context": ..., "output": ... }), чтобы индикатор контекста в OpenCode был точным. Без него всё тоже работает.
Шаг 2 (необязательно): уберите ключ из файла
Два аккуратных способа не хранить ключ открытым текстом в opencode.json:
Подстановка переменных окружения. OpenCode раскрывает плейсхолдеры {env:VAR} внутри конфигурации:
"options": {
"baseURL": "https://byesu.com/v1",
"apiKey": "{env:BYESU_API_KEY}"
}# Добавьте в ~/.zshrc или ~/.bashrc, затем откройте терминал заново
export BYESU_API_KEY="sk-ваш-токен"Команда /connect. Запустите opencode, введите /connect, выберите Other, укажите byesu в качестве идентификатора провайдера и вставьте ключ. OpenCode сохранит учётные данные в собственном хранилище, а apiKey из конфигурации можно полностью убрать.
WARNING
Идентификатор провайдера, введённый в /connect, должен совпадать с ключом под provider в opencode.json (здесь: byesu), иначе сохранённые учётные данные никогда не будут использованы.
Шаг 3: запустите и проверьте
Перейдите в каталог любого проекта и запустите:
opencodeВведите /models — в списке должны появиться четыре записи byesu. Выберите одну и задайте что-нибудь простое (например, «покажи список файлов в текущем каталоге»). Если ответ пришёл нормально — подключение работает ✅
Переключение моделей, Plan и Build
/models позволяет сменить модель в любой момент сессии. Tab переключает между агентом Build (полный доступ к инструментам) и агентом Plan (режим анализа, который спрашивает перед правкой файлов), и каждому агенту можно закрепить свою модель byesu:
{
"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.
