Seções da Base de Conhecimento ▾

Navegação

▸ Comece aqui Por funções

Categorias

Ferramentas 52
Glossário 12

Ferramentas

DeepSeek Harness: seu próprio provedor via JoinGonka Gateway

DeepSeek Harness (comando dsh) é um harness de agentes de código aberto da DeepSeek AI: uma interface na qual o modelo lê e edita arquivos do projeto, executa comandos, delega subtarefas e mantém um plano, enquanto você monitora tudo pelo navegador e confirma os passos arriscados. O projeto é jovem: os autores o chamam de developer preview e avisam diretamente que haverá mudanças incompatíveis. Portanto, tudo abaixo está atrelado a uma versão específica — 0.1.5-rc.2, na qual concluímos a configuração desde a primeira tela até a resposta do agente.

Ao iniciar pela primeira vez, o dsh solicita a chave de API oficial do seu fornecedor, mas sua camada de modelos é aberta: na página Settings → Models, é possível adicionar qualquer provedor que utilize um dos três protocolos: OpenAI Chat Completions, OpenAI Responses ou Anthropic Messages. O JoinGonka Gateway suporta todos os três, portanto, o harness se conecta à rede descentralizada Gonka de forma nativa, sem plugins ou patches.

Um detalhe revelador da página do aplicativo no catálogo do OpenRouter: no ranking de modelos através dos quais o DeepSeek Harness funciona, nos últimos 30 dias o segundo lugar é ocupado pelo DeepSeek V4 Flash 0731, e o terceiro pelo GLM 5.3 Flash (corte em 21 de setembro de 2026; em primeiro lugar, um modelo de teste anônimo). Ambos os modelos abertos são mantidos pela rede Gonka — junto com o MiniMax M2.7 —, então o conjunto habitual é transferido para outro endpoint sem trocar de modelo: apenas o endereço e o preço por token mudam.

O que é o DeepSeek Harness e como executá-lo

O harness é tudo o que cerca o modelo no trabalho agêntico: o ciclo «requisição → chamada de ferramenta → resultado → próximo passo», as ferramentas de arquivo e terminal, as permissões e confirmações, o log da sessão, a compactação de contexto. O DeepSeek Harness monta isso a partir de plugins: a arquitetura «everything is a plugin» é construída sobre o framework Cordis, e qualquer nó — de uma ferramenta ao adaptador de modelo — pode ser trocado sem mexer no núcleo. O código é aberto sob licença MIT.

Não precisa instalar nada: basta ter Node.js (as linhas 22 a partir da 22.19 ou 24 e mais recentes):

npx @deepseek-ai/dsh web

O comando sobe uma Web UI em http://127.0.0.1:3080 e a abre no navegador; ao rodar por SSH, o endereço apenas é impresso no terminal. A flag --no-open inicia o servidor sem navegador, e --port muda a porta. O diretório de onde o dsh foi iniciado vira o padrão de trabalho, mas a interface só inicia a sessão depois que você escolhe explicitamente um workspace.

ModoComandoPara quê
Web UIdsh webInterface principal: sessões, ajustes, confirmações de operações
Tarefa avulsadsh --profile headless "task"Scripts e CI: resposta no stdout, raciocínio no stderr
ACPdsh --profile acpEditores e clientes com suporte a Agent Client Protocol
SDKdsh --profile sdkClientes via JSON-RPC, incluindo o Python SDK

A camada de modelos é feita de dois adaptadores. O direto fala com a API oficial do fornecedor. O multiprovedor — dsh-llm-pi-ai — é construído sobre a biblioteca pi-ai, a mesma que sustenta o agente de terminal Pi; por ele se conectam tanto os provedores embutidos do catálogo quanto qualquer endpoint próprio. Por isso os nomes dos campos na configuração — api, contextWindow, maxTokens — são os mesmos que você já conhece do Pi.

Sobre a maturidade. O README do projeto começa com um aviso: developer preview, iterações rápidas, mudanças que quebram. Um documento à parte, o SAFETY.md, deixa claro que não houve auditoria de segurança e que o agente executa comandos gerados pelo modelo. A conclusão prática é simples: rode o dsh em um contêiner, máquina virtual ou sob uma conta separada, e mantenha backups de tudo o que ele conseguir alcançar.

Conexão via Web UI: Settings → Models

Etapa 1: a chave. Cadastre-se em gate.joingonka.ai/register: após confirmar o endereço, você receberá 3M tokens gratuitos na conta. No painel, abra a seção «Chaves de API» e crie uma chave com o prefixo jg-. Vale a pena criar uma chave separada para o harness: assim o tráfego dele aparece nas estatísticas em uma linha própria.

