Cordis: el paper detrás de la arquitectura de DeepSeek Harness

Cordis: el paper detrás de la arquitectura de DeepSeek Harness

Los cinco teoremas del paper de Cordis, el framework de plugins detrás de DeepSeek Harness, explicados en lenguaje llano y con lo que ya corre en producción.

¿Quién se toma el trabajo de leerse un paper de 88 páginas que habla de la arquitectura concreta detrás de DeepSeek Harness? Nosotros lo hemos hecho.

"A Programming Paradigm for Spatiotemporal Composability" es el paper detrás de la arquitectura de plugins basada en Cordis sobre la que se ha construido el dsh.

Son 88 páginas ( aquí tienes el PDF ) que responden a una pregunta muy concreta: ¿cómo se compone software que cambia mientras está corriendo? La respuesta del paper tiene forma de cálculo y de cinco teoremas demostrados. Pero leerlo, junto a las evidencias, puede ser un poco tedioso.

Lo firman tres autores: Yifan Shi, que aparece con doble filiación, Universidad de Pekín y DeepSeek-AI; Wei Zhang, de la Universidad de Pekín; y Tianyi Cui, de DeepSeek-AI.

Es un paper de lenguajes de programación escrito desde dentro de un laboratorio de IA.

Así que hemos creado una guía de lectura: qué problema hay debajo, qué es Cordis, quién lo firma, qué demuestran los teoremas y qué parte está funcionando ya en código real.

El problema: cambiar un sistema que está funcionando sin romper nada

Imagina un sistema que está funcionando y al que quieres añadir una capacidad nueva sin detenerlo. Por ejemplo, una herramienta nueva de visión a un modelo o a un harness.

Esa capacidad puede depender de una base de datos, de un modelo o de otro servicio, y más tarde puedes querer retirarla, cambiarla, sustituir una dependencia o recargar el componente.

La parte difícil llega después de añadir o quitar el código: garantizar qué ocurre con todo lo que ese código había registrado, qué dependencias siguen disponibles y en qué estado queda el sistema cuando el cambio termina.

En muchos sistemas, buena parte de esa responsabilidad recae sobre código de infraestructura y convenciones de los desarrolladores. Lo que Cordis propone es intentar llevarla a la semántica del propio runtime, con reglas explícitas para los cambios dinámicos y propiedades que puedan demostrarse formalmente.

Qué es Cordis y qué tiene que ver con DeepSeek Harness

Cuando DeepSeek publicó DeepSeek Harness el 13 de agosto de 2026, junto a V4-Pro, casi toda la atención se fue al agente.

Pero a nosotros nos interesó mucho más el harness. Porque debajo hay algo menos vistoso y más interesante: Cordis, el framework de plugins sobre el que está montado todo.

En DeepSeek Harness no existe un núcleo protegido en el sentido tradicional. Las capacidades del agente, o sea, los modelos, las herramientas, las sesiones, los permisos y la propia interfaz, se estructuran como plugins que se registran en un contexto compartido.

Cordis pone las reglas por las que esos plugins se cargan, se descargan y conviven mientras el sistema sigue en marcha.

Pero Cordis no nació con el harness. Es un proyecto anterior, con años de producción encima y repositorio propio , que DeepSeek Harness incorpora como dependencia. El paper que nos ocupa es la formalización de unas reglas que Cordis ya venía aplicando en código.

Cómo funciona ese micronúcleo por dentro, con sus servicios, sus eventos tipados y su contexto compartido, está contado en nuestra sección dedicada a Cordis .

Diagrama del microsite de DeepSeek Harness: seis plugins (llm, tools, permissions, sandbox, session y agent-loop) alineados sobre un contexto compartido, ninguno por encima de otro.

La idea central de Cordis: dos dimensiones del cambio dinámico

El paper separa el problema de la composición dinámica en dos dimensiones ortogonales: tiempo y espacio. La palabra "spatiotemporal" es la parte más importante del título, y le dedican medio paper.

Tiempo: los efectos revertibles (revertible effects)

La primera dimensión es el tiempo, y la herramienta son los revertible effects, o efectos revertibles.

Todo lo que un plugin hace al cargarse, como registrar un comando, engancharse a un evento o abrir una conexión, es un efecto sobre el contexto compartido.

En este modelo cada efecto lleva consigo su inversa, que el runtime va apuntando. Cuando el plugin se descarga, el sistema ejecuta esas inversas y revierte sus efectos: no debería quedar un listener huérfano, una conexión abierta o un comando fantasma.

La idea importante es que deshacer deja de depender de una función de limpieza escrita a mano y pasa a formar parte de las reglas del modelo.

La sección de efectos revertibles lo cuenta con más detalle.

Diagrama en tres pasos: el contexto antes de nada, la pieza que entra y anota su inversa, y el contexto después de aplicarla, con los mismos servicios y los mismos oyentes que al principio.

Espacio: los coefectos reactivos (reactive coeffects)

La segunda dimensión es el espacio, y ahí entran los reactive coeffects, o coefectos reactivos.

Si un efecto es lo que tu plugin le hace al sistema, un coefecto es lo que tu plugin necesita del sistema: una base de datos, un modelo o un servicio del que depende.

En Cordis esas necesidades se declaran, y el runtime utiliza la declaración para gestionar el ciclo de vida: no activa el plugin hasta que lo declarado está servido, y reacciona cuando las dependencias cambian, desactivando o reconfigurando el componente cuando corresponde. La dependencia deja de ser una línea en un import y pasa a ser algo que el sistema vigila en tiempo de ejecución.

