跳到主要内容

技能系统

技能(Skills)是智能体按需加载的知识文档,采用渐进式展开(Progressive Disclosure)模式,最大程度减少 token 消耗,并兼容 agentskills.io 开放标准。

所有技能存储在 ~/.hermes/skills/ 目录中——这是唯一的主目录和权威来源。全新安装时,内置(bundled)技能会从代码仓库复制到此目录。通过技能仓库(Skills Hub)安装的技能和智能体创建的技能也保存在这里。智能体可以修改或删除任意技能。

你也可以让 Hermes Agent 扫描外部技能目录——这些是与本地目录并行扫描的额外文件夹。详见下方的外部技能目录章节。

参见:

使用技能

所有已安装的技能都可以作为斜杠命令(Slash Command)直接使用:

# 在 CLI 或任意消息平台中:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/plan design a rollout for migrating our auth provider

# 仅输入技能名称,智能体会加载技能并询问你的需求:
/excalidraw

内置的 plan 技能是一个典型示例,展示了技能驱动型斜杠命令的自定义行为。执行 /plan [请求] 时,Hermes Agent 会检查当前上下文(如有需要),生成 Markdown 格式的实现计划(而非直接执行任务),并将结果保存到活动工作区/后端工作目录下的 .hermes/plans/ 中。

你也可以通过自然对话与技能交互:

hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"

渐进式展开

技能采用节省 token 的分层加载模式:

Level 0: skills_list() → [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) → Full content + metadata (varies)
Level 2: skill_view(name, path) → Specific reference file (varies)

智能体只在真正需要时才加载技能的完整内容。

SKILL.md 格式

---
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
Trigger conditions for this skill.

## Procedure
1. Step one
2. Step two

## Pitfalls
- Known failure modes and fixes

## Verification
How to confirm it worked.

平台专属技能

技能可以通过 platforms 字段限制自身只在特定操作系统上运行:

匹配系统
macosmacOS(Darwin)
linuxLinux
windowsWindows
platforms: [macos] # 仅限 macOS(例如 iMessage、Apple 提醒事项、FindMy)
platforms: [macos, linux] # macOS 和 Linux

设置后,该技能在不兼容的平台上会自动从系统提示词、skills_list() 和斜杠命令中隐藏。若未设置,技能在所有平台上均可加载。

条件激活(回退技能)

技能可以根据当前会话中可用的工具,自动显示或隐藏自身。回退技能(Fallback Skills)最能体现这一机制的价值——当某个付费工具不可用时,才显示免费或本地替代方案。

metadata:
hermes:
fallback_for_toolsets: [web] # 仅当这些工具集不可用时显示
requires_toolsets: [terminal] # 仅当这些工具集可用时显示
fallback_for_tools: [web_search] # 仅当这些特定工具不可用时显示
requires_tools: [terminal] # 仅当这些特定工具可用时显示
字段行为
fallback_for_toolsets列出的工具集可用时隐藏技能;不可用时显示。
fallback_for_tools同上,但检查的是单个工具而非工具集。
requires_toolsets列出的工具集不可用时隐藏技能;可用时显示。
requires_tools同上,但检查的是单个工具。

示例: 内置的 duckduckgo-search 技能使用了 fallback_for_toolsets: [web]。当你设置了 FIRECRAWL_API_KEY 时,web 工具集可用,智能体会使用 web_search——DuckDuckGo 技能保持隐藏。若 API key 未配置,web 工具集不可用,DuckDuckGo 技能则自动作为回退出现。

没有任何条件字段的技能行为与之前完全相同——始终显示。

加载时的安全配置

技能可以声明所需的环境变量,且声明后技能仍正常出现在发现列表中:

required_environment_variables:
- name: TENOR_API_KEY
prompt: Tenor API key
help: Get a key from https://developers.google.com/tenor
required_for: full functionality

当检测到缺失的变量时,Hermes Agent 只会在本地 CLI 中实际加载该技能时,才安全地提示你输入。你可以跳过配置,继续使用该技能。在消息平台上,Hermes Agent 绝不会在聊天中要求你输入密钥——它会提示你在本地通过 hermes setup~/.hermes/.env 完成配置。

配置完成后,声明的环境变量会自动传递execute_codeterminal 沙盒(Sandbox)——技能脚本可以直接使用 $TENOR_API_KEY。对于非技能的环境变量,请使用 terminal.env_passthrough 配置项。详见环境变量传递

技能配置项

技能还可以声明非密钥类配置项(如路径、偏好设置),存储在 config.yaml 中:

metadata:
hermes:
config:
- key: wiki.path
description: Path to the wiki directory
default: "~/wiki"
prompt: Wiki directory path

配置项存储在 config.yamlskills.config 节点下。hermes config migrate 会提示配置未填写的项,hermes config show 可以显示当前配置。技能加载时,已解析的配置值会自动注入上下文,智能体因此能自动获知配置内容。

详见技能配置项创建技能——配置项

技能目录结构

~/.hermes/skills/ # 唯一数据源
├── mlops/ # 分类目录
│ ├── axolotl/
│ │ ├── SKILL.md # 主要说明(必需)
│ │ ├── references/ # 参考文档
│ │ ├── templates/ # 输出模板
│ │ ├── scripts/ # 可从技能调用的辅助脚本
│ │ └── assets/ # 补充文件
│ └── vllm/
│ └── SKILL.md
├── devops/
│ └── deploy-k8s/ # 智能体自创技能
│ ├── SKILL.md
│ └── references/
├── .hub/ # 技能仓库状态
│ ├── lock.json
│ ├── quarantine/
│ └── audit.log
└── .bundled_manifest # 追踪已植入的内置技能

外部技能目录

如果你在 Hermes Agent 之外维护技能——例如,多个 AI 工具共用的 ~/.agents/skills/ 目录——你可以让 Hermes Agent 扫描这些目录。

~/.hermes/config.yamlskills 节点下添加 external_dirs

skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills

路径支持 ~ 扩展和 ${VAR} 环境变量替换。

工作原理

  • 只读:外部目录仅用于技能发现,不可写入。智能体创建或编辑技能时,始终写入 ~/.hermes/skills/
  • 本地优先:若本地目录和外部目录中存在同名技能,本地版本优先。
  • 完整集成:外部技能会出现在系统提示词索引、skills_listskill_view/skill-name 斜杠命令中,与本地技能无异。
  • 不存在的路径会被静默跳过:若配置的目录不存在,Hermes Agent 会直接忽略,不报错。适用于可能在部分机器上不存在的可选共享目录。

示例

~/.hermes/skills/ # 本地(主目录,可读写)
├── devops/deploy-k8s/
│ └── SKILL.md
└── mlops/axolotl/
└── SKILL.md

~/.agents/skills/ # 外部(只读,共享)
├── my-custom-workflow/
│ └── SKILL.md
└── team-conventions/
└── SKILL.md

四个技能都会出现在技能索引中。如果你在本地创建了一个名为 my-custom-workflow 的技能,它会覆盖外部版本。

智能体管理技能(skill_manage 工具)

智能体可以通过 skill_manage 工具创建、更新和删除自己的技能。这是智能体的程序性记忆(Procedural Memory)——当它找到某个复杂工作流程的有效方法时,会将其保存为技能以便将来复用。

智能体何时创建技能

  • 成功完成一项复杂任务(5+ 次工具调用)后
  • 遇到错误或死路并找到有效路径后
  • 用户纠正了它的处理方式后
  • 发现了某个有价值的复杂工作流程后

操作

操作用途关键参数
create从头创建新技能namecontent(完整 SKILL.md)、可选 category
patch局部修改(推荐)nameold_stringnew_string
edit大规模结构重写namecontent(完整 SKILL.md 替换)
delete删除整个技能name
write_file添加/更新支持文件namefile_pathfile_content
remove_file删除支持文件namefile_path
提示

对于更新操作,推荐使用 patch——它比 edit 更节省 token,因为工具调用中只需包含修改的文本部分。

技能仓库

浏览、搜索、安装并管理来自在线注册表、skills.sh、知名技能端点(Well-Known Skill Endpoints)以及官方可选技能的技能。

常用命令

hermes skills browse # 浏览所有仓库技能(官方优先)
hermes skills browse --source official # 仅浏览官方可选技能
hermes skills search kubernetes # 搜索所有来源
hermes skills search react --source skills-sh # 在 skills.sh 目录中搜索
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect openai/skills/k8s # 安装前预览
hermes skills install openai/skills/k8s # 安全扫描后安装
hermes skills install official/security/1password
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills list --source hub # 列出通过仓库安装的技能
hermes skills check # 检查已安装的仓库技能是否有上游更新
hermes skills update # 有更新时重新安装仓库技能
hermes skills audit # 对所有仓库技能重新进行安全扫描
hermes skills uninstall k8s # 卸载仓库技能
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills snapshot export setup.json # 导出技能配置
hermes skills tap add myorg/skills-repo # 添加自定义 GitHub 源(tap)