Etapa 2: a primeira tela. Depois do aviso de status de teste (botão Continue), o dsh vai pedir a chave da API oficial («Add an API key to get started»). Ela não é obrigatória: clique em Configure later.

Etapa 3: o provedor. Abra Settings → Models e escolha Add a custom provider. Campos do formulário:

CampoValorObservação
Provider IDjoingonkaEm letras latinas minúsculas, começando por uma letra. O identificador é permanente: ele entra nas requisições, nas sessões salvas e no nome da referência à chave. Não dá para renomear: só criar um provedor novo e excluir o antigo
Display nameJoinGonka GatewayQualquer rótulo para as listas
Base URLhttps://gate.joingonka.ai/v1Com o sufixo /v1
API protocolopenai-completionsComo escolher o protocolo, na tabela abaixo
API keyjg-your-keyCampo somente gravação: depois de salvar, a página recebe um descritor mascarado, e não a chave em si

Etapa 4: os modelos. No bloco Models, clique em Fetch available models: o dsh vai pedir a lista ao gateway e abrir a janela «Choose models to add». No nosso teste apareceram os três modelos da rede —MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731 e zai-org/GLM-5.3-Flash— e, depois de Add selected, o harness preencheu sozinho a janela de contexto e o teto de resposta de cada um, conforme os dados do gateway. Falta só clicar em Create provider.

Etapa 5: escolher o modelo. Feche as configurações, clique em Choose workspace e adicione o diretório do projeto. Os modelos do novo provedor aparecem no seletor; o escolhido passa a ser o modelo padrão das novas sessões.

O dsh guarda a chave separada das configurações: no arquivo ~/.dsh/.credentials.yaml, com permissões somente para o dono. No settings.yaml fica apenas o nome da referência a ela — no nosso teste, JOINGONKA_API_KEY, conforme o identificador do provedor.

Qual protocolo escolher. O gateway fala os três; o que muda é o endereço base e algumas conveniências extras:

API protocolBase URLQuando escolher
openai-completionshttps://gate.joingonka.ai/v1A opção principal: o caminho canônico do gateway, a lista de modelos é carregada com um botão e o fluxo de raciocínio dos modelos reasoning chega em um stream separado
openai-responseshttps://gate.joingonka.ai/v1Se os seus plugins ou cenários foram feitos para a Responses API
anthropic-messageshttps://gate.joingonka.aiFormato Anthropic Messages; o caminho /v1/messages é adicionado pelo próprio cliente

Um provedor no dsh fala um único protocolo, então um segundo protocolo exige um segundo provedor com outro Provider ID. Para o dia a dia, a primeira opção basta; no nosso teste, o ciclo agêntico com chamadas de ferramentas funcionou nos três.

Configuração por arquivo: settings.yaml

O formulário Models grava em um documento YAML comum — $DSH_HOME/settings.yaml, por padrão ~/.dsh/settings.yaml. Dá para editar direto: o botão Open configuration file no topo das configurações abre o arquivo, e os adaptadores o releem na próxima requisição — não precisa reiniciar. A versão completa para a rede Gonka:

# ~/.dsh/settings.yaml
llm-pi-ai:
  providers:
    joingonka:
      displayName: JoinGonka Gateway
      apiKeyEnv: JOINGONKA_API_KEY
      api: openai-completions
      baseURL: https://gate.joingonka.ai/v1
      models:
        - id: deepseek-ai/DeepSeek-V4-Flash-0731
          name: DeepSeek V4 Flash
          contextWindow: 380000
          maxTokens: 32768
        - id: zai-org/GLM-5.3-Flash
          name: GLM-5.3 Flash
          contextWindow: 390000
          maxTokens: 8192
          reasoningEfforts:
            off: low
            high: high
        - id: MiniMaxAI/MiniMax-M2.7
          name: MiniMax M2.7
          contextWindow: 200000
          maxTokens: 8192
agent-default-model:
  provider: joingonka
  model: deepseek-ai/DeepSeek-V4-Flash-0731

