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

Documentos cifrados GPG

Documentos sensibles se almacenan cifrados en disco con GPG (AES-256 simétrico) y solo se descifran on-demand para usuarios autorizados.

Cifrado at-rest

Archivos .gpg en disco. El servidor nunca almacena el texto plano. Descifrado en memoria con passphrase exclusiva del servidor.

Control de acceso granular

ACL por archivo: admin, uploader y usuarios explícitamente autorizados via tabla media_access.

Watermarking forense multicapa

Cada descarga de un documento privado recibe un fingerprint único e invisible. Si el documento se filtra, se puede rastrear el origen.

Capa 1  Decoy           Comentario HTML al final — señuelo visible
Capa 2  LSB Stego        Flip de bits en posiciones HMAC(secret, download_id)
Capa 3  File Hash        SHA-256 del archivo watermarkeado en DB

Estrategia: El atacante encuentra y limpia la Capa 1.
           Cree que está limpio. La Capa 2 permanece intacta.
           Sin la clave del servidor, es indetectable.
GPG AES-256HMAC-SHA256LSB SteganographyAudit trailCLI forense

Publicación autónoma con variedad

Un solo loop inteligente rota entre 4 tipos de contenido, evitando repeticiones. Consulta trending topics de Mastodon para contextualizar publicaciones.

📜

Citas

Biblioteca RAG

🖼

Media

Material gráfico

📢

Campañas

Tips contextuales

📰

Artículos

Re-share temático

Selección por frecuencia inversa: el tipo menos publicado en 72h tiene mayor probabilidad. Trending tags de Mastodon priorizan contenido relevante al contexto actual.

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.»