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.