Conceptos

Super-agent de DeepSeek: cómo funciona el Router, qué demuestra el prototipo y por qué hay que aislarlo

Por Equipo Cloud Privado · · 13 min de lectura
Tarjeta con una caja Router que reparte el trabajo a tres cajas Worker sobre fondo grafito

Las claves en 30 segundos

  • Qué es: dsh-superagent, un prototipo de investigación con licencia MIT que convierte peticiones en GitHub o Feishu en trabajo hecho por agentes, para un solo repositorio de github.com.
  • La idea: un Router recibe y reparte, y cada tarea va a un Worker con su propia sesión y su propio directorio. Tú hablas con uno y dejas de coordinar a varios.
  • El dato que importa: con una sola sesión y permiso para delegar, el modelo no delegó en ninguna de las cinco ejecuciones. El p95 bajó de 29,5 a 15,7 minutos al quitarle esa decisión.
  • Ojo con ese dato: son mensajes sintéticos y programación simulada. Mide coordinación, no calidad del código.
  • Lo que menos se cuenta: el Mandate registra qué se autorizó, pero quien juzga si un comentario entra en ese alcance es el propio Worker, que corre con danger-full-access.
  • Antes de probarlo: máquina virtual dedicada, cuenta de sistema dedicada y solo las credenciales del agente. DeepSeek avisa de que no está listo para producción.

Abre tres sesiones de un agente de programación. Una arregla un test, otra revisa una pull request y la tercera investiga un error de producción. A los diez minutos la primera te pregunta algo, la segunda quiere que leas sus conclusiones y la tercera ha encontrado algo que afecta a lo que está tocando la primera. Los agentes trabajan, y tú acabas de coordinadores de agentes.

Ese es el problema que ataca el equipo de DeepSeek Harness. El 31 de octubre subió el código de dsh-superagent y el 1 de noviembre publicó Exploring Super-agent Design. Según DeepSeek, una persona puede seguir con comodidad entre tres y cinco sesiones activas, una cifra que sale de su experiencia interna y no de un estudio.

El equipo de Helmcode ha publicado un buen análisis, con una prueba real sobre repositorios privados, y de ahí vienen los tiempos de campo de este artículo. El resto lo hemos contrastado leyendo la documentación y el código del prototipo a 5 de noviembre. No lo hemos arrancado nosotros.

Router y Workers: quién hace qué

Meterlo todo en una sesión mezcla tareas que compiten por el mismo contexto, y una operación larga retrasa la siguiente instrucción. Repartirlo en varias sesiones te devuelve el trabajo de coordinarlas. DeepSeek separa los dos papeles:

  • Router (la «sesión principal» en la documentación): recibe, evalúa, reparte y contesta. No programa.
  • Worker (la «sesión ejecutora»): tiene su propio contexto, sus herramientas y un directorio por tarea, y puede lanzar subagentes.

La separación permite además poner un modelo en cada sitio, uno ligero para clasificar y otro más capaz para programar. Helmcode lo probó así, con deepseek-v4-flash en el Router y GLM 5.3 en el Worker.

El viaje de una petición

Supón que alguien autorizado escribe en una issue: «Agente, mira por qué fallan los tests de autenticación y prepara un arreglo». El prototipo usa estos conceptos, y conviene conocerlos porque son los que verás en el panel:

PiezaQué esLo que aporta
SourceOrigen de eventos: GitHub y, opcionalmente, FeishuAquí nacen las peticiones
TriggerUn evento inmutableSi llega dos veces, solo crea un Ticket
ThreadUna conversación, como una issueDa contexto a la evaluación
EvalDecide si hay trabajo nuevoPrimero reglas en código, luego un modelo si hace falta
TicketUnidad de trabajo autorizadoGuarda estado, informes y conversaciones
MandateLo autorizado: alcance, versión de la política, remitenteInmutable. Más alcance significa otro Ticket
SubscriptionUne un Ticket con los Threads que sigueEntrega comentarios y CI al Worker
OutboxMensajes salientes con reciboSe guardan antes de enviarse

Lo primero que hace Eval es una comprobación sin inteligencia artificial: quién escribe y si se dirige al agente. Para saber si alguien está en una lista no hace falta gastar inferencia, y el código no se deja convencer.

Después llega la parte que evita el ruido. Si la CI falla en la pull request que abrió el Worker, ese resultado le llega directo, sin pasar por el Router. DeepSeek lo llama subscription and pass-through, y Helmcode lo vio funcionar: tras un «Request changes» el Worker corrigió código y tests en un minuto, sin que nadie volviera a mencionarlo.

