Ambient Oracle — проактивный интеллект
Вместо того чтобы отвечать на вопросы, он подсказывает то, о чем вы еще не догадались спросить.
Проблема
Ваши устройства собирают огромный объем данных, на который вы почти никогда не смотрите. Паттерны календаря, частота сообщений, привычки перемещения, корреляции с погодой. Вы постоянно реагируете, но почти не опережаете события, хотя собственные данные могли бы вас предупредить.
Что, если бы агент мог непрерывно извлекать эти данные и предупреждать вас о вещах до того, как они станут проблемами?
Конфиг
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." Вместо запуска по фиксированному таймеру расписание консолидации срабатывает, когда накапливается достаточно новых наблюдений. Это эффективнее интервальной консолидации: оно запускается тогда, когда действительно есть что синтезировать.
Что происходит со временем
Ключевые возможности
- Интервальное + событийное планирование — два расписания работают в паре
- Консолидация знаний — объединяет наблюдения в паттерны более высокого уровня
- Обучение между сессиями — сохраняется между перезапусками через 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..."