Seções da Base de Conhecimento ▾

Navegação

▸ Comece aqui Por funções

Categorias

Ferramentas 52
Glossário 12

Ferramentas

Kimi Code CLI: agente Moonshot AI com sua própria chave via Gonka

Kimi Code CLI (o comando kimi) é um agente de terminal para desenvolvimento da Moonshot AI: lê e edita código, executa comandos, pesquisa em arquivos e distribui subtarefas para subagentes. A versão atual substituiu o cliente Python kimi-cli: é escrita em TypeScript, instalada como um binário único e aberta sob licença MIT. Tudo abaixo refere-se à versão 2.0.2 de 19 de setembro de 2026 — nela, percorremos o caminho desde a instalação até a resposta do agente em 23 de setembro.

Normalmente, o Kimi Code funciona em modelos Kimi através de login na conta (/login), mas pode haver qualquer número de provedores: qualquer endpoint compatível com OpenAI é descrito com algumas linhas no ~/.kimi-code/config.toml, e uma conta Moonshot não é necessária para isso. JoinGonka Gateway é um desses endpoints para a rede descentralizada Gonka.

Direto ao ponto: modelos Kimi não estão na rede Gonka agora — o Kimi K2.6 atendeu a rede de maio a setembro de 2026. Hoje, operam nela o DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7, e este guia é sobre como executar o Kimi Code neles. O agente permanece o mesmo, o modelo e o preço mudam: $0.0069 por milhão de tokens de entrada, único para todos os modelos da rede. Após confirmar o endereço, 3M de tokens gratuitos serão creditados na conta — o suficiente para repetir tudo isso você mesmo.

Início rápido: instalação e um comando

Passo 1: instalar o Kimi Code. Os métodos oficiais da documentação:

# 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

O script coloca o binário em ~/.kimi-code/bin/kimi e adiciona esse diretório ao PATH pelo arquivo de configuração do shell. As compilações dele são só para glibc: no Alpine e em outros sistemas com musl ele para e sugere o npm. Abra o terminal novamente e confira: kimi --version.

Passo 2: obter uma chave. Cadastre-se em gate.joingonka.ai/register, confirme o endereço e crie na seção «Chaves de API» uma chave com prefixo jg-.

Passo 3: rodar o instalador.

npx @joingonka/setup --tool kimi-code

O instalador vai pedir a chave (ela não é passada como argumento de linha de comando) e escrever em ~/.kimi-code/config.toml apenas as suas próprias tabelas:

  • o provedor [providers.joingonka] com tipo openai — é o protocolo Chat Completions —, o endereço do gateway e a chave no campo api_key; o arquivo recebe permissões 600;
  • uma tabela [models."joingonka/…"] para cada modelo da rede — com a janela de contexto e o teto de resposta reais e capacidades explícitas: chamada de ferramentas para todos, raciocínio para DeepSeek V4 Flash e GLM-5.3 Flash, e no MiniMax M2.7 apenas ferramentas;
  • default_model — DeepSeek V4 Flash, se o modelo padrão ainda não foi escolhido ou aponta para um modelo que saiu da rede do gateway; não mexe na escolha de outro provedor sem a flag --model, mas sugere o comando para uma execução avulsa;
  • salva uma cópia do arquivo anterior, não toca em provedores alheios nem nos seus campos nas tabelas do gateway e, no final, envia uma requisição real ao gateway e informa se a chave, o endereço e o modelo foram aceitos.

Foi assim que ficou a saída no nosso teste (resumida):

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.

A flag --model define outro modelo padrão (glm, minimax ou o identificador completo); o modo sem perguntas pega a chave de uma variável de ambiente:

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

O diretório de dados movido pela variável KIMI_CODE_HOME é considerado pelo próprio instalador. Já ~/.kimi é o diretório do antigo cliente Python kimi-cli: o Kimi Code 2.x não o lê e, na primeira execução, oferece migrar dali as configurações (o mesmo faz kimi migrate).

Configuração manual: config.toml

