Ambient Oracle — inteligência proativa
Em vez de responder perguntas, ele diz o que não sabia que deveria perguntar.
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.*", ]
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." 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
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..."