OpenCode и Kilo Code со своим API-ключом: как подключить шлюз

Данные на 26.10.2026, 10:20 МСК · цены в ₽ за 1M токенов

OpenCode и Kilo Code подключаются к любому OpenAI-совместимому шлюзу как custom provider: указываете base URL, ключ и id моделей. У AIShlyuz это base URL https://aishlyuz.ru/v1 и ключ sk-ais-…, а список моделей отдаёт GET /v1/models. В OpenCode провайдер описывают в opencode.json, в Kilo Code в Settings → Providers → Custom provider с типом OpenAI Compatible.

Ни OpenCode, ни Kilo Code не держат нас в своих списках провайдеров. Шлюз подключается как OpenAI-совместимый провайдер, по их документации. 26.10.2026 мы прогнали конфиги из этой статьи вживую в OpenCode 1.19.4 и Kilo Code CLI 7.8.17: стрим и вызов инструмента (запись файла) сработали на deepseek-v4-pro, claude-sonnet-5-5, glm-5-3 и kimi-k3.

Что нужно: харнесс, ключ шлюза и base URL

Чем OpenCode и Kilo Code отличаются от Claude Code

Оба open-source харнесса под MIT: OpenCode живёт в терминале и десктопе, Kilo Code в VS Code, JetBrains и CLI. Модель вы выбираете сами и меняете хоть на каждую задачу. Claude Code заточен под модели Anthropic, про него отдельная страница: Claude Code из России. Codex разбираем в Codex из России.

Про взлом OpenCode 17.10 писали в новостях ИИ-агентов для кода.

Ключ sk-ais- и проверка через /v1/models

Ключ выпускается на aishlyuz.ru/register, шаги есть на странице подключения. Перед настройкой харнесса убедитесь, что ключ живой и какие id на нём есть:

bash
curl https://aishlyuz.ru/v1/models \
  -H "Authorization: Bearer sk-ais-…"

Id моделей берите из этого ответа, а не из памяти. Для первого запроса без расхода есть тестовая модель ais-test-1. Ключ удобно держать в переменной окружения:

bash
export AISHLYUZ_API_KEY="sk-ais-…"

OpenCode: свой провайдер в opencode.json

Конфиг лежит глобально в ~/.config/opencode/opencode.json или в корне проекта. Текущий релиз в npm (opencode-ai, 1.19.4 на 26.10.2026) понимает формат первой версии (provider), его мы и проверяли. OpenCode 2 читает оба формата: свой (providers) и формат первой версии.

Формат OpenCode 2

jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "model": "aishlyuz/deepseek-v4-pro",
  "providers": {
    "aishlyuz": {
      "name": "AIShlyuz",
      "package": "aisdk:@ai-sdk/openai-compatible",
      "settings": {
        "baseURL": "https://aishlyuz.ru/v1",
        "apiKey": "{env:AISHLYUZ_API_KEY}"
      },
      "models": {
        "deepseek-v4-pro": { "name": "DeepSeek V4 Pro" },
        "deepseek-v4-1-flash": { "name": "DeepSeek V4.1 Flash" }
      }
    }
  },
  "agents": {
    "title": { "model": "aishlyuz/deepseek-v4-1-flash" }
  }
}

Ключ объекта providers это id провайдера, он же префикс в ссылке на модель: aishlyuz/deepseek-v4-pro. Ключ в models это id модели в OpenCode. Если он отличается от id у шлюза, добавьте modelID. Поля взяты из гайда миграции: npm из V1 стал package с префиксом aisdk:, options стали settings. Этот вариант мы вживую не запускали: в npm пока стабильна первая версия.

Формат OpenCode 1 (проверен)

Этот конфиг работает в текущем релизе. Переходить на V2 он тоже не мешает: по гайду миграции V2 нормализует поля V1 в памяти и не трогает файл.

