HoRain云--Hermes Agent 技能(Skills)

📅 2026/7/16 11:39:48
HoRain云--Hermes Agent 技能(Skills)
如果说记忆系统让 Hermes 记住了你是谁那么技能Skills系统让 Hermes 记住了怎么做事。Skills技能是 Hermes Agent 的程序化记忆。Skills 允许智能体从经验中创建可重用的工作流程并在未来的会话中复用。Skills 系统是 Hermes Agent 的核心差异化特性——它是唯一内置学习循环的智能体能够创建技能、在使用中改进技能并在会话之间保持知识。技能是什么Skills 是一组定义智能体行为的指令和工具它们可以自动化工作流程— 封装常见任务模式跨会话学习— 保存和复用成功的解决方案与社区共享— 发布和安装他人创建的技能自我改进— 在使用中不断完善技能 vs 记忆对比维度技能Skills记忆Memory内容类型操作流程、工作方法环境事实、用户偏好加载时机按需用到时才加载每次会话自动注入文件大小可以很大几百行应保持精简关键事实Token 消耗未加载时零消耗每次会话固定消耗创建者你、Agent 或从 Hub 安装Agent 根据对话自动创建典型示例如何部署到 Kubernetes用户住在上海偏好简洁回复经验法则如果你会把它写进参考文档它就是技能如果你会把它贴在便利贴上它就是记忆。技能目录结构所有技能都存放在~/.hermes/skills/目录——这是唯一的数据源。初次安装时内置技能会从仓库复制到此目录。通过 Hub 安装的技能和 Agent 自动创建的技能也保存在这里。~/.hermes/skills/ ├── mlops/ # 分类目录 │ ├── axolotl/ │ │ ├── SKILL.md # 主指令文件必须 │ │ ├── references/ # 补充文档按需加载 │ │ ├── templates/ # 输出模板 │ │ ├── scripts/ # 辅助脚本 │ │ └── assets/ # 附属资源 │ └── vllm/ │ └── SKILL.md ├── devops/ │ └── deploy-k8s/ # Agent 自动创建的技能 │ ├── SKILL.md │ └── references/ ├── .hub/ # Skills Hub 状态 │ ├── lock.json │ ├── quarantine/ # 安全隔离区 │ └── audit.log └── .bundled_manifest # 记录内置技能版本每个技能目录的必须文件只有SKILL.md其余子目录都是可选的。Agent 可以修改或删除任何技能——无论是内置的、从 Hub 安装的还是自己创建的。渐进式披露Token 高效加载机制技能系统最聪明的设计之一是渐进式披露——Agent 不会一次性把所有技能内容塞进上下文而是分三层按需加载。Level 0: skills_list() → [{name, description, category}, ...] 会话启动时加载约 3,000 tokens ↓ 只有需要用某个技能时才继续 Level 1: skill_view(name) → 完整 SKILL.md 内容 元数据 ↓ 只有需要参考文档时才继续 Level 2: skill_view(name, path) → 技能内的特定 references/ 文件这个设计的实际意义非常直接你安装了 50 个技能但本次会话只用了 1 个——只有那 1 个的完整内容会占用 TokenLevel 0 的技能列表约 3,000 tokens在每次会话启动时固定加载让 Agent 知道有哪些技能可以用其余内容在 Agent 判断需要时才加载不用不花渐进式披露是技能系统区别于把所有文档塞进系统提示词的关键设计。它保证了技能数量可以无限增长而每次会话的 Token 成本基本恒定。内置技能一览Hermes 安装时自带大量内置技能可以直接使用。命令行中启动 hermeshermes使用 以下命令查看技能相关命令/skills以下命令可以在会话中查看所有技能:/skills browsehermes 直接在命令行中查看:hermes skills list桌面版直接点击左侧的技能与工具菜单查看技能分类内置技能按功能分类存放在子目录中分类目录包含技能类型software-development/GitHub PR、代码审查、测试驱动开发research/arXiv 论文搜索、网页研究productivity/OCR 文档、ASCII 艺术、计划生成mlops/Axolotl 微调、vLLM 部署、Flash Attentioncreative/写作、图表Excalidrawdevops/Kubernetes、云部署可选技能不默认安装可选技能随 hermes-agent 一起发布存放在optional-skills/下但默认不激活需要显式安装。这类技能通常需要额外依赖或是小众用途实例# 安装可选技能hermes skills install official/blockchain/solanahermes skills install official/mlops/flash-attention# 浏览所有可选技能hermes skills browse使用技能技能有两种触发方式斜杠命令直接调用和自然语言自动触发。斜杠命令直接调用每个已安装的技能都自动成为一个斜杠命令。在任何平台CLI、Telegram、Discord 等中直接使用实例# 加载技能并给定任务/ascii-art 生成一个写着 Hello World 的横幅/plan 设计一个待办事项应用的 REST API/github-pr-workflow 为认证模块重构创建一个 PR# 只输入技能名不附加任务——让 Agent 询问你需要什么/excalidraw内置的plan技能是个好例子运行/plan [请求]后技能指令会告诉 Hermes 先检查上下文再生成 Markdown 格式的实现计划并保存到.hermes/plans/而不是直接执行任务。自然语言触发也可以通过自然对话触发技能Hermes 会通过skill_view工具自动加载实例# 用户用自然语言描述需求帮我在 arXiv 上搜索关于 diffusion model 的最新论文Agent 会识别出需要arxiv技能自动加载后执行。关键字搜索技能实例# 会话中搜索/skills search docker/skills search 音乐# 命令行搜索hermes skills search deployment从 Hub 安装技能除了内置技能你还可以从 agentskills.io 社区 Hub 安装第三方技能。命令行安装实例# 安装官方可选技能用 official/ 前缀hermes skills install official/research/arxivhermes skills install official/creative/songwriting-and-ai-music# 在会话中安装/skills install official/creative/songwriting-and-ai-music# 直接从 URL 安装任何公开的 SKILL.md 文件hermes skills install https://sharethis.chat/SKILL.md# 安装并自定义名称hermes skills install https://example.com/SKILL.md --name my-skill安装后发生了什么技能目录被复制到~/.hermes/skills/出现在skills_list输出中可以作为斜杠命令使用已安装的技能在新会话中生效。如果想在当前会话立即使用用 /reset 开启新会话或加 --now 参数立即刷新提示缓存会多消耗一些 Token。验证安装实例# 命令行验证hermes skills list | grep arxiv# 或在会话中验证/skills search arxiv从 GitHub 仓库添加技能源实例# 添加一个 GitHub 仓库作为技能源hermes skills tap add github.com/username/my-skills-repo# 之后可以安装仓库中的技能hermes skills install username/my-workflow/learn 命令一键从源生成技能/learn是将你已知的东西——或一堆参考资料——快速转化为可复用技能的捷径无需手写 SKILL.md。它是开放式的指向任何你能描述的内容Agent 用它已有的工具收集材料然后按照标准创作规范生成技能。实例# 从本地 SDK 或文档目录学习用 read_file / search_files 读取/learn ~/projects/acme-sdk 中的 REST 客户端重点关注认证和分页# 从在线文档页面学习用 web_extract 获取/learn https://docs.example.com/api/quickstart# 从你刚刚完成的工作流程学习/learn 我刚才部署 staging 服务器的步骤# 从粘贴的笔记或描述的流程学习/learn 报销流程打开门户新建费用报告附上收据提交/learn 的工作原理整个过程分为三步Agent 使用已有工具收集源材料读取文件、抓取网页、分析当前对话按照官方 Skill 创作标准起草 SKILL.md含 ≤60 字符描述、标准章节顺序、Hermes 工具框架、不编造命令通过skill_manage工具保存——如果开启了write_approval会先请求审批/learn 在 CLI、消息网关、TUI 和 Dashboard 中均可使用行为完全一致。Dashboard 的 Skills 页面还提供了图形化的Learn a skill面板包含目录、URL 和自由文本三个输入框。Agent 自动创建技能这是 Hermes 技能系统最独特的部分Hermes 通过将可复用的流程保存为技能来从经验中学习。当它解决了一个复杂问题、发现了一个工作流程或被纠正后它可以将这些知识持久化为技能文档在未来的会话中加载。技能随时间积累让 Agent 越来越擅长处理你的特定任务和环境。触发时机完成一个复杂任务通常涉及 5 步以上工具调用后Hermes 可能主动提议我注意到我们刚才走完了一个完整的 Docker 多阶段构建流程。 要不要我把这个工作流程保存为技能下次可以直接复用手动要求 Agent 创建技能你也可以在任何时候主动要求实例# 把刚才的工作流程保存为技能把我们刚才的 K8s 部署流程保存为技能# 学习项目规范并保存为技能学习一下我们这个项目的 Git 提交规范保存成技能控制技能写入权限默认情况下 Agent 可以自由创建和修改技能。开启审批模式后Agent 每次要创建或修改技能时会先请求你的确认实例# 文件路径~/.hermes/config.yaml# 开启技能写入审批skills:write_approval: true # 默认 false开启 write_approval 后你可以预览 Agent 要写入的技能内容再决定是否批准。这是一个重要的安全边界——技能文件无签名溯源信息无法区分Agent 自己写的和手动放入目录的。SKILL.md 格式详解技能就是带有 YAML 前置元数据的 Markdown 文件。以下是完整格式规范包含所有可选和必填字段实例---name: my-skill-name # 小写字母和连字符≤64 字符必须description: 当用户需要 lt;触发条件gt; 时使用。lt;一行行为描述gt;。≤1024 字符必须version: 1.0.0author: 你的名字license: MITplatforms: [macos, linux] # 可选——限制操作系统metadata:hermes:tags: [python, automation, devops]category: devopsrelated_skills: [other-skill, another-skill]fallback_for_toolsets: [web] # 可选——条件激活requires_toolsets: [terminal] # 可选——条件激活config: # 可选——声明需要的配置项- key: myskill.api_keydescription: API Key 描述default: prompt: 请输入 API Keyrequired_environment_variables: # 可选——声明需要的环境变量- name: TENOR_API_KEYprompt: Tenor API Keyhelp: 从 https://developers.google.com/tenor 获取required_for: GIF 搜索功能---# 技能标题## When to Use- 触发条件列表- 反向条件什么时候不用这个技能## Procedure1. 第一步2. 第二步3. 如需 API 文档加载参考skill_view(my-skill, references/api-docs.md)## Pitfalls- 已知失败模式[描述]。解决方法[方案]- 注意边界情况[说明]## Verification运行 check-command 验证结果是否正确。字段限制字段限制说明name≤64 字符小写字母和连字符description≤1024 字符技能选择的关键依据Agent 据此判断是否加载整个 SKILL.md≤100,000 字符约 36k tokens超过 20k 建议拆分到 references/条件激活智能显隐机制技能可以根据当前会话中可用的工具自动显示或隐藏无需手动管理。这在多环境部署中非常实用——同一个技能列表在不同环境中自动适配。实例# SKILL.md 前置元数据中的条件激活配置metadata:hermes:fallback_for_toolsets: [web] # 当 web 工具集不可用时才显示requires_toolsets: [terminal] # 只有 terminal 工具集可用时才显示fallback_for_tools: [web_search] # 当 web_search 工具不可用时才显示requires_tools: [terminal] # 只有 terminal 工具可用时才显示字段行为fallback_for_toolsets列出的工具集可用时隐藏不可用时显示requires_toolsets列出的工具集可用时显示不可用时隐藏fallback_for_tools同上但针对具体工具而非工具集requires_tools同上但针对具体工具实际案例内置的duckduckgo-search技能使用了fallback_for_toolsets: [web]。当你配置了 Firecrawl API Keyweb 工具集可用时这个技能自动隐藏Agent 直接使用web_search。当 API Key 缺失web 工具集不可用时DuckDuckGo 技能自动浮现作为备用方案。技能包Skill Bundle组合加载技能包是将多个技能组合在一个斜杠命令下的 YAML 文件。运行/bundle-name时包中列出的所有技能同时加载——适用于某项任务总是需要同一套技能的场景。创建技能包实例# 创建后端开发技能包组合三个技能hermes bundles create backend-dev \--skill github-code-review \--skill test-driven-development \--skill github-pr-workflow \-d 后端功能开发——代码审查、测试、PR 工作流使用时实例# 一个命令同时加载三个技能/backend-dev 重构认证中间件Agent 会同时加载三个技能并将重构认证中间件作为用户指令附加进来。技能包文件格式技能包存放在~/.hermes/skill-bundles/slug.yaml实例# 文件路径~/.hermes/skill-bundles/backend-dev.yamlname: backend-devdescription: 后端功能开发——代码审查、测试、PR 工作流skills:- github-code-review- test-driven-development- github-pr-workflow平台级技能管理不同平台可以启用不同的技能子集。例如开发相关的技能没必要在 Telegram 上出现实例# 打开交互式 TUI按平台启用或禁用技能hermes skills config这会打开一个交互式 TUI让你在每个平台CLI、Telegram、Discord 等上分别启用或禁用技能。手动创建技能五分钟上手技能只是带有 YAML 前置元数据的 Markdown 文件。创建一个技能只需不到五分钟无需注册放入~/.hermes/skills/即可使用。步骤一创建目录实例# 创建技能目录分类目录/技能名mkdir -p ~/.hermes/skills/my-category/my-skill步骤二写 SKILL.md实例---name: fly-deploydescription: 将 Python 应用部署到 Fly.io包含环境变量和持久卷配置。version: 1.0.0metadata:hermes:tags: [python, deployment, fly.io]category: devopsrequires_toolsets: [terminal]---# 部署 Python 应用到 Fly.io## When to Use- 用户需要将 Python 应用Flask/FastAPI/Django部署到 Fly.io- 需要配置环境变量或 Volume 持久化存储- 不用于非 Python 应用或使用其他云平台## Procedure1. 检查 fly CLI 是否安装fly version2. 登录 Flyfly auth login3. 在项目根目录初始化fly launch4. 配置 fly.toml检查 [build] 和 [http_service] 部分5. 设置必要的 Secretfly secrets set KEYVALUE6. 部署fly deploy7. 检查日志fly logs## Pitfalls- fly launch 会自动检测 Python 应用并生成 Dockerfile大多数情况下无需手动编写- 环境变量通过 fly secrets set 而不是 .env 文件设置.env 不会上传- 免费计划每月有机器运行时限长期运行的应用建议升级## Verificationfly status # 检查应用状态fly open # 在浏览器中打开应用步骤三可选添加参考文件实例# 创建 references 子目录mkdir -p ~/.hermes/skills/my-category/my-skill/references# 把 API 文档、示例等放入 references/# 在 SKILL.md 中这样引用# 如需详细 API 参数加载参考文档# skill_view(fly-deploy, references/fly-toml-reference.md)步骤四测试实例# 启动新会话测试技能hermes chat -q /fly-deploy 帮我部署这个 FastAPI 应用技能的安全注意事项写入审批门控技能文件无签名溯源信息——无法区分Agent 自己写的和手动放入目录的。写入审批机制与pending/目录管理是关键的安全边界。开启审批后write_approval: true会让所有技能写入操作包括 Agent 发起的自动创建暂存为待审批状态你审核后再决定是否允许写入。安全扫描技能内容在加载前会经过威胁扫描检测提示词注入、后门安装指令等恶意模式。匹配到威胁模式的内容会被替换为[BLOCKED: ...]占位符阻止其到达模型——文件本身不会被删除只有威胁内容被屏蔽。从 Hub 安装时的注意事项来源类型风险等级建议官方内置技能official/ 前缀低来自 Hermes 仓库经过审核可直接安装社区技能URL 或第三方注册表中安装前用 hermes skills inspect 预览内容.hub/quarantine/ 中的技能高已被隔离的可疑技能不建议安装实例# 安装前预览技能内容不执行安装hermes skills inspect https://example.com/SKILL.md技能更新与维护检查与更新实例# 检查所有技能的更新hermes skills check# 更新所有可更新的技能hermes skills update# 更新特定技能hermes skills update arxiv重置内置技能如果你修改了内置技能想恢复原版实例# 安全重置清除修改记录保留当前文件内容hermes skills reset google-workspace# 完整恢复删除当前文件重新复制内置版本hermes skills reset google-workspace --restore卸载 Hub 技能实例# 卸载通过 Hub 安装的技能hermes skills uninstall my-hub-skill卸载只能移除通过 Hub 安装的技能内置技能无法卸载但可以通过 hermes skills opt-out 停止接收更新。发布技能到 Skills Hub如果你创建了一个有价值的技能可以发布到 agentskills.io 与社区共享实例# 发布到注册表hermes skills publish ~/.hermes/skills/devops/fly-deploy# 在 Hub 中查看你发布的技能hermes skills list --mineBlueprint技能 定时任务技能可以声明调度计划变成一个可共享的自动化蓝图实例# SKILL.md 中声明 blueprint 调度计划metadata:hermes:tags: [blueprint, email]blueprint:schedule: 0 8 * * * # 每天早上 8 点Cron 表达式description: 每日邮件摘要安装了这个技能后运行/suggestions可以看到 Hermes 自动提议创建对应的定时任务实例# 查看待处理的自动化建议/suggestions# 接受建议创建 Cron 任务/suggestions accept 1# 忽略建议不再重复提示/suggestions dismiss 1# 查看官方精选自动化模板/suggestions catalog外部技能目录如果你在 Hermes 之外维护技能——例如多个 AI 工具共享的~/.agents/skills/目录——可以让 Hermes 同时扫描这些目录。实例# 文件路径~/.hermes/config.yaml# 配置外部技能目录skills:external_dirs:- ~/.agents/skills- /home/shared/team-skills- ${SKILLS_REPO}/skills路径支持~展开和${VAR}环境变量替换。重要规则本地目录~/.hermes/skills/优先——同名技能时本地版本覆盖外部版本外部目录不是写保护边界如果 Hermes 进程有写入权限Agent 可以修改外部目录中的技能常用命令速查实例# ─── 查找技能 ───────────────────────────────────────────────hermes skills list # 列出所有技能hermes skills search 关键词 # 搜索本地和 Hub 技能hermes skills browse # 浏览官方可选技能# ─── 安装技能 ───────────────────────────────────────────────hermes skills install official/类别/名称 # 安装官方可选技能hermes skills install https://...SKILL.md # 从 URL 安装hermes skills tap add github.com/user/repo # 添加 GitHub 技能源# ─── 技能信息 ───────────────────────────────────────────────hermes skills inspect id # 预览安装前检查hermes skills check # 检查更新hermes skills config # 每平台启用/禁用配置TUI# ─── 更新与维护 ─────────────────────────────────────────────hermes skills update # 更新所有技能hermes skills update name # 更新特定技能hermes skills reset name # 重置到初始状态hermes skills reset name --restore # 完整恢复内置版本hermes skills uninstall name # 卸载 Hub 技能# ─── 发布 ────────────────────────────────────────────────────hermes skills publish path # 发布到注册表# ─── 技能包 ──────────────────────────────────────────────────hermes bundles create name --skill s1 --skill s2 -d 描述hermes bundles listhermes bundles delete name# ─── 会话内斜杠命令 ──────────────────────────────────────────/skills # 列出所有技能/skills search 关键词 # 搜索技能/skills browse # 浏览可选技能/skills install id # 安装技能/skill-name [任务描述] # 直接使用技能/learn 来源描述或 URL # 从来源生成技能/suggestions # 查看 Agent 的自动化建议 # 查看 Agent 的自动化建议创建自定义技能技能存储在~/.hermes/skills/目录中。每个技能是一个包含skill.md的目录~/.hermes/skills/ └── my-custom-skill/ └── skill.md技能格式--- name: my-custom-skill description: 一个有用的技能描述 version: 1.0.0 author: your-username tags: [utility, example] --- # 技能指令 您是一个专业的[角色]擅长[领域]... ## 核心能力 1. 能力 A 2. 能力 B 3. 能力 C ## 使用示例 ### 示例 1 [描述] ### 示例 2 [描述]技能元数据字段说明必需name技能名称唯一标识符是description技能描述是version语义版本否author技能作者否tags分类标签数组否技能命令参考命令说明hermes skills list列出所有已安装的技能hermes skills search query搜索可用的技能hermes skills install skill安装技能hermes skills uninstall skill卸载技能hermes skills create name创建新技能hermes skills update skill更新技能