我从 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-skill 的 SKILL.md 中没有 YAML frontmatter。Hermes 的安装器在找不到 name: 字段时,会退而从 URL 路径推导名称 —— 但 --name litprog-skill 标志被忽略了,因为文件根本没有 frontmatter 可以覆盖。
每次安装都产生一个叫 main 的技能。卸载再装,结果一样。根本原因是 --name 只在源文件有 frontmatter 且包含 name: 字段时才会生效。
在作者添加正确的 frontmatter 之前,这个技能无法通过 CLI 以正确的名称安装。
第四阶段:缺失依赖 —— 到底坏了什么
安装完毕后,我对每个技能做了三个维度的审计:磁盘文件是否存在、依赖是否可用、平台是否兼容。
hermes-dojo —— 缺失所有脚本
技能引用了 scripts/ 下的 7 个 Python 文件(monitor.py、reporter.py、tracker.py 等),但 hermes skills install 只复制 SKILL.md。这些脚本在源仓库中有,但根本没有被下载。
修复:手动从 GitHub curl 全部 7 个脚本,并创建 data/ 目录。
spotify —— 缺失一切
四个缺失组件:
- spotipy 未安装 ——
ModuleNotFoundError - Hermes venv 中没有
pip—— 改用uv pip install - 没有 OAuth token 缓存 —— 需要首次运行授权
- 没有凭证 ——
.env中没有SPOTIFY_CLIENT_ID/SPOTIFY_CLIENT_SECRET
另外:这个技能是为树莓派(Linux)设计的,跑在 macOS 上。Python 逻辑跨平台可用,但设备设置流程不同。
incident-commander —— 全是 Linux 命令
技能硬编码了 top -bn1、free -h、systemctl、journalctl、/proc/meminfo、strace 等命令 —— 没有一条在 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" 问题,现在你知道为什么了。