支持的仓库来源

来源示例说明
officialofficial/security/1passwordHermes Agent 随附的可选技能。
skills-shskills-sh/vercel-labs/agent-skills/vercel-react-best-practices可通过 hermes skills search --source skills-sh 搜索。Hermes Agent 在 skills.sh 别名与仓库文件夹名称不一致时自动解析。
well-knownwell-known:https://mintlify.com/docs/.well-known/skills/mintlify直接从网站的 /.well-known/skills/index.json 提供的技能。可用站点或文档 URL 搜索。
githubopenai/skills/k8s直接从 GitHub 仓库/路径安装,支持自定义源(tap)。
clawhublobehubclaude-marketplace各来源特定标识符社区或市场集成。

集成的仓库与注册表

Hermes Agent 目前集成了以下技能生态系统和发现来源:

1. 官方可选技能(official

这些技能由 Hermes 代码仓库维护,安装时享有内置信任。

hermes skills browse --source official
hermes skills install official/security/1password

2. skills.sh(skills-sh

Vercel 的公共技能目录。Hermes Agent 可以直接搜索、查看技能详情页、解析别名式 slug,并从底层源仓库安装。

hermes skills search react --source skills-sh
hermes skills inspect skills-sh/vercel-labs/json-render/json-render-react
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force

3. 知名端点(well-known

这是一种基于 URL 的发现机制,适用于发布了 /.well-known/skills/index.json 的站点。它不是单一的中央仓库,而是一种 Web 发现规范。

hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify

4. 直接 GitHub 技能(github

Hermes Agent 可直接从 GitHub 仓库安装技能,也支持基于 GitHub 的自定义源(tap)。当你已知仓库路径,或想添加自定义源仓库时,这种方式非常实用。

默认 tap(无需配置即可浏览):

示例:

hermes skills install openai/skills/k8s
hermes skills tap add myorg/skills-repo

5. ClawHub(clawhub

作为社区来源集成的第三方技能市场。

6. Claude 市场风格仓库(claude-marketplace

Hermes Agent 支持发布了 Claude 兼容插件/市场清单的仓库。

已知集成来源包括:

Hermes 来源 ID:claude-marketplace

7. LobeHub(lobehub

Hermes Agent 可以搜索 LobeHub 公共目录中的智能体条目,并将其转换为可安装的 Hermes 技能。

安全扫描与 --force

所有通过仓库安装的技能都会经过安全扫描器检查,内容涵盖数据窃取、提示词注入、破坏性命令、供应链风险及其他威胁。

hermes skills inspect ... 现在也会显示上游元数据(如有):

  • 仓库 URL
  • skills.sh 详情页 URL
  • 安装命令
  • 每周安装量
  • 上游安全审计状态
  • 知名端点索引/URL

当你已审查某个第三方技能,并希望覆盖非危险性策略拦截时,可使用 --force

hermes skills install skills-sh/anthropics/skills/pdf --force

重要行为说明:

  • --force 可覆盖谨慎/警告级别扫描结果的策略拦截。
  • --force 不能覆盖 dangerous(危险)级别的扫描结论。
  • 官方可选技能(official/...)享有内置信任,不显示第三方警告面板。

信任级别

级别来源策略
builtin随 Hermes Agent 发布始终信任
official仓库中的 optional-skills/内置信任,无第三方警告
trusted可信注册表/仓库,如 openai/skillsanthropics/skills比社区来源更宽松的策略
community其他所有来源(skills.sh、well-known 端点、自定义 GitHub 仓库、大多数市场)非危险性发现可通过 --force 覆盖;dangerous 结论保持拦截

更新生命周期

仓库现在会追踪足够的来源信息,以便重新检查已安装技能的上游副本:

hermes skills check # 报告哪些已安装的仓库技能在上游有变更
hermes skills update # 仅重新安装有可用更新的技能
hermes skills update react # 更新某个特定的已安装仓库技能

系统通过比对存储的来源标识符与上游包内容的当前哈希值,来发现版本差异。

聊天内斜杠命令

所有命令同样支持 /skills 形式:

/skills browse
/skills search react --source skills-sh
/skills search https://mintlify.com/docs --source well-known
/skills inspect skills-sh/vercel-labs/json-render/json-render-react
/skills install openai/skills/skill-creator --force
/skills check
/skills update
/skills list

官方可选技能仍使用 official/security/1passwordofficial/migration/openclaw-migration 等标识符。