Перейти к основному содержимому

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 — это просто скрипт, который:

  1. Получает данные из внешнего источника
  2. Сравнивает их с файлом контрольной метки ранее просмотренных ID
  3. Записывает новую контрольную метку обратно
  4. Выводит новые элементы в stdout (или ничего, если изменений нет)

Скрипты ниже делают всё это. Агент запускает их через инструмент терминала — из cron, вебхука или интерактивного чата — и сообщает о новом.

Готовые скрипты​

Все три находятся в $VIBEOS_HOME/skills/devops/watchers/scripts/ после установки навыка. Каждый читает свой файл состояния из WATCHER_STATE_DIR (по умолчанию $VIBEOS_HOME/watcher-state/), ключом служит аргумент --name.

СкриптЧто отслеживаетКлюч дедупликации
watch_rss.pyURL RSS 2.0 или Atom-ленты<guid> / <id>
watch_http_json.pyЛюбая JSON-точка, возвращающая список объектовНастраиваемое поле id
watch_github.pyIssues / pull requests / релизы / коммиты репозитория GitHubid / 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 + базовую линию при первом запуске бесплатно. Смотрите любой из трёх эталонных скриптов, чтобы увидеть, как мало шаблонного кода требуется.

Типичные ошибки​

  1. Вывод заголовка «нет новых элементов» при каждом тике. Вызывающий код полагается на пустой stdout как на молчание. Если вы выводите что-то при пустом дельте, вы засоряете канал. Поставляемые скрипты это обрабатывают; пользовательские тоже должны.
  2. Ожидание, что первый запуск выдаст элементы. Этого не произойдёт — первый запуск записывает базовую линию. Если нужна начальная сводка, удалите файл состояния после первого запуска или добавьте флаг --prime-with-latest N в свой скрипт.
  3. Неограниченный рост контрольной метки. Общий вспомогательный модуль ограничивает 500 ID. Увеличьте для высокочастотных лент; уменьшите на ограниченных файловых системах.
  4. Размещение каталога состояния там, куда песочница агента не может писать. $VIBEOS_HOME/watcher-state/ всегда доступен для записи. Бэкенды Docker/Modal могут не видеть произвольные пути на хосте.