Kimi K3, 1 milhão de tokens e a armadilha do contexto: mais memória não é mais arquitetura
Kimi K3 e K2.8 empurram coding agents para contexto enorme. Isso é útil, mas um repositório inteiro no prompt não substitui seleção, ferramentas, testes e um bom harness.
- kimi
- coding agents
- llm
- engenharia de software
- context window
O que 1 milhão de tokens realmente muda
O Kimi virou um dos produtos que mais me fizeram repensar a relação entre contexto e engenharia de agentes de código.
Em setembro de 2026, a documentação do Kimi Code lista o K3 como modelo flagship de 2,8 trilhões de parâmetros, com contexto de até 1 milhão de tokens em planos compatíveis. O K2.8 Preview, liberado em 11 de setembro, também chega a 1M e é posicionado como uma opção próxima do K3 com raciocínio mais eficiente. O Kimi Code ainda ganhou cliente desktop e, em 23 de setembro, a CLI chegou à versão 2.1.0.
É muita capacidade disponível em uma interface que consegue ler arquivos, editar código e executar comandos.
A reação natural é: ótimo, agora posso jogar o repositório inteiro no contexto.
Eu acho que essa é justamente a armadilha.
1M de contexto resolve um problema real
Primeiro, o lado positivo.
Contexto grande é extremamente útil em tarefas como:
- refatoração que atravessa muitos módulos;
- migração de API interna;
- entendimento de convenções dispersas;
- análise de uma base legada sem documentação central;
- mudanças em monorepo;
- comparação de implementações distantes no código;
- sessões longas em que o agente precisa manter decisões anteriores.
Quem já usou coding agent em uma base grande conhece o sintoma contrário: o modelo entende o arquivo atual e perde a arquitetura ao redor.
Aumentar a janela reduz esse atrito.
Mas reduzir um problema não transforma "mais contexto" em estratégia universal.
Context window não é working memory perfeita
Um milhão de tokens é capacidade de entrada. Não é garantia de atenção homogênea, recuperação perfeita ou raciocínio proporcionalmente melhor.
Quando colocamos informação demais, aparecem outros custos:
- relevância diluída — o que importa compete com centenas de arquivos irrelevantes;
- latência — preencher contexto custa tempo;
- custo/quota — contexto gigante não é grátis;
- staleness — conteúdo carregado no começo pode ficar velho depois de várias alterações;
- conflito — padrões antigos e novos podem coexistir e o modelo precisa decidir qual vale;
- observabilidade — fica mais difícil entender por que determinada informação influenciou a decisão.
Eu prefiro pensar em contexto como cache caro, não como disco infinito.
O agente bom não "sabe tudo"; ele sabe encontrar
A arquitetura que me parece mais robusta é combinar três camadas.
1. Contexto estável
Pouca coisa, mas de alto valor:
AGENTS.mdou equivalente;- convenções do projeto;
- comandos de teste;
- regras de segurança;
- visão curta da arquitetura.
2. Recuperação sob demanda
O agente usa ferramentas para buscar:
find symbol → read file → inspect imports → search tests → inspect schema
Ele traz para o contexto o que precisa quando precisa.
3. Janela longa como margem, não como desculpa
Quando a tarefa realmente exige atravessar dezenas de arquivos, a janela grande deixa o agente manter tudo isso sem compactar agressivamente.
A diferença é sutil: usar 1M porque a tarefa exige versus usar 1M porque não quero selecionar contexto.
Um exemplo: adicionar autorização a uma feature
Imagine que o agente precisa adicionar uma permissão nova.
A abordagem ingênua seria carregar src/** e perguntar o que fazer.
Eu prefiro um loop instrumental:
1. localizar feature
2. localizar padrão atual de autorização
3. encontrar uma feature semelhante
4. encontrar testes dessa política
5. identificar camada responsável
6. implementar
7. executar testes focados
8. executar checks globais
O agente não precisa ter o projeto inteiro na cabeça desde o início. Precisa ter um caminho confiável para adquirir contexto.
Esse é um princípio que vale mesmo com modelos melhores.
Kimi Code está ficando interessante justamente pelo harness
Outra coisa que chama atenção no Kimi Code atual é que a história não é só o modelo.
A ferramenta já cobre várias partes do harness:
- CLI;
- desktop;
- edição e execução de comandos;
- permissões;
- subagentes;
- plugins;
- MCP;
- sessões longas;
- modos de plano e objetivo;
- controle remoto;
- integração com ferramentas de terceiros.
Isso reforça uma tendência de 2026: comparar apenas o benchmark do modelo diz cada vez menos sobre a experiência real de engenharia.
Um coding agent é aproximadamente:
modelo
+ gerenciamento de contexto
+ ferramentas
+ política de permissão
+ execução
+ memória/sessão
+ testes
+ observabilidade
+ UX de revisão
Trocar o modelo altera uma peça. Às vezes é a peça mais importante; muitas vezes não é a única que está limitando o resultado.
Compatibilidade com protocolos também importa
A documentação do Kimi Code oferece endpoints compatíveis com protocolos OpenAI e Anthropic e mostra integração com ferramentas como Claude Code, OpenCode, Codex e Hermes.
Para mim, isso é estrategicamente interessante porque reduz acoplamento entre modelo e harness.
Se eu consigo testar K3 dentro de um fluxo que já uso, a comparação fica muito mais honesta. Eu não estou comparando IDE A contra IDE B, memória A contra memória B e modelo A contra modelo B ao mesmo tempo.
Eu troco uma variável.
Essa portabilidade é uma característica de produto mais importante do que parece.
Como eu avaliaria Kimi em um projeto real
Eu não começaria por HumanEval nem por uma demo de "crie um app inteiro".
Eu pegaria uma amostra de tarefas reais do repositório:
| Tipo de tarefa | O que medir |
|---|---|
| Bug pequeno | tempo até patch correto |
| Refatoração | regressões e consistência |
| Feature multi-arquivo | completude da implementação |
| Investigação | qualidade da causa-raiz |
| Teste | cobertura do comportamento importante |
| Migração | número de intervenções humanas |
Depois registraria:
type AgentRun = {
taskId: string
model: string
contextTokens: number
durationMs: number
cost?: number
attempts: number
testsPassed: boolean
humanEditsAfterAgent: number
accepted: boolean
}
Sem telemetria, "esse modelo parece melhor" é só memória seletiva.
O que o K2.8 me diz sobre a corrida atual
O K2.8 Preview é interessante porque a própria Moonshot destaca eficiência de thinking, não apenas capacidade máxima.
Isso aponta para uma mudança saudável: depois de anos perguntando "quanto o modelo consegue raciocinar?", estamos começando a perguntar "quanto raciocínio essa tarefa realmente precisa?".
Ter níveis low, high e max transforma esforço em parâmetro de engenharia.
Eu posso imaginar um roteamento simples:
const effort = task.risk === 'high'
? 'max'
: task.files <= 2
? 'low'
: 'high'
Não precisa ser literalmente esse código, mas o conceito é poderoso: qualidade, latência e custo deixam de ser uma configuração global.
Long context muda o limite, não os fundamentos
A parte que eu mais gosto no Kimi K3 não é "agora cabe 1M".
É o fato de que esse limite maior permite construir agentes menos obcecados em compactar tudo a cada momento.
Ainda assim, os fundamentos continuam:
- contexto relevante vence contexto bruto;
- teste vence confiança subjetiva;
- ferramentas vencem memória estática;
- permissão explícita vence autonomia irrestrita;
- diff verificável vence resumo convincente;
- arquitetura do harness vence benchmark isolado.
Um modelo com contexto enorme pode ser um ótimo motor.
Mas motor não é carro.