Seções da Base de Conhecimento ▾

Navegação

▸ Comece aqui Por funções

Categorias

Ferramentas 52
Glossário 12

Ferramentas

OpenHands + JoinGonka Gateway: agente em seu próprio endpoint

OpenHands é uma plataforma aberta para desenvolvimento autônomo: o agente lê sozinho o repositório, executa comandos, corrige arquivos e leva a tarefa até o resultado, enquanto você define o objetivo e verifica o final. Em 2026, sua interface principal é o Agent Canvas, um painel de controle via navegador de onde se iniciam conversas com o agente e automações na sua própria máquina, no Docker, em um servidor ou na nuvem do OpenHands. O código é aberto sob licença MIT.

O OpenHands não impõe modelos: toda a camada de trabalho com LLM é construída sobre o LiteLLM, por isso qualquer endpoint compatível com OpenAI é adequado para o agente. Para o JoinGonka Gateway, isso significa três campos nas configurações: Custom Model — openai/deepseek-ai/DeepSeek-V4-Flash-0731, Base URL — https://gate.joingonka.ai/v1, API Key — sua chave jg-…. Não é necessário um instalador separado: tudo é feito na interface em poucos minutos.

Um agente autônomo é o consumidor mais voraz de tokens: cada passo carrega um system prompt, histórico e resultados de ferramentas, e há dezenas de passos em uma tarefa. A documentação do OpenHands avisa diretamente: o agente envia muitas solicitações aos modelos, monitore o consumo. Pelo gateway, um milhão de tokens de entrada custa $0.0069 — o mesmo para DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 —, então execuções longas deixam de ser um peso no orçamento. Após confirmar seu endereço, receberá 3M de tokens gratuitos na conta: isso é suficiente para testar o agente em uma tarefa real e observar o seu próprio consumo.

Qual OpenHands você possui: quatro interfaces e uma chave

O projeto possui hoje várias interfaces, e dependendo de qual você estiver executando, dependerá onde procurar as configurações do modelo. Os valores em si são os mesmos em todos os lugares; apenas o caminho para eles muda.

InterfaceComo executarOnde definir o modeloEstado em setembro de 2026
Agent Canvasnpx @openhands/agent-canvas ou npm install -g @openhands/agent-canvas e o comando agent-canvas; abre em http://localhost:8000Settings > LLM, aba Advancedinterface principal do projeto
OpenHands CLIuv tool install openhands --python 3.12, depois openhandsassistente de primeira execução, Ctrl+P → Settings, arquivo ~/.openhands/agent_settings.jsonfunciona, mas no README está marcado como um projeto que não é mais desenvolvido ativamente
Interface web anterior no Dockeropenhands serve ou docker run da documentação; porta 3000Settings → aba LLM → interruptor Advancedna documentação é chamado de Local GUI (Legacy)
OpenHands Cloudnuvem gerenciada do projetoa mesma página de configurações de LLMsegundo a documentação, seu LLM é configurado da mesma forma; não verificamos este caminho

Para o Agent Canvas são necessários Node.js e uv — sobre ele funciona o servidor local do agente (detalhes no guia de instalação). A instrução menciona Node.js 22.12 ou superior, mas o pacote a partir da versão 1.17 exige Node.js 24 ou superior — instale a versão 24 para não receber avisos sobre versão incompatível. Existe também a opção em container: a imagem ghcr.io/openhands/agent-canvas fornece a interface em http://localhost:8000/canvas e vê apenas os diretórios que você montou.

Chave JoinGonka. Registre-se em gate.joingonka.ai/register, confirme seu endereço e crie uma chave com o prefixo jg- na seção "API-keys". Uma chave e um saldo únicos servem para todos os modelos da rede. O instalador @joingonka/setup não inclui o OpenHands, e isso não é uma omissão: suas configurações residem na interface e no armazenamento seguro do backend, não em um arquivo de texto de configuração que pode ser editado externamente.

Conexão no Agent Canvas: três campos na aba Advanced

Passo 1. Inicie o Agent Canvas e abra Settings > LLM. O assistente de configuração inicial sugere o seu próprio provedor OpenHands — este passo pode ser ignorado, pois é fácil retornar às configurações mais tarde.

Passo 2. Clique em Add LLM Profile e vá para a aba Advanced: a aba Basic oferece apenas provedores e modelos da lista integrada.

Passo 3. Preencha os três campos:

CampoValor
Custom Modelopenai/deepseek-ai/DeepSeek-V4-Flash-0731
Base URLhttps://gate.joingonka.ai/v1
API Keysua chave jg-…