O que importa aqui:

  • apiKeyEnv — não é a chave, mas o nome da referência a ela. O dsh procura o valor nesta ordem: variável de ambiente no momento da inicialização, depois .credentials.yaml (onde o formulário grava), depois .env no diretório de execução, depois ~/.dsh/.env. Se você configura o harness sem navegador, basta uma linha JOINGONKA_API_KEY=jg-your-key em ~/.dsh/.env com permissões 600. Uma variável exportada depois da inicialização não será vista por um processo já em execução.
  • Defina contextWindow e maxTokens explicitamente. A um modelo que o dsh não conhece ele atribui 262 144 e 32 768 tokens — o que não corresponde aos limites reais. O maxTokens definido também passa a ser o limite de resposta padrão para cada requisição.
  • reasoningEfforts — os níveis de raciocínio para o menu Effort. Um modelo adicionado manualmente não tem níveis, e o menu não aparece para ele. No GLM-5.3 Flash o interruptor é binário: o valor low desliga o raciocínio, qualquer outro o mantém completo. Por isso o nível off é mapeado para low, e high passa como está. No nosso teste com off não houve nenhum bloco de raciocínio, com high eles voltaram.
  • agent-default-model — o modelo para novos agentes, incluindo o modo headless. O mesmo faz a seleção de modelo na interface; aqui também dá para adicionar reasoningEffort.

Os interruptores compat que a documentação do dsh recomenda para gateways rígidos (supportsDeveloperRole: false, maxTokensField: max_tokens) não serão necessários aqui: o JoinGonka Gateway aceita tanto o papel developer quanto o campo max_completion_tokens.

O instalador npx @joingonka/setup não configura este harness: toda a conexão se resume ao formulário da seção anterior ou ao trecho YAML acima.

Verificação e erros comuns

O jeito mais rápido de validar a integração é uma execução única a partir do diretório com o código. Coloque ao lado um arquivo pequeno com um erro óbvio e peça para encontrá-lo:

cd /path/to/project
npx @deepseek-ai/dsh --profile headless "Read calc.py and tell me in one sentence whether it has a bug."

A resposta final é impressa em stdout, e o raciocínio vai para stderr com a marca dsh: reasoning:. O agente deve chamar por conta própria a ferramenta de leitura de arquivos e responder com fundamento: na nossa execução, cada um dos três modelos da rede apontou a linha errada. Ou seja, o ciclo completo «requisição → chamada de ferramenta → resultado → resposta» se monta corretamente através do gateway.

A segunda metade da verificação fica do lado do gateway. No painel, abra «Uso»: ali dá para ver as requisições por hora e por dia, a divisão por modelos e por chaves. Se apareceu uma linha com a chave do harness e um horário recente da última requisição, o tráfego está mesmo passando pelo gateway.

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

O que apareceO que significaO que fazer
AUTH: 401: … Invalid API keyO gateway não aceitou a chaveDigite a chave de novo na página Models ou corrija a variável para a qual apiKeyEnv aponta
MISSING_CREDENTIAL: … no credential for provider route "joingonka"Não se encontrou nada na referência de apiKeyEnvSalve a chave no formulário ou defina a variável antes de rodar o dsh: o ambiente é lido uma única vez, na inicialização
UNKNOWN_MODELO modelo não está na lista models do provedorAdicione-o ao formulário ou ao arquivo, ou escolha um já configurado
400 … Model "…" not found. Available: …O identificador foi escrito com imprecisão, quase sempre sem o prefixo do fornecedorCopie o id da lista que o próprio gateway traz na mensagem
429 … currently overloaded … (rate limit)O modelo ficou sem capacidade livre na rede neste momentoSituação normal sob carga: o dsh repete a requisição sozinho. Se as tentativas se esgotaram, troque de modelo ou espere um minuto; o estado aparece na página de status
Fetch available models responde 401A lista foi solicitada com uma chave incorretaConfira a chave no formulário; os modelos também podem ser digitados à mão — vão funcionar do mesmo jeito
O modelo de raciocínio não tem o menu EffortO registro do modelo não declara níveisAdicione reasoningEfforts em settings.yaml, como no exemplo acima
A resposta do modelo de raciocínio corta ou vem vaziaO raciocínio entra no limite de resposta e o consome por inteiroNão diminua o maxTokens; para tarefas curtas escolha o nível off
No campo de entrada aparece Select model e a digitação está bloqueadaO modelo padrão aponta para um provedor removidoEscolha outro modelo no seletor

Qual modelo escolher

O preço é o mesmo para todos os modelos da rede, portanto, a escolha depende do comportamento, não do orçamento. Abaixo estão os limites e como os modelos se comportaram em nossa execução dsh na mesma tarefa: ler um arquivo e encontrar um erro nele.

