OpenCode com Kimi K3, GLM 5.3 e GLM 5.3 Flash: adicionar um fornecedor personalizado na UE

Cartão de seleção de modelo com o logótipo do OpenCode, a listar Kimi K3, GLM 5.3 e GLM 5.3 Flash com os ícones dos respetivos laboratórios, com o Kimi K3 selecionado com um visto verde

Em resumo

  • O OpenCode usa a Nodion como fornecedor personalizado (custom provider): um bloco no opencode.json com @ai-sdk/openai-compatible, o URL base https://api.nodion.ai/v1 e 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-compatible para 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 define store como true por 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 ser nodion/moonshot/kimi-k3. A documentação mostra o mesmo encadeamento com lmstudio/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:

ModeloIDContextoSaída máx.EntradaNíveis de raciocínio
Kimi K3moonshot/kimi-k31 048 57632 768Texto, imagem, vídeolow, high, max
GLM 5.3z-ai/glm-5.31 048 576131 072Textolow, high, max
GLM 5.3 Flashz-ai/glm-5.3-flash1 048 576131 072Texto, imagem, vídeo, ficheirolow, 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_KEY nã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 em models não é um ID exato da Nodion. curl https://api.nodion.ai/v1/models lista os IDs e não precisa de chave.
  • Modelo em falta em /models: verifique se está listado em provider.nodion.models. opencode models nodion mostra o que o OpenCode vê.
  • O OpenCode não sabe quanto contexto resta: faltam limit.context e limit.output para 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

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.

Dê uma cloud ao seu agente.

Ganhe até 15 € de crédito ao registar-se.

Continuar com o GitHub

ou com e-mail

Fique a par das novidades.

Novidades do produto, sem spam. Pode cancelar a subscrição a qualquer momento.