Exemplos / Agendado + Desktop MCP

Ambient Oracle — inteligência proativa

Em vez de responder perguntas, ele diz o que não sabia que deveria perguntar.

ambient_oracle.toml

O problema

Os seus dispositivos coletam uma enorme quantidade de dados que nunca consulta. Padrões de calendário, frequência de mensagens, hábitos de localização, correlações com o clima. Reage sempre; nunca se antecipa ao que os seus próprios dados poderiam revelar.

E se um agente pudesse extrair esses dados continuamente e avisá-lo antes que se tornem problemas?

A config

ambient_oracle.toml é a config mais complexa da galeria. Combina inferência LLM local, dados do dispositivo via iMCP, ciclo de vida do conhecimento e agendamento duplo: tudo num agente.

Agente: LLM local + dados do dispositivo + conhecimento

[agent]
db = "/tmp/ambient_oracle.db"   # Persistent knowledge store
provider = "llama_cpp"
model = "unsloth/Qwen3-VL-8B-Instruct-GGUF:UD-Q6_K_XL"
assume_mutating = false
mutating_tools = []

tools = [
  "create_task", "todowrite", "todoread",
  "question", "mdq",

  # Knowledge lifecycle — learn and remember
  "knowledge_ingest",
  "knowledge_query",
  "knowledge_consolidate",
  "knowledge_list_unconsolidated",
  "knowledge_stats",

  # All Apple data tools from iMCP
  "iMCP.*",
]
Conhecimento no mesmo agente

A maioria dos sistemas separa o pipeline de "ingestão de conhecimento" do agente de "interação com o utilizador". Esta config coloca ambos no mesmo agente. O oráculo lê os seus dados, aprende padrões e informa-o: tudo num ciclo.

Parâmetros de GPU com contexto massivo

[agent.parameters]
n_ctx = 160000        # 160K context — essential for knowledge-heavy agents
max_tokens = 8192
top_p = 0.95
top_k = 20
temperature = 0.7        # Lower temp for factual pattern mining
flash_attention = "enabled"

Middleware: limites mais altos para ciclos de mineração

[[middleware]]
type = "limits"
max_steps = 60    # More steps than standup bot — mining is deeper
max_turns = 25

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

iMCP: acesso a dados no dispositivo

[[mcp]]
name = "iMCP"
transport = "stdio"
command = "/Applications/iMCP.app/Contents/MacOS/imcp-server"

Design de agendamento duplo

O oráculo usa dois agendamentos que trabalham juntos: um para reunir dados e produzir briefings, e outro para consolidar o conhecimento acumulado em padrões de nível mais alto.

Agendamento 1: briefing por intervalo (cada 2 horas)

# Created via dashboard UI:
Trigger: Interval, 7200 seconds (2 hours)
Prompt: "Run ambient briefing cycle: gather iMCP signals,
        ingest observations, query patterns, and produce
        proactive briefing."

Agendamento 2: consolidação por evento

# Triggered automatically after 12 knowledge ingestions:
event_kinds: ["knowledge_ingested"]
threshold: 12
debounce_seconds: 60
Prompt: "Run ambient consolidation cycle: list unconsolidated
        entries in scope global:ambient and consolidate
        recurring patterns."
Agendamento por eventos

Em vez de correr com um temporizador fixo, o agendamento de consolidação dispara quando observações novas suficientes foram ingeridas. É mais eficiente que uma consolidação por intervalo: corre quando realmente há algo novo para sintetizar.

O que acontece com o tempo

Dia 1
O agente lê o seu calendário, mensagens e localização. Ingere observações: "Teve 4 reuniões hoje, principalmente pela manhã. O deslocamento levou 35 minutos. A última mensagem foi enviada às 22:14."
Dia 3
Depois de 12 ingestões, a consolidação dispara. O agente sintetiza: "Tende a cancelar planos à noite em dias com reuniões seguidas pela manhã. Confiança do padrão: 2/2 ocorrências."
Dia 7
O agente informa-o proativamente às 8h: "Amanhã tem 6 reuniões, todas antes das 14h. Os seus dados mostram que esse padrão se correlaciona com baixa energia e planos noturnos cancelados. Considere bloquear 30 minutos de recuperação depois da reunião #4."
Dia 14+
Os padrões ficam mais refinados. O agente rastreia correlações entre clima, densidade do calendário, sentimento das mensagens e tempos de deslocamento. Os briefings ficam mais precisos.

Funcionalidades-chave

  • Agendamento por intervalo + por eventos — dois agendamentos trabalhando em conjunto
  • Consolidação de conhecimento — funde observações em padrões de nível mais alto
  • Aprendizado entre sessões — persiste entre reinícios por meio de um armazenamento de conhecimento SQLite
  • Mineração de dados do dispositivo — Calendar, Contacts, Messages, Maps e Weather via iMCP
  • Inferência LLM local — os seus dados comportamentais nunca saem da sua máquina
  • Disparadores com debounce — a consolidação corre somente quando há dados novos suficientes

Experimente

# 1. Install iMCP and enable services
brew install --cask mattt/tap/iMCP

# 2. Run the agent
cargo run --example qmtcode --features dashboard -- \
  confs/ambient_oracle.toml --dashboard

# 3. Create two schedules in the dashboard:
#   Schedule 1: Interval, 7200s, "Run ambient briefing cycle..."
#   Schedule 2: Event-driven, knowledge_ingested, threshold 12,
#              "Run ambient consolidation cycle..."