Tudo o que o instalador faz também pode ser escrito à mão. O Kimi Code guarda as configurações em TOML; chaves de tabela com ponto ou barra são colocadas entre aspas. O trecho completo para a rede 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)"
CampoValorO que importa
default_modelalias do modeloFaz referência ao nome da tabela [models."…"], e não ao identificador do modelo
max_context_sizejanela do modeloCampo obrigatório; é por ele que o agente decide quando compactar o contexto
max_output_sizeteto da respostaVai na requisição como max_tokens — verificamos isso no fio. Sem esse campo, o Kimi Code pediria até 131 072 tokens de resposta, mais do que os modelos da rede entregam
capabilitiesthinking, tool_useO Kimi Code não adivinha as capacidades de modelos desconhecidos pelo nome — declare explicitamente

Onde guardar a chave. O Kimi Code não pega chaves do ambiente do shell: export OPENAI_API_KEY=… não tem efeito sobre ele. São duas formas, e não dá para usar as duas ao mesmo tempo:

FormaEntradaComo se comporta
Chave no arquivoapi_key = "jg-…"É assim que o instalador grava; funciona em qualquer ambiente, mantenha o arquivo com permissões 600
Nome da variávelapi_key_env = "JOINGONKA_API_KEY"O valor é lido do ambiente do processo a cada requisição; sem a variável, a inicialização falha com um erro que a nomeia

Se os dois campos estiverem na mesma tabela, o Kimi Code recusa na inicialização: has both apiKey and apiKeyEnv set in config.toml - they are mutually exclusive. Lembre-se de que o kimi doctor não detecta esse conflito — ele só verifica a forma do arquivo.

Qual tipo de provedor escolher. O Kimi Code trabalha com vários protocolos, e o gateway também:

typebase_urlQuando escolher
openaihttps://gate.joingonka.ai/v1Opção principal: o caminho canônico do gateway, o mesmo que o instalador grava
anthropichttps://gate.joingonka.aiFormato Anthropic Messages, o cliente adiciona o caminho /v1/messages por conta própria; o ciclo completo com ferramentas passou no nosso teste

Um provedor no Kimi Code fala um único protocolo, então o segundo protocolo é um segundo provedor com outro nome. De forma interativa, os provedores são adicionados e removidos pelo comando /provider dentro do agente.

Modelos, Thinking e subagentes

No Kimi Code, um modelo é um alias, o nome de uma tabela [models."…"]. O instalador os nomeia com o esquema joingonka/<model-id>, assim como o próprio Kimi Code nomeia os seus (kimi-code/k3), e é o alias que você precisa em todo lugar onde se escolhe um modelo. Um identificador sem prefixo, como MiniMaxAI/MiniMax-M2.7, o Kimi Code não encontra.

OndeComoÉ mantido
config.tomldefault_model = "joingonka/deepseek-ai/DeepSeek-V4-Flash-0731"sim, para novas sessões
Flag de inicializaçãokimi -m "joingonka/zai-org/GLM-5.3-Flash"não, só nesta inicialização
Interface/model, seleção na listaEnter reescreve default_model, Alt+S só para a sessão atual

Na nossa execução, o /model estava assim:

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

Alternador de Thinking. O botão de raciocínio abaixo da lista, nos modelos da rede, por si só não muda nada: o Kimi Code só envia o nível de raciocínio para os modelos que têm níveis declarados. No caso do GLM-5.3 Flash, vale a pena fazer isso: o raciocínio dele é desligado com o valor low (mais detalhes na análise do modelo). Adicione três campos à tabela do modelo:

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

Verificamos o que é enviado ao gateway: com o Thinking ligado, o Kimi Code envia reasoning_effort: "high" e o modelo raciocina; com ele desligado, envia "low" e a resposta chega sem bloco de raciocínio. Executar o instalador de novo não mexe nesses campos: ele só altera as próprias chaves.

Modelo para subagentes. Os subagentes integrados (coder, explore, plan) usam por padrão o modelo do agente principal. A seção [secondary_model] dá a eles um pool do qual o agente principal escolhe sozinho, seguindo as dicas. Qualquer alias serve para o pool: DeepSeek V4 Flash, GLM-5.3 Flash ou 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."

