Загрузка...

Настройка Command Code через RouterAI

Command Code (cmd) — терминальный coding-агент, который по умолчанию работает через собственный сервис Command Code. Режим BYOK (Bring Your Own Key, сейчас в beta) позволяет подключить любой OpenAI- или Anthropic-совместимый endpoint со своим ключом. Запросы к такому провайдеру идут напрямую с вашей машины, минуя серверы Command Code. Через RouterAI вы получаете Claude, GPT, DeepSeek и GLM под одним ключом, без VPN и с оплатой в рублях.

Не путайте BYOK с Provider API самого Command Code: здесь вы подключаете RouterAI как внешнего провайдера, а не используете модели и тариф Command Code.

Требования

  • Node.js 22 или новее (на Node 20 и ниже CLI не запускается).
  • Аккаунт на RouterAI с положительным балансом и API-ключ из раздела «Ключи API».
  • Аккаунт Command Code: при первом запуске CLI просит войти (cmd login).

Установка

npm i -g command-code@latest
cmd --version

CLI доступен под именами command-code и cmd (в нативном Windows — cmdc). Войдите в аккаунт и запустите агента в папке проекта:

cmd login
cd my-project
cmd

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

Провайдеров можно добавить двумя способами: через меню /connect или правкой файла ~/.commandcode/providers.json.

Через команду /connect

В сессии cmd введите /connect. Меню показывает Command Code, GitHub Copilot, OpenAI ChatGPT/Codex и пункт (BYOK) Add your own provider; уже добавленные провайдеры отображаются в этом же списке с числом моделей.

Меню /connect в Command Code: Command Code, GitHub Copilot, OpenAI ChatGPT/Codex, RouterAI и RouterAI (Anthropic) с зелёными галочками, пункт (BYOK) Add your own provider

  1. Выберите (BYOK) Add your own provider. Откроется форма Add a provider.
  2. provider id — короткое имя провайдера латиницей: введите routerai (можно выбрать и из списка известных провайдеров). Оно станет именем записи в providers.json и префиксом моделей (routerai/anthropic/claude-sonnet-5.5).
  3. What does the endpoint speak? — тип протокола (клавиши ↑/↓ и Enter):
Wire в меню Значение в providers.json Когда выбирать Endpoint RouterAI
OpenAI-compatible (по умолчанию) openai-completions модели через /chat/completions https://routerai.ru/api/v1
OpenAI Responses openai-responses модели через /responses https://routerai.ru/api/v1
Anthropic wire anthropic-messages Claude через Messages API https://routerai.ru/api
  1. base URL — корень API из таблицы. Если вставить адрес с хвостом (…/v1/chat/completions), CLI сам обрежет его до корня.
  2. key — ваш ключ RouterAI (sk-xxxxxxxxxxxxxxxx). Вводимые символы скрыты звёздочками, ключ сохраняется в ~/.commandcode/auth.json, а не в providers.json.

Форма Add a provider · routerai: поле key со скрытым значением

  1. models — меню запрашивает список у endpoint (/models). Если автоматически получить его не удалось, введите точные id через запятую, например anthropic/claude-sonnet-5.5, openai/gpt-5.5, deepseek/deepseek-v4-flash, z-ai/glm-5.3, и нажмите Enter. Список можно поправить и позже в providers.json.

После этого модели провайдера появятся в /model рядом с моделями Command Code.

Ручная правка providers.json

Файл ~/.commandcode/providers.json можно править руками, изменения подхватываются сразу (откройте /connect или /model заново). Пример с двумя провайдерами — OpenAI-совместимым и Anthropic:

{
  "provider": {
    "routerai": {
      "name": "RouterAI",
      "baseURL": "https://routerai.ru/api/v1",
      "apiKey": "$ROUTERAI_API_KEY",
      "models": {
        "anthropic/claude-sonnet-5.5": { "name": "Claude Sonnet 5.5" },
        "openai/gpt-5.5": { "name": "GPT-5.5" },
        "deepseek/deepseek-v4-flash": { "name": "DeepSeek V4 Flash" },
        "z-ai/glm-5.3": { "name": "GLM 5.3" }
      }
    },
    "routerai-claude": {
      "name": "RouterAI (Anthropic)",
      "api": "anthropic-messages",
      "baseURL": "https://routerai.ru/api",
      "apiKey": "$ROUTERAI_API_KEY",
      "models": {
        "anthropic/claude-haiku-5.5": { "name": "Claude Haiku 5.5" }
      }
    }
  }
}

