O que é um harness de agente?

Um harness de agente é a camada de runtime envolvida em torno de um modelo de linguagem que transforma um gerador de texto em algo capaz de trabalhar. Ele roda o laço, entrega ferramentas ao modelo, decide o que entra no contexto, guarda sessões em algum lugar durável e impõe o que o agente tem permissão de tocar. O modelo fornece o discernimento; o harness fornece todo o resto.

O que o harness de fato faz

Se você despir um agente até o osso, sobram cinco responsabilidades, e nenhuma delas o modelo dá conta sozinho.

O laço. Uma chamada ao modelo retorna uma vez e para. Um agente segue adiante: chama o modelo, executa a ferramenta que ele pediu, anexa o resultado, chama de novo — até a tarefa terminar ou um limite ser atingido. Esse ciclo é o trabalho central do harness, e a maior parte do que distingue um harness de outro — como ele repete tentativas, quando desiste, se consegue rodar etapas em paralelo — é uma decisão sobre o laço.

As ferramentas. Ler um arquivo, executar um comando, buscar na web. O harness anuncia o que está disponível, valida os argumentos que o modelo produziu, executa a chamada e formata o resultado de volta em algo que o modelo consiga ler.

O contexto. Todo modelo tem uma janela finita e uma tarefa real vai estourá-la. Decidir o que fica, o que é resumido e o que é buscado de novo sob demanda é responsabilidade do harness, e é o ponto que os usuários sentem mais diretamente quando um agente esquece o que estava fazendo.

As sessões. Trabalho que atravessa horas ou reinicializações precisa morar em algum lugar: transcrições, estado intermediário, a capacidade de retomar. Sem persistência você tem uma janela de chat, não um agente.

As permissões. Um agente capaz de executar comandos de shell é uma superfície de segurança. Pedidos de aprovação, listas de permissão, sandboxes e limites do sistema de arquivos moram todos no harness, porque não dá para confiar que o modelo se policie sozinho — ele nunca foi projetado para isso.

O que um harness não é

Ele não é o modelo. Trocar o modelo muda o quão bem o agente raciocina; não muda se as sessões retomam ou se um comando precisa de aprovação. Essas são propriedades do harness, e é por isso que um mesmo modelo pode parecer competente numa ferramenta e sofrível em outra.

Ele também não é um plugin de IDE, embora os dois sejam fáceis de confundir porque muitas vezes você conhece o harness através de um editor. Uma extensão de editor é uma superfície: ela coleta o seu pedido e exibe a saída. O harness é quem detém o laço, a execução de ferramentas e o estado. Um harness bem construído consegue dirigir várias superfícies — uma CLI, uma interface web, um editor — sobre a mesma sessão, o que é um bom teste para saber se você está diante de um harness ou de uma fachada.

Como o DeepSeek Harness implementa isso

O DeepSeek Harness — dsh — foi lançado pela DeepSeek AI em 13 de agosto de 2026 sob licença MIT, e assume uma posição incomumente literal sobre tudo isso: tudo é um plugin. Modelos, ferramentas, skills, sessões, sandboxes, sistemas de arquivos, o próprio laço, a orquestração e a interface de usuário são todos plugins carregados num único runtime compartilhado.

Esse runtime é o Cordis, um metaframework cujo trabalho é carregar e ligar plugins; @deepseek-ai/cordis é uma peer dependency de todo pacote do harness. A composição acontece numa configuração de loader cordis.yml que lista os plugins a iniciar e suas opções, e uma flag --profile escolhe entre conjuntos para situações diferentes — entre os perfis de fábrica está o headless.

A consequência é que no dsh não existe uma linha significativa entre a aplicação e suas extensões. Trocar o sandbox é estruturalmente o mesmo ato que adicionar uma ferramenta. É por isso que um diretório de plugins importa mais aqui do que na maioria das ferramentas de agente: a capacidade mora nos pacotes, não no núcleo. Atualmente indexamos 7900 repositórios com topics dsh, dos quais 3942 mostram ligação real de plugin — você pode navegar por eles ou percorrê-los por categoria. Uma ressalva que vale repetir: o dsh é uma prévia para desenvolvedores e o README avisa que mudanças que quebram compatibilidade estão vindo, então o formato de loader descrito aqui é um retrato, não um contrato.