As chaves do pool precisam coincidir com os alias de [models]: segundo a documentação, uma referência pendurada não deixa criar uma sessão. A linha para o MiniMax M2.7 é adicionada da mesma forma; referências a modelos que saíram da rede o instalador limpa sozinho ao rodar de novo.

Qual modelo escolher. O preço é o mesmo para todos os modelos da rede, então a escolha é sobre comportamento. Veja como se comportaram no Kimi Code 2.0.2 na tarefa “leia um arquivo e encontre o erro” (verificado em 23 de setembro de 2026):

ModeloContexto / respostaComo se comporta no Kimi Code
DeepSeek V4 Flash380K / 32768Escolha do instalador: janela grande e o teto de resposta mais alto da rede. Resolve a tarefa corretamente
GLM-5.3 Flash390K / 8192Modelo de raciocínio: o raciocínio vai em fluxo separado (no kimi -p, no stderr), a resposta no stdout. O raciocínio entra no limite de resposta
MiniMax M2.7200K / 8192Resolve a tarefa corretamente em dois passos; o raciocínio vai em fluxo separado (no kimi -p, no stderr), no stdout só a resposta

Verificação: o que deve acontecer

Primeiro, confirme que o Kimi Code enxerga o provedor e que o arquivo é interpretado sem erros:

$ 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

Não publique em lugar nenhum a saída de kimi provider list --json: a chave aparece nela em texto puro.

Depois, uma execução avulsa. Coloque no diretório um calc.py com uma função de soma que na verdade subtrai e peça para encontrar o bug:

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

No modo -p a resposta vai para o stdout, enquanto o raciocínio e o percurso das ferramentas vão para o stderr, então a saída é fácil de processar com um script. Foi assim que o GLM-5.3 Flash respondeu:

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

Atenção: no -p o Kimi Code não pergunta nada e executa os comandos por conta própria — no nosso teste o modelo tentou rodar python3 sem pedir permissão para confirmar a suspeita. A primeira execução da interface em um diretório novo começa com a pergunta Trust this folder? — que diz respeito aos servidores MCP do projeto —, e na tela de boas-vindas aparece o modelo: Model: DeepSeek V4 Flash (Gonka). A segunda metade da verificação é o painel do gateway: na seção «Uso» a requisição vai aparecer na divisão por modelos e por chaves.

Se algo deu errado, o diagnóstico normalmente se lê direto na mensagem:

O que apareceO que significaO que fazer
No model configured. Run `kimi` and use /login to sign in …O provedor não está configurado ou default_model está vazioRode o instalador ou preencha default_model
Model "deepseek-ai/DeepSeek-V4-Flash-0731" is not configured in config.toml.Em -m foi passado o identificador do modelo, não o aliasAdicione o prefixo: joingonka/deepseek-ai/…
provider.auth_error: 401 Invalid API keyO gateway não aceitou a chaveConfira o api_key em [providers.joingonka]: o Kimi Code não lê variáveis do shell
declares api_key_env = "JOINGONKA_API_KEY" … but the environment variable is not set or is emptyVocê escolheu o método com variável e ela não está no ambienteExporte a variável antes de iniciar ou volte para api_key
429 … currently overloaded in the Gonka network (rate limit)A capacidade livre do modelo na rede acabouO Kimi Code repete esses erros sozinho; se demorar, troque de modelo pelo /model. O estado aparece na página de status

Quanto custa

Para cada frase sua, o Kimi Code adiciona um prompt de sistema e descrições de duas dúzias e meia de ferramentas integradas, e a tarefa geralmente leva vários passos. Na nossa execução, cada passo consumiu cerca de 20 mil tokens de entrada, e "leia o arquivo, encontre o erro" levou dois passos — quase 40 mil tokens, quase todos na entrada. Portanto, o preço por token é decisivo aqui.

Através do JoinGonka Gateway, os tokens custam $0.0069 por milhão na entrada e $0.021 por milhão na saída — o preço é igual para todos os modelos da rede e é atualizado nesta página a partir de uma fonte em tempo real.

CenárioConsumoVia Gateway
Tarefa única: ler arquivo, encontrar erro~40K tokenscentésimos de centavo
Dia de trabalho ativo3-7M tokenspoucos centavos
Mês de desenvolvimento ativo~150M tokenscerca de um dólar

