# Настройка Kimi Code CLI

> **Последняя проверка**: 2026-10-13 · 📄 По официальной документации (Kimi Code CLI 2.1.1)

## Кратко

| Параметр | Значение |
|---|---|
| Доступные модели | Claude ✅ (`type = "anthropic"`) · GPT ✅ · Китайские модели ✅ (`type = "openai"`) · Gemini ❌ (QCode не предоставляет семейство Gemini — используйте Claude, GPT или китайскую модель) |
| Протокол и Base URL | Anthropic Messages: `https://api.qcode.cc/api` · OpenAI Chat Completions: `https://api.qcode.cc/openai/v1` |
| Где настраивать | `~/.kimi-code/config.toml` — по одной таблице `[providers.<name>]` на протокол и по записи `[models.<alias>]` на модель |
| Официальная документация | [moonshotai.github.io/kimi-code](https://moonshotai.github.io/kimi-code/en/) |

[Kimi Code CLI](https://github.com/MoonshotAI/kimi-code) — это агент для программирования от Moonshot AI, работающий в терминале. Документация описывает три способа получить модель: вход в управляемый сервис Kimi Code в один клик, «connecting Claude with an Anthropic API key, or connecting third-party inference services via the OpenAI-compatible protocol». Последние два — ровно те две конечные точки, которые открывает QCode, поэтому одним ключом QCode закрываются Claude, GPT и китайские модели в одном и том же инструменте. Актуальный на момент подготовки страницы выпуск — 2.1.1 (2026-09-24).

## Какой протокол выбрать

Поле `type` в таблице `[providers.<name>]` определяет, какая реализация протокола будет использована. Официальный справочник перечисляет шесть значений — `kimi`, `anthropic`, `openai`, `openai_responses`, `google-genai`, `vertexai`, — а вам нужны два.

| Нужные модели | `type` | `base_url` |
|---|---|---|
| `claude-sonnet-5`, `claude-opus-5`, `claude-haiku-5-5` | `anthropic` | `https://api.qcode.cc/api` |
| `gpt-6.1-sol`, `gpt-6-sol` и китайские семейства | `openai` | `https://api.qcode.cc/openai/v1` |

🔴 **Никогда не направляйте модели Claude на OpenAI-совместимую конечную точку.** QCode отдаёт семейство Claude только через Anthropic Messages; идентификатор `claude-*`, отправленный на `https://api.qcode.cc/openai/v1`, будет отклонён. Две конечные точки не взаимозаменяемы — см. [Конечные точки и пути API](/docs/getting-started/endpoints-and-api-paths).

Base URL вводите ровно как в таблице: остановитесь на `/api` или `/openai/v1`, **не** дописывайте `/v1/messages` и `/chat/completions` и **не** оставляйте слэш в конце.

## Установка

Официально доступны два пути: установочный скрипт (рекомендуется, не требует заранее установленного Node.js) и глобальная установка через npm.

```sh
# macOS / Linux
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash

# Windows (PowerShell)
irm https://code.kimi.com/kimi-code/install.ps1 | iex

# npm — сначала проверьте версию: node --version
npm install -g @moonshot-ai/kimi-code
```

Для пути через npm **требуется Node.js 22.19.0 или новее**. Скрипт сам загружает последний выпуск, проверяет контрольную сумму и ставит исполняемый файл `kimi` в `PATH`. Убедившись, что команда доступна, перейдите в каталог проекта и запустите `kimi`, чтобы открыть интерактивный интерфейс.

```sh
kimi --version
cd your-project
kimi
```

## Настройка Claude (`type = "anthropic"`)

Учётные данные читаются только из файла конфигурации. Документация говорит прямо: CLI «does **not** fall back to shell environment variables automatically: running `export KIMI_API_KEY` in the terminal does not give any provider its key». То есть ключ либо пишется в файл, либо указывается `api_key_env` с именем переменной, которую CLI перечитывает на каждый запрос.

```toml
# ~/.kimi-code/config.toml
default_model = "claude-sonnet-5"

[providers.qcode]
type = "anthropic"
base_url = "https://api.qcode.cc/api"
api_key_env = "QCODE_API_KEY"

[models."claude-sonnet-5"]
provider = "qcode"
model = "claude-sonnet-5"
max_context_size = 262144
```

```sh
export QCODE_API_KEY=cr_your_qcode_key
```

`qcode` — просто имя провайдера, которое вы придумали; каждая запись `[models.<alias>]` ссылается на него через обязательное поле `provider`. Если переменную окружения заводить не хочется, замените `api_key_env` на `api_key = "cr_your_qcode_key"`. Документация отмечает, что это значение хранится в файле открытым текстом, а `api_key` и `api_key_env` взаимоисключающи — задавать нужно ровно одно.

| Поле | Таблица | Что указывать |
|---|---|---|
| `type` | providers | `anthropic` — провайдер, описанный как «For connecting to the Claude API» |
| `base_url` | providers | `https://api.qcode.cc/api`; без значения следует умолчанию Anthropic SDK |
| `api_key` / `api_key_env` | providers | сам ключ или имя переменной, где он лежит |
| `custom_headers` | providers | необязательная таблица дополнительных HTTP-заголовков для каждого запроса |
| `provider` | models | обязательно — имя провайдера, определённое выше |
| `model` | models | обязательно — идентификатор, отправляемый на сервер, например `claude-sonnet-5` |
| `max_context_size` | models | обязательно, не менее 1 токена — `262144` в примере выше лишь заглушка; укажите длину контекста той модели, которую реально используете |
| `max_output_size` | models | необязательно, ограничение вывода, соответствует `max_tokens`; сейчас его читает только провайдер `anthropic` |

> **Материковый Китай**: Anthropic-точка отвечает также на `https://asia.qcode.cc/api` и `https://us.qcode.cc/api` — ключ тот же, меняется только хост в `base_url`.
> **Флаги возможностей**: для стандартных имён моделей Claude vision, tool use и Thinking включаются сами; модель, которую CLI не знает, требует явного `capabilities` в `[models.<alias>]` (`thinking`, `image_in`, `tool_use` и т. д.), и эти теги только добавляются, но не удаляются.

## Настройка GPT и китайских моделей (`type = "openai"`)

Тот же файл, другая конечная точка. Про тип `openai` в документации сказано: «For connecting to the OpenAI Chat Completions protocol, as well as any third-party service compatible with that protocol (override `base_url` as needed)». Встроенное значение — `https://api.openai.com/v1`, поэтому именно переопределение `base_url` превращает это соединение из OpenAI в QCode.

```toml
[providers.qcode-openai]
type = "openai"
base_url = "https://api.qcode.cc/openai/v1"
api_key_env = "QCODE_API_KEY"

[models."gpt-6.1-sol"]
provider = "qcode-openai"
model = "gpt-6.1-sol"
max_context_size = 262144

[models."deepseek-v4.1-flash"]
provider = "qcode-openai"
model = "deepseek-v4.1-flash"
max_context_size = 262144

[models."qwen3.8-max"]
provider = "qcode-openai"
model = "qwen3.8-max"
max_context_size = 262144
```

- **Алиасы с точкой берутся в кавычки.** `gpt-6.1-sol` и `qwen3.8-max` нужно писать как `[models."qwen3.8-max"]`; иначе TOML прочитает точку как разделитель вложенных таблиц. Имена полей при этом всегда в snake_case (`default_model`, `max_context_size`).
- Числа выше — условные значения для обязательного поля. Фактическую длину контекста берите из спецификации самой модели; оплата берётся за токены, цены по моделям — на [qcode.cc/models](https://qcode.cc/models).
- Оба провайдера могут сосуществовать в одном конфиге. Модель на сессию задаётся флагом `-m <алиас>` (параметры запуска имеют приоритет над файлом, но только на время текущего запуска), а в TUI переключаются через `/model`. Значение `default_model` обязательно должно быть одним из определённых вами алиасов.
- Вывод размышлений: для сторонних reasoning-моделей поле `reasoning_content` и подстановку `reasoning_effort` CLI обрабатывает сам; если ваш шлюз отдаёт это содержимое под нестандартным именем поля, задайте `reasoning_key` на алиасе модели.
- Другие идентификаторы этой конечной точки — в разделе [Китайские модели](/docs/usage/cn-models). Идентификаторы `claude-*` здесь **не работают**.

## Проверка связи

Сначала проверьте файлы, не запуская TUI:

```sh
kimi doctor
kimi doctor config
```

`kimi doctor` выполняет «Validate `config.toml` and `tui.toml` without starting the TUI or modifying either file» и завершается кодом `0`, когда все проверяемые файлы корректны или пропущены, и `1`, если какой-то отсутствует или некорректен. Документированный охват проверки — только эти два файла; о том, что команда проверяет доступность конечной точки, в документации не сказано.

Посмотрите, что CLI действительно зарегистрировал:

```sh
kimi provider list
```

Затем введите `/provider` в TUI — откроется интерактивный provider manager, где настроенные провайдеры можно просматривать, добавлять и удалять. `kimi provider` — его неинтерактивный эквивалент для скриптов и CI.

В конце запросите конечную точку напрямую (подставьте свой ключ):

```bash
KEY="cr_your_qcode_key"
curl -X POST https://api.qcode.cc/api/v1/messages \
  -H "x-api-key: $KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}'
```

Страница собрана по документации; **запросы выше не выполнялись с настоящим ключом**, поэтому никакой код состояния здесь не обещается. Читайте тело JSON-ошибки: по нему видно, ошибка ли это в пути, в ключе или в том, что модель недоступна на этой конечной точке.

> У официально описанного пути через каталог сторонних сервисов есть короткая команда: `kimi provider catalog add anthropic --api-key sk-ant-... --default-model claude-opus-4-7`. Протокол, base URL и список моделей в ней берёт каталог, а `--base-url` позволяет переопределить адрес конечной точки (`--default-model` записывает `default_model` как `<providerId>/<modelId>`). Идентификатор в примере взят из публичного каталога, а не из QCode; числится ли там QCode, страница не проверяла, поэтому рекомендует вариант с TOML выше.

## Диагностика и известные ограничения

| Симптом | Что говорит документация | Что делать |
|---|---|---|
| Запуск падает с сообщением об отсутствии учётных данных | Приоритет: `api_key` или `api_key_env` (ровно одно), затем ключ в таблице `[providers.<name>.env]`, а если нет ничего — запуск завершается ошибкой | Принятые имена ключей для этого типа — `ANTHROPIC_API_KEY` и `ANTHROPIC_BASE_URL`, их пишут в `[providers.qcode.env]`; это ключи файла конфигурации, а не поиск в shell. При обновлении `/models` провайдер с невыставленной или пустой переменной падает отдельно, не затрагивая остальные |
| `export ANTHROPIC_API_KEY=…` будто не срабатывает | Переменные shell не являются общим запасным путём; в shell смотрят только `api_key_env` провайдера и семейство `KIMI_MODEL_*` | Используйте `api_key_env`. `KIMI_MODEL_PROVIDER_TYPE` принимает `kimi`, `anthropic`, `openai`, а с выставленным `KIMI_MODEL_NAME` CLI собирает временный провайдер в памяти, который исчезает после перезапуска |
| Правки в файле не применяются | Параметры запуска важнее файла и действуют только на текущую сессию, сам файл читается при старте | Перезапустите `kimi` или выполните `/reload`, чтобы применить свежий `config.toml` |
| Ошибка конфигурации или неизвестный алиас, если алиас с точкой не взят в кавычки | `default_model` обязан быть определён в `models`, а алиас с точкой без кавычек превращается во вложенную таблицу | Возьмите алиас в кавычки: `[models."qwen3.8-max"]` |
| Ошибка 404 или неверный путь | Документация не описывает, как именно сторонний шлюз собирает путь | `base_url` заканчивается на `/api` (Claude) или `/openai/v1` (GPT и китайские модели): без слэша на конце и без ручного пути API |
| Claude отвергается на провайдере `openai` | — | QCode не отдаёт семейство Claude на этой конечной точке; вернитесь к `type = "anthropic"` |
| Разным проектам нужны разные конечные точки | Механизма проектной конфигурации нет — CLI читает единственный пользовательский файл, и куда бы вы его ни перенесли, файл называется `config.toml` | Направьте `KIMI_CODE_HOME` на отдельный каталог данных для каждого проекта |

Помимо самого инструмента:

- **Gemini**: у Kimi Code есть тип `google-genai` для прямого доступа к API Google Gemini, но QCode не предоставляет семейство Gemini — используйте Claude, GPT или китайскую модель.
- **luna**: QCode не предоставляет `gpt-6-luna` и `gpt-5.6-luna`; возьмите другой идентификатор GPT — `gpt-6.1-sol`, `gpt-6-sol` или `gpt-5.6-terra`.
- `max_output_size` читает только провайдер `anthropic`, поэтому ограничение вывода на алиасе `openai` не действует.
- Как подобрать модель под задачу — в разделе [Выбор модели](/docs/usage/model-selection); если сбой не связан с этим инструментом, идите по шагам [руководства по устранению неполадок](/docs/reference/troubleshooting).

## Смежные документы

- [Конечные точки и пути API](/docs/getting-started/endpoints-and-api-paths) — протоколы против семейств моделей
- [Совместимость инструментов](/docs/ide/tool-compatibility) — какой инструмент какой конечной точкой пользуется
- [Китайские модели](/docs/usage/cn-models) — идентификаторы и пути конечной точки OpenAI
- [Выбор модели](/docs/usage/model-selection) — модель под тип задачи
- [Настройка OpenCode](/docs/ide/opencode) — другой терминальный агент на тех же двух конечных точках