Pareja de código que aprende
Un AI pair programmer que mejora cada vez que lo usas.
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", ]
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"""
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
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.
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."
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"
El flujo de delegación
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