tech官小西

我从 Awesome 列表中安装了 10 个 Hermes Agent 技能(并修好了每一个)

最近我掉进了 awesome-hermes-agent 的兔子洞 —— 一个拥有 2,197 stars 的 Hermes Agent 生态资源精选列表 —— 然后决定把所有能找到 SKILL.md 文件的东西全部装上。

接下来是 90 分钟的调试过程:安全扫描的虚假警报、一个把自己硬生生叫成 "main" 的技能、缺失的 Python 脚本、根本不存在的 pip 二进制文件,以及一个为树莓派设计却跑在我 MacBook 上的技能。

以下是完整记录。

目标

扫描 awesome 列表中的每一个仓库,找出可安装的 Hermes 技能,批量安装,然后确认一切正常运转。

第一阶段:扫描 —— 到底哪些能装?

Awesome 列表是一个精选资源目录,不是软件包。0xNyk/awesome-hermes-agent 仓库本身只有一个 README.md —— 内部没有任何可安装的技能。我需要爬取每个链接的仓库,检查是否存在标准的 Hermes SKILL.md 文件。

扫描结果:7 个仓库中找到了 11 个可安装技能:

技能 仓库 结构
hermes-dojo Yonkoo11/hermes-dojo 根目录 SKILL.md
litprog-skill tlehman/litprog-skill 根目录 SKILL.md
spotify Alexeyisme/hermes-spotify-skill 根目录 SKILL.md
prism-3way/discover/full/reflect/scan Cranot/super-hermes skills/ 子目录
skill-factory Romanescu11/hermes-skill-factory skills/ 子目录
life-os Lethe044/hermes-life-os skills/ 子目录
incident-commander Lethe044/hermes-incident-commander skills/ 子目录

第二阶段:批量安装 —— 安全检查 vs. 现实

Hermes 内建了一个安全扫描器,会在安装前静态分析每个 SKILL.md。社区技能几乎百分之百触发它 —— 而且几乎全都是误报。

spotify 技能被判定为 DANGEROUS,带有 10 个 CRITICAL exfiltration 发现。它的罪名是:SKILL.md 中包含读取环境变量的 Python 代码片段:

client_id = os.environ.get("SPOTIFY_CLIENT_ID", "").strip()

这正是安全读取 API 凭证的标准做法。扫描器看到 os.environ.get 就慌了。

hermes-dojo 技能因为 frontmatter 中包含 allowed-tools: Bash(python3:*) 被标记为 HIGH privilege_escalation。但这其实是 Hermes 技能声明所需工具的标准元数据。

10 个技能的所有安全发现,全部是误报。解决方案:通过非交互式的 printf '\ny\n'--force 管道输入。

printf '\ny\n' | hermes skills install \
  "https://raw.githubusercontent.com/{owner}/{repo}/main/skills/{name}/SKILL.md" \
  --name {name} --force

第三阶段:"main" 问题

tlehman/litprog-skillSKILL.md 中没有 YAML frontmatter。Hermes 的安装器在找不到 name: 字段时,会退而从 URL 路径推导名称 —— 但 --name litprog-skill 标志被忽略了,因为文件根本没有 frontmatter 可以覆盖。

每次安装都产生一个叫 main 的技能。卸载再装,结果一样。根本原因是 --name 只在源文件有 frontmatter 且包含 name: 字段时才会生效。

在作者添加正确的 frontmatter 之前,这个技能无法通过 CLI 以正确的名称安装。

第四阶段:缺失依赖 —— 到底坏了什么

安装完毕后,我对每个技能做了三个维度的审计:磁盘文件是否存在、依赖是否可用、平台是否兼容。

hermes-dojo —— 缺失所有脚本

技能引用了 scripts/ 下的 7 个 Python 文件(monitor.pyreporter.pytracker.py 等),但 hermes skills install 只复制 SKILL.md。这些脚本在源仓库中有,但根本没有被下载。

修复:手动从 GitHub curl 全部 7 个脚本,并创建 data/ 目录。

spotify —— 缺失一切

四个缺失组件:

  1. spotipy 未安装 —— ModuleNotFoundError
  2. Hermes venv 中没有 pip —— 改用 uv pip install
  3. 没有 OAuth token 缓存 —— 需要首次运行授权
  4. 没有凭证 —— .env 中没有 SPOTIFY_CLIENT_ID / SPOTIFY_CLIENT_SECRET

另外:这个技能是为树莓派(Linux)设计的,跑在 macOS 上。Python 逻辑跨平台可用,但设备设置流程不同。

incident-commander —— 全是 Linux 命令

技能硬编码了 top -bn1free -hsystemctljournalctl/proc/meminfostrace 等命令 —— 没有一条在 macOS 上存在。

修复:给 SKILL.md 打补丁,加入 OS 检测(uname -s)以及 Linux 和 macOS(Darwin)两套命令对照。macOS 的等价命令:

Linux macOS
top -bn1 top -l1 -n0
free -h vm_stat + memory_pressure
systemctl launchctl
journalctl log show --predicate
/proc/meminfo sysctl vm.swapusage
strace sample

第五阶段:最终状态

10 个技能,全部验证可用:

  • 6 个纯提示词技能(prism-3way/discover/full/reflect/scan、life-os)—— 零依赖,开箱即用
  • hermes-dojo —— 7 个脚本已下载,现在可以 /dojo analyze
  • spotify —— spotipy 已安装,auth.py 准备好做 OAuth 配置
  • incident-commander —— macOS 命令已打补丁,incidents 目录已创建
  • skill-factory —— 已从 "Skill Factory" 重命名为 "skill-factory"

总结

**关于生态:**awesome-hermes-agent 列表是社区创造力的金矿 —— prism 的结构化分析透镜、hermes-dojo 的自我进化循环、incident-commander 的自动化 SRE —— 但质量和安装就绪度差异极大。大约一半技能是纯提示词(插上就用),另一半需要搭脚手架。

**关于安全扫描器:**它用的是静态正则,而不是语义分析。它无法区分"这个技能包含读取环境变量的使用说明"和"这个技能会窃取你的密钥"。对社区安装来说,--force 标志是必需品。

关于安装器:hermes skills install 只复制 SKILL.md。如果技能有配套的脚本、模板或参考文件,都需要单独获取。如果源文件缺少 YAML frontmatter,--name 标志会被静默忽略。这些都是值得打磨的棱角。

**关于平台可移植性:**很多社区技能是 Linux 优先的。在 macOS 上跑的时候,准备好给命令打补丁。好消息是:Hermes 技能就是 Markdown 文件 —— 编辑完立刻生效,无需重启或重装。

如果你想在自己的环境上复现,完整的批量安装套路就在这里。如果你也遇到那个 "main" 问题,现在你知道为什么了。