Ejemplos / Programado + Desktop MCP

Ambient Oracle — inteligencia proactiva

En vez de responder preguntas, te dice lo que no sabías que debías preguntar.

ambient_oracle.toml

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.*",
]
Conocimiento en el mismo agente

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."
Programación por eventos

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

Día 1
El agente lee tu calendario, mensajes y ubicación. Registra observaciones: "El usuario tuvo 4 reuniones hoy, sobre todo por la mañana. El trayecto fue de 35 minutos. El último mensaje se envió a las 22:14."
Día 3
Después de 12 ingestas, se dispara la consolidación. El agente sintetiza: "El usuario tiende a cancelar planes nocturnos en días con reuniones seguidas por la mañana. Confianza del patrón: 2/2 ocurrencias."
Día 7
El agente te informa proactivamente a las 8am: "Mañana tienes 6 reuniones, todas antes de las 2pm. Tus datos muestran que este patrón se correlaciona con baja energía y planes nocturnos cancelados. Considera bloquear 30 minutos de recuperación después de la reunión #4."
Día 14+
Los patrones se vuelven más refinados. El agente rastrea correlaciones entre clima, densidad del calendario, sentimiento de mensajes y tiempos de desplazamiento. Los briefings se vuelven más precisos.

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..."