Разделы базы знаний ▾

Навигация

▸ Начните здесь По ролям

Категории

Инструменты 52
Глоссарий 12

Инструменты

Kimi Code CLI: агент Moonshot AI на своём ключе через Gonka

Kimi Code CLI (команда kimi) — терминальный агент для разработки от Moonshot AI: читает и правит код, запускает команды, ищет по файлам и раздаёт подзадачи субагентам. Нынешняя версия пришла на смену Python-клиенту kimi-cli: она написана на TypeScript, ставится одним бинарником и открыта под лицензией MIT. Всё ниже привязано к версии 2.0.2 от 19 сентября 2026 года — на ней мы прошли путь от установки до ответа агента 23 сентября.

Штатно Kimi Code работает на моделях Kimi через вход в аккаунт (/login), но провайдеров в нём может быть сколько угодно: любой OpenAI-совместимый endpoint описывается несколькими строками в ~/.kimi-code/config.toml, и аккаунт Moonshot для этого не нужен. JoinGonka Gateway — такой endpoint для децентрализованной сети Gonka.

Сразу о главном: моделей Kimi в сети Gonka сейчас нет — Kimi K2.6 сеть обслуживала с мая по сентябрь 2026 года. Сегодня в ней работают DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7, и этот гайд — о том, как запустить Kimi Code на них. Агент остаётся тем же, меняются модель и цена: $0.0069 за миллион входных токенов, одна для всех моделей сети. После подтверждения адреса на счёт придут 3M бесплатных токенов — их хватит, чтобы повторить всё это самому.

Быстрый старт: установка и одна команда

Шаг 1: поставить Kimi Code. Официальные способы из документации:

# macOS and Linux: prebuilt binary, no Node.js needed
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash

# Windows (PowerShell); Git for Windows is required before the first run
irm https://code.kimi.com/kimi-code/install.ps1 | iex

# npm (Node.js 22.19 or newer)
npm install -g @moonshot-ai/kimi-code

Скрипт кладёт бинарник в ~/.kimi-code/bin/kimi и дописывает этот каталог в PATH через файл настроек оболочки. Сборки у него только под glibc: на Alpine и других системах с musl он остановится и предложит npm. Откройте терминал заново и проверьте: kimi --version.

Шаг 2: получить ключ. Зарегистрируйтесь на gate.joingonka.ai/register, подтвердите адрес и создайте в разделе «API-ключи» ключ с префиксом jg-.

Шаг 3: запустить установщик.

npx @joingonka/setup --tool kimi-code

Установщик спросит ключ (в аргументах командной строки он не передаётся) и допишет в ~/.kimi-code/config.toml только свои таблицы:

  • провайдера [providers.joingonka] с типом openai — это протокол Chat Completions, — адресом шлюза и ключом в поле api_key; файл получит права 600;
  • по таблице [models."joingonka/…"] на каждую модель сети — с настоящими окном контекста и потолком ответа и явными возможностями: вызов инструментов всем, рассуждение — DeepSeek V4 Flash и GLM-5.3 Flash, у MiniMax M2.7 только инструменты;
  • default_model — DeepSeek V4 Flash, если модель по умолчанию ещё не выбрана или указывает на ушедшую из сети модель шлюза; выбор другого провайдера без флага --model не трогает, а подсказывает команду для разового запуска;
  • сохранит копию прежнего файла, чужих провайдеров и ваши поля в таблицах шлюза не тронет, а в конце отправит живой запрос на шлюз и скажет, приняты ли ключ, адрес и модель.

Так выглядел вывод в нашем прогоне (сокращено):

Configured provider "joingonka" in ~/.kimi-code/config.toml
Base URL: https://gate.joingonka.ai/v1 (provider type "openai" — Chat Completions)
Models: joingonka/MiniMaxAI/MiniMax-M2.7, joingonka/deepseek-ai/DeepSeek-V4-Flash-0731, joingonka/zai-org/GLM-5.3-Flash
Default model: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
…
✓ Verified: the gateway accepted the key, base URL and model.

Другую модель по умолчанию задаёт флаг --model (glm, minimax или полный идентификатор); режим без вопросов берёт ключ из переменной окружения:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool kimi-code --model glm --non-interactive

Каталог данных, перенесённый переменной KIMI_CODE_HOME, установщик учитывает сам. А вот ~/.kimi — каталог прежнего Python-клиента kimi-cli: Kimi Code 2.x его не читает, а при первом запуске предлагает перенести оттуда настройки (то же делает kimi migrate).

Ручная настройка: config.toml

Всё, что делает установщик, пишется и руками. Kimi Code хранит настройки в TOML; ключи таблиц с точкой или косой чертой берутся в кавычки. Полный фрагмент для сети Gonka:

