AI 编程教程中文版
从原理到实战

06 · Skills 系统

理解 Hermes skill、prompt、tool、memory 的边界,以及本地正本、渐进加载、secure setup、Hub 安装和 agent-managed skills。

Hermes 的 skill(技能)可复用能力包——一个 markdown 文档加上可选的脚本、模板、参考资料、资源文件。核心不是保存提示词,而是把"反复执行、步骤稳定、需要材料和验证"的工作流变成 agent 可以按需调用的能力包。

官方资料:Skills SystemCuratorSkills CatalogOptional Skills CatalogCreating Skillsagentskills.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)?脚本做什么?
  • 是否要求密钥外部账号?为什么需要?
  • 是否需要 terminalbrowserfilemessaging 等高权限 toolset?
  • 是否会修改本地文件或发出网络请求
  • 是否来自可信来源?是否能更新和审计?

不理解的 skill 不用于高权限任务——一条普通命令在错误上下文里跑出来的破坏,跟一个高权限 skill 误触发的破坏不是一个量级。

官方资料

下一步

本页目录