{/* 此页面由 website/scripts/generate-skill-docs.py 从技能的 SKILL.md 自动生成。请编辑源文件 SKILL.md,而非此页面。 */}

监听器

使用水印去重轮询 RSS、JSON API 和 GitHub。

技能元数据

来源可选 —— 使用 hermes skills install official/devops/watchers 安装
路径optional-skills/devops/watchers
版本1.0.0
作者Hermes Agent
许可证MIT
平台linux, macos
标签cron, polling, rss, github, http, automation, monitoring

参考:完整 SKILL.md

:::info 以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理所看到的指令。 :::

监听器

按间隔轮询外部源,仅对新增项目做出反应。包含三个现成脚本和一个共享的水印辅助函数;可将它们整合到 cron 作业中(或从终端临时运行)。

使用时机

  • 用户想监视 RSS/Atom 源并在有新条目时收到通知
  • 用户想监视 GitHub 仓库的 issues / pulls / releases / commits
  • 用户想轮询任意 JSON 端点并在有新项目时收到通知
  • 用户要求”为 X 设置一个监听器”或”在 X 变化时通知我”

心智模型

监听器只是一个脚本:

  1. 从外部源获取数据
  2. 与之前见过的 ID 的水印文件进行比较
  3. 写入新的水印
  4. 将新增项目打印到 stdout(无变化则不输出)

以下脚本处理以上所有步骤。代理通过终端工具运行它们 —— 通过 cron 作业、webhook 或交互式聊天 —— 并报告新增内容。

现成脚本

所有三个脚本在安装后位于 $HERMES_HOME/skills/devops/watchers/scripts/ 中。每个脚本从 WATCHER_STATE_DIR(默认为 $HERMES_HOME/watcher-state/)读取状态文件,以 --name 参数为键。

脚本监视内容去重键
watch_rss.pyRSS 2.0 或 Atom 源 URL<guid> / <id>
watch_http_json.py返回对象列表的任何 JSON 端点可配置的 ID 字段
watch_github.py仓库的 GitHub issues / pulls / releases / commitsid / sha

所有三个脚本:

  • 首次运行记录基线 —— 从不重放现有源
  • 水印是有界的 ID 集合(最多 500 个)以限制内存
  • 输出格式:每个项目 ## <标题>\n<url>\n\n<可选正文>
  • 无新项目时 stdout 为空 —— 调用者将其视为静默
  • 获取错误时非零退出

使用方式

直接从终端工具运行监听器:

python $HERMES_HOME/skills/devops/watchers/scripts/watch_rss.py \
  --name hn --url https://news.ycombinator.com/rss --max 5

监视 GitHub 仓库(在 ~/.hermes/.env 中设置 GITHUB_TOKEN 以避免 60 req/hr 的匿名速率限制):

python $HERMES_HOME/skills/devops/watchers/scripts/watch_github.py \
  --name hermes-issues --repo NousResearch/hermes-agent --scope issues

轮询任意 JSON API:

python $HERMES_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 作业的代理循环内部的终端工具调用脚本;无需更改 cron 内置的 --script 标志。

状态文件

每个监听器写入 $HERMES_HOME/watcher-state/<name>.json。查看:

cat $HERMES_HOME/watcher-state/hn.json

强制重放(下次运行视为首次轮询):

rm $HERMES_HOME/watcher-state/hn.json

编写自己的监听器

所有三个脚本使用相同的模板:加载水印、获取、比较、保存、输出。scripts/_watermark.py 是共享辅助函数;导入它即可免费获得原子写入 + 有界 ID 集合 + 首次运行基线。查看任意一个参考脚本,了解所需的样板代码之少。

常见陷阱

  1. 每轮都打印”无新项目”头部。 调用者依赖空 stdout = 静默。如果在没有增量时打印任何内容,会刷屏。已提供的脚本处理了这一点;自定义脚本也必须如此。
  2. 期望首次运行产生项目。 不会 —— 首次运行记录基线。如果需要初始摘要,在首次运行后删除状态文件,或在您自己的脚本中添加 --prime-with-latest N 标志。
  3. 水印无限增长。 共享辅助函数上限为 500 个 ID。对于高变更频率的源,提高上限;在存储空间受限的文件系统上降低上限。
  4. 将状态目录放在代理沙箱无法写入的位置。 $HERMES_HOME/watcher-state/ 始终可写。Docker/Modal 后端可能无法访问任意主机路径。