Мониторы (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
Мониторы — один из способов подписки на события; остальные — в Подписках на события.