Мониторы (change-мониторы)

🔵 Монитор — это pull-триггер: следит за внешним источником и запускает ход агента только при появлении новых элементов (в отличие от cron, который стреляет по расписанию независимо). Файл — config/monitors.yaml, читается при старте.

monitors:
  - name: news-watch
    source:
      type: rss
      url: "https://lenta.ru/rss"
    template: rss-agent
    prompt: "Кратко резюмируй эти новые статьи:\n{{items}}"
    notify: [{ type: telegram, chat_id: 123456 }]
    poll_secs: 300
Поле Смысл
name уникальный id (он же ключ курсора и сессия monitor:<name>)
source.type источник изменений: rss, yandex_disk или plugin
source.url URL ленты (для rss)
source.token_file файл refresh-токена Яндекса (для yandex_disk; пишется входом yandex_tool)
source.client_id / source.client_id_env OAuth client id или имя env-переменной (для yandex_disk)
source.client_secret / source.client_secret_env OAuth client secret или имя env-переменной (для yandex_disk)
source.path папка Диска для наблюдения, / по умолчанию (для yandex_disk)
source.limit максимум записей за опрос, по умолчанию 50 (для yandex_disk)
source.kind / source.config kind и конфиг нативного источника (для plugin, см. Нативные плагины)
template шаблон агента для запуска на новых элементах
prompt шаблон промпта; {{items}} заменяется новыми элементами
notify sink'и результата (те же типы, что у cron, см. Cron)
poll_secs интервал опроса, минимум 10 (по умолчанию 300)

Курсор. Монитор хранит позицию в logs/monitors.db. Первый опрос только «догоняет» (сохраняет курсор, ничего не запускает); дальше агент стартует только на элементах новее курсора. Запуск идёт в сессии monitor:<name>, поэтому бюджеты, хуки, инструменты и событийное хранилище ведут себя как в обычном ходе.

Источники. Встроенные — rss и yandex_disk. Нативный плагин может добавить свой source.type через type: plugin + kind (см. Нативные плагины).

Яндекс.Диск

yandex_disk срабатывает, когда в папке появляются или меняются файлы. Нужен refresh-токен, сохранённый входом в Яндекс (тот же token_file, что у yandex_tool). Курсор — самая свежая метка modified; каждый опрос отдаёт всё, что изменено позже, новое сверху.

monitors:
  - name: yandex-disk-watch
    source:
      type: yandex_disk
      token_file: data/yandex-oauth/disk_token.json
      client_id_env: YANDEX_OAUTH_CLIENT_ID
      client_secret_env: YANDEX_OAUTH_CLIENT_SECRET
      path: "/"
      limit: 50
    template: yandex-agent
    prompt: "На Яндекс.Диске появились новые/изменённые файлы:\n{{items}}\nКратко опиши их."
    poll_secs: 300

Мониторы — один из способов подписки на события; остальные — в Подписках на события.