json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "aishlyuz/deepseek-v4-pro",
  "small_model": "aishlyuz/deepseek-v4-1-flash",
  "provider": {
    "aishlyuz": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "AIShlyuz",
      "options": {
        "baseURL": "https://aishlyuz.ru/v1",
        "apiKey": "{env:AISHLYUZ_API_KEY}"
      },
      "models": {
        "deepseek-v4-pro": { "name": "DeepSeek V4 Pro" },
        "deepseek-v4-1-flash": { "name": "DeepSeek V4.1 Flash" }
      }
    }
  }
}

Один провайдер держите целиком в одном формате. Смешивать поля V1 и V2 внутри одного провайдера OpenCode не умеет.

Ключ через /connect или переменную окружения

Второй способ задать ключ: в TUI выполнить /connect, пролистать до Other, ввести id провайдера и ключ. Id должен совпадать с ключом провайдера в конфиге, у нас это aishlyuz. Ключ сохраняется в ~/.local/share/opencode/auth.json, а /connect только кладёт ключ, провайдера всё равно описываете в конфиге. Проверить, что ключ на месте: opencode auth list. Список моделей провайдера без запуска TUI: opencode models aishlyuz.

small_model: служебные запросы

OpenCode гоняет служебную модель для мелочей вроде заголовков сессий. По документации по умолчанию это gpt-5-nano на Zen. Чтобы всё шло через ваш провайдер, укажите модель шлюза: в V1 это small_model, в V2 agents.title.model. Мы советуем быструю недорогую модель, в примере deepseek-v4-1-flash.

Модели GPT и Responses API

@ai-sdk/openai-compatible (V1) и @opencode/ai/providers/openai-compatible (V2) работают через /v1/chat/completions. Для моделей на /v1/responses документация советует @ai-sdk/openai в V1 и @opencode/ai/providers/openai-compatible/responses в V2. Пакет можно переопределить у отдельной модели. Шлюз отвечает и на /v1/chat/completions, и на /v1/responses, так что для начала хватает openai-compatible.

Проверка

Запустите OpenCode, выполните /models, провайдер aishlyuz и модели из конфига должны быть в списке. Первый запрос сделайте на ais-test-1: добавьте её в models и выберите. Без TUI то же самое: opencode run -m aishlyuz/ais-test-1 "привет". Тестовая модель отвечает заглушкой и инструменты не вызывает, вызов инструментов проверяйте на настоящей модели.

Kilo Code: Custom provider

Через интерфейс

По документации Kilo:

1. Settings (шестерёнка) → вкладка Providers. 2. Внизу списка Custom provider. 3. Provider ID: aishlyuz. Display name: любое. 4. Provider API: OpenAI Compatible. 5. Base URL: https://aishlyuz.ru/v1. 6. API key: ваш sk-ais-…. 7. Модели Kilo подтянет с /v1/models сам. Если список пустой, нажмите Fetch models после правки адреса или ключа. 8. Submit.

Для OpenAI и xAI Kilo предлагает тип OpenAI Responses, для Anthropic тип Anthropic Messages. Через шлюз начните с OpenAI Compatible.

Через kilo.jsonc

Лимиты токенов и вызовы инструментов задаются в файле. Кладите его в глобальный ~/.config/kilo/kilo.jsonc. В файле модели перечисляются явно: без блока models Kilo CLI провайдера не видит (Provider not found).

jsonc
{
  "$schema": "https://app.kilo.ai/config.json",
  "model": "aishlyuz/deepseek-v4-pro",
  "provider": {
    "aishlyuz": {
      "options": {
        "baseURL": "https://aishlyuz.ru/v1",
        "apiKey": "{env:AISHLYUZ_API_KEY}"
      },
      "models": {
        "deepseek-v4-pro": { "name": "DeepSeek V4 Pro", "tool_call": true },
        "deepseek-v4-1-flash": { "name": "DeepSeek V4.1 Flash", "tool_call": true }
      }
    }
  }
}

