OpenCode com Kimi K3, GLM 5.3 e GLM 5.3 Flash: adicionar um fornecedor personalizado na UE
Em resumo
- O OpenCode usa a Nodion como fornecedor personalizado (custom provider): um bloco no
opencode.jsoncom@ai-sdk/openai-compatible, o URL basehttps://api.nodion.ai/v1e a chave de{env:NODION_AI_KEY}, no formato de configuração V1, que o OpenCode 2 também aceita. - Os modelos são referidos pelo ID do fornecedor seguido do ID do modelo, por exemplo nodion/moonshot/kimi-k3, e precisam de limit.context e limit.output definidos manualmente, porque a Nodion não consta do models.dev.
- No catálogo da Nodion, o Kimi K3, o GLM 5.3 e o GLM 5.3 Flash têm cada um um contexto de 1 048 576 tokens e os níveis de raciocínio low, high e max; o GLM 5.3 aceita apenas texto. Os preços e os fornecedores estão no catálogo AI Inference.
- O Nodion AI Gateway encaminha apenas para fornecedores sediados na UE, todos com zero data retention, e uma chave de um AI Coding Plan funciona com a mesma configuração.
O OpenCode funciona com qualquer API compatível com a OpenAI através de um fornecedor personalizado (custom provider) no opencode.json. Aponte-o para o Nodion AI Gateway (https://api.nodion.ai/v1) e pode programar com Kimi K3, GLM 5.3 e GLM 5.3 Flash. O gateway encaminha os pedidos apenas para fornecedores sediados na UE, todos com zero data retention. Não precisa de conta nesses fornecedores: o OpenCode faz todas as chamadas com a sua chave de API da Nodion.
Primeiro, uma nota sobre versões: o OpenCode é agora distribuído em duas linhas. O OpenCode 1 é a versão atual no GitHub (v1.19.5, outubro de 2026), documentada em opencode.ai/docs. O OpenCode 2 instala-se em separado, com documentação própria e outras chaves de configuração nativas. O exemplo abaixo usa o formato de configuração V1. Funciona na versão atual e o OpenCode 2 também o aceita; o guia de migração diz: «The V1 config format remains supported.» (ou seja, o formato V1 continua a ser suportado).
O que é preciso
- Uma conta Nodion e um projeto com AI Inference.
- Uma chave de API: uma chave de inferência criada em AI Inference → Keys (começa por
nodion_ai_e só é mostrada uma vez) ou uma chave criada no seu AI Coding Plan. As chaves da API da plataforma Nodion não funcionam aqui. - Saldo pré-pago disponível, exceto se a chave pertencer a um AI Coding Plan.
Defina a chave como variável de ambiente na shell que inicia o OpenCode:
export NODION_AI_KEY=nodion_ai_your_key Adicione o fornecedor ao opencode.json
Use o ficheiro global ~/.config/opencode/opencode.json ou um opencode.json na raiz do projeto:
{
"$schema": "https://opencode.ai/config.json",
"model": "nodion/moonshot/kimi-k3",
"provider": {
"nodion": {
"npm": "@ai-sdk/openai-compatible",
"name": "Nodion",
"options": {
"baseURL": "https://api.nodion.ai/v1",
"apiKey": "{env:NODION_AI_KEY}"
},
"models": {
"moonshot/kimi-k3": {
"name": "Kimi K3",
"limit": { "context": 1048576, "output": 32768 }
},
"z-ai/glm-5.3": {
"name": "GLM 5.3",
"limit": { "context": 1048576, "output": 131072 }
},
"z-ai/glm-5.3-flash": {
"name": "GLM 5.3 Flash",
"limit": { "context": 1048576, "output": 131072 }
}
}
}
}
} npm: a documentação do OpenCode indica@ai-sdk/openai-compatiblepara fornecedores compatíveis com a OpenAI em/v1/chat/completions. Use esta rota. Para/v1/responses, a documentação remete para@ai-sdk/openai, mas esse fornecedor do AI SDK definestorecomotruepor omissão, e o endpoint Responses da Nodion não armazena nada.apiKey:{env:NODION_AI_KEY}lê a chave do ambiente. Se a variável não estiver definida, o OpenCode insere uma string vazia e surge um erro de autenticação, em vez de um erro de configuração.models: as chaves são os IDs de modelo da Nodion, com a barra incluída. O OpenCode refere-se a um modelo pelo ID do fornecedor seguido do ID do modelo, pelo que o Kimi K3 passa a sernodion/moonshot/kimi-k3. A documentação mostra o mesmo encadeamento comlmstudio/google/gemma-3n-e4b.limit: para os fornecedores padrão, o OpenCode obtém os limites de contexto e de output a partir de models.dev. A Nodion não tem aí nenhuma entrada (verificado a 29 de outubro de 2026), por isso defina ambos manualmente a partir do catálogo. São eles que dizem ao OpenCode quanto contexto ainda resta.
Em vez de {env:...}, pode guardar a chave com /connect: desça até Other, introduza o ID de fornecedor nodion e cole a chave. O bloco do fornecedor no opencode.json continua a ser necessário.
Fontes, verificadas em outubro de 2026: fornecedores do OpenCode, modelos, configuração, fornecedores do OpenCode 2, provider OpenAI do AI SDK, models.dev.
Escolha o modelo
O campo model de nível superior define o modelo por omissão. Na TUI, /models lista o seu fornecedor personalizado e os respetivos modelos. Na linha de comandos, muda de modelo com -m, opencode run funciona sem a TUI e opencode models nodion mostra os modelos que o OpenCode conhece para esse fornecedor:
opencode -m nodion/z-ai/glm-5.3
opencode run -m nodion/z-ai/glm-5.3-flash "Explain the build setup of this repo"
opencode models nodion Fontes: CLI do OpenCode, modelos.
Os três modelos lado a lado
Valores do catálogo público da Nodion a 29 de outubro de 2026:
| Modelo | ID | Contexto | Saída máx. | Entrada | Níveis de raciocínio |
|---|---|---|---|---|---|
| Kimi K3 | moonshot/kimi-k3 | 1 048 576 | 32 768 | Texto, imagem, vídeo | low, high, max |
| GLM 5.3 | z-ai/glm-5.3 | 1 048 576 | 131 072 | Texto | low, high, max |
| GLM 5.3 Flash | z-ai/glm-5.3-flash | 1 048 576 | 131 072 | Texto, imagem, vídeo, ficheiro | low, high, max |
Os três suportam ferramentas (tools), modo JSON, structured outputs e raciocínio. O GLM 5.3 aceita apenas texto, por isso, para capturas de ecrã e outras imagens, precisa do Kimi K3 ou do GLM 5.3 Flash. Os níveis de raciocínio são os valores que a API aceita para reasoning_effort. Os preços e os fornecedores estão na página de cada modelo.
Use uma chave de um AI Coding Plan
Os AI Coding Plans (Go, Pro e Max) cobrem a utilização de modelos de chat e de ferramentas. Os pedidos do OpenCode são chat completions, por isso contam para o plano. O proprietário do projeto compra um plano por programador e atribui-o a um membro do projeto, que cria chaves nesse plano em AI Inference. Coloque essa chave em NODION_AI_KEY; a configuração mantém-se igual.
A utilização conta para uma janela de 5 horas, uma semanal e uma mensal. Quando um desses limites se esgota, os pedidos só continuam a partir do saldo pré-pago se o plano permitir usar o saldo. As chaves sem plano pagam a partir do saldo pré-pago. Detalhes em AI Coding Plans.
Resolução de problemas
- 401:
NODION_AI_KEYnão está definida na shell que iniciou o OpenCode (o valor{env:...}fica então vazio) ou contém uma chave da plataforma. Use uma chave de inferência (nodion_ai_…) ou uma chave de plano. - 404
model not found: uma chave emmodelsnão é um ID exato da Nodion.curl https://api.nodion.ai/v1/modelslista os IDs e não precisa de chave. - Modelo em falta em
/models: verifique se está listado emprovider.nodion.models.opencode models nodionmostra o que o OpenCode vê. - O OpenCode não sabe quanto contexto resta: faltam
limit.contextelimit.outputpara esse modelo. - 402: o saldo não cobre o pedido ou foi atingido um limite de gastos.
- 503: nenhuma rota operacional para o modelo corresponde às definições de IA do projeto, por exemplo porque os respetivos fornecedores estão aí excluídos.
Fontes: Referência da API de IA: erros e limites, documentação do AI Inference, AI Coding Plans.
Próximos passos
- Codex em vez do OpenCode: Codex CLI com modelos na UE.
- Aider, Cline e Continue: Aider, Cline e Continue com modelos na UE.
- Todos os campos de chat completions na Nodion: Referência da API de IA.
- Um pacote mensal para agentes de programação: AI Coding Plans.
Perguntas frequentes
Como adiciono um fornecedor personalizado ao OpenCode?
Adicione ao opencode.json um bloco de fornecedor com npm definido como @ai-sdk/openai-compatible, options.baseURL, options.apiKey e um mapa models. Para a Nodion, o URL base é https://api.nodion.ai/v1 e a chave pode vir de {env:NODION_AI_KEY}.
Como seleciono um modelo personalizado no OpenCode?
Use o ID do fornecedor seguido do ID do modelo, por exemplo nodion/moonshot/kimi-k3. Defina-o como model de nível superior, passe-o com opencode -m ou escolha-o na lista /models da TUI.
Porque é que o OpenCode não conhece a janela de contexto do meu modelo personalizado?
O OpenCode preenche os limites dos fornecedores padrão a partir do models.dev. Para um fornecedor personalizado como a Nodion, defina limit.context e limit.output para cada modelo no opencode.json.
Posso usar uma chave de AI Coding Plan no OpenCode?
Sim. Crie uma chave no seu AI Coding Plan da Nodion e coloque-a em NODION_AI_KEY; a configuração mantém-se igual. A utilização de chat e ferramentas passa então a contar para as janelas de 5 horas, semanal e mensal do plano.