default_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"

[providers.joingonka]
type = "openai"
base_url = "https://gate.joingonka.ai/v1"
api_key = "jg-your-key"

[models."joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"]
provider = "joingonka"
model = "deepseek-ai/DeepSeek-V4-Flash-0731"
max_context_size = 380000
max_output_size = 32768
capabilities = ["thinking", "tool_use"]
display_name = "DeepSeek V4 Flash (Gonka)"

[models."joingonka/zai-org/GLM-5.3-Flash"]
provider = "joingonka"
model = "zai-org/GLM-5.3-Flash"
max_context_size = 390000
max_output_size = 8192
capabilities = ["thinking", "tool_use"]
display_name = "GLM 5.3 Flash (Gonka)"

# MiniMax M2.7, unlike DeepSeek and GLM, is declared without thinking
[models."joingonka/MiniMaxAI/MiniMax-M2.7"]
provider = "joingonka"
model = "MiniMaxAI/MiniMax-M2.7"
max_context_size = 200000
max_output_size = 8192
capabilities = ["tool_use"]
display_name = "MiniMax M2.7 (Gonka)"
ПолеЗначениеЧто важно
default_modelалиас моделиСсылается на имя таблицы [models."…"], а не на идентификатор модели
max_context_sizeокно моделиОбязательное поле; по нему агент решает, когда сжимать контекст
max_output_sizeпотолок ответаУходит в запрос как max_tokens — мы проверили это на проводе. Без поля Kimi Code запросил бы до 131 072 токенов ответа, больше, чем отдают модели сети
capabilitiesthinking, tool_useВозможности незнакомых моделей Kimi Code по имени не угадывает — объявляйте явно

Где держать ключ. Из окружения оболочки Kimi Code ключей не берёт: export OPENAI_API_KEY=… на него не действует. Способов два, и одновременно их использовать нельзя:

СпособЗаписьКак ведёт себя
Ключ в файлеapi_key = "jg-…"Так пишет установщик; работает из любого окружения, файл держите с правами 600
Имя переменнойapi_key_env = "JOINGONKA_API_KEY"Значение читается из окружения процесса на каждом запросе; без переменной запуск падает с ошибкой, в которой она названа

Оба поля в одной таблице Kimi Code отвергнет при запуске: has both apiKey and apiKeyEnv set in config.toml - they are mutually exclusive. Учтите, что kimi doctor такой конфликт не ловит — он проверяет только форму файла.

Какой тип провайдера выбрать. Kimi Code умеет несколько протоколов, шлюз тоже:

typebase_urlКогда выбирать
openaihttps://gate.joingonka.ai/v1Основной вариант: канонический путь шлюза, его пишет установщик
anthropichttps://gate.joingonka.aiФормат Anthropic Messages, путь /v1/messages клиент дописывает сам; полный цикл с инструментами в нашем прогоне прошёл

Один провайдер в Kimi Code говорит на одном протоколе, поэтому второй протокол — это второй провайдер под другим именем. Интерактивно провайдеров добавляет и удаляет команда /provider внутри агента.

Модели, Thinking и субагенты

Модель в Kimi Code — это алиас, имя таблицы [models."…"]. Установщик называет их по схеме joingonka/<model-id>, как сам Kimi Code называет свои (kimi-code/k3), и именно алиас нужен везде, где выбирается модель. Идентификатор без префикса, например MiniMaxAI/MiniMax-M2.7, Kimi Code не найдёт.

ГдеКакСохраняется
config.tomldefault_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"да, для новых сессий
Флаг запускаkimi -m "joingonka/zai-org/GLM-5.3-Flash"нет, только этот запуск
Интерфейс/model, выбор в спискеEnter перепишет default_model, Alt+S — только на текущую сессию

В нашем прогоне /model выглядел так:

Select a model  (type to search)
Tab toggle provider · ↑↓ navigate · Enter select · Alt+S session-only · Esc cancel

 All   joingonka

   MiniMax M2.7 (Gonka)       joingonka
 ❯ DeepSeek V4 Flash (Gonka)  joingonka ← current
   GLM 5.3 Flash (Gonka)      joingonka

 Thinking  (←→ to switch)
  [ On ]    Off

Переключатель Thinking. Тумблер рассуждения под списком на моделях сети сам по себе ничего не меняет: уровень рассуждения Kimi Code отправляет только моделям, у которых объявлены уровни. Для GLM-5.3 Flash это стоит сделать — у неё рассуждение выключается значением low (подробнее — в обзоре модели). Допишите в таблицу модели три поля:

[models."joingonka/zai-org/GLM-5.3-Flash"]
# … fields written by the installer …
support_efforts = ["low", "high"]
default_effort = "high"
off_effort = "low"

Мы проверили, что уходит на шлюз: с включённым Thinking Kimi Code шлёт reasoning_effort: "high", и модель рассуждает; с выключенным — "low", и ответ приходит без блока рассуждений. Повторный запуск установщика эти поля не тронет: он правит только свои ключи.

Модель для субагентов. Встроенные субагенты (coder, explore, plan) по умолчанию работают на модели основного агента. Раздел [secondary_model] даёт им пул, из которого основной агент выбирает сам, ориентируясь на подсказки. В пул годится любой алиас — DeepSeek V4 Flash, GLM-5.3 Flash или MiniMax M2.7:

[secondary_model]
default_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"

[secondary_model.models]
"joingonka/deepseek-ai/DeepSeek-V4-Flash-0731" = "Long context and long output: big reads and edits."
"joingonka/zai-org/GLM-5.3-Flash" = "Reasoning model for tricky logic and debugging."

Ключи пула обязаны совпадать с алиасами из [models]: по документации висячая ссылка не даёт создать сессию. Строка для MiniMax M2.7 добавляется так же; ссылки на модели, ушедшие из сети, установщик при повторном запуске вычистит сам.

Какую модель выбрать. Цена у всех моделей сети одна, поэтому выбор — про поведение. Так они вели себя в Kimi Code 2.0.2 на задаче «прочитай файл и найди ошибку» (сверено 23 сентября 2026):

МодельКонтекст / ответКак ведёт себя в Kimi Code
DeepSeek V4 Flash380K / 32768Выбор установщика: большое окно и самый высокий потолок ответа в сети. Задачу решает верно
GLM-5.3 Flash390K / 8192Рассуждающая модель: рассуждение идёт отдельным потоком (в kimi -p — в stderr), ответ — в stdout. Рассуждение входит в лимит ответа
MiniMax M2.7200K / 8192Задачу решает верно за два шага; рассуждение идёт отдельным потоком (в kimi -p — в stderr), в stdout — только ответ

Проверка: что должно произойти

Сначала убедитесь, что Kimi Code видит провайдера и файл разбирается без ошибок:

$ kimi provider list
joingonka  type=openai  models=3  source=inline

Default model: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731

$ kimi doctor
OK config.toml  ~/.kimi-code/config.toml

Вывод kimi provider list --json никуда не публикуйте: ключ в нём стоит открытым текстом.

Затем — разовый прогон. Положите в каталог calc.py с функцией сложения, которая на самом деле вычитает, и попросите найти ошибку:

kimi -p "Read calc.py and tell me in one sentence whether it has a bug."

В режиме -p ответ идёт в stdout, а рассуждение и ход инструментов — в stderr, так что вывод удобно разбирать скриптом. Так ответила GLM-5.3 Flash:

• Yes: the `add` function in calc.py:2 returns `a - b` instead of `a + b`, so `add(2, 3)` prints `-1`.

Учтите: в -p Kimi Code ничего не спрашивает и сам исполняет команды — в нашем прогоне модель без спроса попробовала запустить python3, чтобы проверить догадку. Первый запуск интерфейса в новом каталоге начинается с вопроса Trust this folder? — он касается MCP-серверов проекта, — а на экране приветствия видна модель: Model: DeepSeek V4 Flash (Gonka). Вторая половина проверки — кабинет шлюза: в разделе «Использование» запрос появится в разбивке по моделям и по ключам.

Если что-то пошло не так, диагноз обычно читается прямо из сообщения:

Что видноЧто это значитЧто сделать
No model configured. Run `kimi` and use /login to sign in …Провайдер не настроен или default_model пустЗапустите установщик или впишите default_model
Model "deepseek-ai/DeepSeek-V4-Flash-0731" is not configured in config.toml.В -m передан идентификатор модели, а не алиасДобавьте префикс: joingonka/deepseek-ai/…
provider.auth_error: 401 Invalid API keyШлюз не принял ключПроверьте api_key в [providers.joingonka]: переменные оболочки Kimi Code не читает
declares api_key_env = "JOINGONKA_API_KEY" … but the environment variable is not set or is emptyВыбран способ с переменной, а её нет в окруженииЭкспортируйте переменную до запуска или верните api_key
429 … currently overloaded in the Gonka network (rate limit)У модели в сети кончилась свободная ёмкостьТакие ошибки Kimi Code повторяет сам; затянулось — смените модель через /model. Состояние видно на странице статуса

Сколько это стоит

