Ejemplos / Agente programado

Un Standup Bot en 90 líneas de TOML

Un agente autónomo que trabaja sin ti, usa solo shell + git y recuerda entre sesiones.

standup_bot.toml

El problema

El standup es una tarea repetitiva. Olvidas qué hiciste ayer. Tu historial de git lo sabe, pero no tienes tiempo de revisarlo cada mañana. Y cuando escribes notas, suelen ser genéricas y poco útiles.

¿Y si un agente pudiera hacerlo por ti, todos los días a la misma hora, sin que se lo pidas?

La config

El agente completo se define en standup_bot.toml : 90 líneas de TOML. Sin Python. Sin JavaScript. Sin dependencias de runtime más allá de QueryMT.

Definición del agente

[agent]
provider = "anthropic"
model = "claude-sonnet-4-5-20250929"
assume_mutating = false
# No mutating tools — this agent is strictly read-only
mutating_tools = []
Solo lectura por diseño

assume_mutating = false y una lista mutating_tools vacía significan que este agente nunca puede escribir en disco ni ejecutar comandos mutantes. Lee el historial de git y escribe en su knowledge store; nada más.

Selección de tools

[agent]
tools = [
  # Git & codebase analysis (read-only)
  "read_tool", "index", "glob", "search_text", "ls", "shell",

  # Knowledge lifecycle — the magic
  "knowledge_ingest",      # Store findings
  "knowledge_query",       # Recall past standups
  "knowledge_consolidate", # Merge daily → weekly
  "knowledge_list_unconsolidated",
  "knowledge_stats",

  # Task tracking
  "create_task", "todowrite", "todoread",
]
Tools de ciclo de vida del conocimiento

Tres tools gestionan la memoria persistente: knowledge_ingest guarda hallazgos estructurados, knowledge_query los recupera, y knowledge_consolidate fusiona entradas relacionadas en resúmenes de mayor nivel. El agente recuerda automáticamente entre sesiones.

Compactación de contexto en tres capas

# Layer 1: Tool output truncation
[agent.execution.tool_output]
max_lines = 1000
max_bytes = 25600

# Layer 2: Pruning after every turn
[agent.execution.pruning]
protect_tokens = 20000

# Layer 3: AI summary on context overflow
[agent.execution.compaction]
auto = true

La salida de git log puede ser enorme. Estas tres capas mantienen manejable la ventana de contexto: truncan la salida de tools a 1000 líneas, podan mensajes antiguos mientras protegen los recientes y resumen automáticamente la conversación cuando crece demasiado.

Middleware: límites de ejecución

[[middleware]]
type = "limits"
max_steps = 30    # Max tool calls per cycle
max_turns = 15    # Max conversation turns

[[middleware]]
type = "context"
warn_at_percent = 80   # Warn when 80% of context used
compact_at_percent = 90 # Auto-compact at 90%
fallback_max_tokens = 128000
Ejecución con costo acotado

Con max_steps = 30 y max_turns = 15, cada ciclo programado tiene un techo estricto de costo. El agente no puede descontrolarse. La gestión de contexto asegura que no llegue inesperadamente a los límites de tokens.

Configurar el horario

Después de lanzar el dashboard, crea un horario desde la UI:

  1. Abre Session -> Schedules -> Create Schedule
  2. Prompt: "Run a standup cycle: analyze recent git activity, ingest findings, and report."
  3. Trigger: Interval, 86400 segundos (cada 24 horas)
  4. Max runs: 30 (un mes de standups diarios)
  5. Max steps: 20
Expiración automática

Después de 30 ejecuciones (un mes), el horario expira automáticamente. Sin procesos huérfanos. Sin limpieza necesaria.

Qué ocurre

Cada día a la misma hora, el agente ejecuta este ciclo de forma autónoma:

1. Análisis de git Ejecuta git log para las últimas 24 horas. Lee archivos modificados, mensajes de commit y patrones de diff.
2. Extracción de patrones Identifica en qué áreas se trabajó, qué problemas aparecieron y qué patrones surgieron.
3. Ingesta de conocimiento Guarda hallazgos estructurados: "API layer saw heavy refactoring, 3 new endpoints added, test coverage dropped."
4. Reporte de standup Genera el standup del día: qué se hizo, qué está en progreso y qué está bloqueado.

Con el tiempo, el agente construye un grafo de conocimiento del historial de tu proyecto. La consolidación semanal fusiona standups diarios en resúmenes semanales. Consulta standups pasados en cualquier momento:

# Ask the agent in the dashboard:
"What were the main themes from last week's standups?"

Funciones clave

  • Programación por intervalo — corre con una cadencia fija, sin interacción del usuario
  • Ciclo de vida del conocimiento — ingesta diaria, consolidación semanal, consulta en cualquier momento
  • Ejecución autónoma — el bot hace su trabajo sin que lo estés mirando
  • Costo acotadomax_steps y max_turns evitan costos descontrolados
  • Compactación en tres capas — maneja con elegancia salidas grandes de git
  • Expiración automática del horario — sin procesos huérfanos después del período de prueba

Pruébalo tú mismo

# Clone and run
git clone https://github.com/querymt/querymt.git && cd querymt
cargo run --example qmtcode --features dashboard -- \
  confs/standup_bot.toml --dashboard

# In the dashboard, create a schedule:
#   Session -> Schedules -> Create Schedule
#   Prompt: "Run a standup cycle: analyze recent git activity, ingest findings, and report."
#   Trigger: Interval, 86400s (daily)
#   Max runs: 30