Watchers
Опрос RSS, JSON API и GitHub с дедупликацией по контрольной метке.
Метаданные навыка
| Источник | Опционально — установка: vibeos skills install official/devops/watchers |
| Путь | optional-skills/devops/watchers |
| Версия | 1.0.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos |
| Теги | cron, polling, rss, github, http, automation, monitoring |
Справочник: полный SKILL.md
Ниже приведено полное определение навыка, которое VibeOS загружает при его активации. Это те инструкции, которые видит агент, когда навык активен.
Watchers
Опрос внешних источников с заданным интервалом и реакция только на новые элементы. Три готовых скрипта плюс общий вспомогательный модуль для контрольных меток; подключайте их в cron (или запускайте ad-hoc из терминала).
Когда использовать
- Пользователь хочет отслеживать RSS/Atom-ленту и получать уведомления о новых записях
- Пользователь хочет отслеживать issues / pull requests / релизы / коммиты репозитория GitHub
- Пользователь хочет опрашивать произвольную JSON-точку и получать уведомления о новых элементах
- Пользователь просит «watcher для X» или «уведоми меня, когда X изменится»
Модель работы
Watcher — это просто скрипт, который:
- Получает данные из внешнего источника
- Сравнивает их с файлом контрольной метки ранее просмотренных ID
- Записывает новую контрольную метку обратно
- Выводит новые элементы в stdout (или ничего, если изменений нет)
Скрипты ниже делают всё это. Агент запускает их через инструмент терминала — из cron, вебхука или интерактивного чата — и сообщает о новом.
Готовые скрипты
Все три находятся в $VIBEOS_HOME/skills/devops/watchers/scripts/ после установки навыка. Каждый читает свой файл состояния из WATCHER_STATE_DIR (по умолчанию $VIBEOS_HOME/watcher-state/), ключом служит аргумент --name.
| Скрипт | Что отслеживает | Ключ дедупликации |
|---|---|---|
watch_rss.py | URL RSS 2.0 или Atom-ленты | <guid> / <id> |
watch_http_json.py | Любая JSON-точка, возвращающая список объектов | Настраиваемое поле id |
watch_github.py | Issues / pull requests / релизы / коммиты репозитория GitHub | id / sha |
Все три:
- При первом запуске записывают базовую линию — никогда не воспроизводят существующую ленту
- Контрольная метка — ограниченный набор ID (макс. 500) для экономии памяти
- Формат вывода:
## <title>\n<url>\n\n<optional body>на элемент - Пустой stdout при отсутствии нового — вызывающий код считает это молчанием
- Ненулевой код возврата при ошибках получения данных
Использование
Запустите watcher напрямую из инструмента терминала:
python $VIBEOS_HOME/skills/devops/watchers/scripts/watch_rss.py \
--name hn --url https://news.ycombinator.com/rss --max 5
Отслеживание репозитория GitHub (укажите GITHUB_TOKEN в ${VIBEOS_HOME:-~/.vibeos}/.env, чтобы избежать анонимного лимита 60 запросов/час):
python $VIBEOS_HOME/skills/devops/watchers/scripts/watch_github.py \
--name vibeos-issues --repo NousResearch/vibeos-agent --scope issues
Опрос произвольного JSON API:
python $VIBEOS_HOME/skills/devops/watchers/scripts/watch_http_json.py \
--name api --url https://api.example.com/events \
--id-field event_id --items-path data.events
Подключение в cron
Попросите агента запланировать задачу cron с помощью запроса вроде:
Каждые 15 минут запускай
watch_rss.py --name hn --url https://news.ycombinator.com/rss. Если он что-то выведет, сделай краткий обзор заголовков и доставь их. Если ничего не выведет — молчи.
Агент вызывает скрипт через инструмент терминала внутри цикла задачи cron; никаких изменений встроенного флага --script в cron не требуется.
Файлы состояния
Каждый watcher записывает $VIBEOS_HOME/watcher-state/<name>.json. Просмотр:
cat $VIBEOS_HOME/watcher-state/hn.json
Принудительный повтор (следующий запуск будет считаться первым опросом):
rm $VIBEOS_HOME/watcher-state/hn.json
Создание собственных скриптов
Все три скрипта используют один шаблон: загрузить контрольную метку, получить данные, сравнить, сохранить, вывести. scripts/_watermark.py — общий вспомогательный модуль; импортируйте его, чтобы получить атомарную запись + ограниченный набор ID + базовую линию при первом запуске бесплатно. Смотрите любой из трёх эталонных скриптов, чтобы увидеть, как мало шаблонного кода требуется.
Типичные ошибки
- Вывод заголовка «нет новых элементов» при каждом тике. Вызывающий код полагается на пустой stdout как на молчание. Если вы выводите что-то при пустом дельте, вы засоряете канал. Поставляемые скрипты это обрабатывают; пользовательские тоже должны.
- Ожидание, что первый запуск выдаст элементы. Этого не произойдёт — первый запуск записывает базовую линию. Если нужна начальная сводка, удалите файл состояния после первого запуска или добавьте флаг
--prime-with-latest Nв свой скрипт. - Неограниченный рост контрольной метки. Общий вспомогательный модуль ограничивает 500 ID. Увеличьте для высокочастотных лент; уменьшите на ограниченных файловых системах.
- Размещение каталога состояния там, куда песочница агента не может писать.
$VIBEOS_HOME/watcher-state/всегда доступен для записи. Бэкенды Docker/Modal могут не видеть произвольные пути на хосте.