# Ensamblaje Declarativo de Agentes: Cómo el Event Sourcing Resuelve el Problema del Estado Mutable
Los sistemas multiagente modernos basados en LLMs enfrentan un desafío fundamental: gestionar el estado mediante estado mutable provoca inestabilidad y dolores de cabeza al depurar. La solución llega de una fuente inesperada: las prácticas de ingeniería de datos. El nuevo framework zymi aplica principios de event sourcing y descripción declarativa, familiares de dbt, para construir sistemas orientados a agentes confiables.
Enfoque Declarativo en Lugar de Código Imperativo
Los frameworks tradicionales como LangGraph requieren instrucciones detalladas sobre cómo procesar datos a través de estado mutable. Esto genera varios problemas críticos:
- El estado se convierte en un vertedero desordenado con dependencias ocultas
- Cada cambio exige sincronización manual
- La depuración se transforma en una tarea tediosa de rastrear logs de print
zymi invierte el paradigma: describes qué hay que hacer mediante configs YAML, y el motor maneja la ejecución de forma automática. La estructura del proyecto refleja un proyecto dbt:
zymi-research/
├── agents/
│ ├── researcher.yml
│ └── writer.yml
├── pipelines/
│ └── research.yml
├── tools/
└── project.yml
Cada agente se define mediante un manifiesto declarativo. Por ejemplo, el agente researcher:
name: researcher
description: "Research agent — searches the web, scrapes pages, and stores findings in memory"
model: ${default_model}
system_prompt: |
You are a thorough research assistant. Your job is to find accurate,
up-to-date information on the given topic.
tools:
- web_search
- web_scrape
- write_memory
max_iterations: 15
Las herramientas también se describen de forma declarativa. La implementación de web_search vía Tavily API:
name: web_search
description: "Search the web for information on a given query"
parameters:
type: object
properties:
query:
type: string
description: "Search query"
required: [query]
implementation:
kind: http
method: POST
url: "https://api.tavily.com/search"
headers:
Authorization: "Bearer ${env.TAVILY_API_KEY}"
body_template: '{"query": "${args.query}", "max_results": 5}'
Una pipeline encadena agentes en pasos con dependencias:
name: research
steps:
- id: search_web
agent: researcher
task: "Search the web for information about: ${inputs.topic}"
- id: analyze
agent: researcher
task: "Analyze findings and store structured summary"
depends_on: [search_web]
- id: write_report
agent: writer
task: "Write report to ./output/report.md"
depends_on: [analyze]
Ejecuta la pipeline vía CLI:
zymi run research -i topic="Event sourcing in AI"
Event Sourcing: De Eventos Inmutables a la Reproducibilidad
La distinción clave de zymi respecto a LangGraph es abandonar el estado mutable por una arquitectura basada en event sourcing. Todas las interacciones se registran como eventos inmutables en una cadena verificada criptográficamente. Cada evento incluye:
- Hash del evento anterior (asegura la integridad de la cadena)
- Datos de la operación
- Marca de tiempo
- Fuente del evento
Este modelo ofrece tres ventajas críticas:
- Trazabilidad Completa — cualquier resultado se puede reconstruir desde la cadena de eventos
- Pista de Auditoría Integrada — todos los cambios se registran sin esfuerzo
- Seguridad de Operaciones — el monitor evalúa intenciones antes de la ejecución
Aquí un fragmento de un log de ejecución:
#4 10:50:52.806 intention_emitted source=orchestrator
call_custom_tool data={"type":"CallCustomTool","data":{"tool_name":"web_search"}}
#5 10:50:52.806 intention_evaluated source=orchestrator
call_custom_tool -> approved
#49 11:20:15.321 intention_emitted source=orchestrator
write_file data={"path":"output/report.md"}
#50 11:20:15.322 intention_evaluated source=orchestrator
write_file -> requires_approval
Esto muestra cómo el sistema primero emite una intención para realizar una operación (intention_emitted), luego el monitor decide si aprobarla (intention_evaluated). En el intento de escritura de archivo, el monitor requirió aprobación: una salvaguarda imposible con mutación directa del estado.
Beneficios para Desarrolladores y LLMs
El enfoque declarativo ofrece ventajas prácticas, especialmente en la era de la IA generativa:
- Complejidad Reducida para LLMs — las configs YAML son más simples de generar que código imperativo
- Esquema de Validación Estricta — JSON Schema previene errores en las configs
- Ejecución Paralela — el motor identifica automáticamente pasos independientes
- Reproducibilidad — cualquier ejecución se puede reproducir desde el log de eventos
Los experimentos muestran que las pipelines generadas por LLM para zymi requieren un 30-40% menos iteraciones que el código equivalente de LangGraph. Esto se debe a:
- Ausencia de gestión manual del estado
- Límites claros de responsabilidad entre componentes
- Validación estática de configs
Lo Que Importa
- Declarativo sobre Imperativo — describir qué hacer, no cómo, reduce la carga cognitiva
- Event Sourcing como Base — eventos inmutables aseguran reproducibilidad y seguridad
- Integración con el Desarrollo de LLMs — configs estructuradas son más fáciles de generar y refinar para la IA
- Integridad Criptográfica — la cadena de hash garantiza la autenticidad del historial de ejecución
- Monitoreo de Intenciones — una capa dedicada verifica operaciones para bloquear acciones no deseadas
El framework zymi demuestra cómo conceptos de ingeniería de datos pueden abordar desafíos sistémicos en la programación orientada a agentes. Pasar de estado mutable a arquitectura basada en event sourcing no solo simplifica el desarrollo, sino que desbloquea nuevas posibilidades para controlar y analizar el comportamiento de agentes de IA. Para profesionales técnicos, esto implica un cambio de sistemas frágiles a soluciones confiables y trazables, donde cada paso cuenta con prueba verificable y reproducibilidad.
— Editorial Team
Aún no hay comentarios.