Recorrido de una petición en el prototipo Super-agent de DeepSeek Una petición nueva sale de GitHub, pasa por la puerta de reglas y por la evaluación con modelo y llega al Router, que crea un Ticket con su Mandate y lo asigna a uno de los Workers. Los comentarios y resultados de CI de un hilo suscrito siguen otro camino: llegan directamente al Worker sin pasar por la evaluación. Router y Workers se ejecutan dentro de la misma cuenta del sistema operativo, con permisos danger-full-access. GitHub issue, PR, CI Eval reglas + modelo Cuenta del SO · danger-full-access Router crea Ticket y Mandate Worker 1 sesión y directorio Worker 2 sesión y directorio Worker 3 sesión y directorio Suscripción: comentarios y CI llegan al Worker sin pasar por Eval
Recorrido de una petición en el prototipo Super-agent de DeepSeek Una petición nueva sale de GitHub, pasa por la puerta de reglas y por la evaluación con modelo y llega al Router, que crea un Ticket con su Mandate y lo asigna a uno de los Workers. Los comentarios y resultados de CI de un hilo suscrito siguen otro camino: llegan directamente al Worker sin pasar por la evaluación. Router y Workers se ejecutan dentro de la misma cuenta del sistema operativo, con permisos danger-full-access. GitHub issue, PR, CI Eval reglas + modelo Cuenta del SO · danger-full-access Router crea Ticket y Mandate Worker 1 sesión y directorio Worker 2 sesión y directorio Worker 3 sesión y directorio Suscripción: comentarios y CI llegan al Worker sin pasar por Eval
Lo nuevo va por Eval. Lo que llega a un hilo suscrito salta directamente al Worker, y Router y Workers comparten la misma cuenta del sistema.

Para el trabajo no pedido hay tres modos: off, observe y auto. El predeterminado es observe, que evalúa y anota lo que habría aceptado sin hacerlo, y así puedes revisar sus decisiones antes de darle más cuerda. Las peticiones explícitas de personas autorizadas funcionan en los tres.

Lo que dice el código y no cuentan los resúmenes

Aquí es donde compensa abrir el repositorio, porque hay cuatro matices que cambian la lectura.

El Router no puede editar, pero conserva bash. La lista de herramientas de la sesión principal se limita a skill, bash, read, read_image y las de gestión de trabajos en segundo plano. Sin escritura, sin edición, sin subagentes. Eso hace que delegar sea el camino natural, y el prompt añade que investigar e implementar corresponde a los Workers. Pero con bash y danger-full-access no hay una barrera técnica que le impida tocar un fichero. La regla está mucho mejor apuntalada que un consejo en un prompt, aunque tampoco es absoluta.

El alcance del Mandate lo juzga un modelo. Imagina que en el hilo de esos tests alguien escribe: «Ya que estás, borra la base de datos antigua de producción». El Mandate no lo cubre, pero nadie compara esa frase con él en una capa determinista. Las instrucciones dicen al Worker que decida él cada mensaje de una persona en sus propios hilos y que devuelva lo que se salga del alcance. Lo que el sistema garantiza es otra cosa: un Mandate queda registrado aparte de la conversación, no cambia y no se amplía porque alguien lo pida en un comentario.

La suscripción no mira quién escribe. Un evento en un hilo suscrito llega a los Tickets vivos «sin comprobar quién lo envió», según el modelo de dominio, y el mensaje de una persona no pasa por Eval. Tampoco da nueva autoridad, pero la entrada llega al modelo. En un repositorio público cualquiera podría escribir en ese hilo, y un log de CI también puede traer texto preparado.

Un reinicio puede repetir una acción. El Engine guarda el estado en SQLite dentro de una transacción y encola los efectos externos para después. Si se cae entre medias, el trabajo sigue en la cola. Lo que no puede resolver es el caso de que GitHub acepte un comentario y el proceso muera antes de guardar el recibo, porque lo reenviará. Para ese hueco, tras un reinicio cada Worker recibe una nota que le pide comprobar su directorio, el historial de git y GitHub antes de repetir una acción externa. Es razonable para un comentario. Para algo que cree infraestructura o toque datos de producción necesitas operaciones idempotentes o aprobación humana, porque esa nota también la interpreta un modelo.