Passo 4. Salve o perfil. Antes de salvar, o Canvas verifica a configuração com uma solicitação a partir do backend: se a chave for rejeitada ou o modelo não estiver disponível, o perfil não será salvo e você verá um texto de erro.

Passo 5. Inicie uma nova conversa e envie uma mensagem curta. Conversas já abertas continuam funcionando no modelo em que foram iniciadas.

Por que openai/. O LiteLLM determina o provedor pelo prefixo do modelo. O prefixo openai/ não significa «modelo da OpenAI», mas «falar com o servidor pelo protocolo OpenAI Chat Completions». Apenas o primeiro segmento é removido, de modo que o identificador real chega ao gateway: deepseek-ai/DeepSeek-V4-Flash-0731. Na documentação do OpenHands, o mesmo esquema é mostrado com o exemplo openai/qwen/qwen3.6-35b-a3b. Sem o prefixo, o LiteLLM se recusará a trabalhar com a mensagem LLM Provider NOT provided.

Por que /v1 e nada mais. O LiteLLM acessa o servidor através do cliente oficial da OpenAI, e ele mesmo adiciona /chat/completions. Por isso, o endereço deve terminar em /v1: sem o sufixo, a requisição passará longe da API; com excesso de caracteres, irá para um caminho que não existe. E mais um requisito do Canvas: o endereço deve ser acessível a partir do backend, e não apenas do navegador. O gateway é um endereço HTTPS público; a partir de um contêiner Docker, ele é visível da mesma forma que a partir do host; técnicas como host.docker.internal são necessárias apenas para modelos em sua máquina local.

Perfis para todos os três modelos. Crie um perfil para cada modelo da rede e nomeie-os de forma curta — por exemplo deepseek, glm e minimax (a documentação menciona um limite de dez perfis). Você pode alternar diretamente na conversa sem perder o contexto: pelo botão de seleção de perfil no campo de entrada ou pelo comando /model glm; /model sem argumentos mostrará a lista. Para não inserir a chave em cada perfil, você pode salvá-la uma vez no bloco Provider Connections — ele está disponível no backend local.

Interface anterior no Docker. Os campos são os mesmos: Settings → aba LLM → ativar Advanced → Custom Model, Base URL, API Key → Save Changes.

Terminal e automação: CLI, variáveis de ambiente, SDK

A CLI é instalada com um único comando via uv e, na primeira execução, você é guiado pela configuração do modelo; depois, dá para voltar a ela com Ctrl+P → Settings:

uv tool install openhands --python 3.12
openhands

Para scripts, variáveis de ambiente são mais práticas. Um detalhe importante: por padrão, a CLI as ignora e só as aplica com a flag --override-with-envs — para uma única execução, sem salvar nada:

export LLM_MODEL="openai/deepseek-ai/DeepSeek-V4-Flash-0731"
export LLM_BASE_URL="https://gate.joingonka.ai/v1"
export LLM_API_KEY="jg-your-key"

openhands --override-with-envs

O mesmo conjunto funciona sem interface — para CI e tarefas em lote:

openhands --headless --override-with-envs -t "Read calc.py and tell me in one sentence whether it has a bug."

No modo headless, o agente age sempre com autoaprovação, então execute-o onde ele puder fazer tudo: em um diretório separado ou em um contêiner. A flag --json transforma a saída em um fluxo de eventos JSONL — prático de processar em um pipeline. Foi assim que testamos a integração em 21 de setembro de 2026 com a CLI 1.16.0: no cabeçalho, a CLI imprime Agent initialized with model: openai/deepseek-ai/DeepSeek-V4-Flash-0731, depois o agente lê o arquivo e responde com propriedade.

MétodoOnde valeÉ salvo?
Settings > LLM no Agent Canvastodas as novas conversas nesse backendsim, no armazenamento do backend (~/.openhands)
Assistente e Ctrl+P → Settings na CLItodas as execuções da CLIsim, em ~/.openhands/agent_settings.json
LLM_MODEL, LLM_BASE_URL, LLM_API_KEY com a flag --override-with-envsuma única execução da CLInão
config.tomla linha V0 anterior e o modo de desenvolvimentona documentação é classificado como Legacy; no Agent Canvas e na CLI 1.x a configuração é definida pelos métodos acima

As configurações salvas da CLI ficam em ~/.openhands/agent_settings.json: o modelo é alterado editando três campos do bloco llm — model, api_key e base_url. Não vale a pena criar o arquivo do zero: o assistente da primeira execução grava ali também o restante da configuração do agente, incluindo a compactação do histórico, sem a qual uma conversa longa vai esbarrar na janela de contexto.