К каждой вашей фразе Kimi Code добавляет системный промпт и описания двух с половиной десятков встроенных инструментов, а задача обычно занимает несколько шагов. В нашем прогоне каждый шаг нёс около 20 тысяч входных токенов, и «прочитай файл, найди ошибку» заняла два шага — примерно 40 тысяч токенов, почти все на входе. Поэтому цена за токен здесь решает.

Через JoinGonka Gateway токены стоят $0.0069 за миллион на входе и $0.021 за миллион на выходе — цена одинакова для всех моделей сети и подставляется на этой странице из живого источника.

СценарийРасходЧерез Gateway
Разовая задача: прочитать файл, найти ошибку~40K токеновсотые доли цента
День активной работы3-7M токеновнесколько центов
Месяц активной разработки~150M токеновоколо доллара

Оценки в правой колонке — по ценам на сентябрь 2026. Для сравнения — как вообще можно платить за модели в Kimi Code:

СпособКак подключаетсяЧто нужно
Kimi Code (OAuth)/login, вход по коду устройствааккаунт Kimi; лимиты и цена — по условиям сервиса
Kimi Platform/login с API-ключом платформыключ с platform.kimi.com или platform.kimi.ai, оплата по прайсу платформы
JoinGonka Gatewayпровайдер в config.tomlключ jg-…; аккаунт Moonshot не нужен, оплата за фактические токены, расход виден в кабинете

Точный расход и остаток — в кабинете, в разделах «Использование» и «Биллинг». За длиной разговора следит сам Kimi Code: строка состояния показывает, какая доля контекста занята, а команда /compact сжимает историю вручную.

Что учесть в работе

Режимы разрешений. В интерфейсе Kimi Code по умолчанию работает в режиме Always Ask: чтение выполняется сразу, правки и команды — после вашего подтверждения. Ask When Needed (/yolo или флаг --yolo) пропускает рутинные правки и команды, но спрашивает про чувствительные файлы и опасные команды; Never Ask (/auto, --auto) не спрашивает ничего. Режим планирования включается по Shift-Tab. Разовый прогон kimi -p всегда идёт без вопросов, поэтому запускайте его в контейнере или отдельной рабочей копии.

Что работает без аккаунта Moonshot. Свой провайдер обслуживает всё, что делает модель: чтение и правку кода, команды, субагентов, сессии, MCP-серверы. Веб-поиск — сервис Moonshot: без входа в аккаунт инструмента WebSearch в наборе агента нет, а загрузка страницы по адресу (FetchURL) остаётся. Модели сети текстовые, поэтому ввод картинок и видео на них не работает.

Телеметрия и обновления. Анонимная телеметрия по умолчанию включена: выключает её строка telemetry = false в config.toml или переменная KIMI_DISABLE_TELEMETRY=1. Обновления ставятся автоматически ([upgrade] auto_install = true в ~/.kimi-code/tui.toml); если нужна предсказуемость — выключите и обновляйтесь командой kimi upgrade. Шлюз не хранит содержимое промптов и ответов — в статистике остаются только агрегаты расхода.

Несколько окружений. Настроек провайдеров на уровне проекта у Kimi Code нет. Развести рабочие и личные ключи можно переменной KIMI_CODE_HOME: с ней в другой каталог уезжают настройки, сессии и логи, а установщик, запущенный с той же переменной, пишет туда же.

В редакторе. Kimi Code работает внутри Zed, JetBrains и других клиентов ACP через команду kimi acp — с тем же каталогом данных и теми же провайдерами.

Своих агентов выпускают и лаборатории, чьи модели обслуживает сеть: у MiniMax есть терминальный MiniMax Code, у DeepSeek — DeepSeek Harness, у Z.ai, авторов GLM, — ZCode. Все они подключаются к тому же шлюзу с тем же ключом.

Kimi Code CLI — терминальный агент Moonshot AI, открытый к сторонним провайдерам: моделей Kimi в сети Gonka сейчас нет, но на DeepSeek V4 Flash, GLM-5.3 Flash и MiniMax M2.7 он работает штатно и без аккаунта Moonshot. Быстрый путь — npx @joingonka/setup --tool kimi-code: установщик запишет в ~/.kimi-code/config.toml провайдера joingonka с типом openai и ключом, таблицы моделей с честными лимитами и модель по умолчанию, а затем проверит связку живым запросом. Модель выбирается алиасом joingonka/<id> — в /model или флагом -m; чтобы тумблер Thinking работал у GLM-5.3 Flash, объявите support_efforts и off_effort = "low". Проверка — kimi provider list и kimi -p на файле с ошибкой; платите за фактические токены по единой цене сети.

Хотите узнать больше?

Изучите другие разделы или начните зарабатывать GNK прямо сейчас.

Получить ключ и бесплатные токены →