La sección de coefectos reactivos recorre el ciclo completo de activación y desactivación.

El movimiento central del paper es unificar las dos caras en un único tipo de contexto, de forma que efectos y coefectos se siguen con la misma maquinaria. Sobre esa base define qué es un componente y construye un cálculo de composición dinámica: las reglas formales de un sistema donde las piezas entran y salen sin detener el conjunto.

Los cinco teoremas del paper de Cordis, explicados

La metateoría es lo más tedioso de revisar e incorporar a la divulgación. Pero el paper trae consigo cinco resultados demostrados sobre el cálculo. Esto es lo que dice cada uno.

TeoremaEn lenguaje llanoQué propiedad aporta
PreservaciónNingún paso válido, sea cargar, descargar o recargar, deja el sistema en un estado mal formadoDespués de cada movimiento, el sistema sigue cumpliendo sus propias reglas
Composabilidad temporalRevertir los efectos de un componente devuelve el sistema al estado en que estaría si no hubiera actuado, aunque otros hayan seguido trabajando entre mediasDeshacer es exacto
Composabilidad espacialNadie se activa sin sus dependencias servidas, y a nadie le retiran una dependencia mientras la usaQuien provee algo solo se retira cuando sus dependientes han desactivado
ProgresoMientras el grafo de dependencias no tenga ciclos, toda transición pendiente termina por completarseEl sistema no se queda atascado a medio cambio
ConfluenciaBajo las condiciones del teorema, distintos órdenes de cambios llevan al mismo estado estableEl resultado final no depende de la historia dinámica

La confluencia es la que manda. Un sistema que lleva horas cargando y descargando piezas converge al mismo estado que habrías obtenido montando de una vez, en orden de dependencias, los componentes que quedaron activos.

Diagrama: tres órdenes distintos de cargas y descargas que parten del mismo estado inicial, uno de ellos añadiendo un plugin de visión y quitándolo después, y los tres desembocan en los mismos servicios y el mismo número de oyentes.

La sección de teoremas desarrolla los enunciados formales, con sus condiciones y su notación.

Lo que los teoremas no dicen

Esta parte importa tanto como los propios resultados. Un teorema demostrado sobre un modelo formal es una afirmación sobre ese modelo, bajo sus condiciones.

Aquí las hay, y el paper las enuncia. La confluencia, por ejemplo, se demuestra asumiendo que el grafo de dependencias no tiene ciclos y que los pasos implicados son independientes entre sí. Fuera del modelo queda casi todo lo demás: que el código de cada plugin haga lo que promete, que la implementación real del runtime sea fiel al cálculo, que la red y el disco se comporten como esperamos. El propio estudio de caso reconoce una limitación importante: la evidencia viene de un único ecosistema en un único lenguaje y es observacional.

Del paper a producción: Koishi y los 49 paquetes del harness

Lo que hace singular a *A Programming Paradigm for Spatiotemporal Composability* frente a muchos papers de lenguajes es la dirección del viaje: el código llevaba años en producción cuando llegó la formalización.

Cada construcción del cálculo tiene su contrapartida en la API de Cordis. El efecto que en el paper lleva su inversa es lo que un plugin registra al cargarse, el coefecto es la lista de dependencias que declara y las transiciones del cálculo corresponden al ciclo de vida que el runtime ejecuta de verdad. La pieza sobre DeepSeek Harness recorre esa correspondencia símbolo a símbolo , con la API real al lado de cada definición.

El caso de estudio del paper es Koishi, un framework de chatbots de código abierto construido sobre Cordis que en cuatro años ha acumulado más de 4.000 plugins de la comunidad. No demuestra que el modelo sea correcto en todos los sistemas posibles, pero sí que sus abstracciones se usan en un ecosistema real con contribuidores independientes.

DeepSeek Harness es la otra prueba de vida. En el commit 47f9438, que usamos como referencia para este análisis, el repositorio estaba organizado en 49 paquetes, todos ellos plugins sobre ese mismo núcleo.

Qué cambia si tienes agentes de IA en producción

Si tienes agentes en producción, su lista de capacidades rara vez se queda quieta: una herramienta nueva este mes, un modelo que entra, una integración que se retira. Hoy, muchos de esos cambios terminan implicando un redeploy o una lógica específica para tocar un sistema vivo sin dejar recursos pendientes ni dependencias rotas.

Lo que aporta el paper es una base formal para esos cambios: sobre un runtime que implemente este modelo, puedes añadir y quitar capacidades a un agente en producción sin que el sistema acabe en un estado que nadie sepa explicar. Los cambios en caliente convergen al mismo estado que una instalación limpia, y ninguna operación se queda colgada a medias.

El paper formaliza el andamiaje de composición, pero no la inteligencia de cada agente ni la corrección de cada plugin. Puedes cambiar las capacidades de un agente mientras corre, con una semántica definida sobre cómo entran, de qué dependen, qué deshacen al salir y en qué estado convergen. Ese es el punto más interesante de Cordis.

Si quieres el recorrido completo, desde el arranque de DeepSeek Harness hasta la formalización matemática, nuestro microsite dedicado lo desarrolla en 24 secciones.

undefined

El digest de Helmcode: modelos abiertos, novedades, actualidad de IA abierta, opiniones y sentido común. Se publica dos veces al mes, solo en inglés.