Se você integra o agente no seu próprio código, o SDK do OpenHands aceita esses mesmos três valores:

from pydantic import SecretStr
from openhands.sdk import LLM

llm = LLM(
    model="openai/deepseek-ai/DeepSeek-V4-Flash-0731",
    base_url="https://gate.joingonka.ai/v1",
    api_key=SecretStr("jg-your-key"),
)

Qual modelo escolher para execuções autônomas longas

O preço dos modelos da rede é único, portanto a escolha depende do comportamento. Para um agente autônomo, dois números são importantes. Janela de contexto: cada passo reenvia o histórico e, quanto maior a janela, mais tempo o agente trabalha sem perdas. Limite de resposta: o passo em que o agente escreve um arquivo grande inteiro deve caber em uma única resposta. A tabela mostra os resultados da nossa execução da mesma tarefa (ler um arquivo e encontrar um erro) via OpenHands CLI 1.16.0 com SDK 1.21.0.

ModeloCustom Model para OpenHandsContextoLimite de respostaComportamento no OpenHands
DeepSeek V4 Flashopenai/deepseek-ai/DeepSeek-V4-Flash-0731380K32768Leu o arquivo e respondeu diretamente, sem texto desnecessário. Contexto longo e o maior limite de resposta da rede — escolha padrão para tarefas de muitas horas.
GLM-5.3 Flashopenai/zai-org/GLM-5.3-Flash390K8192Raciocina antes de responder; o ciclo com ferramentas correu limpo. Perfil para planejamento e análise de lógica complexa, levando em conta que parte da resposta é consumida pelo raciocínio.
MiniMax M2.7openai/MiniMaxAI/MiniMax-M2.7200K8192Resolveu a tarefa, mas na mensagem final mostrou o curso do raciocínio em voz alta. O modelo tem a maior capacidade da rede — perfil reserva para horas de pico e para títulos de conversas.

Um esquema de trabalho para uma tarefa longa segue a dica da documentação do OpenHands: planejar com um modelo e executar com outro. Inicie a conversa no perfil glm e peça um plano sem editar arquivos; depois envie /model deepseek e dê o comando para executar. O histórico, os arquivos e o estado da tarefa são preservados durante a troca. Mantenha o perfil minimax como terceira opção: é prático mudar para ele quando os outros dois atingem a capacidade máxima em horários de pico, e nele, em Settings > Application, também é possível delegar a geração de títulos de conversas.

Compressão do histórico. Mesmo uma janela com centenas de milhares de tokens é finita em uma tarefa de muitas horas. No OpenHands, o condensador é responsável por isso: ele reduz eventos antigos a um breve resumo, o que, segundo a documentação, reduz a latência e o consumo de tokens em conversas longas. No Agent Canvas, ele é configurado na seção Settings > Condenser; em nossa execução via CLI, ele foi ativado automaticamente com um limite de 80 eventos.

Limites do modelo. O OpenHands obtém a janela de contexto e o limite de resposta do diretório LiteLLM, e como não há identificadores da rede Gonka nele (verificamos no LiteLLM 1.81), o agente não possui valores próprios para esses modelos. Isso não atrapalha o trabalho: o gateway aplica o limite de resposta por conta própria, de acordo com a tabela acima. Se desejar definir limites explicitamente, no SDK esses campos são max_input_tokens e max_output_tokens, e no Canvas, a aba All abre o conjunto completo de campos do perfil. Detalhes sobre o modelo padrão estão na análise do DeepSeek V4 Flash.

Verificação e erros frequentes

Você pode verificar se as solicitações realmente passam pelo gateway de dois lados. Pelo lado do OpenHands — uma nova conversa e uma tarefa curta como «leia o README e resuma em uma frase»: o agente deve chamar uma ferramenta e responder. Pelo lado do gateway — o painel de controle, seção «Uso»: a solicitação aparecerá na análise «Por modelos», e no bloco «Por chaves» o horário da última solicitação será atualizado. Se estiver vazio, significa que a conversa está em outro perfil: verifique qual deles está marcado como ativo.

