OpenClaw blogwatcher 技能详解:用 blogwatcher CLI 为 Agent 接入博客与 RSS/Atom 订阅监控
2026/9/7 15:47:19 网站建设 项目流程

OpenClaw blogwatcher 技能详解:用 blogwatcher CLI 为 Agent 接入博客与 RSS/Atom 订阅监控

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

OpenClaw 通过skills/blogwatcher/SKILL.md这个内置技能(Skill),教 Agent 使用blogwatcherCLI 来跟踪博客与 RSS/Atom 订阅源的更新。读完本文,你能掌握该技能的完整命令用法、SKILL.md 前置元数据(frontmatter)中requires.bins门控与 Go 安装器声明的机制,以及 OpenClaw 技能加载器如何依据源码判断该技能是否可用。

技能定位:一条 CLI 打通"订阅 → 扫描 → 已读"闭环

blogwatcher 技能的目标很直接:让 Agent 通过命令行工具完成博客/RSS/Atom 源的监控,核心工作流为四步——添加博客(add)、扫描更新(scan)、查看文章(articles)、标记已读(read/read-all)。技能正文以 skills/blogwatcher/SKILL.md 为唯一载体,其中 frontmatter 声明了namedescriptionhomepagemetadata.openclaw门控块,正文则给出安装方式、快速上手、常用命令与示例输出。

与 OpenClaw 仓库中其他技能(如weatherhimalaya)一样,blogwatcher 属于"文件型技能"(file-backed skill):只要SKILL.md出现在技能根目录(默认最深 6 层)下,加载器就会发现它。该技能的加载优先级遵循 OpenClaw 的技能层级体系,bundled 技能(随安装包发行)位于第 5 级,详见 Skills 文档。

安装:一条 go install 命令

技能正文给出的唯一安装途径是 Go:

go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest

快速上手只需先运行帮助命令确认二进制可用:

blogwatcher --help

需要注意的是,OpenClaw 的requires.bins门控检查的是宿主机PATH上是否存在blogwatcher可执行文件(见下文门控机制一节)。如果你手动go install后技能仍未出现在 Agent 的技能列表中,通常是GOBIN未加入PATH;或者改用 OpenClaw 自带的安装器机制,由 Gateway 代装到其管理的 bin 目录。

安装器声明与 OpenClaw 的 Go 安装规则

frontmatter 中的metadata.openclaw.install声明了一条 Go 安装器规格(kind: "go",模块github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest),供 macOS Skills UI 与 Gateway 使用。根据 Skills 文档中的 Go 安装器说明,OpenClaw 对 Go 类安装有三条硬性规则,理解它们能解释安装行为:

  • OpenClaw 要求 Go 1.21 或更新版本才支持自动安装技能依赖;若宿主机缺少go且可用 Homebrew,会先经 Homebrew 安装 Go;Linux 无 Homebrew 时可走apt-getgolang-go通道(需 root 或免密 sudo,且版本满足最低要求)。
  • 实际的go install始终指向 OpenClaw 管理的专用 bin 目录(新安装时是 Homebrew 的bin,否则为~/.local/bin),而不是你配置的GOBIN。你自己的GOBINGOPATHGOTOOLCHAIN环境变量只会被读取、绝不会被覆盖。
  • 多安装器场景下 Gateway 按 Homebrew → uv → 配置的 node 包管理器 → go → download 的偏好顺序选择;blogwatcher 只声明了 go 一种,因此直接走 Go 通道。

常用命令与示例输出

技能正文列出的完整命令集如下,均可直接复制运行:

用途命令
添加博客blogwatcher add "My Blog" https://example.com
列出已跟踪博客blogwatcher blogs
扫描更新blogwatcher scan
列出文章blogwatcher articles
标记某篇文章已读blogwatcher read 1
全部标记已读blogwatcher read-all
移除博客blogwatcher remove "My Blog"

典型交互输出(引自 SKILL.md 原文示例):

$ blogwatcher blogs Tracked blogs (1): xkcd URL: https://xkcd.com
$ blogwatcher scan Scanning 1 blog(s)... xkcd Source: RSS | Found: 4 | New: 4 Found 4 new article(s) total!

