Onde colocar os limites de gasto no DeepSeek Harness
Updated August 16, 2026 · first published August 16, 2026
Um agente que descobre seu orçamento na fatura mensal não tem orçamento: tem um post-mortem. A pergunta útil sobre qualquer harness é onde dá para se plantar dentro do laço e dizer não, e o DeepSeek Harness responde com dois pontos de extensão em cascata com nome próprio.
Primeiro, o formato do laço
O harness usa um modelo de turno e passo. Um passo é um pedido ao modelo mais as chamadas de ferramenta que ele produz. Um turno contém zero ou mais passos. O fluxo de um turno é, em linhas gerais: tomada da entrada, montagem do prompt, agent/pre-step, stream do LLM, execução de ferramentas, fecho do passo e fecho do turno.
Dois fluxos de eventos correm lado a lado. session/event carrega fatos duráveis de replay — chunks, mensagens, chamadas de ferramenta, resultados. agent/* carrega sinais vivos de coordenação — status, caixa de entrada, interceptação de pedidos. Os limites pertencem ao segundo; a contabilidade ao primeiro.
Ponto de interceptação 1: agent/pre-step
É o ponto de controle antes de o pedido ao modelo sair. A documentação afirma que a decisão devolvida por agent/pre-step é autoritativa e que listeners que envolvem next() preservam as mensagens a jusante salvo substituição intencional. É essa propriedade que o torna utilizável como portão de orçamento: um listener pode recusar um passo proposto, ou modificá-lo, e a decisão vale.
O que pertence aqui:
- Tetos de passos por turno. O modo de falha do agente desgovernado é um turno que nunca converge. Um teto duro transforma uma conta ilimitada numa limitada.
- Orçamentos cumulativos de tokens. Some o uso já registrado no log de sessão e recuse o passo seguinte além do limiar.
- Rebaixamento de modelo. Reescreva o passo para uma rota mais barata quando o turno passar de um limiar suave, em vez de recusá-lo de vez.
- Limites de tamanho de contexto. A montagem do prompt ocorre antes deste hook, então o pedido montado é visível e mensurável aqui.
Ponto de interceptação 2: tools/pre-execute
A execução de ferramentas é um pipeline de três fases. Primeiro roda a cascata tools/pre-execute, depois os guardas monotônicos e só então o corpo da ferramenta, em sandbox e com controle de acesso ao sistema de arquivos. Em seguida uma cascata pós-execução pode aceitar, bloquear, substituir ou acrescentar contexto ao resultado, e ToolDefinition.finalizeContent impõe invariantes de conteúdo de forma síncrona.
A camada de permissões é deliberadamente assimétrica. Guardas monotônicos registrados negam ou se abstêm, com identidade protegida: nunca concedem. Se um guarda nega, ou se o prompt de uso único de ctx.approval está ausente ou é irrespondível, o resultado é negação e o corpo da ferramenta é pulado. Falha fechado, não aberto.
Mutações do sistema de arquivos são controladas à parte: só passam mutações fs/write-intent ou fs/edit-intent. Escrever não é um efeito colateral incidental de uma ferramenta rodar.
Duas propriedades tornam este pipeline confiável como ponto de controle: guardas só podem negar, e um prompt de aprovação irrespondível nega. A maioria das camadas caseiras de política para agentes falha em aberto quando o canal de aprovação some, que é exatamente quando você precisava dela.
O que o pipeline registra
Três eventos de sessão dão a trilha de auditoria: tool/call antes da execução, tool/code-dispatch para subchamadas e tool/result como resultado final autoritativo. Subchamadas serem registradas em separado importa: uma única chamada de ferramenta visível ao modelo que se ramifica internamente não esconde sua ramificação.
Um conjunto prático de limites
| Controle | Hook | Impede |
|---|---|---|
| Máximo de passos por turno | agent/pre-step | Laços que não convergem |
| Teto cumulativo de tokens | agent/pre-step | Excesso de gasto em fogo brando |
| Rebaixamento de rota após limiar | agent/pre-step | Preço de fronteira em trabalho barato |
| Lista de ferramentas por classe de custo | Guarda monotônico | Ferramentas caras em contextos baratos |
| Negação de subprocessos e rede | Política ctx.sandbox | Saída de rede não medida |
| Controle de write-intent | Costura ctx.fs | Mutações não revisadas |
A ressalva
O DeepSeek Harness está em developer preview e seu próprio README avisa de mudanças que quebram compatibilidade. Estes nomes e semânticas de hooks são os documentados hoje; trate plugins de limites construídos sobre eles como código que você vai revisitar, e fixe a versão contra a qual construiu.
Related
- O que é DeepSeek Harness? Guia completo
- O log de sessão como registro de custos (EN)
- Tudo é um plugin: a arquitetura (EN)
- Limites de gasto para agentes (EN)
Want this applied to your own LLM spend? FinOps LLM runs a free audit of your AI costs and shows where the savings are. Book free audit →