06 · Skills 系统
理解 Hermes skill、prompt、tool、memory 的边界,以及本地正本、渐进加载、secure setup、Hub 安装和 agent-managed skills。
Hermes 的 skill(技能)是可复用能力包——一个 markdown 文档加上可选的脚本、模板、参考资料、资源文件。核心不是保存提示词,而是把"反复执行、步骤稳定、需要材料和验证"的工作流变成 agent 可以按需调用的能力包。
官方资料:Skills System、Curator、Skills Catalog、Optional Skills Catalog、Creating Skills、agentskills.io。
先给结论:prompt 解决一次性指令,**tool(工具)**解决外部动作,**memory(记忆)**解决长期事实,**skill(技能)**解决可复用流程。不要把一句 prompt 包成 skill,也不要把流程塞进 memory——四件事各管不同尺度。
Skill 解决什么
一次性任务不需要 skill。反复出现、步骤稳定、需要材料和验证的任务,才值得沉淀成 skill。
适合做 skill:
- 跨项目重复出现。
- 有明确触发条件。
- 有稳定步骤。
- 有验证方法。
- 需要模板、脚本、参考资料或外部 API。
- 之前踩过坑,需要把正确路径固定下来。
不适合做 skill:
- 一次性任务。
- 还没跑通过的流程。
- 只有一句提示词。
- 强依赖当前项目私有上下文。
- 来源不可信但要求高权限。
和其它能力的区别
Prompt
一次性指令,适合当前任务。
Tool
外部动作能力,例如读文件、运行命令、搜索网页。
Memory
长期事实和偏好,让新 session 不从零开始。
Skill
可复用流程,包含触发条件、步骤、材料和验收。
判断口诀:
会变的项目规则 -> 项目文档
长期稳定事实 -> memory
外部动作能力 -> tool
重复工作流程 -> skill
本次具体目标 -> prompt本地正本
本地 skill 正本在:
~/.hermes/skills/SKILL.md 是入口,大材料应该放到 references/、templates/、scripts/ 或 assets/,不要全部塞进主文档。
同名 skill 同时存在时,本地版本优先。外部目录可以扫描,Hub 可以安装,但真正可写、可维护、可治理的正本是 ~/.hermes/skills/。
渐进加载(progressive disclosure)
Hermes skills 使用 progressive disclosure(渐进加载)——只在需要时加载更详细的层次:
flowchart TB
L1["第 1 层:skill 元信息<br/>名称 / 描述 / category"]
L2["第 2 层:SKILL.md<br/>触发条件 / 步骤骨架 / 验收"]
L3["第 3 层:references / templates / scripts / assets<br/>详细参考资料和脚本"]
L1 -->|"agent 判断要用<br/>这个 skill"| L2
L2 -->|"需要具体材料<br/>或要执行脚本"| L3
这样做是为了节省上下文。一个 skill 可以包含很多材料,但平时只把元信息保留在视野里——不会把所有 reference、template、script 都塞进每次的 prompt。否则装 50 个 skill = system prompt 立刻爆炸。
新手写 skill 时,要让 SKILL.md 足够短:说明何时使用、怎么开始、需要什么工具、有哪些坑、怎么验收。长材料(详细案例、完整模板、长脚本)放子目录里 agent 按需调用——这是渐进加载的设计意图。
Secure setup 与密钥
Skill 可以声明 required environment variables。Hermes 会在本地 CLI 里安全询问缺失值,消息平台不会在聊天中索要 secret。
这很好,但也意味着一旦配置成功,skill 的脚本和 sandbox 可能拿到对应 env var。安装外部 skill 前必须检查:
- 它声明了哪些变量。
- 这些变量会不会进入 terminal 或 execute_code。
- 脚本是否会打印或外传变量。
- 是否真的需要这个权限。
密钥需求说不清的 skill,不应该安装。
Agent-managed skills 与 Curator
Hermes 允许 agent 自己创建、修改或删除本地 skill——这是 self-improving(自我改进)的核心入口之一,也是最容易失控的入口之一。配套机制是 Curator(策展器):后台跑的轻量服务,负责按使用率、新鲜度、LLM 复审来管理 agent 自建 skill:
- Usage tracking(使用率追踪):哪些 skill 真的被用过,哪些只是写出来后就再没碰过。
- Staleness(新鲜度):skill 内容是否长期没更新、引用的工具/命令是否还存在。
- Archival(归档):长期不用或过期的 skill 自动归档,不再加载到上下文。
- LLM-driven review(LLM 复审):周期性用模型审查 skill 质量、是否冗余、是否需要合并。
实践建议:
- 只让跑过的成功流程沉淀——失败流程不能进 skill 库,否则下次还在错的方向上反复尝试。
- 小修用 patch(局部补丁),不要整份重写——重写丢失上下文连续性。
- Skill 里不要硬编码密钥——Curator 不会替你脱敏,密钥进了 skill 就长期在 prompt 里裸奔。
- 删除或重命名前确认依赖——其他 skill 或自动化任务可能还在引用。
- 定期信任 Curator 的清理建议——但每次大批量归档前先人工抽查,避免误归。
自我改进不是让 agent 随便写文件,而是把验证过的流程变成可维护、可审计的长期资产——Curator 是这个过程的守门员。
安装外部 skill 的安全审查
外部 skill(来自 agentskills.io、Skills Hub 或 GitHub)安装前至少做四步:
search(搜) -> inspect(审) -> small dry run(试) -> keep or uninstall(留或卸)hermes skills inspect 是关键命令——它会告诉你这个 skill 声明了哪些必需 env vars、要求哪些 toolset、会读写哪些文件。
检查重点(任一不清楚 = 不安装):
SKILL.md有没有清楚的触发条件和验收?- 是否包含脚本(bash / python / node)?脚本做什么?
- 是否要求密钥或外部账号?为什么需要?
- 是否需要
terminal、browser、file、messaging等高权限 toolset? - 是否会修改本地文件或发出网络请求?
- 是否来自可信来源?是否能更新和审计?
不理解的 skill 不用于高权限任务——一条普通命令在错误上下文里跑出来的破坏,跟一个高权限 skill 误触发的破坏不是一个量级。
官方资料
- Skills System
- Curator(agent 自建 skill 的后台维护)
- Skills Catalog(内置 skill 完整列表)
- Optional Skills Catalog(可选 skill 列表)
- Creating Skills(开发者写 skill 的格式与规范)
- agentskills.io(社区 skill 索引)