Subagentes de DeepSeek Harness: la delegación como multiplicador de coste
Updated August 16, 2026 · first published August 16, 2026
La forma más rápida de multiplicar la factura de un agente es dejar que los agentes creen agentes. Una petición de usuario se convierte en un árbol, y el árbol no tiene tamaño natural. Por eso DeepSeek Harness no trata la delegación como una función más, sino como una costura con límites explícitos.
Los subagentes son una costura, no algo integrado
La delegación va por ctx.subagents. A diferencia del ejecutor de shell, que tiene exactamente una implementación, los proveedores de subagentes se registran por nombre y varios pueden coexistir. La documentación enumera seis transportes: creación in-process y fork (agentes ordinarios a través del contexto del padre), un puente ACP para despliegue remoto, Codex, Claude Code y una variante basada en SDK.
En términos de coste esto significa que el precio de un hijo depende de qué proveedor lo creó. Un agente forkeado in-process y uno remoto lanzado por un puente ACP se ven iguales en el código que los llama y tienen facturas completamente distintas.
Dos modos de delegación, dos perfiles de coste
| Modo | Forma | Característica de coste |
|---|---|---|
| De un disparo | Crear hijo, enviar prompt, esperar resultado, descartar | Acotado, atribuible al turno del padre |
| Continuable | Sesión de fondo duradera con una activación residente | Abierto; se acumula entre turnos |
El modo de un disparo se resuelve en un handle de ejecución con una promesa de resultado terminal. Los hijos continuables son más caros de sostener: un gestor de continuación reserva la identidad, compone el hijo, ordena cada turno por el buzón del hijo, y el proveedor solo aporta los metadatos de creación inicial. Las activaciones tienen tres estados: en ejecución, en espera (inactiva pero con activaciones hijas sin completar) y liquidada. Si llega un mensaje sin activación viva, se reanuda en frío desde la sesión persistida.
Las reanudaciones en frío son la línea que la gente olvida. El estado se rehidrata desde el registro, así que los tokens de entrada son proporcionales al tamaño del registro. Un hijo longevo al que se habla poco puede costar más por mensaje que uno siempre activo.
Las capacidades fallan alto, no en silencio
El harness valida las capacidades solicitadas contra el proveedor y rechaza con un error tipado en vez de ignorarlas calladamente. Las capacidades de arranque cubren esquemas de salida, límites de profundidad, filtros de herramientas y personas, y se corresponden uno a uno con las opciones de la petición. Si pide algo que el proveedor no soporta, se entera al arrancar, no en la factura.
La profundidad tiene tope, y el tope no se puede blanquear
La profundidad de delegación se persiste en la cabecera de sesión y un campo en tiempo de ejecución sigue el mayor de los dos valores, de modo que una reanudación en frío no puede rebajarla. El arranque se rechaza si la profundidad derivada supera maxDepth o los límites de entero seguro.
Un padre que crea tres hijos, y cada uno tres más, ha convertido una petición de usuario en trece agentes. Los topes de profundidad son la diferencia entre una ramificación que usted dimensionó y otra que descubrió.
Descubrir es barato, entregar es autoritativo
listChildren() devuelve un corpus con preferencia por lo vivo mediante una aceleración de tres niveles: caché de marca de agua, luego checkpoint de proyección, luego inspección de la persistencia. listDescendants() recorre en preorden y añade posiciones de padre y profundidad. Ninguna consulta registros de agentes, activaciones ni proveedores; la entrega de mensajes sigue siendo la autoridad. Para atribución de costes esto importa: puede enumerar el árbol barato y cuando quiera.
Los resultados llevan una razón de parada
La salida es el último mensaje de asistente no vacío o el flujo de texto acumulado; la salida estructurada opcional se valida contra el esquema pedido. El stopReason es una unión extensible por fusión: completed, aborted, error, max-tokens, refusal. Todo lo que no sea completed significa salida parcial mapeada a resultados de herramienta con error: pagada e incompleta.
Qué medir
- Hijos por turno de padre y descendientes por petición de usuario.
- Profundidad máxima observada frente al tope configurado.
- Porcentaje de hijos continuables reanudados en frío, más el tamaño del registro al reanudar.
- Distribución de razones de parada: mucha proporción de max-tokens o error es trabajo pagado y sin terminar.
Related
- ¿Qué es DeepSeek Harness? Guía completa
- Todo es un plugin: la arquitectura (EN)
- Límites de gasto en el harness (EN)
- El registro de sesión como registro de costes (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 →