Ambient Oracle — inteligencia proactiva
En vez de responder preguntas, te dice lo que no sabías que debías preguntar.
El problema
Tus dispositivos recopilan una enorme cantidad de datos que nunca miras. Patrones de calendario, frecuencia de mensajes, hábitos de ubicación, correlaciones con el clima. Siempre reaccionas; nunca te adelantas a lo que tus propios datos podrían decirte.
¿Y si un agente pudiera minar estos datos continuamente y decirte cosas antes de que se conviertan en problemas?
La config
ambient_oracle.toml es la config más compleja de la galería. Combina inferencia LLM local, datos del dispositivo vía iMCP, ciclo de vida del conocimiento y doble programación: todo en un agente.
Agente: LLM local + datos del dispositivo + conocimiento
[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.*", ]
La mayoría de sistemas separan el pipeline de "ingesta de conocimiento" del agente de "interacción con el usuario". Esta config pone ambos en el mismo agente. El oráculo lee tus datos, aprende patrones y te informa: todo en un bucle.
Parámetros GPU con contexto masivo
[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: límites más altos para ciclos de minería
[[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: acceso a datos en dispositivo
[[mcp]] name = "iMCP" transport = "stdio" command = "/Applications/iMCP.app/Contents/MacOS/imcp-server"
Diseño de doble horario
El oráculo usa dos horarios que trabajan juntos: uno para reunir datos y producir briefings, y otro para consolidar el conocimiento acumulado en patrones de mayor nivel.
Horario 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." Horario 2: consolidación 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." En vez de ejecutarse con un temporizador fijo, el horario de consolidación se dispara cuando se han ingerido suficientes observaciones nuevas. Es más eficiente que una consolidación por intervalo: corre cuando realmente hay algo nuevo que sintetizar.
Qué ocurre con el tiempo
Funciones clave
- Programación por intervalo + por eventos — dos horarios trabajando en tándem
- Consolidación de conocimiento — fusiona observaciones en patrones de mayor nivel
- Aprendizaje entre sesiones — persiste entre reinicios mediante un almacén de conocimiento SQLite
- Minería de datos del dispositivo — Calendar, Contacts, Messages, Maps y Weather vía iMCP
- Inferencia LLM local — tus datos de comportamiento nunca salen de tu máquina
- Disparadores con debounce — la consolidación corre solo cuando hay suficientes datos nuevos
Pruébalo tú mismo
# 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..."