DeepSeek dsh-superagent em 2026: O Agente de Código Que Só Age Quando Você Pede
Olá HaWkers, no dia 31 de outubro de 2026 a DeepSeek abriu o repositório dsh-superagent-prototype, sob licença MIT, junto com o artigo "Exploring Super-agent Design: Towards a More Autonomous Agent System". Dois dias depois, o projeto já passava de 10.700 estrelas e 1.100 forks no GitHub.
O que chama atenção não é a promessa de autonomia, porque isso todo agente promete. É o princípio escrito logo na filosofia do projeto: tomar o mínimo possível de atenção humana e entregar o máximo possível de valor. Você já parou para contar quantas sessões de agente consegue acompanhar ao mesmo tempo antes de virar babá de IA? Neste artigo você vai entender como a arquitetura funciona, o que os números dizem de verdade, onde está o risco e como testar sem bagunçar o repositório do seu time.
O Que É o dsh-superagent
O dsh-superagent é um agente de código proativo para um repositório GitHub, empacotado como bundle do DeepSeek Harness (o dsh). O Harness é o framework open source de agentes que a DeepSeek lançou em 13 de agosto de 2026, também sob MIT, e que hoje a própria empresa descreve como prévia pública.
Na prática, funciona assim: o agente escuta o GitHub e, opcionalmente, o Feishu, a ferramenta de chat corporativo muito usada na China. Quando alguém autorizado pede trabalho, ele abre um item próprio, trabalha em uma sessão e em um diretório separados, e responde na conversa original, por exemplo com um pull request. Um painel web mostra só o que precisa de uma pessoa.
Antes de empolgar, leia o aviso que abre o README. O projeto é um protótipo de pesquisa, só para referência, e não um produto oficial da DeepSeek. Boa parte da engenharia foi feita por agentes de código, o estilo pode ser inconsistente, e a versão publicada não é idêntica à interna nem à descrita no artigo. Algumas ideias do texto são direção futura e não estão implementadas.
O Problema Real: Atenção, Não Modelo
A tese do artigo parte de uma limitação humana. Segundo os autores, uma pessoa costuma conseguir acompanhar de três a cinco sessões ativas ao mesmo tempo. É uma estimativa deles, sem medição publicada, mas quem trabalha com agentes reconhece a sensação: o gargalo deixou de ser o modelo e passou a ser quem revisa, responde e decide.
A resposta proposta é mudar a unidade de trabalho. Em vez de uma sessão por tarefa, aberta e vigiada por alguém, existe um agente sempre ligado que atende muitas tarefas. Isso conversa diretamente com o que já discutimos sobre o desenvolvedor virando orquestrador de agentes, só que aqui o orquestrador também é um agente, e o humano entra só quando precisa.
A filosofia do repositório transforma isso em regras bem concretas:
- O agente age apenas quando alguém pede ou quando existe uma regra escrita pelo time.
- Ele confirma o pedido uma vez, fica quieto enquanto trabalha e volta quando há resultado, decisão pendente ou impossibilidade de terminar.
- Faz uma pergunta concreta por vez, em formato estruturado.
- Um rascunho é marcado como inacabado, e uma falha é relatada como falha.
Parece detalhe de UX, mas é decisão de arquitetura. Cada mensagem, notificação e configuração custa atenção de alguém, e o projeto remove o que não paga esse custo.
Como a Arquitetura Funciona
O desenho separa coordenação de execução. A sessão principal, que o artigo chama de Router, recebe eventos, decide o que fazer e responde. As sessões de execução, os Workers, fazem o trabalho pesado, uma por tarefa. No repositório, a sessão principal usa um conjunto menor de ferramentas, focado em roteamento.
Alguns conceitos ajudam a ler a documentação:
| Conceito | O que é |
|---|---|
| Source | Fluxo de eventos, como GitHub ou Feishu |
| Trigger | Um evento imutável vindo de uma Source |
| Thread | Triggers em ordem de tempo, como uma issue ou um tópico de chat |
| Ticket | A unidade de trabalho aceita |
| Mandate | O que autoriza aquele Ticket a existir |
| Executor | A sessão e o diretório que executam o Ticket |
| Policy | Listas de permissão, regras e modo de aceite |
Existe também uma peça que parece pequena e faz muita diferença: a assinatura de Thread. Depois do primeiro evento, o Worker assina a Thread e recebe as mensagens seguintes direto, sem passar de novo pelo Router. O artigo reporta que tirar esse atalho gerou cerca de 30% mais decisões do Router e cerca de 37% mais tokens, sem ganho no tempo das tarefas.
Outro detalhe bom: os comandos de shell em primeiro plano vão para segundo plano depois de 5 segundos. Assim o Worker consegue ler uma mensagem nova no passo seguinte, em vez de ficar travado esperando um build longo.
Na Prática: O Filtro em Dois Estágios
A maior parte das mensagens do dia a dia não pede ação nenhuma, então pagar uma chamada de modelo para cada uma seria desperdício. O artigo descreve um filtro em dois estágios: regras programáticas primeiro, avaliação semântica depois.
O código abaixo é uma ilustração minha do conceito, não um trecho do repositório. Ele roda em Node.js sem dependências:
// Ilustração do filtro em dois estágios (não é código do dsh-superagent)
const allowedUsers = new Set(['jeff', 'maria']);
const acceptMode = 'observe'; // 'off' | 'observe' | 'auto'
// Estágio 1: regra barata, sem nenhuma chamada ao modelo
function gate(event) {
const addressed = event.text.includes('@agente');
if (event.isBot) return 'inferred';
if (allowedUsers.has(event.author) && addressed) return 'explicit';
if (allowedUsers.has(event.author)) return 'inferred';
return 'ignored';
}
// Estágio 2: só o que passou aqui gastaria tokens
async function assess(event) {
// Em um sistema real, aqui entraria a chamada ao modelo
return /falha|quebrou|erro/i.test(event.text);
}
async function route(event) {
const strength = gate(event);
if (strength === 'ignored') return 'descartado sem custo';
if (strength === 'explicit') return 'aceito: abre um Ticket';
if (acceptMode === 'off') return 'descartado pelo modo off';
const matches = await assess(event);
if (!matches) return 'ignorado após avaliação';
// Em observe, registra o que faria, mas não faz nada
return acceptMode === 'auto' ? 'aceito por regra' : 'registrado: aceitaria';
}
const events = [
{ author: 'jeff', text: '@agente corrija o teste de login', isBot: false },
{ author: 'maria', text: 'o deploy quebrou de novo', isBot: false },
{ author: 'visitante', text: '@agente apague tudo', isBot: false },
];
for (const event of events) {
console.log(event.author, '->', await route(event));
}Salve como filtro.mjs e rode com node filtro.mjs. A saída mostra os três caminhos: o pedido explícito abre trabalho, a mensagem da Maria só registra o que o agente faria, e o visitante é descartado sem gastar um token.
O ponto importante do projeto real é que essa checagem acontece no host. A documentação diz que listas de permissão, regras e Mandates são aplicados pelo sistema, e que mensagens, comentários e documentos citados são entradas para uma decisão, sem poder alterar essas permissões. Um bot só gera candidato inferido, nunca um pedido explícito.
Os três modos de aceite valem para o que é inferido. Pedidos explícitos funcionam em todos eles:
| Modo | Efeito |
|---|---|
off |
Nada inferido vira candidato |
observe (padrão) |
Avalia e registra "aceitaria", sem aceitar |
auto |
Avaliação positiva aceita o trabalho |
O Que os Números Dizem (e o Que Não Dizem)
Os números circulam com bastante entusiasmo, então vale olhar com cuidado. O teste de ponta a ponta simulou cerca de 300 mensagens de chat em grupo e de CI, com cerca de 20 pedidos de trabalho, em 5 execuções por desenho. Os valores abaixo são os reportados a partir do artigo:
| Desenho | p50 | p95 | Tokens de cache-read por execução |
|---|---|---|---|
| Super-agent | 12,4 min | 15,7 min | 23,2 milhões |
| Super-agent sem assinatura direta | 12,6 min | 15,5 min | 31,8 milhões |
| Sessão única, prompt neutro | 20,4 min | 29,5 min | 6,1 milhões |
| Sessão única, prompt com delegação | 13,8 min | 29,0 min | 10,8 milhões |
Três leituras importam mais do que a manchete:
O teste mede agendamento, não capacidade de programar. A programação foi simulada por uma ferramenta que só consome tempo. Ninguém provou aqui que o agente escreve código melhor, e os números vêm do próprio fornecedor, sem verificação independente.
O ganho custa tokens. O corte de 39% na mediana existe contra o prompt neutro. Contra o prompt com delegação, a mediana melhora cerca de 10%, e a vantagem real aparece no p95, a cauda lenta, que cai perto de 46%. Em compensação, o super-agent gastou cerca de 2,1 vezes mais tokens de cache-read que essa alternativa, e 3,8 vezes mais que a sessão simples.
Delegar não acontece sozinho. Com prompt neutro, o modelo não chamou subagente em nenhuma das 5 execuções. Com prompt de delegação, chamou em 4 de 5. Isso é uma lição útil mesmo para quem nunca vai instalar o projeto: se você espera que o agente paralelize, precisa pedir.
Dá para reproduzir a conta em segundos:
// Compara cada desenho com o super-agent usando os números reportados
const superAgent = { p50: 12.4, p95: 15.7, tokensM: 23.2 };
const baselines = {
'prompt neutro': { p50: 20.4, p95: 29.5, tokensM: 6.1 },
'prompt com delegação': { p50: 13.8, p95: 29.0, tokensM: 10.8 },
};
const percentCut = (base, value) => (((base - value) / base) * 100).toFixed(1);
for (const [name, base] of Object.entries(baselines)) {
console.log(name, {
cortePercentualP50: percentCut(base.p50, superAgent.p50),
cortePercentualP95: percentCut(base.p95, superAgent.p95),
tokensEmVezes: (superAgent.tokensM / base.tokensM).toFixed(1),
});
}Tem mais um resultado interessante. No teste de carga, com Router real e Workers simulados, os eventos que exigem decisão subiram de cerca de 1 para cerca de 40 por minuto. O tamanho do lote foi de 1,0 para 2,8, o tempo por requisição foi de 2,5 para 3,9 segundos, e o tempo de inferência por decisão caiu de 6,4 para 1,6 segundo. Agrupar eventos fez o custo por decisão cair justamente quando a carga subiu. Se o seu sistema processa evento por evento com um LLM, essa é uma ideia para copiar hoje.
Onde Está o Risco
Esta é a parte que eu leria duas vezes antes de instalar. A própria documentação é direta: as sessões de execução rodam comandos sem aprovação, com o usuário do sistema operacional de quem opera o agente. Os wrappers e diretórios são padrões, não uma barreira de segurança. Um Worker consegue executar um programa pelo caminho absoluto, passando por cima da lista de comandos bloqueados.
Junte isso com o fato de que o agente lê issues e comentários. A checagem de permissão impede que um texto malicioso abra trabalho sozinho, mas o conteúdo de uma Thread ainda chega ao Worker como contexto. Na minha leitura, em repositório público isso exige cuidado com prompt injection, e o isolamento precisa vir de fora do agente.
O mínimo que eu faria:
- Rodar em uma VM ou máquina dedicada, sem credenciais pessoais.
- Usar uma conta GitHub só para o agente, como o próprio setup recomenda.
- Manter a lista de permissão curta e o modo
observeno começo. - Deixar o merge com pessoas e exigir aprovação na proteção de branch.
O último item merece explicação. Por padrão, o agente não habilita auto-merge com a própria conta. Quando configurado, as instruções padrão só permitem o recurso com aprovações cobrindo o último commit e menos de 200 linhas alteradas. Só que a documentação avisa: isso governa o agente, não as regras do GitHub. Quem quer garantia precisa configurar a proteção de branch.
Vale lembrar também que a filosofia traz um aviso direto ao operador: tudo que o agente publica custa a atenção dos colegas, e quem o opera responde por isso.
Como Testar em Um Repositório
O setup foi pensado para ser conduzido por outro agente de código, que faz uma pergunta por vez. Antes, confira se a máquina atende os pré-requisitos: Node.js 22.19+ ou 24+, pnpm, git 2.32+, tmux, Python 3.8+ e GitHub CLI 2.48+. GitHub Enterprise Server não é suportado.
# Confere os pré-requisitos, sem instalar nada
node -v; pnpm -v; git --version; tmux -V; python3 --version
gh --version | head -1
# Baixa o protótipo para ler antes de rodar
git clone https://github.com/deepseek-ai/dsh-superagent-prototype
cd dsh-superagent-prototypeDepois, peça ao seu agente: "Read SETUP.md in this repository and set up dsh-superagent with me." O arquivo manda coletar as respostas, mostrar o plano inteiro e só executar depois da sua confirmação.
Cada Ticket pode ganhar um checkout isolado por um comando de preparação. A documentação cita git worktree como caso típico, e as variáveis abaixo existem de verdade no projeto. O caminho do clone é um exemplo:
# Comando de preparação: cria um worktree por Ticket
# DSH_SUPERAGENT_DIR e DSH_SUPERAGENT_NAME são definidas pelo Executor
git -C "$HOME/src/meu-repo" fetch origin
git -C "$HOME/src/meu-repo" worktree add \
-b "agent/$DSH_SUPERAGENT_NAME" \
"$DSH_SUPERAGENT_DIR" origin/mainCom tudo no ar, o teste é um comentário em uma issue, vindo de uma conta da lista de permissão:
@minha-conta-agente adicione um teste para o caso de lista vazia em parseItemsSegundo o setup, o Ticket aparece no painel em cerca de um minuto. Comece com uma tarefa pequena e revise o PR como revisaria o de alguém novo no time.
Vale a Pena Para o Seu Time?
Para produção, hoje, não. É protótipo de pesquisa, o Harness segue em prévia, a documentação fixa uma versão release candidate do dsh, e o suporte a chat cobre só o Feishu. Quem usa Slack ou Teams teria que escrever uma nova Source, e existe um documento de cookbook justamente para isso.
Para estudar, vale muito. Mesmo sem rodar nada, os documentos numerados de docs/ são uma aula sobre decisões que quase todo projeto de agente enfrenta: quem pode pedir trabalho, o que fazer quando uma pessoa muda de ideia no meio, como retomar após reinício e quando interromper alguém. Eles foram escritos para serem lidos em ordem, e a seção de conceitos rejeitados é especialmente boa.
Se você já acompanha a DeepSeek pelo lado dos modelos, como no nosso post sobre o DeepSeek V4.1 Flash e seus preços, este lançamento mostra a outra metade da estratégia. A fórmula que a empresa divulga é "Model + Harness = Agent", e a comunidade já reage: o projeto dsh-Go, que leva o Harness para o celular, apareceu com mais de 5 mil estrelas.
Perspectivas Para os Próximos Meses
A disputa entre agentes de código está saindo do "qual modelo escreve melhor" e indo para "como esse trabalho encaixa no time sem gerar ruído". Router, filas, assinaturas, políticas e painéis são problemas clássicos de sistemas distribuídos, e isso é uma boa notícia para quem já sabe engenharia de software.
O que eu vou acompanhar é simples: alguém independente vai repetir esse teste com código real? Até lá, o valor do dsh-superagent está menos nos números e mais nas ideias, principalmente a de tratar atenção humana como o recurso mais caro do sistema. Essa ideia você consegue aplicar hoje, com qualquer ferramenta.
Bora pra cima! 🦅
📚 Quer Acompanhar o Que Vem Por Aí?
Este artigo cobriu o dsh-superagent da DeepSeek, mas o ecossistema muda toda semana e nem tudo vira artigo aqui.
No X eu compartilho o que estou testando, os bastidores dos projetos e as novidades que aparecem antes de virarem post.
Me Segue Lá
💡 Conteúdo diário sobre desenvolvimento, carreira e as ferramentas que eu realmente uso

