Hermes Agent 3 月 12 日对外开放的时候,发布里带着七十多个内置技能,分在十五个以上的类别下。四周之后,一个社区技能集市已经在 agentskills.io 上线,又多了几百个。这篇文章讲的是这件事是怎么发生的——以及,就算你这辈子不打算写一个技能,为什么 Hermes 的技能架构也值得你了解一下。
一个技能到底是什么
在大多数 AI agent 框架里,"工具"就是开发者在 import 的时候注册进 agent 的一个 Python 函数。你给函数加个装饰器,写一段 docstring,把它列进某个 tools 数组里。Agent 需要它的时候,框架会把它的描述注入 prompt,再去解析模型的工具调用输出。
Hermes 里的技能不是这回事。它是一个声明式的包:一份 manifest(skill.yaml)、一组可执行脚本或 Python 入口、一份前置条件的说明,以及一条激活策略。Hermes 启动时会遍历技能目录、读取每一份 manifest,然后根据前置条件是否在这台机器上真的齐备,来决定这一次会话里哪些技能是可用的——环境变量、PATH 里的二进制、配置文件里的条目、平台能力等等。
一个需要 ffmpeg 的技能,在没装 ffmpeg 的机器上不会被告知给 agent。一个需要 Telegram bot token 的技能,只会在连上 Telegram 的会话里激活。Agent 的 prompt 里永远只带着你此刻真正能用的那些技能。
听起来像个小细节,但它正是一个 agent 能在第一天就背着七十个技能出门、而不把 prompt 撑爆的根本原因。
Skills Hub 做了什么
从 v0.2.0 起,Hermes 里就自带了一个叫 Skills Hub 的东西——本地一个索引,记录这套安装里所有可用的技能,带着元数据、来源信息,以及一层条件激活逻辑。你可以用 hermes skills list 看装了什么,用 hermes skills enable <name> 或 hermes skills disable <name> 开关某个技能,用 hermes skills info <name> 看它的 manifest、来源和具体的前置条件。
Hub 同时也是社区技能的接入点。一位技能作者发布一份 manifest 加源码包,Hermes 用户一条命令就能装上;Hub 对它做前置条件校验和激活规则判断,跟对待内置技能一模一样。"官方"和"社区"技能之间没有特殊通道——它们都只是技能而已。
上线四周后,这个 Hub 长出了一张对外的脸:agentskills.io。这是一个社区贡献技能的网页目录,带搜索、分类、热度指标和一套标准化的安装命令。你可以把它想成 agent 能力的 npm 或 pip,只不过范围更窄:每个技能只做一件事,并附带一份告诉 Hermes 如何安全使用它的 manifest。
生态为什么长得这么快
四周从零到几百个社区技能,时间是不长的。架构上有几件事让这成为可能。
Manifest 就是接口。 技能作者只需要把 manifest 写对。前置条件、描述、输入 schema、激活条件——都写在 skill.yaml 里。实现那一层可以是 Python、shell 脚本、可执行二进制,只要 manifest 指得到的都行。贡献者不用专门去学一套 Hermes 专有的 SDK 才能写一个有用的技能。他们要做的,只是在一份 YAML 文件里描述这个工具做什么——而那份 YAML 的格式,内置技能早就在用了。
前置条件是写进结构里的,不是光写在文档里。 一个技能如果需要 ffmpeg,manifest 里就得这么写,Hermes 会替你检查。你不会装上一个因为缺依赖而在运行时悄悄失败的坏技能——Hub 会告诉你缺什么,并拒绝激活。这意味着作者敢去假设,用户也敢去信任。
激活是有条件的。 一个技能可以声明自己只在 Telegram 里激活、只在某个环境变量被设置时激活、只在某个文件存在时激活、只在某些工作目录里激活。Agent 看到的 prompt 是按当下情境定制的。你可以装一百个技能,在某一次会话里 agent 都不会看到其中的九十个——prompt 也就不会肿起来。
默认对沙箱友好。 技能执行代码时走的是 Hermes 本来就有的那几层沙箱——v0.2.0 上线就有的 git worktree 隔离和文件系统检查点体系。一个发疯的社区技能没法真的毁掉你的代码或文件,因为沙箱是烤进 agent 里的,不是烤进某个技能里的。这大幅拉低了装一个新东西的信任成本。
一个社区技能大致长什么样
头四周的社区技能大致能分成几种有用的模式:
- •已有 CLI 工具的包装。 有人拿
ffmpeg、pandoc或imagemagick,写一个薄薄的技能把常用操作暴露出来——剪视频、转文档、缩图。这类技能写起来便宜,立刻就能用。 - •和个人服务的集成。 和用户自己的 Notion、Obsidian vault、Home Assistant、RSS 阅读器、Pocket 账号或个人记账 app 对话的技能。这些大多不到 200 行 Python 加一份 manifest。
- •专门给某类工作流的小帮手。 给研究者的论文阅读技能、给工程主管的 git log 总结技能、给家里做饭的人用的菜单生成器、给桌游车队用的地下城主助手。
- •针对特定模型的小垫片。 把服务商特有的能力(prompt caching 头、推理预算、fine-tuning 钩子)包装成正式的 agent 工具的技能,这样你就不用再自己写客户端代码。
单独看,没有哪一个是杀手级特性。合在一起,它们就是 Hermes 从"Nous Research 造的一个东西"变成"一个社区"的那个分水岭。
一个有意思的副产品
agentskills.io 越过 100 个社区技能那天,这个项目身上有个很微妙的东西变了。你没法再通过列特性清单来说明 Hermes Agent 是什么,因为特性集已经没有边界。你能描述的是它的形状:一个唯一的 agent,能跟你喜欢的任何聊天平台对话,按需拉进技能,全部跑在一套统一的安全模型之下。
这已经不是一份特性清单了,这是一个平台。也正因为如此,技能生态比它里面任何一个单独的能力都更重要。