第19篇:技能系统——让 AI 越用越聪明
Hermes Agent 官方教程第19篇:让 AI 越用越聪明
第19篇:技能系统——让 AI 越用越聪明
想象一下,你有一个万能助理,但他每次干活前都要你从头教一遍。技能系统就是给这个助理准备的一本“操作手册”——平时不占地方,需要时随手翻到那一页,他立刻知道该怎么干。
Hermes 的技能(Skills)就是这样的按需知识文档。它们遵循“渐进式披露”原则,平时只占用极少的 token,用到时才加载完整内容。所有技能默认存放在 ~/.hermes/skills/ 目录下,你也可以添加外部技能目录。
第1步:从零开始(可选)
默认情况下,每个 profile 都会预装一套基础技能。如果你想要一个“纯净版”,有三种方式:
- 安装时跳过:安装器没有
--no-skills参数,而是在 Blank Slate 安装流程里询问是否预装基础技能,选择“否”即可;非交互式安装会默认预装,之后可以再运行hermes skills opt-out - 创建 profile 时跳过:
hermes profile create research --no-skills - 对已安装的 profile 运行时切换:
hermes skills opt-out # 停止未来自动安装,不删现有文件
hermes skills opt-out --remove # 同时删除未修改过的预装技能(需确认)
hermes skills opt-in --sync # 撤销,重新安装
安全提示:
opt-out只阻止未来的安装,绝不删除已有文件。只有--remove且技能未被你修改过时才会删除。
第2步:在桌面端浏览和安装
打开 Capabilities → Skills,在 Installed 和 Browse 之间切换。搜索框固定在顶部,标签切换和操作按钮共用一行。Installed 读取的是当前 profile 真实的技能和启用状态,而不是从公开目录推断出来的;Browse 是原生的目录界面,不是内嵌网页。
桌面端和公开的 Skills Hub 读取同一份 CDN 快照:/docs/api/skills.json。浏览时不会实时爬取 GitHub 或上游市场,安装时仍会通过技能来源的安装器获取。
网站上的每张可安装卡片都有 Install in Hermes 按钮,点击会用 URL 编码、带来源前缀的技能目标打开桌面端,例如可选技能用 official/...,ClawHub 用 clawhub/...。注意:内置(bundled)技能用的是明确的仓库路径,而不是含糊的裸名字,卡片上的 CLI 命令也是同一个目标。确认对话框会分别显示 Source 和 Install to,安装沿用 Skills Hub 的完整流程(含安全扫描),变更会通过下一条消息告知当前打开的会话。
hermes://skill/install?identifier=official%2Fsecurity%2F1password
点开确认框后,你会依次看到 Install “skill-name”?、Installing…、Installed 和一条完成通知;如果出错,错误会留在对话框里,方便你直接重试。取消则不做任何改动。还有两点要记住:
- 确认框开着的时候,如果你切换了 profile 或连接,需要重新点一次链接,让安装目标跟着新目的地走——链接本身不能绕过安全扫描,也不能偷偷换 profile。
skill/install这条路由需要较新的桌面端版本。如果 App 缺失或认不出链接,展开卡片、复制它的 CLI 安装命令即可。
第3步:直接使用技能
每个已安装的技能都会自动变成一个斜杠命令,直接用就行:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/plan design a rollout for migrating our auth provider
只输入技能名(如 /excalidraw)会加载技能,然后让 AI 询问你需要什么。
第4步:叠加多个技能
一条命令里可以串联最多 5 个技能,后面的文字就是你的指令:
/github-pr-workflow /test-driven-development fix issue #123 and open a PR
解析会在第一个非技能词处停止,所以像 ~/.hermes/cache/scratch/scan.pdf 这样的路径参数不会被误吞。
第5步:用 /learn 快速创建技能
不想手写 SKILL.md?直接用 /learn 指向任何你熟悉的资料(本地 SDK、网页、文档),AI 会自己收集素材并按照官方标准生成技能,描述不超过 60 字符,格式规范。
如果资料是一整本书或一大堆文档,AI 不会硬塞进一个文件,而是生成一个“知识库型技能”:精简的 SKILL.md 加上 references/ 下按章节拆分的参考文件,用到哪块才加载哪块。同一个主题再跑一次 /learn,新内容会合并进已有技能,不会重复创建。
第6步:技能重名怎么办
技能多了,难免撞名字。Hermes 的规则是“目录优先级”说话,从高到低依次是:
project → local (~/.hermes/skills/) → skills.create_dir → external_dirs
也就是说,同一个技能名出现在多个目录时,优先级高的目录在所有地方都赢——技能索引、skills_list、hermes skills list、skill_view、斜杠命令、-s 预加载和 cron 都遵循这一套。被盖住的那份会被隐藏,并在日志里记为 shadowed。
其中 项目技能(project skills)是优先级最高的一档。比如仓库里有个叫 deploy 的项目技能,它就会覆盖同名的 profile 技能或内置技能——这正是它存在的意义:仓库自带的技能在自己的地盘上说了算,又不会动你的全局 profile。项目技能在 agent 的技能索引里会带上 [project] 标签,来源一目了然。
如果重名发生在同一个目录内部,Hermes 不会替你猜,而是把两个技能都按各自的相对路径列出来(比如 a/one 和 b/two)。这时直接加载裸名字会报错:
Ambiguous skill name dup-demo: use one of a/one, b/two
hermes -s dup-demo 和 cron 任务也会报同样的错。另外,如果两份其实是同一个技能(软链接视图或字节级完全相同的副本),会解析到路径最浅的那一份。插件技能用的是自己的 plugin:skill 命名,永远不会和这些撞车。
第7步:会话进行中新增技能会怎样
agent 挑选技能用的那份列表,是会话系统提示词的一部分,而系统提示词是固定的——这样 provider 的 prompt cache 才能一直生效。所以当你在会话开着的时候装、建或删了技能(从 Skills Hub、另一个终端里的 hermes skills install、插件、curator,或者 agent 自己动手),你的下一条消息会附带一条简短提示,列出新增技能的名字和描述,以及被移除的技能。这条提示每次变更只发一次;系统提示词本身要等到下一次压缩(compaction)才会更新。这个过程不需要 /reload-skills,那个命令仍然只负责刷新 /skill-name 斜杠命令。
第8步:GitHub 速率限制
Skills Hub 的操作走 GitHub API,未认证用户每小时只有 60 次请求。一次安装大约消耗两次 API 调用(仓库本身和它的文件树);技能文件本身是从 raw.githubusercontent.com 下载的,不计入这个限制。如果你在安装或搜索时遇到速率限制报错,在 .env 文件里设置 GITHUB_TOKEN,可以把上限提到每小时 5,000 次。出错信息里会带上可操作的提示。
总结
技能系统让 Hermes 像一本不断增厚的“武功秘籍”——平时轻装上阵,用时精准出击。你可以随时添加、修改或删除技能,也可以从零开始打造专属技能库。善用 /learn 和技能叠加,你的 AI 会越用越顺手。
下一篇预告:第20篇:技能包(Skill Bundles)——把常用技能打包成一键命令
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/skills