首页 / Hermes Agent 教程 / Skills 技能系统:内置与可选

Hermes Agent 教程

Skills 技能系统:内置与可选

本教程共 25 篇 · 第 12 篇 · 更新于 2026-07-26 · 约 15 分钟阅读

Hermes AgentHermes Agent 教程技能SkillsSkills HubSKILL.md技能捆绑包

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_listskill_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)  -> 技能内的特定参考文件

这个设计的实际意义:

  1. Level 0(约 3,000 tokens):会话启动时固定加载,让 Agent 知道有哪些技能可用。只是名字和描述,不含完整内容。
  2. Level 1:Agent 判断需要某个技能时,加载完整 SKILL.md
  3. 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/plantest-driven-developmentsystematic-debugginggithub-pr-workflowgithub-code-review软件开发全流程:计划、TDD、调试、PR 管理
creative/excalidrawascii-artp5jsmanim-videocomfyui创意输出:图表、动画、AI 绘画
productivity/google-workspacenotionpdfdocxxlsxpowerpoint生产力工具:文档处理、笔记、表格
research/arxivblogwatcherpolymarket研究工具:论文搜索、博客监控
mlops/huggingface-hubserving-llms-vllmllama-cpp机器学习:模型下载、推理部署
github/github-authgithub-issuesgithub-repo-managementGitHub 集成
media/gif-searchyoutube-contentsongsee媒体处理
apple/apple-notesapple-remindersimessagefindmymacOS 专属
autonomous-ai-agents/claude-codecodexcomputer-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/axolotlunslothpeft-fine-tuningstable-diffusion-image-generation高级 ML:微调、图像生成
security/1passwordsherlockweb-pentestoss-forensics安全:密码管理、渗透测试
finance/stocksdcf-modelcomps-analysis金融:股票查询、估值模型
research/duckduckgo-searchsearxng-searchosint-investigation研究:免费搜索、OSINT
devops/docker-managementwatcherspinggy-tunnelDevOps:容器管理、监控
creative/meme-generationpixel-artblender-mcp创意:表情包、像素画、3D
health/fitness-nutrition健康健身

Skills Hub:多源技能市场

Skills Hub 是 Hermes 的技能市场,支持从多个来源浏览、搜索、安装和管理技能。

支持的技能来源

来源标识说明
官方可选技能officialHermes 仓库自带,内置信任
skills.shskills-shVercel 的公共技能目录
Well-knownwell-known网站通过 /.well-known/skills/ 发布的技能
GitHubgithub直接从 GitHub 仓库安装
ClawHubclawhub第三方技能市场
LobeHublobehubLobeHub 公共目录
browse.shbrowse-shBrowserbase 的 200+ 网站自动化技能
URLurl任意 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/内置信任,无第三方警告
trustedopenai/skillsanthropics/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简短描述,显示在 /bundleshermes 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从零创建新技能namecontent(完整 SKILL.md)、category
patch定向修复(推荐)nameold_stringnew_string
edit大规模结构重写namecontent(完整替换)
delete完全删除技能name
write_file添加/更新辅助文件namefile_pathfile_content
remove_file删除辅助文件namefile_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 文件。

  1. 创建目录:
mkdir -p ~/.hermes/skills/my-category/my-skill
  1. 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.
  1. 测试:
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 的跨会话学习能力。