技能系統
技能是按需加載的知識文檔,Agent 在需要時可將其載入。它們遵循 漸進披露 模式,以最小化 token 使用量,並與 agentskills.io 開放標準兼容。
所有技能均位於 ~/.hermes/skills/ —— 主目錄及數據源。在全新安裝時,捆綁的技能會從代碼倉庫複製過來。通過 Hub 安裝或 Agent 創建的技能也存放於此。Agent 可以修改或刪除任意技能。
你也可以讓 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
# 只需輸入 skill 名稱即可加載它,並讓 agent 詢問您需要什麼:
/excalidraw
捆綁的 plan 技能是技能驅動的斜槓命令的優秀示例,具有自定義行為。運行 /plan [request] 會指示 Hermes 檢查上下文(如需要),生成 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)
Agent 僅在真正需要時才加載完整的技能內容。
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 標題
## 何時使用
Trigger conditions for this skill.
## 操作步驟
1. Step one
2. Step two
## 常見陷阱
- Known failure modes and fixes
## 驗證方式
How to confirm it worked.
平臺特定技能
技能可通過 platforms 字段限制自身僅在特定操作系統上運行:
| 值 | 匹配 |
|---|---|
macos | macOS (Darwin) |
linux | Linux |
windows | Windows |
platforms: [macos] # 僅限 macOS(例如 iMessage、Apple 提醒、FindMy)
platforms: [macos, linux] # macOS 和 Linux
設置後,該技能在不兼容的平臺上將自動從系統提示、skills_list() 和斜槓命令中隱藏。若省略此字段,技能將在所有平臺上加載。
條件激活(備用技能)
技能可根據當前會話中可用的工具自動顯示或隱藏自身。這在 備用技能 中最為有用——即免費或本地替代方案,僅在高級工具不可用時才出現。
metadata:
hermes:
fallback_for_toolsets: [web] # 當這些 toolsets 不可用時顯示 ONLY
requires_toolsets: [terminal] # 當這些 toolsets 可用時顯示 ONLY
fallback_for_tools: [web_search] # 當這些特定的 tools 不可用時顯示 ONLY
requires_tools: [terminal] # 當這些特定的 tools 可用時顯示 ONLY
| 字段 | 行為 |
|---|---|
fallback_for_toolsets | 當列出的工具集可用時,該技能被 隱藏;缺失時顯示。 |
fallback_for_tools | 同上,但檢查的是單個工具而非工具集。 |
requires_toolsets | 當列出的工具集不可用時,該技能被 隱藏;存在時顯示。 |
requires_tools | 同上,但檢查的是單個工具。 |
示例: 內置的 duckduckgo-search 技能使用 fallback_for_toolsets: [web]。當你設置了 FIRECRAWL_API_KEY 時,網絡工具集可用,Agent 將使用 web_search —— DuckDuckGo 技能保持隱藏。若 API 密鑰缺失,網絡工具集不可用,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 僅在本地 CLI 中實際加載該技能時安全地詢問你。你可以跳過設置並繼續使用該技能。消息界面從不在聊天中請求密鑰——而是提示你使用 hermes setup 或本地 ~/.hermes/.env。
一旦設置,聲明的環境變量將 自動傳遞 給 execute_code 和 terminal 沙箱——技能腳本可直接使用 $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
配置項存儲在 skills.config 下的 config.yaml 中。hermes config migrate 會提示你配置未設置的項,hermes config show 會顯示它們。當技能加載時,其解析後的配置值會被注入上下文,使 Agent 能自動知曉已配置的值。
詳情請見 技能設置 和 創建技能 —— 配置設置。
技能目錄結構
~/.hermes/skills/ # 單一事實來源
├── mlops/ # 類別目錄
│ ├── axolotl/
│ │ ├── SKILL.md # 主要說明(必填)
│ │ ├── references/ # 附加文檔
│ │ ├── templates/ # 輸出格式
│ │ ├── scripts/ # 可從 skill 調用的幫助程序腳本
│ │ └── assets/ # 補充文件
│ └── vllm/
│ └── SKILL.md
├── devops/
│ └── deploy-k8s/ # Agent-創建skill
│ ├── SKILL.md
│ └── references/
├── .hub/ # Skills 集線器狀態
│ ├── lock.json
│ ├── quarantine/
│ └── audit.log
└── .bundled_manifest # 跟蹤種子捆綁 skills
外部技能目錄
如果你在 Hermes 之外維護技能——例如,一個由多個 AI 工具共享的 ~/.agents/skills/ 目錄——你可以告訴 Hermes 也掃描這些目錄。
在 ~/.hermes/config.yaml 的 skills 部分添加 external_dirs:
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills
路徑支持 ~ 展開和 ${VAR} 環境變量替換。
工作原理
- 只讀模式:外部目錄僅用於技能發現。當 Agent 創建或編輯技能時,始終寫入
~/.hermes/skills/目錄。 - 本地優先:如果同一技能名稱同時存在於本地目錄和外部目錄中,本地版本具有優先權。
- 完全集成:外部技能會出現在系統提示索引、
skills_list、skill_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 的新技能,它將覆蓋外部版本。
Agent 管理的技能(skill_manage 工具)
Agent 可通過 skill_manage 工具自行創建、更新和刪除技能。這是 Agent 的程序性記憶——當它發現一個非平凡的工作流時,會將其方法保存為技能以供未來複用。
Agent 創建技能的時機
- 成功完成一個複雜任務(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,它更節省 token,因為只有變更的文本會出現在工具調用中。
技能中心
從在線註冊表、skills.sh、知名技能端點以及官方可選技能中瀏覽、搜索、安裝和管理技能。
常用命令
hermes skills browse # 瀏覽所有hub skills(官方優先)
hermes skills browse --source official # 僅瀏覽官方可選skills
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 # 列出集線器安裝的 skills
hermes skills check # 檢查已安裝的集線器 skills 的上游更新
hermes skills update # 需要時重新安裝集線器 skills 並進行上游更改
hermes skills audit # 重新掃描所有集線器 skills 以確保安全
hermes skills uninstall k8s # 拆下輪轂 skill
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills snapshot export setup.json # 導出skill配置
hermes skills tap add myorg/skills-repo # 添加自定義 GitHub 源
支持的中心源
| 源 | 示例 | 說明 |
|---|---|---|
official | official/security/1password | 隨 Hermes 一起發佈的可選技能。 |
skills-sh | skills-sh/vercel-labs/agent-skills/vercel-react-best-practices | 可通過 hermes skills search <query> --source skills-sh 搜索。當 skills.sh 的別名 slug 與倉庫文件夾名稱不同時,Hermes 會自動解析。 |
well-known | well-known:https://mintlify.com/docs/.well-known/skills/mintlify | 從網站的 /.well-known/skills/index.json 直接提供技能。可通過站點或文檔 URL 進行搜索。 |
github | openai/skills/k8s | 直接從 GitHub 倉庫/路徑安裝,支持自定義 tap。 |
clawhub、lobehub、claude-marketplace | 源特定標識符 | 社區或市場集成。 |
已集成的中心與註冊表
Hermes 目前集成了以下技能生態系統和發現源:
1. 官方可選技能(official)
這些技能維護在 Hermes 倉庫內部,安裝時自帶信任機制。
- 目錄:官方可選技能目錄
- 倉庫路徑:
optional-skills/ - 示例:
hermes skills browse --source official
hermes skills install official/security/1password
2. skills.sh(skills-sh)
這是 Vercel 的公共技能目錄。Hermes 可直接搜索、查看技能詳情頁、解析別名風格的 slug,並從底層源倉庫安裝。
- 目錄:skills.sh
- CLI/工具倉庫:vercel-labs/skills
- 官方 Vercel 技能倉庫:vercel-labs/agent-skills
- 示例:
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 的網站。這不是單一的中心化樞紐,而是一種網絡發現約定。
- 示例實時端點:Mintlify 文檔技能索引
- 參考服務器實現:vercel-labs/skills-handler
- 示例:
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 的 tap 安裝技能。當你已知倉庫路徑或希望添加自己的自定義源倉庫時非常有用。
默認 tap(無需任何配置即可瀏覽):
hermes skills install openai/skills/k8s
hermes skills tap add myorg/skills-repo
5. ClawHub(clawhub)
第三方技能市場,作為社區源集成。
- 網站:clawhub.ai
- Hermes 源 ID:
clawhub
6. Claude 市場風格倉庫(claude-marketplace)
Hermes 支持發佈與 Claude 兼容的插件/市場清單的市場倉庫。
已集成的來源包括:
Hermes 源 ID:claude-marketplace
7. LobeHub(lobehub)
Hermes 可以搜索並轉換 LobeHub 公共目錄中的 Agent 條目,將其轉換為可安裝的 Hermes 技能。
- 網站:LobeHub
- 公共 Agent 索引:chat-agents.lobehub.com
- 後端倉庫:lobehub/lobe-chat-agents
- Hermes 源 ID:
lobehub
安全掃描與 --force
所有通過 hub 安裝的技能都會經過一個 安全掃描,檢查數據外洩、提示注入、破壞性命令、供應鏈信號以及其他威脅。
hermes skills inspect ... 現在還會在可用時顯示上游元數據:
- 倉庫 URL
- skills.sh 詳情頁面 URL
- 安裝命令
- 每週安裝量
- 上游安全審計狀態
- 著名索引/端點 URL
當你已審查第三方技能並希望覆蓋非危險性策略阻斷時,請使用 --force:
hermes skills install skills-sh/anthropics/skills/pdf --force
重要行為:
--force可覆蓋“謹慎/警告”類發現的策略阻斷。--force不會覆蓋“危險”掃描結論。- 官方可選技能(
official/...)被視為內置信任,不會顯示第三方警告面板。
信任等級
| 等級 | 來源 | 策略 |
|---|---|---|
builtin | 隨 Hermes 一同發佈 | 始終信任 |
official | 倉庫中的 optional-skills/ 目錄 | 內置信任,不顯示第三方警告 |
trusted | 受信任的註冊表/倉庫,如 openai/skills、anthropics/skills | 策略比社區來源更寬鬆 |
community | 其他所有來源(skills.sh、知名端點、自定義 GitHub 倉庫、大多數市場) | 非危險發現可使用 --force 覆蓋;“危險”結論仍被阻止 |
更新生命週期
現在 hub 能夠追蹤足夠的溯源信息,以重新檢查已安裝技能的上游副本:
hermes skills check # 報告安裝的集線器 skills 更改了上游
hermes skills update # 僅重新安裝有可用更新的 skills
hermes skills update react # 更新某一已安裝的特定集線器 skill
此功能使用存儲的源標識符以及當前上游捆綁包內容哈希來檢測漂移。
斜槓命令(在聊天中)
所有相同的命令都支持 /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/1password 和 official/migration/openclaw-migration 這樣的標識符。