技能库少了一半来源:7 个内置技能下线,厂商仓库成了默认可信源

你照着半年前的教程,想让 agent 学会操作 Notion:hermes skills search notion,结果列表里那几个内置技能不见了,只剩下一堆仓库来源的条目。你开始怀疑是自己装坏了,还是教程过期了。答案是后者——Hermes 把 7 个内置可选技能下线了,因为它们想解决的问题已经有更合适的承接方。
这不是“功能被砍”,而是技能来源的一次重新分工。理解它之后,你会少踩两类坑:装不上某个技能,以及装上了却按旧规则在跑。
七个下线技能,以及它们的接班人
被移除的是这几个内置可选技能,理由是官方 vendor MCP、目录插件、内置搜索后端或厂商自己的技能仓库已经覆盖得更好:
| 下线的内置技能 | 现在由什么承接 |
|---|---|
notion |
MCP 目录里的官方 Notion MCP(OAuth,不需要 Portal)+ 托管连接器 + makenotion/skills |
airtable |
官方 Airtable MCP + 托管连接器 + Airtable/skills |
shopify |
托管连接器 + Shopify/Shopify-AI-Toolkit 里厂商维护的 skill |
duckduckgo-search |
内置的 ddgs 搜索后端(web_search 开箱可用,不需要 key) |
searxng-search |
内置的 searxng 后端,用 SEARXNG_URL 指向你自己的实例 |
honcho |
目录插件 honcho,它才是拥有 hermes honcho 命令的那一方 |
mpp-agent |
目录插件 pay / pay-cli(HTTP 402 / x402 / MPP) |
有一个副作用值得知道:AIRTABLE_API_KEY 也从可选环境变量清单里删掉了,因为那个技能是它唯一的消费者。NOTION_API_KEY 留着,因为 Teams 会议流水线的 Notion sink 还在读它。
所以如果你之前用内置技能操作 Airtable,现在要么走 Notion/Airtable 的官方 MCP,要么从厂商仓库装技能。原来的做法并没有消失,只是搬到了维护方能跟着 API 变化走的地方。
tap:技能到底从哪里被“看见”
Hermes 的技能搜索不是只扫本地目录,它会去一组来源里找,这些来源叫 tap。默认 tap 是硬编码在代码里的一批仓库,比如 openai/skills、anthropics/skills、huggingface/skills、NVIDIA/skills,以及这次新加进来的三家厂商仓库:
makenotion/skills(路径skills/)Airtable/skills(路径plugins/airtable/skills/)Shopify/Shopify-AI-Toolkit(路径skills/)
厂商仓库和通用社区仓库的区别不在于“内容更好”,而在于归属清晰:仓库归厂商所有、许可证明确,所以它可以进默认可信列表,而不是每次安装都按社区来源处理。
你能自己加 tap 吗?能,而且这是团队内部分发技能最省事的方式:
hermes skills tap list # 看当前有哪些来源
hermes skills tap add <owner>/<repo>
hermes skills browse --source github
hermes skills inspect notion-cli # 装之前先看内容
hermes skills install notion-cli
注意 hermes skills tap 是“来源”,和 hermes skills trust 不是一回事——后者管的是项目里 ./.hermes/skills 这种仓库内技能是否被信任加载,属于项目级信任门禁。两个命令名字像,作用完全不同。
信任等级:决定“能不能装”的那张表
技能扫描完之后会被归到一个信任等级,安装策略按等级和扫描结论(safe / caution / dangerous)查表决定放行还是拒绝:
| 信任等级 | safe | caution | dangerous |
|---|---|---|---|
| builtin(内置) | 放行 | 放行 | 放行 |
| trusted(厂商/官方仓库) | 放行 | 放行 | 拒绝 |
| community(社区仓库) | 放行 | 拒绝 | 拒绝 |
| agent-created(agent 自己写的) | 放行 | 放行 | 交给 agent 处理 |
这张表解释了两件经常让人困惑的事。第一,为什么同一个技能换个仓库就装不上了——来源决定等级,等级决定 caution 级别的发现是否被拦。第二,为什么厂商仓库值得单独列出来:trusted 允许 caution 通过,community 不允许,差别就在这一格。
trusted 不等于“没风险”。dangerous 级别在任何非内置来源下都会被拒绝,这条线没有例外。
一个只差一行的缓存 bug:信任变了,安装策略没变
技能扫描有缓存,避免每次安装都重扫一遍。缓存键原本由内容哈希、来源和扫描器版本组成——唯独没有信任等级。
后果很具体:你扫过一个技能,之后升级 Hermes(某个仓库刚被加进可信列表,或者刚被移出),安装时用的仍是当年那次扫描记录的信任等级,一直到技能内容发生变化才会重算。也就是说,TRUSTED_REPOS 的改动会被缓存直接绕过。
修复就是把当前信任等级加进缓存键:只有当来源的当前信任等级与缓存记录一致时才复用缓存,否则重扫。改动只有一行,测试覆盖了两个方向——仓库新加入可信列表时重扫为 trusted,仓库被移出时重扫为 community,什么都没变时仍然是缓存命中。
这个修复合并进了 main,但不在 v0.22.7 的 tag 里,要等下一个版本。在那之前,如果你刚改过可信仓库又遇到“策略不对”,hermes skills audit 重扫已安装技能是最直接的绕过办法。
你现在该做的三件事
- 清点:
hermes skills list看看有没有还在用已下线技能的地方,尤其是团队脚本里写死的技能名。 - 换路:Notion / Airtable / Shopify 相关的自动化,改走官方 MCP 或厂商技能仓库;搜索类需求直接用内置的
ddgs/searxng后端,不要再装技能。 - 审计:升级后跑一次
hermes skills audit,确认没有技能在按旧信任等级运行。
技能变少通常不是坏事。少了七个内置实现,换来的是厂商仓库能自己跟进 API 变更、官方 MCP 带 OAuth 而不是让你手抄 API key——维护责任回到了最该承担它的人手里。