跳到主要内容

技能系统

技能是代理在需要时可以加载的按需知识文档。它们遵循渐进式披露模式,以最小化令牌使用量,并且兼容 agentskills.io 开放标准。

所有技能都位于 ~/.hermes/skills/ —— 这是主目录和唯一可信源。在全新安装时,捆绑的技能会从代码仓库复制到此目录。从中心安装的以及代理创建的技能也会放在这里。代理可以修改或删除任何技能。

你也可以将 Hermes 指向外部技能目录——这些是除了本地目录外还会被扫描的额外文件夹。请参阅下面的外部技能目录

另请参阅:

使用技能

每个已安装的技能都会自动作为一个斜杠命令可用:

# 在 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 在需要时检查上下文,编写一个 Markdown 实施计划而不是执行任务,并将结果保存在相对于活动工作空间/后端工作目录的 .hermes/plans/ 下。

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

hermes chat --toolsets skills -q "你有什么技能?"
hermes chat --toolsets skills -q "给我看看 axolotl 技能"

渐进式披露

技能使用一种节省令牌的加载模式:

Level 0: skills_list()           → [{name, description, category}, ...]   (~3k tokens)
Level 1: skill_view(name) → 完整内容 + 元数据 (可变)
Level 2: skill_view(name, path) → 特定的参考文件 (可变)

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

SKILL.md 格式

---
name: my-skill
description: 此技能功能的简要描述
version: 1.0.0
platforms: [macos, linux] # 可选——限制在特定的操作系统平台
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # 可选——条件激活(见下文)
requires_toolsets: [terminal] # 可选——条件激活(见下文)
---

# 技能标题

## 何时使用
此技能的触发条件。

## 步骤
1. 第一步
2. 第二步

## 常见问题
- 已知的失败模式及修复方法

## 验证
如何确认它已成功。

平台特定技能

技能可以使用 platforms 字段限制自己只在特定的操作系统上运行:

匹配
macosmacOS (Darwin)
linuxLinux
windowsWindows
platforms: [macos]            # 仅 macOS (例如,iMessage, Apple Reminders, FindMy)
platforms: [macos, linux] # macOS 和 Linux

当设置此字段时,技能会在不兼容的平台上自动从系统提示、skills_list() 和斜杠命令中隐藏。如果省略,技能将在所有平台上加载。

条件激活(备用技能)

技能可以根据当前会话中可用的工具自动显示或隐藏自己。这对于备用技能最为有用——这些是免费或本地的替代方案,应该只在高级工具不可用时才出现。

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 密钥缺失,web 工具集不可用,DuckDuckGo 技能会自动作为备用方案出现。

没有任何条件字段的技能行为与之前完全一样——它们总是显示。

加载时的安全设置

技能可以声明所需的环境变量,而不会从发现列表中消失:

required_environment_variables:
- name: TENOR_API_KEY
prompt: Tenor API 密钥
help: 从 https://developers.google.com/tenor 获取密钥
required_for: 完整功能

当遇到缺失的值时,Hermes 仅在技能实际在本地 CLI 中加载时才会安全地询问。你可以跳过设置并继续使用该技能。消息界面永远不会在聊天中询问密钥——它们会告诉你在本地使用 hermes setup~/.hermes/.env

一旦设置,声明的环境变量会自动传递execute_codeterminal 沙箱——技能的脚本可以直接使用 $TENOR_API_KEY。对于非技能的环境变量,请使用 terminal.env_passthrough 配置选项。详情请参阅环境变量传递

技能目录结构

~/.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 之外维护技能——例如,一个被多个 AI 工具共享的 ~/.agents/skills/ 目录——你可以告诉 Hermes 也扫描这些目录。

~/.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 会忽略它而不报错。这对于可能并非每台机器上都存在的可选共享目录很有用。

示例

~/.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 工具创建、更新和删除自己的技能。这是代理的程序性记忆——当它弄清楚一个非平凡的工作流程时,它会将该方法保存为一个技能以供将来重用。

