Showcase técnico

Arquitectura multi-agente con gobernanza colectiva para comunicación solidaria.

Stack

Backend

Rust (Axum) · PostgreSQL · Redis · SQLx

Frontend

Astro · Vue 3 · Tailwind CSS · Leaflet

IA

Claude Haiku (clasificación, composición, GIS) · Claude Sonnet (revisión, asamblea)

Canales

Mastodon · Telegram · Twitter/X · LinkedIn · RSS

Sistema de 9 agentes

Cada agente tiene una responsabilidad atómica dentro del flujo editorial. La coordinación es secuencial donde importa (el Reviewer bloquea publicación) y paralela donde conviene (clasificación + análisis de sentimiento).

Clasificador

Evalúa toxicidad de comentarios (escala 1-5)

Haiku

Compositor

Genera borradores de respuesta; 25% incluye citas de la biblioteca

Haiku

Reviewer

Aprueba o rechaza antes de publicar. Bloqueante.

Sonnet

Publisher

Ejecuta publicación a Telegram y Mastodon

GIS

Detecta referencias geográficas para enriquecer el mapa interactivo

Haiku

Bibliotecario

Gestiona citas; publica autónomamente cada 16-28 horas

Observador

Monitoreo pasivo de interacciones y contexto

Haiku

Sentimiento

Analiza sentimiento global de los comentarios entrantes

Haiku

Narrador

Genera narrativas y resúmenes contextuales

Haiku

Pipeline de comentarios

Poll (cada 2-5 min)
  │
  ├─► Clasificador (toxicidad 1-5)
  │     ├─ Nivel 1 → eliminar + bloquear
  │     ├─ Nivel 2 → reportar
  │     └─ Nivel 3-5 ──┐
  │                     ▼
  ├─► Sentimiento ──► Compositor ──► Reviewer ⛔ ──► Publisher
  │                   (máx 420 chars)  (bloqueante)     ├► Mastodon
  │                                                      └► Telegram
  └─► Observador (pasivo, registra contexto)

  trace_id compartido en todo el flujo

Gobernanza: Sistema de Soviets

Los agentes no operan como individuos aislados. Se organizan en soviets (consejos) que gestionan memoria colectiva, personalidad y estrategia narrativa.

Tonificar

Cada soviet tiene un perfil de tono versionado que se inyecta en los prompts antes de cada ejecución. Los tonos disponibles:

poéticocálidosolemneactivistairónicotécnico

Cada tono transfiere ADN intelectual al agente: el tono poético invoca a Darwish (la memoria como resistencia), Weil y Freire; el activista a Walsh (verificación de datos), Galeano y Fanon; el técnico a Beer (propósito sistémico) y Luhmann.

Memoria dual

  • Memoria privada — táctica, por soviet: observaciones, contexto local
  • Memoria organizacional — compartida: posiciones, líneas rojas, narrativas consensuadas

Estrategia ajedrez/go

Los agentes asumen roles estratégicos inspirados en ajedrez y go para la coordinación narrativa:

Rey

Reina

Torre

Alfil

Caballo

Peón

Observabilidad y auditoría

  • Cada ejecución registrada en agent_runs con trace_id, hash del prompt, estado, entrada/salida/error
  • Políticas versionadas en agent_policies: publicación, moderación, posteo autónomo
  • Permisos por agente en agent_tool_permissions (Tool Gateway)
  • Detección de deriva de personalidad (personality_drift_log)
  • Asamblea semanal: cada agente se autoevalúa (Haiku), un coordinador sintetiza (Sonnet)

Modelo de datos

PostgreSQL con 14 tablas dedicadas al sistema de soviets, además del esquema editorial y de canales. Migraciones gestionadas con SQLx.

soviets
soviet_members
soviet_tonificar
soviet_memory
org_memory
personality_presets
personality_drift_log
soviet_interactions
soviet_cooldowns
soviet_strategy
narrative_territory
tonificar_proposals
soviet_escalations
soviet_simulations

Código abierto

Todo el código fuente está disponible en GitLab. Contribuciones bienvenidas.

«La tecnología al servicio de la solidaridad no es neutral: es un acto político de infraestructura.»