As estimativas na coluna à direita baseiam-se nos preços de setembro de 2026. Para comparar, veja como se pode pagar por modelos no Kimi Code:

MétodoComo se conectaO que é necessário
Kimi Code (OAuth)/login, acesso via código de dispositivoconta Kimi; limites e preços conforme os termos do serviço
Kimi Platform/login com chave de API da plataformachave de platform.kimi.com ou platform.kimi.ai, pagamento conforme a tabela da plataforma
JoinGonka Gatewayprovedor no config.tomlchave jg-…; conta Moonshot não é necessária, pagamento por tokens reais, consumo visível no painel

O consumo exato e o saldo ficam no painel, nas seções "Uso" e "Faturamento". O próprio Kimi Code monitora a extensão da conversa: a barra de status mostra que parte do contexto está ocupada, e o comando /compact comprime o histórico manualmente.

O que considerar ao trabalhar

Modos de permissão. Na interface, o Kimi Code funciona por padrão no modo Always Ask: a leitura é feita imediatamente, enquanto edições e comandos exigem sua confirmação. Ask When Needed (/yolo ou flag --yolo) ignora edições e comandos rotineiros, mas pergunta sobre arquivos sensíveis e comandos perigosos; Never Ask (/auto, --auto) não pergunta nada. O modo de planejamento é ativado com Shift-Tab. A execução única kimi -p é sempre feita sem perguntas, então execute-a em um container ou em uma cópia de trabalho separada.

O que funciona sem uma conta Moonshot. Seu provedor gerencia tudo o que o modelo faz: leitura e edição de código, comandos, subagentes, sessões e servidores MCP. A busca na web é um serviço da Moonshot: sem login, a ferramenta WebSearch não está presente no conjunto do agente, mas o carregamento de páginas por endereço (FetchURL) permanece. Os modelos da rede são textuais, portanto, a entrada de imagens e vídeos não funciona neles.

Telemetria e atualizações. A telemetria anônima está ativada por padrão: para desativá-la, use a linha telemetry = false no config.toml ou a variável KIMI_DISABLE_TELEMETRY=1. As atualizações são instaladas automaticamente ([upgrade] auto_install = true em ~/.kimi-code/tui.toml); se precisar de previsibilidade, desative-a e atualize via comando kimi upgrade. O gateway não armazena o conteúdo dos prompts ou das respostas; nas estatísticas, restam apenas agregados de consumo.

Múltiplos ambientes. O Kimi Code não possui configurações de provedor em nível de projeto. Você pode separar chaves de trabalho e pessoais com a variável KIMI_CODE_HOME: com ela, configurações, sessões e logs são direcionados para outro diretório, e o instalador, executado com a mesma variável, escreve no mesmo local.

No editor. O Kimi Code funciona dentro do Zed, JetBrains e outros clientes ACP via comando kimi acp — com o mesmo diretório de dados e os mesmos provedores.

Laboratórios cujos modelos são atendidos pela rede também lançam seus próprios agentes: a MiniMax tem o terminal MiniMax Code, a DeepSeek tem o DeepSeek Harness, e a Z.ai, autores do GLM, tem o ZCode. Todos eles se conectam ao mesmo gateway com a mesma chave.

O Kimi Code CLI é um agente de terminal da Moonshot AI aberto a provedores de terceiros: atualmente não há modelos Kimi na rede Gonka, mas ele funciona normalmente e sem conta Moonshot no DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7. O caminho rápido é npx @joingonka/setup --tool kimi-code: o instalador escreverá no ~/.kimi-code/config.toml o provedor joingonka com tipo openai e sua chave, tabelas de modelos com limites reais e o modelo padrão, e então verificará a conexão com uma solicitação ao vivo. O modelo é selecionado pelo alias joingonka/<id> — em /model ou pela flag -m; para que o interruptor Thinking funcione no GLM-5.3 Flash, declare support_efforts e off_effort = "low". Verificação: kimi provider list e kimi -p em um arquivo com erro; pague pelos tokens reais a um preço único de rede.

Quer saber mais?

Explore outras seções ou comece a ganhar GNK agora mesmo.

Obter chave e tokens gratuitos →