ModeloIdentificadorContexto / respostaComportamento no dsh
DeepSeek V4 Flashdeepseek-ai/DeepSeek-V4-Flash-0731380K / 32768Resposta limpa com indicação da linha. O maior limite de resposta na rede: edições longas e arquivos grandes em uma única rodada
GLM-5.3 Flashzai-org/GLM-5.3-Flash390K / 8192Modelo de raciocínio: o dsh mostra o raciocínio em um fluxo separado, a resposta permanece limpa. O raciocínio está incluído no limite de resposta
MiniMax M2.7MiniMaxAI/MiniMax-M2.7200K / 8192Resolve a tarefa corretamente; o raciocínio chega em um campo separado reasoning_content, no texto da resposta apenas a resposta em si

A recomendação padrão é DeepSeek V4 Flash: o trabalho dos agentes atinge rapidamente o limite do volume de contexto e da extensão da edição, e aqui há margem para ambos os parâmetros. Quando a tarefa exigir reflexão sobre uma lógica complexa, mude para GLM-5.3 Flash e mantenha o nível de raciocínio em high; para edições rápidas, o mesmo provedor oferece o nível off. O MiniMax M2.7 é uma opção equilibrada para tarefas curtas, quando o processo de raciocínio visível não atrapalha. O modelo é alterado no seletor da interface ou pela linha model no bloco agent-default-model.

A composição da rede é determinada pela votação dos participantes e muda com o tempo; a lista atual com os limites é sempre obtida via GET https://gate.joingonka.ai/v1/models — o mesmo comando usado pelo botão Fetch available models.

Quanto custa e o que considerar ao trabalhar

Ferramentas de agente consomem tokens de forma diferente a um chat: para cada frase sua, o harness adiciona um prompt de sistema e descrições de todas as ferramentas, e então conduz um diálogo de várias etapas com o modelo. Em nossa execução, a tarefa "ler arquivo e encontrar erro" levou de dois a três passos e de 14 a 22 mil tokens, sendo quase tudo isso entrada: cerca de sete mil tokens são consumidos a cada passo, mesmo antes da sua pergunta. Esse é um preço normal para a autonomia — e é exatamente por isso que o preço por token é o que decide.

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 é carregado nesta página de uma fonte em tempo real. Ordem de magnitude dos preços para setembro de 2026:

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

O pagamento é feito pelo consumo real, sem assinatura e sem cotas para o número de solicitações; o saldo e o consumo diário podem ser vistos no painel.

Versão. Enquanto o projeto estiver em status de developer preview, após cada atualização verifique se o provedor está ativo e, para reprodutibilidade, fixe a versão diretamente no comando: npx @deepseek-ai/[email protected] web.

Permissões. Novas sessões operam por padrão no modo Workspace Write — gravação dentro do diretório de trabalho; a interface solicita confirmação para operações que excedam a política. O modo pode ser alterado em Settings → General.

Repetições. Em caso de erro de rede único, o dsh repete a solicitação automaticamente — até cinco vezes, segundo a documentação —, portanto, um curto pico de carga na rede geralmente passa despercebido.

Privacidade. O gateway não armazena o conteúdo dos prompts e das respostas: nas estatísticas, permanecem apenas os agregados de consumo. O agente lê os arquivos do projeto localmente, na sua máquina.

Se precisar trabalhar com imagens — capturas de tela da interface, diagramas em fotos — inicie um segundo provedor com um modelo capaz de visão: o dsh mantém vários provedores simultaneamente, e os modelos da rede Gonka são textuais.

O DeepSeek Harness não é o único agente lançado pelo laboratório desenvolvedor de modelos: a Z.ai, autora do GLM, possui o ambiente ZCode, e a MiniMax possui o MiniMax Code de terminal. Ambos se conectam ao mesmo gateway com a mesma chave.

O DeepSeek Harness é um harness de agente open source da DeepSeek AI em status de developer preview: Web UI, execuções únicas, ACP e SDK sobre uma arquitetura de plugins. Seu próprio endpoint é conectado de forma padrão: Settings → Models → Add a custom provider, endereço https://gate.joingonka.ai/v1, protocolo openai-completions, chave jg-…; o botão Fetch available models carrega automaticamente DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 junto com os limites. O mesmo é registrado como um bloco llm-pi-ai em ~/.dsh/settings.yaml. Para o GLM-5.3 Flash, declare os níveis off: low e high: high — o raciocínio se tornará alternável. Execute o harness em um ambiente isolado e fixe a versão enquanto o formato não se estabiliza.

Quer saber mais?

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

Obter chave e tokens gratuitos →