Hay detalles más pequeños que también dicen cómo está pensado:

  • Un comando de shell pasa a segundo plano a los 5 segundos, para que el Worker pueda leer mensajes nuevos.
  • El trabajo en segundo plano tiene 30 minutos de margen tras cada turno.
  • Si todos los Workers están ocupados, hay una plaza extra reservada para el mensaje de una persona. Por defecto son 3 tareas simultáneas y el máximo son 16.
  • El Watchdog y la ejecución especulativa de los que habla el artículo no aparecen en el repositorio. Son propuestas de investigación.

Qué demuestran los experimentos

DeepSeek comparó cuatro configuraciones con unos 300 mensajes sintéticos, de los que unos 20 eran peticiones de trabajo, y cinco ejecuciones por configuración. La programación estaba simulada con una herramienta que consume tiempo.

Configuraciónp50p95Tokens de caché leídos por ejecución
Super-agent12,4 min15,7 min23,2 M
Super-agent sin pass-through12,6 min15,5 min31,8 M
Sesión única, instrucción neutra20,4 min29,5 min6,1 M
Sesión única, instrucción de delegar13,8 min29,0 min10,8 M

Del titular del 47 % de mejora en el p95 nos interesa más la causa. Con la instrucción neutra el agente podía delegar y no lo hizo ni una vez, así que los mensajes nuevos le interrumpían una y otra vez. Con una instrucción que favorecía delegar lo hizo en cuatro de cinco ejecuciones y la mediana se quedó en 13,8 minutos, cerca de los 12,4 del Super-agent.

Pero el p95 apenas se movió, y ahí está lo útil: en la ejecución restante el modelo decidió que algunas tareas eran lo bastante pequeñas para hacerlas él. Si una regla de reparto decide el rendimiento, conviene imponerla desde el software y no esperar que el modelo la cumpla siempre.

Tres lecturas más para no pasarse de entusiasmo:

  • Sale más caro en caché: 23,2 millones de tokens frente a 6,1. Casi cuatro veces más que la sesión única neutra. Sin precios, entradas, salidas y reintentos no hay coste total, y DeepSeek no lo da.
  • El pass-through ahorra coordinación, no tiempo: sin él los tiempos casi no cambian, pero las lecturas de caché suben un 37 % y, según Dataconomy, las decisiones del Router alrededor de un 30 %.
  • Agrupar eventos ayuda, con letra pequeña: de 1 a 40 eventos por minuto, el lote medio pasa de 1,0 a 2,8 y la inferencia amortizada por decisión baja de 6,4 a 1,6 segundos. La latencia de cada petición, en cambio, sube de 2,5 a 3,9 segundos. Y solo mide la capa de enrutado, con Workers simulados.

La prueba con repositorios reales

Helmcode lo montó en una tarde y sin desarrollo a medida: 1 vCPU, 2 GiB de memoria, Ubuntu 24.04, inferencia externa, dos repositorios privados, modo observe y un Worker como máximo.

TareaTiempo medido
Primer acuse en la issue40 s a 1 min
Tarea de código hasta una PR correcta, con tests2 a 3 min
Corrección tras un «Request changes»~1 min
Investigación con dosier de fuentes~10 min
Cadena completa de investigar, editar, redactar y revisar~25 min y 3 rondas de corrección

Son pocas muestras y una tarea cada vez, así que no se pueden comparar con la tabla anterior. Sirven para saber que el circuito funciona con el código publicado. Sus notas de campo valen tanto como los tiempos:

  • La atención humana bajó pero no desapareció. Pasó de vigilar sesiones a diseñar reglas y vigilar los bordes.
  • El Worker tenía web_fetch, pero sin una API de pago no tenía búsqueda web, y las fuentes hubo que buscarlas a mano.
  • Hubo que corregir datos inventados, también con el modelo más capaz. V4 Flash escribió en la mitad de tiempo que GLM 5.3 y dejó más remates defectuosos. Un modelo mejor te cambia lo que revisas, pero sigues revisando.
  • Los hilos se guardan como github: más el número, sin identificar el repositorio. Al cambiar de Source hubo errores 404 que tumbaron el bucle de eventos y números repetidos, y lo arreglaron borrando el estado.
  • GitHub suspendió sus dos cuentas de agente, una al instante y la otra tras su primera PR, y tuvieron que reclamar a soporte.

Lo último tiene más miga de lo que parece. El prototipo exige una cuenta de usuario, porque una GitHub App no le sirve: necesita leer las notificaciones de la cuenta. Los términos de GitHub admiten cuentas máquina si las crea una persona que responde de ellas, con una gratuita además de la personal. Las cuentas registradas por bots no se permiten. Aun así, ningún Mandate te protege de un sistema antiabuso ajeno, y conviene tener previsto qué pasa si el agente se queda sin cuenta a mitad de trabajo.