{env:…} Kilo подставляет только в доверенном конфиге: глобальный ~/.config/kilo, KILO_CONFIG, конфиг организации. В проектном kilo.json из репозитория ссылка игнорируется, и провайдер не авторизуется. Без tool_call: true агент не сможет править файлы и запускать команды. Для своих моделей задайте ещё limit.context и limit.output, иначе Kilo отключит сжатие контекста. В CLI проверка такая: kilo models aishlyuz, затем kilo run -m aishlyuz/ais-test-1 "привет".

Почему не KILO_AI_GATEWAY_URL

Переменная KILO_AI_GATEWAY_URL меняет адрес собственного шлюза Kilo (PR #15030). Сторонний провайдер она не задаёт. Для своего ключа нужен Custom provider.

Встроенные провайдеры Anthropic и Google

Через шлюз подключайте всё одним Custom provider. Так все модели живут под одним id провайдера с одним ключом.

Cline: OpenAI Compatible

По документации Cline: шестерёнка в панели Cline, API Provider «OpenAI Compatible», Base URL https://aishlyuz.ru/v1, API Key sk-ais-…, Model ID из /v1/models. Кнопка Verify проверит соединение. В Model Configuration можно задать окно контекста и максимум вывода.

Какую модель выбрать

Модель это расходник, берите под задачу. Все id ниже есть в нашем каталоге, цены за токены в каталоге моделей.

ЗадачаМодельСтрим и инструменты в OpenCode и Kilo (26.10.2026)
Основная работа в агентеdeepseek-v4-proработают
small_model, подагенты, массовые правкиdeepseek-v4-1-flashне проверяли отдельно
Сложные задачи на модели Anthropicclaude-sonnet-5-5работают
Open-weights альтернативаglm-5-3работают
Open-weights альтернативаkimi-k3работают

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

MCP тем же ключом

OpenCode и Kilo Code понимают удалённые MCP-серверы, а у шлюза есть десятки проверенных MCP-инструментов по адресу https://aishlyuz.ru/mcp с заголовком Authorization: Bearer sk-ais-…. В OpenCode 2 это блок mcp.servers с "type": "remote", "oauth": false и headers (доки). Что такое MCP и зачем он агенту: что такое MCP-сервер.

Типичные ошибки

Остальное собрали в типичных ошибках подключения. Если сравниваете шлюзы, посмотрите карточки AITunnel и Polza AI.

Частые вопросы

Как подключить свой API-ключ к OpenCode?

Опишите custom provider в opencode.json с base URL https://aishlyuz.ru/v1. Ключ задайте через /connect → Other или переменную окружения.

Какой base URL указывать в OpenCode и Kilo Code?

https://aishlyuz.ru/v1, с /v1 и без слеша на конце. Харнесс сам добавит /chat/completions.

Как подключить Kilo Code к своему провайдеру?

Settings → Providers → Custom provider, тип OpenAI Compatible, base URL и ключ. Модели подтянутся с /v1/models.

Нужен ли аккаунт OpenCode Zen или Kilo?

Для своего провайдера хватает ключа шлюза: в нашей проверке OpenCode и Kilo CLI работали без входа в аккаунт. Аккаунт Zen или Kilo нужен для их собственных моделей.

Работает ли opencode.json от первой версии в OpenCode 2?

Да, V2 читает формат V1 без переписывания файла. Сам формат V1 мы проверили вживую в текущем релизе 1.19.4.

Какие модели доступны и сколько это стоит?

Список отдаёт GET /v1/models, цены за токены на /modeli. AIShlyuz — один ключ ко всем моделям, баланс сейчас начисляем по запросу в t.me/aishlyuz.

Можно ли так же подключить Cline? А Cursor?

Cline подключается через провайдера OpenAI Compatible. В Cursor ключ тоже задаётся в интерфейсе, но его работа из России сейчас не подтверждена, подробности в разборе Cursor.