Что важно:

  • baseURL и models обязательны; без корректного URL или без единой модели провайдер пропускается.
  • В apiKey пишется ссылка на ключ, а не сам ключ: "$ROUTERAI_API_KEY" читает переменную окружения, "!команда" берёт ключ из вывода команды. Ключ, сохранённый через /connect, имеет приоритет над этим полем (в карточке провайдера это видно по надписи «overrides $ROUTERAI_API_KEY»). Сырой ключ в этом поле CLI отвергает.
  • Для contextWindow (по умолчанию 200K), maxOutput и reasoningEfforts (low, medium, high, xhigh, max) задавайте значения из карточки модели в каталоге.
  • Один провайдер может обслуживать модели по разным протоколам: у отдельной модели можно указать "api": "openai-responses" или "api": "anthropic-messages".

Экспортируйте ключ в окружение (или сохраните его через /connect):

export ROUTERAI_API_KEY=sk-xxxxxxxxxxxxxxxx

Выбор модели

Откройте /model и выберите модель в секции провайдера RouterAI (помечена (byok)): список можно отфильтровать, набрав «RouterAI». Id берите из каталога моделей.

Меню /model: модели провайдеров RouterAI (byok) и RouterAI (Anthropic) (byok)

Модель Для чего
anthropic/claude-sonnet-5.5 основная модель для кода и агентных задач
anthropic/claude-haiku-5.5 быстрые и дешёвые правки, объяснения
openai/gpt-5.5 сложные задачи, рефакторинг
deepseek/deepseek-v4-flash недорогой вариант для повседневной работы
z-ai/glm-5.3 кодинг с большим контекстом

Модель на один запуск можно задать флагом: cmd -m routerai/anthropic/claude-sonnet-5.5.

Проверка подключения

  1. В /connect строка провайдера должна быть с зелёной галочкой ✓ и числом моделей.
  2. Выберите модель RouterAI в /model и отправьте короткий запрос, например «Кратко объясни, что делает invoices.js». В строке состояния вверху видна выбранная модель (routerai/anthropic/claude-sonnet-5.5 · routerai (byok)), а ниже — ответ.

Сессия Command Code с моделью routerai/anthropic/claude-sonnet-5.5: агент читает invoices.js и отвечает

  1. Можно проверить ключ отдельно:
curl -s https://routerai.ru/api/v1/models -H "Authorization: Bearer $ROUTERAI_API_KEY" | head -c 200

Решение проблем

  • Провайдера нет в /model. Скорее всего, baseURL пропущен или неверен, либо в models нет ни одной модели. Проверьте JSON и используйте https://routerai.ru/api/v1 (для Anthropic wire — https://routerai.ru/api).
  • Провайдер пропущен из-за api. Допустимы только openai-completions, openai-responses, anthropic-messages; любое другое значение пропускает провайдер.
  • Ошибка 401 («rejected your API key»). Ключ неверен: сохранённый через /connect ключ перекрывает переменную ROUTERAI_API_KEY. Откройте /connect, выберите провайдера RouterAI и в карточке нажмите r (заменить ключ) или c (очистить сохранённый ключ, тогда снова действует apiKey из providers.json).
  • Ключ в apiKey отвергнут. В этом поле хранится только ссылка ($VAR, !команда); сам ключ вводится через /connect.
  • Ошибка модели (404/400). Id не совпадает с каталогом. Сверьтесь с каталогом и обновите список клавишей u в карточке провайдера.
  • Лишний /v1 в Anthropic-провайдере. Для Anthropic wire указывайте корень https://routerai.ru/api, CLI сам добавит /v1.
  • «'routerai' is already declared in providers.json». Провайдер с таким id уже есть в файле: управляйте им из /connect (карточка провайдера: enter — сохранить, r — заменить ключ, c — очистить, u — обновить модели, d — удалить) или правьте файл.

Что дальше

Инструкция проверена на Command Code 1.88.5.