El punto débil: se ejecuta como tú

Los presets de Router y Worker corren con danger-full-access bajo la cuenta del operador. La guía de despliegue es clara: un Worker puede ejecutar programas por ruta y leer el directorio personal del operador. Los worktrees de Git separan carpetas, no procesos, y los comandos bloqueados son una lista de nombres que se salta con la ruta absoluta. Los propios documentos dicen que esos wrappers y directorios «establecen valores por defecto, no una frontera de seguridad».

DeepSeek Harness, sobre el que se apoya, está en developer preview, y su aviso de seguridad deja claro que no se ha auditado y que no debe tratarse como seguro. Recomienda una máquina virtual desechable, un contenedor o un entorno dedicado.

Juntando esto con lo anterior, sale el escenario que hay que tener en la cabeza: un texto malicioso llega al Worker por un hilo suscrito, el modelo se lo cree y el proceso tiene alcance sobre todo lo que tenga esa cuenta. Nosotros partiríamos de esto:

  1. Una máquina virtual para él solo, sin acceso a la red de producción. Mejor VM que LXC, porque el contenedor comparte kernel con el host.
  2. Una cuenta de sistema dedicada que contenga únicamente las credenciales del agente. Es lo que pide DeepSeek.
  3. Salida a Internet con lista blanca: GitHub, el punto de inferencia y los registros de paquetes que uses.
  4. Repositorio privado y lista de personas corta. Deja observe hasta haber leído lo que habría hecho.
  5. Protección de rama con aprobación obligatoria. La documentación recuerda que las instrucciones gobiernan al agente, no a GitHub.
  6. Copia del directorio de estado antes de cada actualización, y vigila su tamaño: la propia arquitectura avisa de que nada borra aún los registros antiguos.

Ten en cuenta un límite que ninguna de estas medidas resuelve: el aislamiento es por instalación, no por tarea. Todos los Workers comparten cuenta, así que dos Tickets no están separados entre sí. Para aislar cada uno tendrías que tocar el prototipo.

¿IA privada o API? Hacemos la cuenta con tus datos

Dinos cuántas personas lo usarían y con qué datos. Te respondemos con el nivel de privacidad que te encaja, la GPU que haría falta y cómo queda frente a la API.

Respuesta en 24–48 h laborables · Sin compromiso

¿Prefieres el correo? Escríbenos a comercialcloudprivado.com

Cómo probarlo

Pide Node.js 22.19 o superior, pnpm, git 2.32 o superior, Python 3.8 o superior, tmux, GitHub CLI 2.48 o superior y un proveedor de modelos. El SETUP.md está pensado para que lo siga tu propio agente de programación, y la instalación manual documentada se resume en esto:

npm install -g @deepseek-ai/[email protected]
git clone https://github.com/deepseek-ai/dsh-superagent-prototype.git dsh-superagent
cd dsh-superagent
pnpm install && pnpm build
dsh superagent --from-default-profile web --dump-config > /dev/null
dsh plugin --profile superagent add "link:$PWD"

Después copia examples/profile.cordis.patch.yml a ~/.dsh/profiles/superagent/cordis.patch.yml, rellena los valores y arranca con scripts/dsh-superagent start. Son los pasos de la documentación a 5 de noviembre y, como decíamos, no los hemos ejecutado. Ojo con el comando del perfil: si este ya existe, lo reemplaza y borra su configuración, así que no lo uses para actualizar. El panel escucha en 127.0.0.1, y ahí debe quedarse. Para entrar desde tu equipo, túnel SSH.

Si quieres hacerlo en infraestructura privada

El proyecto es abierto y los modelos de la prueba de Helmcode tienen pesos publicados, lo que invita a pensar en montarlo todo en casa. Es posible, pero tiene varias condiciones.

El modelo puede ser tuyo. Harness admite una API de modelos personalizada, con un servidor propio o una pasarela de empresa, y el prototipo deja elegir modelo para Eval y para Worker. Sobre el papel, ningún prompt tiene por qué salir de tu red.

