Hace unos meses escribí sobre [mi pila de agentes](/posts/what-my-agentic-stack-actually-does): un monorepo privado donde los agentes de IA manejan mi correo electrónico, pagos e implementaciones, con [Neotoma](https://neotoma.io) como memoria estructurada debajo. Esa publicación terminó con una promesa. Dije que yo era la capa estratégica y que la arquitectura estaba diseñada para que ese rol fuera reemplazable por software. Esta es la publicación sobre cómo hacerlo.

[Ateles](https://github.com/markmhendrickson/ateles) es mi segundo producto, después de Neotoma, y ​​se construye directamente sobre él. Es un enjambre de agentes personales. Mientras que la pila anterior era un agente por sesión conmigo en el circuito para cada tarea, Ateles es una flota permanente de agentes definidos por función, coordinados a través de Neotoma, que se ejecuta diariamente bajo lanzamiento. Es la diferencia entre yo dirigiendo a cada agente y yo dirigiendo un equipo que ya conoce su trabajo.

Esta publicación explica por qué lo construí, cómo funciona y hacia dónde se dirige.

## Por qué la pila dejó de escalar

El detonante fue el volumen. Después del [lanzamiento para desarrolladores](/posts/neotoma-developer-release) de Neotoma a finales de febrero, mi atención se dividió en tres modos que no comparten mucho: construir el producto, comercializarlo y gestionar las relaciones con los primeros usuarios. También le estaba dando a Neotoma cada vez más contexto sobre mi vida, profesional y personalmente, y cuanto mejor era esa memoria, más podía hacer un agente con ella. Eso no eliminó la restricción, la movió. El límite ya no era el que conocían los agentes. Fui yo, el único que puso en práctica lo que sabían, una sesión a la vez.

El antiguo enfoque era un conjunto de reglas y habilidades específicas del repositorio. Me permitieron evitar repetirme sobre el procedimiento. Una habilidad definió los pasos para la clasificación de correo electrónico o la implementación de un sitio web, y cualquier sesión podría ejecutarla en el contexto que ya está en Neotoma. Eso funcionó hasta que las sesiones se llenaron.

El fracaso fue específico. Cuando un agente genérico cumple todas las reglas y todos los roles a la vez, no los cumple todos de manera uniforme. En cualquier giro, se inclina hacia un tipo de trabajo y deja pasar el resto. Redacta bien el correo electrónico y olvida la regla vigente sobre cómo cerrar sesión. Corrige el error y se salta la prueba de regresión. Tampoco hubo control contradictorio. Un agente planificó, ejecutó y revisó su propio trabajo, sin nada que pudiera detectarlo cuando estaba claramente equivocado.

Dos cosas más empujaron en la misma dirección. Moví las operaciones de mi producto a GitHub de forma predeterminada, usando problemas y solicitudes de extracción en lugar de enviarme directamente al principal. Esto fue en parte forzado por el [canal de problemas que construí](/posts/agent-to-agent-issue-solving-with-humans-at-the-edges), que comenzó a enviar informes reales de los usuarios y sus agentes a Neotoma y a GitHub. Y quería que mi proceso de desarrollo fuera legible en público, para que las personas que usaban Neotoma pudieran ver exactamente qué trabajo se estaba realizando. Ambos quieren una secuencia de agentes especializados en diseño, gestión de productos, control de calidad y lanzamiento. Un agente que lo haga todo frustra el punto.

Entonces Ateles es la decisión de poner en marcha una flota y definir esa flota en el propio Neotoma.

## Neotoma como tejido, no sólo como recuerdo

El movimiento que diferencia a Ateles es que Neotoma sostiene dos cosas a la vez. Contiene el contexto operativo que el enjambre necesita, los mismos datos que mi antigua pila leía y escribía. Y sostiene al propio enjambre.

Los agentes son entidades de Neotoma. Cada uno es una `definición_de_agente` con un mensaje, una lista de herramientas permitidas y un conjunto de concesiones de capacidades. Actualizar el comportamiento de un agente es una llamada "correcta()" contra esa entidad, con el historial de versiones completo y la atribución del autor. Sin compromiso, sin redistribución. Los archivos SKILL.md en el disco son espejos generados de esas entidades, no la fuente.

Sus relaciones también son entidades Neotoma. El enjambre tiene una jerarquía, expresada como un árbol, por lo que un coordinador sabe qué agentes envía y una tarea sabe a qué agente le pertenece. Y el trabajo en sí son las entidades de Neotoma: tareas, planes, definiciones de flujo de trabajo, registros de participación. Un agente toma una tarea, la realiza y escribe el resultado como una observación atribuida a su identidad.

El resultado es un gráfico mundial para todo. Los hechos sobre los que actúa el enjambre, la definición del enjambre que actúa sobre ellos y el registro de lo que hizo viven en el mismo almacén de sólo anexos. Eso le da al conjunto tres propiedades que me importan. Es transparente, porque cada acción es una observación atribuida que puedes leer. Es auditable porque puede reproducir las acciones de cualquier agente en cualquier ventana. Y es reversible, porque nada sobrescribe la verdad existente. Si un agente toma una mala decisión, puedo rastrear el evento que la causó, revertir el estado y corregir la regla que lo provocó, una vez.

La identidad es la pieza que hace que la atribución sea real y no aspiracional. Cada agente tiene un par de claves [AAuth](/posts/know-what-of-your-agents-wrote-what) y firma cada llamada de herramienta. El arnés verifica la firma antes de actuar y registra quién afirmó actuar junto con quién realmente actuó en GitHub. Un agente que escribe códigos ya no actúa simplemente como yo. Actúa como sí mismo y el registro así lo dice.

## Los agentes, por rol

El enjambre está organizado en niveles. T1 es el host: el proceso que posee un canal y genera los agentes, actualmente OpenClaw para los que hablo y lanzado para los de fondo. Es infraestructura, no un agente con un rol. Los propios agentes corren en tres niveles encima. Los agentes T2 están siempre activos y tienen una personalidad: Ateles es con quien hablo y es el único agente que me llama. Los demonios T3 son procesos en segundo plano controlados por eventos sin persona, cada uno de los cuales está suscrito a eventos de Neotoma o a un webhook externo. Los agentes T4 no tienen estado, se generan por tarea, con una identidad y memoria estables que obtienen al consultar a Neotoma.

Algunos de los roles que se ejecutan hoy en día:

**Producto.** Un demonio coordinador lee las definiciones de flujo de trabajo de Neotoma y envía las puertas en orden: diseño, gestión de productos, control de calidad y lanzamiento. El trabajo del código va a un trabajador de problemas que abre solicitudes de extracción en todos los repositorios. Cada solicitud de extracción recibe una revisión básica de un agente revisor independiente, y los especialistas del dominio exploran las rutas que poseen. El objetivo de separarlos es el control de confrontación que el agente único nunca tuvo. El que escribe el código no es el que lo borra.

**Finanzas.** Un demonio de pagos recurrentes ejecuta transferencias Wise y Bitcoin activadas por eventos del calendario y fechas de vencimiento de tareas, con cada destinatario y monto cargado desde entidades de perfil de pago en lugar de código. Agregar un nuevo pago recurrente es una entidad nueva, no un compromiso. Se definen una función de asesor financiero y una función de impuestos y presentaciones para la elaboración de presupuestos y la conciliación.

**Legal y cumplimiento.** Una función legal cubre la evaluación de riesgos y la revisión de términos. Una función de cumplimiento cubre la privacidad y la gobernanza de datos. Esto importa más en el momento en que un enjambre puede actuar sobre los datos de las personas, como ocurre con el mío.

**Estrategia.** Este es el rol que describí como mío en la última publicación, y es el que estoy entregando más deliberadamente. Ese traspaso es la versión concreta de un argumento que presenté en [La inversión humana](/posts/series/the-human-inversion): a medida que los agentes absorben el centro de ejecución, la influencia del ser humano se mueve hacia los extremos, entran estándares más estrictos y salen juicios más densos. La autonomía se calibra por plan, no globalmente. Una entidad de política de ejecución declara, para un plan determinado, lo que un agente puede hacer por sí solo, qué barrera de calidad tiene que superar y dónde debe detenerse y consultar conmigo antes de continuar. La cadena de escalada va desde el agente en funciones hasta un experto en el dominio, pasando por un guardián de la constitución y hasta mí, y cada resolución se escribe como una entidad para que la siguiente instancia herede el juicio.

Detrás de estos se encuentran los demonios de ingesta y soporte que mantienen el gráfico alimentado: clasificación de correo electrónico, importación de audio, preparación de calendario, salud y fitness, clasificación de problemas. Cada uno es un pequeño proceso que convierte una señal entrante en entidades Neotoma sobre las que el resto del enjambre puede actuar.

## La columna vertebral de la tarea

Lo que une a la flota es la gestión de tareas, y es deliberadamente aburrida. Una tarea es una entidad. Tiene un propietario, un estado, una prioridad y un registro de para quién fue ejecutado. Planifica tareas grupales y lleva a cabo sus propias decisiones y próximos pasos. Las definiciones de flujo de trabajo declaran las fases y puertas por las que pasa un trabajo.

Debido a que todo esto está en el mismo almacén que todo lo demás, el enjambre se coordina sin una base de datos de orquestación separada. Un demonio se suscribe a eventos de tareas a través del flujo de eventos de Neotoma. Cuando aparece una tarea, se dirige al agente correcto por dominio, detrás de una puerta que compara la confianza del agente con el daño que podría causar una acción incorrecta. El radio de explosión bajo y la alta confianza funcionan por sí solos. Me espera un radio de explosión alto.

Esta es la columna vertebral sobre la que estoy construyendo el resto de la experiencia.

## ¿Adónde va esto?

La interfaz que quiero es sencilla de indicar. Le doy una entrada al enjambre, a través del transporte más cercano, y el enjambre la absorbe y actúa. Un mensaje en una terminal. Un correo electrónico. Un mensaje de Telegram. Una nota de audio grabada durante una caminata, así comenzaron las notas de este post. Todo debería aterrizar en el mismo gráfico, y el enjambre debería ser proactivo sobre el trabajo que implica, sin que yo tenga que pasar la mano de ningún agente.

Dos propiedades lo hacen posible. El enjambre tiene que evolucionar por sí mismo. A medida que asume un nuevo contexto y nuevos tipos de trabajo, debería proporcionar las capacidades y desarrollar las habilidades que necesita, adaptándose a mis correcciones en lugar de esperar a que lo reconfigure manualmente. Y mi aportación, que sigue siendo necesaria en los momentos en los que realmente es necesario juzgar, nunca debería darse dos veces. Corrijo una manera de hacer las cosas una vez, se convierte en una entidad y la corrección se mantiene.

La hoja de ruta más cercana tiene que ver con el alcance. Ateles fue construido para mi propio uso, por lo que una buena parte todavía asume un operador, yo. Estoy [conduciéndolo hacia que sea instalable y multioperador](https://github.com/markmhendrickson/ateles/blob/main/docs/multi_tenant.md): un enjambre que alguien más puede bifurcar, señalar su propio Neotoma, proporcionar sus propias entidades de contexto y ejecutar. Debido a que los agentes son independientes del operador según la política y no hay nada específico del operador en el código, el caso de bifurcación es principalmente una cuestión de contexto, no de reescritura. El trabajo genuinamente nuevo soporta a más de un ser humano dentro de un solo inquilino, razón por la cual los límites del inquilino se diseñan ahora en lugar de modernizarse más adelante.

Neotoma creó agentes que recuerdan, y Ateles es lo que esa memoria hizo posible: un enjambre que puede actuar sin mí en medio de cada paso. Los dos se levantan juntos. Una mejor memoria no es un problema terminado que dejé atrás. Es el sustrato sobre el que se sustenta todo el enjambre, y cada ganancia en lo que Neotoma puede sostener y resolver es una ganancia en lo que el enjambre puede hacer. La memoria sigue mejorando y el enjambre sigue mejorando con ella.