ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Hermes Agent 技能系统:用 SKILL.md 与 skill_manage 让 AI 学会自我进化

Hermes Agent 技能系统:用 SKILL.md 与 skill_manage 让 AI 学会自我进化 1. 为什么你的 Agent 总是「从零开始」技能系统要解决的真实问题如果你用过一段时间的 Hermes Agent大概率会遇到这种场景上周刚教会它一套完整的 K8s 部署流程这周开新会话它又像失忆一样从头问你「集群地址是什么」「镜像仓库在哪」。记忆系统MEMORY.md / USER.md能记住「你是谁、你偏好什么」但它记不住「这类任务具体怎么做」。这就是技能系统要补的那块拼图。Hermes Agent 技能系统是一套把「成功经验」沉淀成可复用程序性记忆的机制核心由三部分组成用SKILL.md定义单个技能、用skill_manage工具管理技能生命周期、用渐进式披露控制上下文开销。它适合谁适合那些希望 Agent 在完成复杂任务后能自己把流程写下来、下次直接复用的开发者而不是每次都要重新贴一遍操作手册。我试过最直观的对比没有技能系统时让 Agent 部署一个应用到 K8s它要花 5 到 8 轮对话确认步骤有了deploy-k8s技能后一句/deploy-k8s production就能触发完整流程。差别不在于模型变聪明了而在于它终于有了「程序性记忆」——把「如何做某类任务」的具体步骤固化下来。这篇文章会带你走完一条完整链路先理解SKILL.md的格式和目录结构再配置skill_manage的六个操作然后实际新增、调用、迭代一个技能最后用验证步骤确认它真的生效。全程给可复制的模板和配置片段你跟着敲就能跑通。需要先说明一个概念区分否则后面容易混。记忆是广泛、声明式的告诉 Agent「你是谁、用户偏好什么」技能是狭窄、可执行的捕获「如何做某类任务」的具体步骤。前者是名词性知识后者是动词性知识。技能系统本质上是给 Agent 装了一套「操作手册库」而且这套手册还能自己写、自己改。2. TaoToken 前置给 Hermes Agent 接上稳定的模型后端在动手写技能之前得先让 Hermes Agent 有一个能稳定调用的模型后端。技能系统本身不依赖特定模型但skill_manage的 create / patch 这些操作需要模型来生成内容所以后端配置是前置条件。这里我用 TaoToken 来做接入它的 API 地址是https://taotoken.net/api兼容 OpenAI 风格的调用方式配置起来比较直接。先说清楚 TaoToken 在这里扮演什么角色它是一个模型 API 聚合入口你拿到 Key 之后Hermes Agent 通过它来调用底层模型。它不替代编辑器也不替代 Hermes Agent 本身只是把「模型调用」这一层接稳。对于技能系统来说这意味着skill_manage在生成 SKILL.md 内容时有一个稳定的模型响应来源。第一步是拿 Key。访问https://taotoken.net/api-keys这是 API Keys 管理页登录后创建一个新的 Key。建议按用途命名比如hermes-skills-dev方便后面区分。创建后立刻复制页面刷新后就看不到了。第二步是确认你要用的模型 ID。TaoToken 支持多种模型具体可用列表在https://taotoken.net/models可以查到。技能系统对模型的要求不高但如果你希望skill_manage生成的 SKILL.md 结构更规范建议选一个指令遵循能力强的模型。记下你选的 Model ID后面配置要用。第三步是理解 Base URL 的写法。TaoToken 的 API 根地址是https://taotoken.net/api在 Hermes Agent 的配置里通常需要填到/v1这一层也就是https://taotoken.net/api/v1。这个细节很容易踩坑填错了会直接报 404 或者连接失败。这里有个关键点技能系统的所有操作都是通过 Hermes Agent 的工具调用完成的而工具调用依赖模型后端。所以后端不通skill_manage就不会工作。先把这一层打通再往下走技能配置顺序不能反。如果你还没装 Hermes Agent可以先看官方文档的安装部分或者参考系列第 01 篇的入门指南。安装完成后用hermes --version确认版本再用hermes config查看当前配置。接下来我们要把 TaoToken 的 Base URL、Key、Model ID 这三件套写进配置里。3. 可复制配置SKILL.md 模板与 skill_manage 配置片段这一节是全文的核心操作区。我会先给一个完整的SKILL.md模板再给skill_manage的配置片段最后说明目录结构。你直接复制改改就能用。先看SKILL.md的完整模板。技能采用 YAML Frontmatter 加 Markdown 正文的格式和 agentskills.io 兼容--- name: deploy-k8s description: 在 Kubernetes 集群上部署应用的标准流程 version: 1.0.0 platforms: [linux] metadata: hermes: tags: [kubernetes, devops, deployment] category: devops --- # K8s 部署技能 ## 何时使用 需要将应用部署到 Kubernetes 集群时触发。 ## 操作步骤 1. 检查集群连接 bash kubectl cluster-info构建并推送 Docker 镜像docker build -t myapp:latest . docker push myapp:latest应用 Kubernetes 配置kubectl apply -f k8s/验证部署kubectl get pods -l appmyapp坑点镜像必须推送到集群能访问的仓库命名空间要提前创建配置中的镜像标签要正确验证所有 Pod 处于 Running 状态即为成功。必需字段只有两个name技能名称≤64 字符小写和 description简短描述≤1024 字符。可选字段包括 version、platforms限制操作系统值可以是 [macos]、[linux]、[windows]、metadata.hermes.tags 和 metadata.hermes.category。platforms 这个字段很实用设置后技能会在不兼容平台的系统提示、skills_list() 和斜杠命令中自动隐藏。 接下来是 skill_manage 的配置片段。Hermes Agent 通过这个工具管理技能支持六个操作。先看 create python skill_manage( actioncreate, namemy-skill, content--- name: my-skill description: 我的自定义技能 --- # 技能标题 ## 何时使用 ... ## 操作步骤 1. ... , categorydevops )patch 是日常更新首选因为它只把更改的文本放进工具调用比 edit 省 tokenskill_manage( actionpatch, namedeploy-k8s, old_string镜像标签要正确, new_string镜像标签必须与 k8s 配置中的标签完全一致 )edit 用于重大结构重写会全量替换内容skill_manage( actionedit, namedeploy-k8s, content完整的新 SKILL.md 内容... )delete 删除技能write_file 添加支持文件remove_file 删除支持文件skill_manage(actiondelete, nameold-skill) skill_manage( actionwrite_file, namedeploy-k8s, file_pathreferences/常见错误.md, file_content# Kubernetes 常见错误 ## ImagePullBackOff ... ) skill_manage( actionremove_file, namedeploy-k8s, file_pathreferences/过时文档.md )目录结构也要清楚。技能的唯一真实数据源在~/.hermes/skills/~/.hermes/skills/ ├── mlops/ │ ├── axolotl/ │ │ ├── SKILL.md │ │ ├── references/ │ │ ├── templates/ │ │ └── assets/ │ └── vllm/ │ └── SKILL.md ├── devops/ │ └── deploy-k8s/ │ ├── SKILL.md │ └── references/ ├── .hub/ │ ├── lock.json │ └── quarantine/ └── .bundled_manifestSKILL.md是必需的主指令文件references/放附加文档templates/放输出格式assets/放补充文件。.hub/是 Skills Hub 的状态目录.bundled_manifest跟踪内置捆绑技能。现在把 TaoToken 的三件套写进 Hermes Agent 配置。配置文件通常在~/.hermes/config.toml或通过hermes config交互式设置。关键三项[model] base_url https://taotoken.net/api/v1 api_key 你的_TaoToken_Key model_id 你选的模型ID如果你用的是环境变量方式对应设置HERMES_BASE_URL、HERMES_API_KEY、HERMES_MODEL_ID。配置完成后skill_manage的 create 和 patch 操作就能正常调用模型生成内容了。4. 验证请求新增、调用、迭代一个技能的完整过程配置写完了现在实际跑一遍。我会用一个真实的小技能来演示gif-search一个搜索 GIF 的技能。整个过程分三步新增、调用、迭代每步都有预期输出。第一步新增技能。在 Hermes Agent 的对话里让它创建一个技能hermes chat --toolsets skills -q 帮我创建一个技能名字叫 gif-search描述是搜索并返回 GIF 链接操作步骤是先调用搜索接口再筛选结果预期输出Agent 会调用skill_manage(actioncreate, ...)然后返回类似「技能 gif-search 已创建路径 ~/.hermes/skills/gif-search/SKILL.md」。你可以用ls ~/.hermes/skills/gif-search/确认文件存在。第二步调用技能。技能创建后自动可用作斜杠命令/gif-search funny cats预期输出Agent 加载gif-search技能按 SKILL.md 里的步骤执行返回若干 GIF 链接。如果你只想加载技能让 Agent 询问需求直接输入/gif-search不带参数即可。也可以用自然对话方式调用hermes chat --toolsets skills -q 你有哪些技能预期输出返回技能列表格式类似[{name, description, category}, ...]。这就是渐进式披露的 Level 0只加载名称和描述大约消耗 3k tokens。第三步迭代技能。假设你发现gif-search的筛选逻辑不够好想改一处描述。用 patchskill_manage( actionpatch, namegif-search, old_string筛选结果, new_string按相关度排序后取前 5 条结果 )预期输出返回「技能 gif-search 已更新」。再次调用/gif-search funny cats你会看到返回结果变成了 5 条且按相关度排序。这里要重点说渐进式披露的三级加载模式因为它直接决定 token 开销层级调用返回内容约 token 消耗Level 0skills_list()[{name, description, category}, ...]~3k tokensLevel 1skill_view(name)完整内容 元数据不定Level 2skill_view(name, path)特定参考文件不定Agent 只在实际需要时才加载完整技能内容。这意味着你就算装了 50 个技能日常对话也只消耗 Level 0 的约 3k tokens不会因为技能多而爆上下文。这是技能系统相比「把所有操作手册塞进系统提示」的关键优势。验证技能是否真的生效还有一个方法查看~/.hermes/skills/.bundled_manifest和.hub/lock.json确认技能被正确登记。如果技能没出现在skills_list()里先检查SKILL.md的 YAML Frontmatter 是否合法特别是name和description两个必需字段。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth技能系统跑不通八成不是技能本身的问题而是模型后端或配置的问题。这一节对照几个真实报错逐个排查。报错一401 Unauthorized。这是最常见的。原因通常是 TaoToken 的 Key 没填对或者填到了错误的位置。检查~/.hermes/config.toml里的api_key字段确认没有多余空格。如果你用环境变量确认HERMES_API_KEY已 export。还有一种情况是 Key 被删了或过期了去https://taotoken.net/api-keys重新生成一个。报错二local proxy failed。这个报错通常出现在 Base URL 配置错误时。检查你的base_url是不是写成了https://taotoken.net/api而漏了/v1。正确的写法是https://taotoken.net/api/v1。另外确认没有在本地配额外的转发规则Hermes Agent 直连 TaoToken 即可。报错三reading choices 相关错误。这类报错一般是模型返回格式不符合预期导致的。可能原因有两个一是 Model ID 填错了TaoToken 找不到对应模型二是模型本身不支持当前的调用方式。去https://taotoken.net/models确认 Model ID 拼写换一个指令遵循能力更强的模型再试。报错四OAuth 相关错误。如果你在配置里误开了 OAuth 流程但 TaoToken 用的是 API Key 认证就会冲突。检查配置里有没有oauth相关字段有的话删掉改用api_key。Hermes Agent 的技能系统不需要 OAuthAPI Key 就够了。除了后端报错技能系统本身也有几个高频坑SKILL.md的 YAML Frontmatter 格式错误是最隐蔽的。比如name用了大写字母或者description超过 1024 字符都会导致技能加载失败但不报明显错误。建议用hermes skills list确认技能是否被识别。platforms字段设置不当也会让技能「消失」。如果你写了platforms: [macos]但在 Linux 上跑技能会从skills_list()和斜杠命令里自动隐藏。排查时先把这个字段去掉确认技能能出现再加回来。patch 操作报「old_string not found」也很常见。原因是old_string必须和文件里的文本完全一致包括空格和换行。建议先用skill_view(name)把当前内容读出来复制要改的那段再构造 patch。最后如果你是从 Skills Hub 安装的技能安全扫描可能会拦截。Hub 安装的技能会经过数据泄露、提示注入、破坏性命令等检查。信任级别分 builtin、official、trusted、community 四档community 来源的技能发现问题即阻止。用hermes skills audit重新扫描或者hermes skills inspect安装前预览。6. 把技能系统用起来从单技能到技能库技能系统真正的价值不在于单个技能而在于它能积累成一个技能库。当你的 Agent 完成了 5 次以上工具调用的复杂任务、克服错误找到正确路径、或者被你纠正过方法之后它就应该把这次经验写成技能。这是「自我进化」的实际含义不是模型参数变了而是它的操作手册库变厚了。我建议你从一个小技能开始比如把日常最常重复的那套操作写成SKILL.md。跑通 create、调用、patch 这条链路之后再考虑用 Skills Hub 浏览和安装现成技能。hermes skills browse可以看官方优先的技能列表hermes skills search kubernetes按关键词搜hermes skills install openai/skills/k8s安装时带安全扫描。如果你想让 Agent 长期承担编码或 Agent 类任务可以考虑用 Coding Plan 来支撑更高频的模型调用配合技能系统形成「沉淀—复用—迭代」的闭环。技能库越厚Agent 在新会话里的启动成本越低。验证模型调用是否正常可以直接在模型对话里测一下当前配置的模型响应。而技能系统的接入文档和 API Keys 管理分别在接入文档和 API Keys 页面可以找到。把这三件套配好你的 Hermes Agent 就不再是每次从零开始的新手而是一个有操作手册、能自己写手册的老手。
返回列表