代理何时创建技能

  • 成功完成复杂任务(5 次以上工具调用)后
  • 当它遇到错误或死胡同并找到可行路径时
  • 当用户纠正其方法时
  • 当它发现一个非平凡的工作流程时

操作

操作用途关键参数
create从头创建新技能name, content (完整的 SKILL.md),可选的 category
patch针对性修复(推荐)name, old_string, new_string
edit主要结构重写name, content (完整的 SKILL.md 替换)
delete完全移除技能name
write_file添加/更新支持文件name, file_path, file_content
remove_file移除支持文件name, file_path
提示

patch 操作是推荐的更新方式——它比 edit 更节省令牌,因为只有更改的文本会出现在工具调用中。

技能中心

从在线注册中心、skills.sh、直接已知技能端点以及官方可选技能中浏览、搜索、安装和管理技能。

常用命令

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 源

支持的技能中心来源

来源示例说明
officialofficial/security/1password随 Hermes 分发的可选技能。
skills-shskills-sh/vercel-labs/agent-skills/vercel-react-best-practices可通过 hermes skills search <query> --source skills-sh 搜索。当 skills.sh 的别名与仓库文件夹不同时,Hermes 会解析别名风格的技能。
well-knownwell-known:https://mintlify.com/docs/.well-known/skills/mintlify直接从网站的 /.well-known/skills/index.json 提供的技能。使用网站或文档 URL 进行搜索。
githubopenai/skills/k8s直接 GitHub 仓库/路径安装和自定义源。
clawhub, lobehub, claude-marketplace特定来源的标识符社区或市场集成。

集成的中心和注册中心

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

1. 官方可选技能 (official)

这些技能在 Hermes 仓库内部维护,安装时自带信任度。

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

2. skills.sh (skills-sh)

这是 Vercel 的公共技能目录。Hermes 可以直接搜索它,查看技能详情页面,解析别名形式的短名称,并从底层的源码仓库安装。

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 的网站获取。它不是单一的中心化枢纽,而是网络发现约定。

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 可以直接从 GitHub 仓库和基于 GitHub 的 taps 安装。当你已经知道仓库/路径或者想添加自己的自定义源仓库时,这很有用。

默认 taps(无需设置即可浏览):

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

5. ClawHub (clawhub)

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

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

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

已知的集成源包括:

Hermes 源标识:claude-marketplace

7. LobeHub (lobehub)

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

安全扫描与 --force

所有通过 hub 安装的技能都会经过一个安全扫描器的检查,它会检测数据窃取、提示注入、破坏性命令、供应链信号和其他威胁。

hermes skills inspect ... 现在也会在有可用信息时展示上游元数据:

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

当你已经审查了一个第三方技能并想覆盖一个非危险的政策阻止时,请使用 --force

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

重要行为:

  • --force 可以覆盖针对谨慎/警告类发现的政策阻止。
  • --force 不会覆盖 dangerous 扫描裁决。
  • 官方可选技能 (official/...) 被视为自带信任,不会显示第三方警告面板。

信任级别

级别来源策略
builtinHermes 自带始终信任
official仓库内的 optional-skills/自带信任,无第三方警告
trusted受信任的注册表/仓库,例如 openai/skills, anthropics/skills比社区源更宽松的策略
community其他一切 (skills.sh, 知名端点, 自定义 GitHub 仓库, 大多数市场)非危险发现可以用 --force 覆盖;dangerous 裁决保持阻止

更新生命周期

hub 现在会追踪足够的来源信息,以重新检查已安装技能的在线副本:

hermes skills check          # 报告哪些已安装的 hub 技能在上游发生了变化
hermes skills update # 仅重新安装有可用更新的技能
hermes skills update react # 更新一个特定的已安装 hub 技能

这使用了存储的源标识加上当前上游 bundle 内容哈希来检测变更。

斜杠命令(在聊天中)

所有相同的命令都可以通过 /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 这样的标识符。