Pero el reparto de modelos juega en contra de la privacidad. El modelo pequeño y fácil de alojar es el que menos ve, y el grande es el que lee tu código. Las fichas de Hugging Face dan unos 291.000 millones de parámetros para DeepSeek V4 Flash y unos 753.000 millones para GLM 5.3. Haciendo la cuenta a 4 bits por parámetro, solo los pesos ocuparían unos 145 GB y unos 375 GB, antes de sumar el contexto. Compáralo con los 27.000 millones del modelo que usamos para dimensionar una IA privada en una GPU de 48 GB. Si dejas el Router en casa y mandas el Worker a una API, tu código sale igualmente.

Cada Worker es una sesión larga. La guía de hardware para LLM en local sigue valiendo para elegir, pero un agente de programación no se comporta como un chat: mantiene contextos grandes y encadena muchas llamadas. Con tres Workers activos son tres sesiones así a la vez. Antes de comprar nada, mide tus tareas reales contra un modelo más pequeño, y comprueba que el código que genera te sirve.

La licencia también cambia. V4 Flash figura con licencia MIT, y GLM 5.2 también, pero GLM 5.3 lleva una licencia propia que hay que leer.

Tu código sigue en github.com. El prototipo no admite GitHub Enterprise Server ni otras forjas. Hay una guía para añadir un Source, pero parte de la dependencia con gh tendrías que resolverla tú. Quien necesite GitLab o Gitea en su red tendrá que desarrollar esa pieza.

Cómo saber si te compensa

Los experimentos publicados dejan fuera lo que más importa. En un repositorio tuyo, compara una sesión convencional, esa misma sesión con instrucciones de delegar y un esquema Router-Worker, con los mismos modelos. Y mide tres cosas:

  • Coste por tarea terminada y verificada, con tests en verde y revisión independiente. Los intentos fallidos cuentan.
  • Tiempo hasta un resultado utilizable, no hasta que el agente dice que ha acabado.
  • Atención consumida: cuántas veces interviene alguien, cuánto tarda en revisar y cuánto contexto tiene que recuperar.

Provoca fallos a propósito. Reinicia el orquestador antes de guardar una entrega, manda el mismo evento dos veces, revoca un permiso con un Worker en marcha y da órdenes contradictorias desde dos hilos. Un agente rápido que duplica cambios cada vez que algo falla acaba creando más trabajo del que ahorra.

Lo más interesante de todo esto es lo poco que tiene de inteligencia artificial: colas persistentes, transacciones, idempotencia, separación de permisos. Son problemas de sistemas distribuidos con un modelo tomando algunas decisiones, y los equipos que ya operan infraestructura parten con ventaja para resolverlos.

Preguntas frecuentes

¿Qué es el Super-agent de DeepSeek?

Es una propuesta de diseño para que una persona trabaje con muchos agentes a través de uno solo. Un Router recibe las peticiones y las reparte entre Workers independientes. DeepSeek ha publicado un prototipo experimental llamado dsh-superagent, con licencia MIT, que implementa parte de esa propuesta.

¿dsh-superagent sirve para producción?

No. DeepSeek lo define como prototipo de investigación y avisa de que no es un producto oficial, de que difiere de su versión interna y de que puede tener errores. Además se ejecuta con acceso completo a la cuenta del sistema del operador, y DeepSeek Harness está en developer preview sin auditoría de seguridad.

¿Qué diferencia hay entre el Router y un Worker?

El Router evalúa, reparte y responde, y no tiene herramientas de edición ni subagentes. El Worker ejecuta una tarea concreta con su sesión y su directorio. Esa separación evita que el modelo decida si delega o no, que es lo que más alargaba los tiempos en los experimentos.

¿Qué es un Mandate?

Es el registro inmutable de lo autorizado para una tarea: alcance, versión de la política, remitente y reglas aplicadas. Un comentario no puede ampliarlo. Aun así, es el Worker quien juzga si un mensaje entra en el alcance, así que no sustituye al aislamiento ni a limitar las credenciales.

¿Se puede usar con modelos propios?

Sí. DeepSeek Harness acepta una API personalizada, incluido un servidor propio, y el prototipo permite elegir modelo para Eval y para el Worker. El límite es el hardware: los modelos que usó Helmcode tienen cientos de miles de millones de parámetros y no caben en una sola GPU de 48 GB.

¿Funciona con GitLab o con GitHub Enterprise Server?

De serie no. Admite un repositorio de github.com y, opcionalmente, Feishu. La documentación explica cómo añadir un Source, pero otra forja exige desarrollo propio.

¿Los experimentos demuestran que escribe mejor código?

No. Las pruebas de DeepSeek simulan la programación y miden cómo se planifica y se coordina el trabajo. No evalúan calidad del código ni coste total ni tiempo de supervisión humana.

Fuentes