用途:Watchers 用于按间隔轮询外部数据源,只对新增条目做出反应。适用于监控 RSS/Atom 订阅、GitHub 仓库的 issues/pulls/releases/commits,以及任意返回对象列表的 JSON 端点,实现“有新内容时通知我”。
主要能力:提供三个现成脚本 watch_rss.py、watch_http_json.py、watch_github.py,分别处理 RSS 2.0/Atom、JSON 端点和 GitHub 数据。三者共用 _watermark.py 水位线助手,逻辑为:抓取数据、与已见 ID 集合比对、写回水位线、将新条目打印到 stdout。首次运行只记录基线,不重放已有内容;水位线为有界 ID 集合(上限 500);无新内容时 stdout 为空,调用方视为静默;抓取出错时以非零退出码结束。
使用方式:脚本位于 $HERMES_HOME/skills/devops/watchers/scripts/,状态文件写入 $HERMES_HOME/watcher-state/<name>.json,由 --name 参数区分。可直接在终端运行,例如:python $HERMES_HOME/skills/devops/watchers/scripts/watch_rss.py --name hn --url https://news.ycombinator.com/rss --max 5。GitHub 监控可设置 GITHUB_TOKEN 以避免每小时 60 次的匿名限流。JSON 轮询支持 --id-field 与 --items-path。也可让 agent 通过 cron 定时执行,无新内容时保持静默。
限制与注意:首次运行不会输出条目,需要初始摘要时可删除状态文件或自行添加 --prime-with-latest N。自定义脚本必须保证无新内容时不打印任何内容,否则会刷屏。水位线上限 500,可按需调整。状态目录需位于 agent 沙箱可写路径,Docker/Modal 后端可能无法访问任意主机路径。