Exemplos / Agente agendado

Um Bot de standup em 90 linhas de TOML

Um agente autónomo que trabalha sem si, usa apenas shell + git e lembra entre sessões.

standup_bot.toml

O problema

Standup é uma tarefa repetitiva. Esquece o que fez ontem. O seu histórico do git sabe, mas não tem tempo para revê-lo todas as manhãs. E quando escreve notas, elas costumam ser genéricas e pouco úteis.

E se um agente pudesse fazer isso por si, todos os dias no mesmo horário, sem que tivesse de pedir?

A config

O agente completo é definido em standup_bot.toml : 90 linhas de TOML. Sem Python. Sem JavaScript. Sem dependências de runtime além do QueryMT.

Definição do agente

[agent]
provider = "anthropic"
model = "claude-sonnet-4-5-20250929"
assume_mutating = false
# No mutating tools — this agent is strictly read-only
mutating_tools = []
Só de leitura por design

assume_mutating = false e uma lista mutating_tools vazia significam que este agente nunca pode escrever em disco nem correr comandos mutantes. Ele lê o histórico do git e escreve no knowledge store; nada mais.

Seleção 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 do conhecimento

Três tools gerem a memória persistente: knowledge_ingest guarda descobertas estruturadas, knowledge_query as recupera, e knowledge_consolidate funde entradas relacionadas em resumos de nível mais alto. O agente lembra automaticamente entre sessões.

Compactação de contexto em três camadas

# 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

A saída de git log pode ser enorme. Estas três camadas mantêm a janela de contexto gerível: truncam a saída de tools em 1000 linhas, podam mensagens antigas enquanto protegem as recentes e resumem automaticamente a conversa quando ela cresce demais.

Middleware: limites de execução

[[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
Execução com custo limitado

Com max_steps = 30 e max_turns = 15, cada ciclo agendado tem um teto estrito de custo. O agente não pode sair do controle. A gestão de contexto garante que ele não alcance limites de tokens inesperadamente.

Configurar o agendamento

Depois de iniciar o dashboard, crie um agendamento pela UI:

  1. Abra 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 (um mês de standups diários)
  5. Max steps: 20
Expiração automática

Depois de 30 execuções (um mês), o agendamento expira automaticamente. Sem processos órfãos. Sem limpeza necessária.

O que acontece

Todos os dias no mesmo horário, o agente corre este ciclo de forma autônoma:

1. Análise de git Corre git log das últimas 24 horas. Lê ficheiros modificados, mensagens de commit e padrões de diff.
2. Extração de padrões Identifica em quais áreas houve trabalho, quais problemas apareceram e quais padrões surgiram.
3. Ingesta de conhecimento Guarda descobertas estruturadas: "API layer saw heavy refactoring, 3 new endpoints added, test coverage dropped."
4. Relatório de standup Gera o standup do dia: o que foi feito, o que está em curso e o que está bloqueado.

Com o tempo, o agente constrói um grafo de conhecimento do histórico do seu projeto. A consolidação semanal funde standups diários em resumos semanais. Consulte standups passados a qualquer momento:

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

Funcionalidades-chave

  • Agendamento por intervalo — corre numa cadência fixa, sem interação do utilizador
  • Ciclo de vida do conhecimento — ingestão diária, consolidação semanal, consulta a qualquer momento
  • Execução autônoma — o bot faz o trabalho sem si ficar olhando
  • Custo limitadomax_steps e max_turns evitam custos descontrolados
  • Compactação em três camadas — lida com elegância com saídas grandes de git
  • Expiração automática do agendamento — sem processos órfãos depois do período de teste

Experimente

# 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