Примеры / Scheduled + Desktop MCP

Ambient Oracle — проактивный интеллект

Вместо того чтобы отвечать на вопросы, он подсказывает то, о чем вы еще не догадались спросить.

ambient_oracle.toml

Проблема

Ваши устройства собирают огромный объем данных, на который вы почти никогда не смотрите. Паттерны календаря, частота сообщений, привычки перемещения, корреляции с погодой. Вы постоянно реагируете, но почти не опережаете события, хотя собственные данные могли бы вас предупредить.

Что, если бы агент мог непрерывно извлекать эти данные и предупреждать вас о вещах до того, как они станут проблемами?

Конфиг

ambient_oracle.toml — самый сложный конфиг в галерее. Он объединяет локальный LLM inference, данные устройства через iMCP, жизненный цикл знаний и двойное планирование — все в одном агенте.

Агент: локальная LLM + данные устройства + знания

[agent]
db = "/tmp/ambient_oracle.db"   # Постоянное хранилище знаний
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_ingest",
  "knowledge_query",
  "knowledge_consolidate",
  "knowledge_list_unconsolidated",
  "knowledge_stats",

  # Все инструменты данных Apple приходят из iMCP
  "iMCP.*",
]
Знания в том же агенте

Большинство систем отделяют pipeline "ingestion знаний" от агента для общения с пользователем. В этом конфиге обе части живут в одном агенте. Oracle читает ваши данные, изучает паттерны и брифит вас — все в одном цикле.

GPU-параметры с огромным контекстом

[agent.parameters]
n_ctx = 160000        # 160K контекста — критично для knowledge-heavy агентов
max_tokens = 8192
top_p = 0.95
top_k = 20
temperature = 0.7        # Более низкая температура для фактического поиска паттернов
flash_attention = "enabled"

Middleware: более высокие лимиты для циклов майнинга

[[middleware]]
type = "limits"
max_steps = 60    # Больше шагов, чем у standup bot — майнинг глубже
max_turns = 25

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

iMCP: доступ к данным на устройстве

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

Дизайн с двумя расписаниями

Oracle использует два расписания, которые работают вместе: одно собирает данные и готовит брифинги, другое консолидирует накопленные знания в паттерны более высокого уровня.

Расписание 1: интервальный брифинг (каждые 2 часа)

# Создается через UI dashboard:
Trigger: Interval, 7200 seconds (2 hours)
Prompt: "Run ambient briefing cycle: gather iMCP signals,
        ingest observations, query patterns, and produce
        proactive briefing."

Расписание 2: консолидация по событиям

# Автоматически запускается после 12 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."
Планирование по событиям

Вместо запуска по фиксированному таймеру расписание консолидации срабатывает, когда накапливается достаточно новых наблюдений. Это эффективнее интервальной консолидации: оно запускается тогда, когда действительно есть что синтезировать.

Что происходит со временем

День 1
Агент читает ваш календарь, сообщения и локацию. Сохраняет наблюдения: "Сегодня у пользователя было 4 встречи, в основном утром. Дорога заняла 35 минут. Последнее сообщение отправлено в 22:14."
День 3
После 12 ingestions срабатывает консолидация. Агент синтезирует: "Пользователь склонен отменять вечерние планы в дни, когда подряд идет несколько утренних встреч. Уверенность в паттерне: 2/2 случая."
День 7
Агент проактивно брифит вас в 8 утра: "Завтра у вас 6 встреч, все до 14:00. Ваши данные показывают, что этот паттерн коррелирует с низким уровнем энергии и отменой вечерних планов. Стоит заблокировать 30 минут на восстановление после встречи №4."
День 14+
Паттерны становятся точнее. Агент отслеживает корреляции между погодой, плотностью календаря, тоном сообщений и временем в дороге. Брифинги становятся острее.

Ключевые возможности

  • Интервальное + событийное планирование — два расписания работают в паре
  • Консолидация знаний — объединяет наблюдения в паттерны более высокого уровня
  • Обучение между сессиями — сохраняется между перезапусками через SQLite knowledge store
  • Майнинг данных устройства — Calendar, Contacts, Messages, Maps, Weather через iMCP
  • Локальный LLM inference — ваши поведенческие данные не покидают ваш компьютер
  • Debounced event triggers — консолидация запускается только тогда, когда появляется достаточно новых данных

Попробуйте сами

# 1. Установите iMCP и включите сервисы
brew install --cask mattt/tap/iMCP

# 2. Запустите агента
cargo run --example qmtcode --features dashboard -- \
  confs/ambient_oracle.toml --dashboard

# 3. Создайте в dashboard два расписания:
#   Schedule 1: Interval, 7200s, "Run ambient briefing cycle..."
#   Schedule 2: Event-driven, knowledge_ingested, threshold 12,
#              "Run ambient consolidation cycle..."