O que é vistoO que significaO que fazer
LLM Provider NOT providedNão há prefixo de provedor no campo do modeloDigite openai/ antes do identificador: openai/deepseek-ai/DeepSeek-V4-Flash-0731
O perfil não é salvo, Canvas exibe um erro de backendO Canvas verificou a configuração com uma solicitação em tempo real e recebeu uma rejeiçãoO texto do erro é uma das linhas abaixo: corrija a chave, o endereço ou o modelo e salve novamente
AuthenticationError … Invalid API keyO gateway respondeu 401: a chave não foi aceitaCole a chave completa, sem espaços nas bordas; verifique no painel se ela não foi revogada
405 Not Allowed e página HTML do nginxO sufixo /v1 falta no Base URLO endereço deve ser exatamente https://gate.joingonka.ai/v1
404 … Invalid URL (POST /v1/v1/chat/completions)Há um excesso no Base URL: um segundo /v1 ou o caminho completo /chat/completionsDeixe apenas /v1 — o LiteLLM adiciona o caminho automaticamente
400 … Model "…" not found. Available: …O identificador após openai/ não coincide com nenhum modelo da redeO gateway lista os disponíveis; a lista completa é GET https://gate.joingonka.ai/v1/models
429A chave atingiu o limite de solicitações por minuto ou o modelo ficou sem capacidade em horário de picoO OpenHands tenta repetir a solicitação automaticamente com uma pausa crescente. Se persistir, alterne o perfil com o comando /model; o estado da rede pode ser visto na página de status
402Saldo insuficienteRecarregue sua conta na seção «Billing»; a chave continua funcional
O agente responde como um chatbot: não mexe nos arquivos, confunde-se com chamadas de ferramentasO modelo não lida bem com o ciclo do agente; a documentação do OpenHands sugere mudar de modelo nesse casoAlterne para o perfil DeepSeek V4 Flash — em nosso teste, ele completou o ciclo do agente sem problemas

De acordo com a documentação do OpenHands, o número de tentativas e as pausas entre elas no caso de erro 429 são configurados pelas variáveis LLM_NUM_RETRIES, LLM_RETRY_MIN_WAIT e LLM_RETRY_MAX_WAIT. Os valores padrão na documentação e no SDK divergem, portanto, guie-se pelos valores reais: no estado de conversa da CLI 1.16.0, vimos 5 tentativas com pausas de 8 a 64 segundos.

Quanto custa e o que considerar no trabalho

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 é o mesmo para todos os modelos da rede e é obtido nesta página de uma fonte em tempo real.

CenárioConsumoAtravés do Gateway
Tarefa única: entender um arquivo, fazer uma ediçãodezenas de milhares de tokensfrações de centavo
Desenvolvimento autônomo de uma funcionalidade20-50M de tokensdezenas de centavos
24 horas de automações em segundo plano~150M de tokenscerca de um dólar

As estimativas na coluna à direita baseiam-se nos preços de setembro de 2026; a economia dos agentes é explicada detalhadamente no artigo sobre a API mais barata para agentes de IA.

Limite de gastos. O OpenHands sugere definir limites de gastos — o gateway tem isso integrado ao próprio modelo de pagamento: o saldo é pré-pago e o agente não gastará mais do que o que está na conta. O saldo restante e os gastos diários podem ser vistos no painel. Para CI e automações em segundo plano, crie uma chave separada para que seu consumo não se misture com o seu; as chaves secundárias com limite diário são descritas no artigo sobre Management Keys.

Nível de confiança. O Agent Canvas, executado via npm, trabalha com as permissões do seu usuário e vê todo o sistema de arquivos. Para códigos de terceiros, use a versão no Docker: o agente verá apenas o diretório montado. Isso é uma característica do próprio OpenHands, não depende do provedor do modelo.

A correspondência fica com você. O OpenHands armazena o histórico da conversa localmente, em ~/.openhands, e envia-o para o modelo a cada passo; o gateway não armazena a correspondência — seus prompts e código não permanecem lá após a resposta.

Se a tarefa incluir imagens — capturas de tela de interfaces, esquemas — crie um perfil separado para ela com um modelo de visão: os modelos da rede Gonka são de texto. Para código, comandos e arquivos, isso não é uma limitação.

O OpenHands conecta-se ao JoinGonka Gateway usando três campos: Custom Model openai/deepseek-ai/DeepSeek-V4-Flash-0731, Base URL https://gate.joingonka.ai/v1 e a chave jg-…. No Agent Canvas, isso fica na aba Advanced em Settings > LLM; na CLI, use o assistente de configuração ou defina as variáveis de ambiente LLM_MODEL, LLM_BASE_URL e LLM_API_KEY com a flag --override-with-envs; config.toml permanece da série anterior. O prefixo openai/ seleciona o protocolo, não o fornecedor, e o sufixo /v1 é obrigatório. Execuções ao vivo confirmaram o loop de agente em todos os três modelos da rede: por padrão, use o DeepSeek V4 Flash com contexto de 380K e até 32768 tokens de resposta, o GLM-5.3 Flash para planejamento e o MiniMax M2.7 como perfil de reserva para horários de pico.

Quer saber mais?

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

Obter chave e tokens gratuitos →