Harnesses versus frameworks de agente

Um framework de agente é uma biblioteca com a qual você constrói uma aplicação. Ele te entrega primitivas de laço, abstrações de ferramentas e auxiliares de memória, e deixa as decisões de produto com você — o programa é você quem escreve, e o que você entrega é seu.

Um harness já tomou essas decisões. Você instala e ele roda: há um laço padrão, um conjunto padrão de ferramentas, um modelo de permissões padrão, um jeito de retomar a sessão de ontem. A troca é a de sempre entre biblioteca e produto — menos controle, muito menos a construir.

O dsh ocupa um lugar interessante nessa linha. É um harness que você roda de imediato, mas como cada parte dele é um plugin sobre um framework de propósito geral, um usuário suficientemente teimoso consegue substituir as partes que a maioria dos harnesses trata como fixas. A distinção continua valendo — dá para usar o dsh sem escrever uma linha de código — mas a fronteira é mais macia que o normal.

Harnesses versus MCP

O MCP, Model Context Protocol, costuma ser citado na mesma frase que harnesses, mas os dois resolvem problemas diferentes. O MCP é um protocolo: ele padroniza como uma ferramenta ou fonte de dados se descreve e responde a chamadas, de modo que um servidor escrito uma vez possa ser usado por qualquer cliente que fale o protocolo. Ele responde a “como o agente alcança essa coisa”.

Um harness responde a “quem roda o laço e quando aquela ferramenta chega a ser chamada”. Ele gerencia contexto, permissões e sessões, e o MCP não tem opinião sobre nenhum desses pontos. Um harness pode ser um cliente MCP, e nesse caso servidores MCP viram mais uma fonte de ferramentas ao lado do que ele já oferece. Se você quiser a versão concreta disso no ecossistema do dsh, a categoria MCP e ferramentas do diretório reúne os plugins que ficam nessa fronteira.

Perguntas frequentes

O harness é a mesma coisa que o modelo?
Não. O modelo transforma texto em mais texto e não tem memória de ontem, acesso a arquivos nem capacidade de executar nada. O harness é o programa em volta dele que decide o que o modelo vê, executa as ferramentas que ele pede, devolve os resultados e para o laço quando o trabalho termina.
Um harness de agente é só um invólucro em torno de uma chamada de API?
Uma chamada isolada não é um harness. A característica definidora é o laço: o harness chama o modelo, executa a ferramenta que o modelo pediu, adiciona o resultado à conversa e chama de novo, repetindo até uma condição de parada ser atingida. Tudo o que é difícil em harnesses — gestão de contexto, permissões, persistência de sessão, recuperação de erros — existe por causa desse laço.
Qual a diferença entre um harness e um framework de agente?
Um framework é uma biblioteca com a qual você constrói uma aplicação; um harness é um programa executável que você usa. Frameworks te dão as peças e deixam as decisões com você, enquanto um harness já tomou essas decisões e as entregou como padrões. A linha se embaralha quando um harness é incomumente configurável, que é exatamente o caso do DeepSeek Harness.
Um harness de agente substitui o MCP?
Não, eles respondem a perguntas diferentes. O MCP é um protocolo que descreve como uma ferramenta ou fonte de dados se expõe a um agente, enquanto um harness é o programa que roda o laço e decide se aquela ferramenta chega a ser chamada. Um harness pode atuar como cliente MCP, o que os torna complementares em vez de concorrentes.
O que torna o DeepSeek Harness incomum entre os harnesses?
O desenho em que tudo é plugin. Modelos, ferramentas, skills, sessões, sandboxes, sistemas de arquivos, o laço, a orquestração e a interface são todos plugins carregados num runtime Cordis compartilhado e compostos por um arquivo cordis.yml — as partes que a maioria das ferramentas trata como internas e fixas aqui são pacotes substituíveis.

Continue lendo

Para ver as ideias acima como software rodando, instale o dsh — um comando npx já entrega uma interface web em http://127.0.0.1:3080. Para ver como um harness em que tudo é plugin se compara a um produto proprietário consolidado, leia a nossa comparação inicial entre dsh e Claude Code.