scan的输出结构可以看出,blogwatcher 会为每个源报告解析到的源类型(如Source: RSS)、本次发现的文章数与新文章数;"New" 计数说明它内部维护了已见文章状态(与read/read-all的已读标记共同构成增量阅读体验)。

发现更多参数时,SKILL.md 给出的通用建议是:对任意子命令追加--help,即用blogwatcher <command> --help探索 flag 与选项。

门控机制:requires.bins 如何让技能"按需可见"

blogwatcher 的 frontmatter 完整结构如下(摘自 skills/blogwatcher/SKILL.md):

--- name: blogwatcher description: "Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI." homepage: https://github.com/Hyaxia/blogwatcher metadata: { "openclaw": { "emoji": "📰", "requires": { "bins": ["blogwatcher"] }, "install": [ { "id": "go", "kind": "go", "module": "github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest", "bins": ["blogwatcher"], "label": "Install blogwatcher (go)", }, ], }, } ---

这段元数据在 OpenClaw 加载时承担三个职责:

  1. requires.bins: ["blogwatcher"]是硬性依赖门控。加载器在加载技能时检查宿主机PATH上是否存在该二进制;未安装则技能整体不可用,不会进入 Agent 提示词。这意味着 blogwatcher 技能是典型的"工具型技能"——它自身不含脚本,只是教会模型如何驱动外部 CLI。
  2. install数组提供补救路径。当门控失败时,macOS Skills UI / Gateway 可依据安装器规格代为安装;安装成功后,新依赖检查能发现已进入PATHblogwatcher二进制,从而让技能变为合格(eligible)。
  3. emojihomepage属于展示性字段,分别用于 macOS Skills UI 的图标与"网站"入口。

从源码结构看,门控与安装声明的汇聚点在 collectSkillBins:它遍历一组技能条目,把metadata.requires.binsmetadata.requires.anyBins与每条install规格的bins字段合并去重(并按序排序),供二进制探测与状态展示复用。blogwatcher 的requires.binsinstall[0].bins都指向同一个blogwatcher,二者合并后即为一个条目,探测命中即门控通过。frontmatter 的解析入口在 src/skills/loading/frontmatter.ts,其嵌套metadata块会被扁平化为 JSON 字符串后按 JSON5 重新解析,这正是 blogwatcher frontmatter 采用 JSON5 对象字面量写法的原因。

会话生命周期:快照、刷新与配置开关

结合 Skills 文档 的运行时说明,blogwatcher 技能的实际生效还受以下机制约束:

  • 会话级快照:OpenClaw 在会话开始时对合格技能做快照,会话内各轮次复用同一份列表。因此安装blogwatcher后,若当前会话的快照仍不含它,新会话才会稳定纳入;技能文件变化或新节点连接触发的刷新则会在下一轮生效。
  • 沙箱注意requires.bins在宿主机检查,但若 Agent 运行在沙箱中,二进制还必须存在于容器内——可通过agents.defaults.sandbox.docker.setupCommand或自定义镜像安装blogwatcher,否则 Agent 看到技能、执行却找不到命令。
  • 配置开关:可以在~/.openclaw/openclaw.jsonskills.entries下按技能名控制:
{ skills: { entries: { blogwatcher: { enabled: false }, // 显式禁用该内置技能 }, }, }

enabled: false会直接让技能不可用;blogwatcher 未声明primaryEnv,因此不需要apiKey/env注入,这是它与gemini等需要凭据技能的重要区别。

  • 提示词成本:每个合格技能在系统提示词中约增加 97 个字符(约 24 token)加name/description长度;blogwatcher 的 description 很短,开销可控。

适用前提与小结

本技能适用于已安装 Node 版 OpenClaw 且能在宿主机(或沙箱)PATH上提供blogwatcher二进制的任何操作系统环境;依赖 Go 1.21+ 仅在使用 OpenClaw 自动安装通道时才是前提。整体来看,skills/blogwatcher/SKILL.md 是一份紧凑的"CLI 驱动型技能"范本:frontmatter 用requires.bins+ Go 安装器规格解决依赖,正文用 7 条命令 + 2 段示例输出覆盖订阅监控全生命周期;而门控、安装器偏好与快照刷新的底层行为,则由 src/skills 目录下的发现(discovery)与加载(loading)模块保证,读者可沿 collectSkillBins 与 Skills 文档 继续深入。

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询