Ejemplos / Multiagente + conocimiento

Pareja de código que aprende

Un AI pair programmer que mejora cada vez que lo usas.

learning_pair.toml

El problema

Cada sesión de programación con IA empieza desde cero. El agente no recuerda lo que construiste ayer, las decisiones que tomaste ni los patrones que estableciste. Cada sesión pierde tiempo redescubriendo el mismo contexto.

¿Y si tu AI pair programmer recordara cada decisión arquitectónica y se volviera más inteligente con el tiempo?

La config

learning_pair.toml define un quórum: un sistema multiagente con un planner que recuerda y un coder que implementa. El planner lleva herramientas de conocimiento; el coder lleva herramientas de edición. Separación de responsabilidades a nivel de agente.

Configuración del quórum

[quorum]
cwd = "."
db = "/tmp/learning_pair.db"   # Persistent knowledge store
delegation = true               # Enable planner -> coder delegation
verification = false
snapshot_policy = "diff"        # Track file changes via git diff
delegation_wait_policy = "all"
max_parallel_delegations = 1

Planner: el orquestador con conocimiento

[planner]
provider = "anthropic"
model = "claude-sonnet-4-5-20250929"
tools = [
  "delegate",                # Send tasks to the coder

  # Knowledge lifecycle — the planner's unique capability
  "knowledge_ingest",
  "knowledge_query",
  "knowledge_consolidate",
  "knowledge_list_unconsolidated",
  "knowledge_stats",

  # Planning & exploration (read-only)
  "read_tool", "index", "search_text", "glob", "ls",

  "create_task", "todowrite", "todoread",
  "question",
]
Conocimiento en el planner, no en el coder

El planner es el único agente con herramientas de conocimiento. Consulta decisiones pasadas antes de planificar y luego incorpora nuevas lecciones después de revisar el trabajo del coder. El coder no tiene estado: es implementación pura. Esta separación mantiene el conocimiento limpio y consolidado.

Middleware del planner: modo de agente

[[planner.middleware]]
type = "context"
warn_at_percent = 80
compact_at_percent = 90
fallback_max_tokens = 128000

[[planner.middleware]]
type = "agent_mode"
default = "plan"
reminder = """# Plan Mode — Knowledge-Driven Orchestrator
You are the planner. You must NOT edit files.
1. Query knowledge before planning
2. Break work into concrete tasks
3. Delegate implementation to coder
4. Ingest decisions and lessons"""
Middleware de modo de agente

El middleware agent_mode inyecta un recordatorio del sistema en cada turno y mantiene al planner en modo "plan". No empezará a escribir código por accidente: ese es el trabajo del coder. Cambia modos desde el dashboard con Ctrl+M.

Resumen de delegación: modelo barato para resultados

[quorum.delegation_summary]
provider = "anthropic"
model = "claude-haiku-4-5-20251001"  # Cheaper model

Cuando el coder termina una tarea, un modelo más barato resume el resultado antes de enviarlo de vuelta al planner. Esto mantiene bajos los costes de contexto: el planner ve un resumen, no el diff completo.

Delegado coder: implementación pura

[[delegates]]
id = "coder"
provider = "anthropic"
model = "claude-sonnet-4-5-20250929"
description = "Implementation specialist..."
capabilities = ["rust", "python", "typescript", "shell"]
tools = [
  "edit", "write_file", "read_tool", "index",
  "glob", "search_text", "ls",
  "shell",
  "todowrite", "todoread",
]

Middleware del coder: límites + comprobación de duplicados

[[delegates.middleware]]
type = "limits"
max_steps = 80
max_turns = 25

[[delegates.middleware]]
type = "context"
warn_at_percent = 80
compact_at_percent = 90

# Detect duplicate code in coder output
[[delegates.middleware]]
type = "dedup_check"
threshold = 0.85    # 85% similarity threshold
min_lines = 10     # Only check blocks >= 10 lines
Middleware de comprobación de duplicados

El middleware dedup_check detecta cuando el coder está a punto de escribir código con una similitud del 85% o más respecto al código existente del proyecto. Captura patrones de copiar y pegar y fomenta una implementación DRY.

Ciclo de vida en múltiples sesiones

La magia ocurre entre sesiones. El conocimiento persiste en SQLite. El planner se vuelve más inteligente cada vez.

Sesión 1
Tú: "Añade rate limiting a la API"

Planner consulta conocimiento: vacío (primera vez)
Planner analiza el codebase con herramientas de solo lectura
Planner planifica: "Hace falta capa middleware, token bucket, tests"
Planner delega a coder -> coder implementa
Planner revisa y registra: "Usamos un enfoque token bucket con backend Redis. Middleware colocado antes de la capa de auth."
Sesión 2 (día siguiente)
Tú: "Añade autenticación a la API"

Planner consulta conocimiento: encuentra "token bucket, backend Redis, middleware antes de auth" de ayer
Planner planifica informado por decisiones pasadas: "Colocar auth middleware después del rate limiter, coherente con el patrón existente"
Planner delega -> coder implementa (coherente con la arquitectura existente)
Planner registra: "Auth usa JWT, middleware coherente con el patrón de rate limiting"
Sesión 3+
Cada sesión añade información al grafo de conocimiento. Los planes del planner se vuelven más coherentes con la arquitectura del proyecto. La consolidación fusiona entradas relacionadas: "El middleware de API usa un patrón por capas: rate limiting -> auth -> routing."

El flujo de delegación

1. Consulta de conocimiento El planner revisa lo que ya sabe sobre este codebase y tipo de tarea.
2. Plan El planner divide la tarea en pasos informados por decisiones pasadas.
3. Delegación El planner envía la implementación al coder con todo el contexto.
4. Implementación El coder escribe código, ejecuta tests y produce resultados.
5. Ingesta de lecciones El planner revisa los resultados y guarda nuevo conocimiento para la próxima vez.

Funciones clave

  • Ciclo de vida del conocimiento — ingesta, consulta y consolidación entre sesiones
  • Quórum multiagente — planner delega a un coder especializado
  • Resumen de delegación — un modelo barato resume la salida del coder para el planner
  • Middleware de modo de agente — mantiene al planner en modo "plan", no "build"
  • Dedup check — detecta código duplicado antes de escribirlo
  • Delegación con contexto — el conocimiento pasado moldea los planes actuales

Pruébalo tú mismo

# Run the learning pair
cargo run --example qmtcode --features dashboard -- \
  confs/learning_pair.toml --dashboard

# Session 1: Ask it to build something
#   "Add rate limiting to the API"

# Session 2 (restart, same db): Ask it to build something related
#   "Add authentication to the API"
#   Notice: the planner uses knowledge from session 1

# Optional: Create a consolidation schedule
#   Trigger: Interval, 3600s (hourly)
#   Prompt: "Run knowledge consolidation..."
#   Max runs: 24