AI 程式設計教程中文版
從原理到實戰

06 · Skills 系統

理解 Hermes skill、prompt、tool、memory 的邊界,以及本地正本、漸進載入、secure setup、Hub 安裝和 agent-managed skills。

Hermes 的 skill(技能)可複用能力包——一個 markdown 文件加上可選的指令碼、模板、參考資料、資原始檔。核心不是儲存提示詞,而是把"反覆執行、步驟穩定、需要材料和驗證"的工作流變成 agent 可以按需呼叫的能力包。

官方資料:Skills SystemCuratorSkills CatalogOptional Skills CatalogCreating Skillsagentskills.io

先給結論prompt 解決一次性指令,**tool(工具)**解決外部動作,**memory(記憶)**解決長期事實,**skill(技能)**解決可複用流程。不要把一句 prompt 包成 skill,也不要把流程塞進 memory——四件事各管不同尺度。

Skill 解決什麼

一次性任務不需要 skill。反覆出現、步驟穩定、需要材料和驗證的任務,才值得沉澱成 skill。

適合做 skill:

  • 跨專案重複出現。
  • 有明確觸發條件。
  • 有穩定步驟。
  • 有驗證方法。
  • 需要模板、指令碼、參考資料或外部 API。
  • 之前踩過坑,需要把正確路徑固定下來。

不適合做 skill:

  • 一次性任務。
  • 還沒跑透過的流程。
  • 只有一句提示詞。
  • 強依賴當前專案私有上下文。
  • 來源不可信但要求高許可權。

和其它能力的區別

Prompt

一次性指令,適合當前任務。

Tool

外部動作能力,例如讀檔案、執行命令、搜尋網頁。

Memory

長期事實和偏好,讓新 session 不從零開始。

Skill

可複用流程,包含觸發條件、步驟、材料和驗收。

判斷口訣:

会变的项目规则 -> 项目文档
长期稳定事实   -> memory
外部动作能力   -> tool
重复工作流程   -> skill
本次具体目标   -> prompt

本地正本

本地 skill 正本在:

~/.hermes/skills/

SKILL.md 是入口,大材料應該放到 references/templates/scripts/assets/,不要全部塞進主文件。

同名 skill 同時存在時,本地版本優先。外部目錄可以掃描,Hub 可以安裝,但真正可寫、可維護、可治理的正本是 ~/.hermes/skills/

漸進載入(progressive disclosure)

Hermes skills 使用 progressive disclosure(漸進載入)——只在需要時載入更詳細的層次:

flowchart TB
    L1["第 1 層:skill 元資訊<br/>名稱 / 描述 / category"]
    L2["第 2 層:SKILL.md<br/>觸發條件 / 步驟骨架 / 驗收"]
    L3["第 3 層:references / templates / scripts / assets<br/>詳細參考資料和指令碼"]
    L1 -->|"agent 判斷要用<br/>這個 skill"| L2
    L2 -->|"需要具體材料<br/>或要執行指令碼"| L3

這樣做是為了節省上下文。一個 skill 可以包含很多材料,但平時只把元資訊保留在視野裡——不會把所有 reference、template、script 都塞進每次的 prompt。否則裝 50 個 skill = system prompt 立刻爆炸。

新手寫 skill 時,要讓 SKILL.md 足夠短:說明何時使用、怎麼開始、需要什麼工具、有哪些坑、怎麼驗收。長材料(詳細案例、完整模板、長指令碼)放子目錄裡 agent 按需呼叫——這是漸進載入的設計意圖。

Secure setup 與金鑰

Skill 可以宣告 required environment variables。Hermes 會在本地 CLI 裡安全詢問缺失值,訊息平臺不會在聊天中索要 secret。

這很好,但也意味著一旦配置成功,skill 的指令碼和 sandbox 可能拿到對應 env var。安裝外部 skill 前必須檢查:

  • 它宣告瞭哪些變數。
  • 這些變數會不會進入 terminal 或 execute_code。
  • 指令碼是否會列印或外傳變數。
  • 是否真的需要這個許可權。

金鑰需求說不清的 skill,不應該安裝。

Agent-managed skills 與 Curator

Hermes 允許 agent 自己建立、修改或刪除本地 skill——這是 self-improving(自我改進)的核心入口之一,也是最容易失控的入口之一。配套機制是 Curator(策展器):後臺跑的輕量服務,負責按使用率、新鮮度、LLM 複審來管理 agent 自建 skill:

  • Usage tracking(使用率追蹤):哪些 skill 真的被用過,哪些只是寫出來後就再沒碰過。
  • Staleness(新鮮度):skill 內容是否長期沒更新、引用的工具/命令是否還存在。
  • Archival(歸檔):長期不用或過期的 skill 自動歸檔,不再載入到上下文。
  • LLM-driven review(LLM 複審):週期性用模型審查 skill 質量、是否冗餘、是否需要合併。

實踐建議:

  • 只讓跑過的成功流程沉澱——失敗流程不能進 skill 庫,否則下次還在錯的方向上反覆嘗試。
  • 小修用 patch(區域性補丁),不要整份重寫——重寫丟失上下文連續性。
  • Skill 裡不要硬編碼金鑰——Curator 不會替你脫敏,金鑰進了 skill 就長期在 prompt 裡裸奔。
  • 刪除或重新命名前確認依賴——其他 skill 或自動化任務可能還在引用。
  • 定期信任 Curator 的清理建議——但每次大批次歸檔前先人工抽查,避免誤歸。

自我改進不是讓 agent 隨便寫檔案,而是把驗證過的流程變成可維護、可審計的長期資產——Curator 是這個過程的守門員。

安裝外部 skill 的安全審查

外部 skill(來自 agentskills.io、Skills Hub 或 GitHub)安裝前至少做四步:

search(搜) -> inspect(审) -> small dry run(试) -> keep or uninstall(留或卸)

hermes skills inspect 是關鍵命令——它會告訴你這個 skill 宣告瞭哪些必需 env vars、要求哪些 toolset、會讀寫哪些檔案。

檢查重點(任一不清楚 = 不安裝):

  • SKILL.md 有沒有清楚的觸發條件驗收
  • 是否包含指令碼(bash / python / node)?指令碼做什麼?
  • 是否要求金鑰外部賬號?為什麼需要?
  • 是否需要 terminalbrowserfilemessaging 等高許可權 toolset?
  • 是否會修改本地檔案或發出網路請求
  • 是否來自可信來源?是否能更新和審計?

不理解的 skill 不用於高許可權任務——一條普通命令在錯誤上下文裡跑出來的破壞,跟一個高許可權 skill 誤觸發的破壞不是一個量級。

官方資料

下一步

本頁目錄