Skills 技能系统:内置与可选
本教程共 25 篇 · 第 12 篇 · 更新于 2026-07-26 · 约 15 分钟阅读
12. Skills 技能系统:内置与可选
本节目标:搞清楚 Hermes Agent 的技能系统怎么运作—技能是什么、跟记忆有什么区别,渐进式披露怎么省 Token,内置技能和可选技能有哪些,Skills Hub 怎么从多个来源安装技能,技能捆绑包怎么用,hermes update 怎么同步,以及 Agent 怎么自己管理技能。学完你能在脑子里画出技能系统的完整结构图。
技能是什么:程序化记忆
如果说记忆系统让 Hermes 记住了你是谁,那么技能(Skills)系统让 Hermes 记住了怎么做事。
技能是一组定义智能体行为的指令文档,它们可以:
- 封装常见任务模式,自动化工作流程
- 跨会话复用成功的解决方案
- 从社区安装他人创建的技能
- 在使用中自我改进
Hermes Agent 当前最新稳定版 v2026.7.20 的技能系统兼容 agentskills.io 开放标准,并且是唯一内置学习循环的智能体—能够创建技能、在使用中改进技能,并在会话之间保持知识。
技能 vs 记忆
两者都是跨会话持久化的,但定位完全不同:
| 对比维度 | 技能(Skills) | 记忆(Memory) |
|---|---|---|
| 内容类型 | 操作流程、工作方法 | 环境事实、用户偏好 |
| 加载时机 | 按需,用到时才加载 | 每次会话自动注入 |
| 文件大小 | 可以很大(几百行) | 应保持精简(关键事实) |
| Token 消耗 | 未加载时零消耗 | 每次会话固定消耗 |
| 创建者 | 你、Agent 或从 Hub 安装 | Agent 根据对话自动创建 |
| 典型示例 | 如何部署到 Kubernetes | 用户住在上海,偏好简洁回复 |
Tip经验法则:如果你会把它写进参考文档,它就是技能;如果你会把它贴在便利贴上,它就是记忆。
技能目录结构:唯一数据源
所有技能都存放在 ~/.hermes/skills/ 目录—这是唯一的数据源(single source of truth)。
~/.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 安装的,还是自己创建的。
外部技能目录
如果你在 Hermes 之外维护技能(比如多个 AI 工具共享的 ~/.agents/skills/),可以告诉 Hermes 也扫描这些目录:
# 文件路径:~/.hermes/config.yaml
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills
路径支持 ~ 展开和 ${VAR} 环境变量替换。外部目录中的技能跟本地技能一样出现在系统提示词索引、skills_list、skill_view 和斜杠命令中。如果本地和外部有同名技能,本地版本优先。
渐进式披露:三级加载省 Token
技能系统最聪明的设计是渐进式披露(Progressive Disclosure)—Agent 不会一次性把所有技能内容塞进上下文,而是分三层按需加载:
Level 0: skills_list() -> [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) -> 完整 SKILL.md 内容 + 元数据
Level 2: skill_view(name, path) -> 技能内的特定参考文件
这个设计的实际意义:
- Level 0(约 3,000 tokens):会话启动时固定加载,让 Agent 知道有哪些技能可用。只是名字和描述,不含完整内容。
- Level 1:Agent 判断需要某个技能时,加载完整
SKILL.md。 - Level 2:技能内的参考文件(
references/、templates/等),只有在 Agent 需要深入查看时才加载。
Note渐进式披露是技能系统区别于”把所有文档塞进系统提示词”的关键设计。它保证了技能数量可以无限增长,而每次会话的 Token 成本基本恒定。你安装了 50 个技能,但本次会话只用了 1 个—只有那 1 个的完整内容会占用 Token。
SKILL.md 格式规范
每个技能的核心是一个 SKILL.md 文件,由 YAML frontmatter 和 Markdown 正文组成:
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux] # 可选:限制特定操作系统
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # 可选:条件激活
requires_toolsets: [terminal] # 可选:条件激活
config: # 可选:config.yaml 设置
- key: my.setting
description: "What this controls"
default: "value"
prompt: "Prompt for setup"
---
# Skill Title
## When to Use
触发条件:什么时候用这个技能。
## Procedure
1. 第一步
2. 第二步
## Pitfalls
- 已知的失败模式和修复方法
## Verification
如何确认操作成功。
平台限制
技能可以通过 platforms 字段限制在特定操作系统上加载:
platforms: [macos] # 仅 macOS(如 iMessage、Apple Reminders)
platforms: [macos, linux] # macOS 和 Linux
设置后,在不兼容的平台上,该技能会从系统提示词、skills_list() 和斜杠命令中自动隐藏。不设则全平台加载。
条件激活
技能可以根据当前会话可用的工具自动显示或隐藏。这对后备技能特别有用—当付费工具不可用时,自动出现免费替代方案:
metadata:
hermes:
fallback_for_toolsets: [web] # 仅当这些工具集不可用时显示
requires_toolsets: [terminal] # 仅当这些工具集可用时显示
fallback_for_tools: [web_search] # 仅当这些具体工具不可用时显示
requires_tools: [terminal] # 仅当这些具体工具可用时显示
Example内置的
duckduckgo-search技能使用fallback_for_toolsets: [web]。当你设置了FIRECRAWL_API_KEY,web 工具集可用,Agent 用web_search,DuckDuckGo 技能保持隐藏。如果 API Key 缺失,web 工具集不可用,DuckDuckGo 技能自动作为后备出现。
内置技能:开箱即用
Hermes 安装时自带大量内置技能,直接放在 ~/.hermes/skills/ 下。查看所有已安装技能:
# 在会话中
/skills
# 从命令行
hermes skills list
内置技能按功能分类存放,以下是主要分类和代表性技能:
| 分类 | 代表性技能 | 说明 |
|---|---|---|
software-development/ | plan、test-driven-development、systematic-debugging、github-pr-workflow、github-code-review | 软件开发全流程:计划、TDD、调试、PR 管理 |
creative/ | excalidraw、ascii-art、p5js、manim-video、comfyui | 创意输出:图表、动画、AI 绘画 |
productivity/ | google-workspace、notion、pdf、docx、xlsx、powerpoint | 生产力工具:文档处理、笔记、表格 |
research/ | arxiv、blogwatcher、polymarket | 研究工具:论文搜索、博客监控 |
mlops/ | huggingface-hub、serving-llms-vllm、llama-cpp | 机器学习:模型下载、推理部署 |
github/ | github-auth、github-issues、github-repo-management | GitHub 集成 |
media/ | gif-search、youtube-content、songsee | 媒体处理 |
apple/ | apple-notes、apple-reminders、imessage、findmy | macOS 专属 |
autonomous-ai-agents/ | claude-code、codex、computer-use | 自主 AI 代理委托 |
可选技能:按需安装
可选技能随 Hermes 一起发布,存放在 optional-skills/ 下,但默认不激活。这类技能通常需要额外依赖或面向小众场景,需要显式安装:
# 安装可选技能
hermes skills install official/blockchain/solana
hermes skills install official/mlops/flash-attention
hermes skills install official/security/1password
# 浏览所有可选技能
hermes skills browse --source official
可选技能的分类和代表性技能:
| 分类 | 代表性技能 | 说明 |
|---|---|---|
mlops/ | axolotl、unsloth、peft-fine-tuning、stable-diffusion-image-generation | 高级 ML:微调、图像生成 |
security/ | 1password、sherlock、web-pentest、oss-forensics | 安全:密码管理、渗透测试 |
finance/ | stocks、dcf-model、comps-analysis | 金融:股票查询、估值模型 |
research/ | duckduckgo-search、searxng-search、osint-investigation | 研究:免费搜索、OSINT |
devops/ | docker-management、watchers、pinggy-tunnel | DevOps:容器管理、监控 |
creative/ | meme-generation、pixel-art、blender-mcp | 创意:表情包、像素画、3D |
health/ | fitness-nutrition | 健康健身 |
Skills Hub:多源技能市场
Skills Hub 是 Hermes 的技能市场,支持从多个来源浏览、搜索、安装和管理技能。
支持的技能来源
| 来源 | 标识 | 说明 |
|---|---|---|
| 官方可选技能 | official | Hermes 仓库自带,内置信任 |
| skills.sh | skills-sh | Vercel 的公共技能目录 |
| Well-known | well-known | 网站通过 /.well-known/skills/ 发布的技能 |
| GitHub | github | 直接从 GitHub 仓库安装 |
| ClawHub | clawhub | 第三方技能市场 |
| LobeHub | lobehub | LobeHub 公共目录 |
| browse.sh | browse-sh | Browserbase 的 200+ 网站自动化技能 |
| URL | url | 任意 HTTP(S) URL 直接安装 |
常用命令
# 浏览所有 Hub 技能(官方优先)
hermes skills browse
# 只浏览官方可选技能
hermes skills browse --source official
# 搜索所有来源
hermes skills search kubernetes
# 搜索特定来源
hermes skills search react --source skills-sh
# 安装前预览
hermes skills inspect openai/skills/k8s
# 安装(带安全扫描)
hermes skills install openai/skills/k8s
hermes skills install official/security/1password
hermes skills install https://sharethis.chat/SKILL.md
# 检查已安装 Hub 技能的上游更新
hermes skills check
# 更新有变化的 Hub 技能
hermes skills update
# 重新扫描所有 Hub 技能的安全状态
hermes skills audit
# 卸载
hermes skills uninstall k8s
Note所有 Hub 安装的技能都会经过安全扫描,检查数据窃取、提示词注入、破坏性命令、供应链信号等威胁。
--force可以覆盖警告级别的扫描结果,但不能覆盖dangerous级别的判定。
信任级别
| 级别 | 来源 | 策略 |
|---|---|---|
builtin | 随 Hermes 发布 | 始终信任 |
official | 仓库中的 optional-skills/ | 内置信任,无第三方警告 |
trusted | openai/skills、anthropics/skills 等 | 比社区来源更宽松的策略 |
community | 其他所有来源 | 警告级可用 --force 覆盖,dangerous 级始终阻止 |
自定义 Tap
你可以把一组技能发布为 GitHub 仓库,其他用户用 hermes skills tap add 订阅:
# 添加自定义源
hermes skills tap add myorg/skills-repo
# 查看所有已配置的源
hermes skills tap list
# 从自定义源安装
hermes skills install myorg/skills-repo/deploy-runbook
# 移除源
hermes skills tap remove myorg/skills-repo
使用技能:斜杠命令与自然语言
斜杠命令直接调用
每个已安装的技能自动成为一个斜杠命令。在任何平台(CLI、Telegram、Discord 等)中直接使用:
# 加载技能并给定任务
/ascii-art 生成一个写着 "Hello World" 的横幅
/plan 设计一个待办事项应用的 REST API
/github-pr-workflow 为认证重构创建一个 PR
# 只加载技能名(不带任务),让 Agent 问你需要什么
/excalidraw
堆叠多个技能
在一条消息中可以链式调用多个技能(最多 5 个),后面跟你的指令:
/github-pr-workflow /test-driven-development 修复 issue #123 并开 PR
解析到第一个不是已安装技能的 token 时停止,所以以 / 开头的参数(如文件路径)不会被误吞:
/ocr-and-documents /tmp/scan.pdf extract the tables # 加载一个技能;/tmp/scan.pdf 是参数
自然语言触发
你也可以通过自然语言让 Agent 使用技能,Agent 会通过 skill_view 工具自动加载:
hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"
/learn:从素材快速创建技能
/learn 是把已知的东西变成可复用技能的快捷方式。指向任何你能描述的东西,Agent 会收集素材并按照标准格式生成技能:
# 从本地 SDK 或文档目录学习
/learn the REST client in ~/projects/acme-sdk, focus on auth + pagination
# 从在线文档学习
/learn https://docs.example.com/api/quickstart
# 从刚才的对话流程学习
/learn how I just deployed the staging server
# 从粘贴的笔记学习
/learn filing an expense: open the portal, New > Expense, attach the receipt, submit
技能捆绑包:一键加载多个技能
技能捆绑包(Skill Bundles)是把多个技能打包到一个斜杠命令下的 YAML 文件。运行 /<bundle-name> 时,列出的所有技能一次性加载。
创建捆绑包
# 创建后端开发捆绑包
hermes bundles create backend-dev \
--skill github-code-review \
--skill test-driven-development \
--skill github-pr-workflow \
-d "Backend feature work - review, test, PR workflow"
然后在任何平台使用:
/backend-dev refactor the auth middleware
捆绑包格式
捆绑包存放在 ~/.hermes/skill-bundles/<slug>.yaml:
name: backend-dev
description: Backend feature work - review, test, PR workflow.
skills:
- github-code-review
- test-driven-development
- github-pr-workflow
instruction: |
Always start by writing failing tests, then implement.
Open the PR through the standard workflow with co-author tags.
| 字段 | 说明 |
|---|---|
name | 捆绑包显示名(可选,默认文件名) |
description | 简短描述,显示在 /bundles 和 hermes bundles list |
skills | 技能名称列表(必须,非空) |
instruction | 额外指导,前置于加载的技能内容 |
管理捆绑包
hermes bundles list # 列出所有捆绑包
hermes bundles show backend-dev # 查看一个捆绑包
hermes bundles create research # 交互式创建
hermes bundles delete backend-dev # 删除
hermes bundles reload # 重新扫描目录
Note捆绑包只是 YAML 别名—它不会安装技能。技能本身必须已经存在。如果捆绑包引用了未安装的技能,会跳过缺失的技能,不会报错。捆绑包在工作方式上与单个技能命令完全一致,也支持所有平台。
hermes update 同步策略
Hermes 随附一套内置技能,在安装和每次 hermes update 时同步到 ~/.hermes/skills/。同步时通过内容哈希(manifest)跟踪每个技能的状态:
- 未修改:本地副本与安装时一致 -> 安全拉取上游变更
- 已修改:你编辑过本地副本 -> 跳过同步,永远不会覆盖你的编辑
这个保护机制有个边界情况:如果你手动把官方版本复制回来想”还原”,但 manifest 里记录的是旧的哈希,同步会继续把它当作”用户已修改”而跳过。
hermes skills reset 是解决办法:
# 安全模式:清除 manifest 记录,保留当前副本,下次同步重新基准化
hermes skills reset google-workspace
# 完全还原:删除本地副本,重新复制官方版本
hermes skills reset google-workspace --restore
# 非交互模式(脚本中使用)
hermes skills reset google-workspace --restore --yes
从零开始:不安装内置技能
如果你想要一个干净的 Profile,不预装任何内置技能:
# 安装时
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --no-skills
# 创建 Profile 时
hermes profile create research --no-skills
# 已有 Profile 运行时切换
hermes skills opt-out # 停止未来的预装,不删除已有
hermes skills opt-out --remove # 同时删除未修改的内置技能
hermes skills opt-in --sync # 撤销:移除标记并立即重新预装
Warning
hermes skills opt-out只停止未来的预装,不删除已有的技能。--remove标志只删除未修改(与安装时完全一致)的内置技能。你编辑过的、从 Hub 安装的、自己写的技能始终保留。
Agent 自主管理技能
Agent 可以通过 skill_manage 工具创建、更新和删除自己的技能。这是 Agent 的程序化记忆—当它摸索出一个复杂工作流,会保存下来供未来复用。
什么时候自动创建技能
- 成功完成复杂任务后(5+ 次工具调用)
- 遇到错误或死胡同后找到可行路径时
- 用户纠正了它的方法后
- 发现非平凡的工作流时
支持的操作
| 操作 | 用途 | 关键参数 |
|---|---|---|
create | 从零创建新技能 | name、content(完整 SKILL.md)、category |
patch | 定向修复(推荐) | name、old_string、new_string |
edit | 大规模结构重写 | name、content(完整替换) |
delete | 完全删除技能 | name |
write_file | 添加/更新辅助文件 | name、file_path、file_content |
remove_file | 删除辅助文件 | name、file_path |
Tip
patch操作比edit更省 Token,因为只有变更的文本出现在工具调用中。对于小改动,优先用patch。
写入审批门控
默认 Agent 自由写入技能。如果你想审批每次技能写入(比如小模型可能误判学到的东西,或安全环境需要人工审查),可以开启写入审批:
# 文件路径:~/.hermes/config.yaml
skills:
write_approval: false # false = 自由写入(默认)| true = 需要审批
开启后,所有 skill_manage 写入操作会被暂存而非直接提交,用斜杠命令审批:
/skills pending # 列出暂存的技能写入 + 每条一句话摘要
/skills diff <id> # 查看完整 diff
/skills approve <id> # 批准(或 'all')
/skills reject <id> # 拒绝(或 'all')
/skills approval on # 开启审批门控(持久保存)
技能安全
安全扫描
所有 Hub 安装的技能都经过安全扫描,检查以下威胁:
- 数据窃取(exfiltration)
- 提示词注入(prompt injection)
- 破坏性命令
- 供应链信号
扫描结果记录在 ~/.hermes/skills/.hub/lock.json 中,包含来源 URL、内容哈希、扫描版本、发现的问题、时间戳等信息。
安装前预览
# 预览技能内容和安全信息
hermes skills inspect openai/skills/k8s
预览会显示上游元数据:仓库 URL、skills.sh 详情页、安装命令、每周安装量、上游安全审计状态等。
Agent 创建技能的防护
除了写入审批门控,Hermes 还有独立的内容扫描器 skills.guard_agent_created,它用危险模式启发式规则检查 Agent 创建的技能内容。这个扫描器跟写入审批是独立的两个机制。
创建自己的技能
创建技能只需要不到五分钟,就是写一个 Markdown 文件。
- 创建目录:
mkdir -p ~/.hermes/skills/my-category/my-skill
- 写
SKILL.md:
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
metadata:
hermes:
tags: [my-tag, automation]
category: my-category
---
# My Skill
## When to Use
Use this skill when the user asks about [specific topic].
## Procedure
1. First, check if [prerequisite] is available
2. Run `command --with-flags`
3. Parse the output and present results
## Pitfalls
- Common failure: [description]. Fix: [solution]
## Verification
Run `check-command` to confirm the result is correct.
- 测试:
hermes chat -q "/my-skill help me with the thing"
技能自动出现,不需要注册。放进 ~/.hermes/skills/ 就生效。
Tip保持技能聚焦。一个试图覆盖”所有 DevOps”的技能会太长太模糊。一个覆盖”部署 Python 应用到 Fly.io”的技能才足够具体有用。用分类子目录组织技能,保持列表可管理。
按平台管理技能
你可以控制哪些技能在哪些平台上可用:
hermes skills
这会打开一个交互式 TUI,可以按平台(CLI、Telegram、Discord 等)启用或禁用技能。比如你想让开发技能只在 CLI 上可用,不在 Telegram 上出现。
技能与记忆的协作
技能和记忆在自我改进循环中协同工作:
- 记忆存储少量持久事实,应始终在上下文中
- 技能存储较长的操作流程,仅在相关时加载
后台回顾可以在会话后建议或暂存技能变更,写入审批门控让你在变更生效前审查。两者各司其职,共同构成了 Hermes 的跨会话学习能力。