標籤: AI代理

  • 不只是 Prompt!Agent Skills 正悄悄統一 AI 助理,成為跨平台的超能力標準

    不只是 Prompt!Agent Skills 正悄悄統一 AI 助理,成為跨平台的超能力標準

    來源:NotebookLM
    摘要影片:https://youtu.be/JzskVI-wsT4

    當我們談論客製化 AI 助理時,大多數人的第一反應可能是「調整 Prompt」。然而,這種方法往往感覺像是隔靴搔癢,難以建立可重複、結構化的複雜工作流程。現在,一個名為「Agent Skills」(代理人技能)的強大標準正在改變這一切。它不僅提供了一種更結構化的方式來擴展 AI 的能力,更令人驚訝的是,它正迅速成為一個跨越不同公司和產品的通用語言。

    1. 驚喜的跨平台開放標準:AI 界的「通用語言」

    最令人意外的發現是:Agent Skills 並非某家公司的專有技術,而是一個開放標準,正被多家相互競爭的 AI 開發工具所採納。有趣的是,「Skills」這個名稱最初由 Anthropic 的 Claude 推廣,但其核心理念——一個可移植、結構化的能力封裝——正被各家以不同名稱採納,例如 Google Gemini 的「Extensions」或 OpenAI Codex 的 AGENTS.md 文件,但都遵循著相同的開放標準原則。這在當前 AI 領域各自為政的環境中,顯得尤為難得且影響深遠。

    支持此標準的 AI 代理和工具橫跨了業界的主要參與者,包括:

    • GitHub Copilot (根據官方文件,支援其編碼代理、CLI 及 VS Code Insiders)
    • Anthropic 的 Claude (包含 Claude Code、Claude.ai 和 API)
    • Google 的 Gemini CLI (目前為實驗性功能)
    • Cursor
    • OpenAI Codex (作為早期支援該模式的工具之一)

    這個開放標準的官方文檔位於 agentskills.io。更重要的是,一個蓬勃發展的跨平台社群生態系正在形成。例如,Hugging Face 的 skills 程式碼倉庫就明確指出其技能可與主流編碼代理工具互通,而 GitHub 自己的 github/awesome-copilot 專案也收錄了大量社群創建的技能。這種跨公司的標準化意味著開發者可以「一次編寫,到處使用」,為特定任務封裝的專業知識和工作流程將具備前所未有的可移植性。

    2. 為你的 Context Window 減壓:高效的「漸進式揭露」

    Agent Skills 的核心運作機制是一種稱為「漸進式揭露」(progressive disclosure) 的高效模式,它極大地節省了寶貴的 Context Window 空間。

    其運作方式如下:當 AI 代理啟動時,它只會載入每個可用技能的輕量級元數據,也就是 name (名稱) 和 description (描述)。完整的技能指令集 (SKILL.md 的內容) 和相關資源並不會立即被載入。只有當用戶的請求與某個技能的描述相符,該技能被「啟動」時,其詳細內容才會被注入到當前的對話上下文中。

    這與將所有客製化指令都塞進一個龐大的系統提示 (system prompt) 中的低效做法形成鮮明對比。根據 awesome-claude-skills 倉庫的資料,一個技能在被啟動前可能只佔用 30-50 個 token,這充分展示了其在管理上下文時的卓越效率。

    3. 最關鍵的一行程式碼:description 欄位是你的魔法棒

    SKILL.md 檔案中,最重要的部分出乎意料地不是指令本身,而是 YAML frontmatter 中的 description 欄位。這一行文字是決定你的技能能否在正確時機被觸發的關鍵。

    AI 代理會自主分析用戶的請求,並將其與所有可用技能的 description 進行比對。如果匹配成功,代理就會決定使用該技能。這個過程在文檔中被稱為「隱式調用」(implicit invocation) 或「自動發現」(automatic discovery)。

    這意味著,一個寫得精準、具體、包含用戶常用關鍵字的描述,遠比指令內容本身更能確保技能的成功啟動。例如,一個模糊的描述如「幫助處理文件」,遠不如「從 PDF 文件中提取文字和表格,填充表單,合併文檔」來得有效。對於任何想要打造自己技能的開發者來說,這是一個至關重要的洞見。

    4. 各司其職:何時用 Skills,何時用自訂指令?

    Agent Skills 和其他客製化方法,如「自訂指令」(例如 CLAUDE.mdGEMINI.md),並非相互取代,而是各司其職。理解它們的區別是有效運用 AI 助理的關鍵。

    根據源文件的定義,它們的用途涇渭分明:

    • 自訂指令 (Custom Instructions): 用於設定持續性、全域性的規則和指導方針。這些指令在幾乎所有對話中都應該生效,例如整個專案的編碼標準、程式碼風格指南或固定的輸出格式。
    • Agent Skills: 用於提供特定任務、按需取用的專業知識和可重複的工作流程。這些技能只在處理特定任務時被觸發,例如一套標準化的除錯流程、一份 PR 審查清單,或一個資料庫遷移的工作流程。

    一個簡單的比喻是:自訂指令就像是公司的「員工手冊」,為所有員工提供通用的行為準則;而 Agent Skills 則像是為特定專案聘請的「外部專家顧問」,只在需要其專業領域知識時才會介入。

    5. 層層疊加的專業知識:強大的範圍與優先級系統

    Agent Skills 的設計中包含一個強大的分層結構,允許技能在不同的「範圍」(scope) 內生效,並定義了明確的優先級規則。

    技能可以被儲存在不同的位置,從而決定其適用範圍:

    • 專案/工作區 (Project/Workspace) 技能: 儲存在專案目錄下 (例如 GitHub Copilot 的 .github/skills、Gemini 的 .gemini/skills 或 Claude 的 .claude/skills),通常會納入版本控制,與團隊共享。
    • 使用者/個人 (User/Personal) 技能: 儲存在使用者的家目錄下 (例如 ~/.copilot/skills~/.claude/skills),適用於該使用者所有的專案。
    • 系統/擴充功能 (System/Extension) 技能: 由 AI 工具本身或其擴充功能捆綁提供,適用範圍最廣。

    當不同範圍中存在同名技能時,優先級規則確保了行為的可預測性:更具體的範圍會覆蓋更通用的範圍。例如,專案技能會覆蓋使用者技能,而使用者技能會覆蓋系統技能。

    這個分層系統極具威力,它讓團隊可以建立標準化的工作流程 (專案技能),同時又賦予個別開發者根據個人偏好進行客製化或擴展的靈活性 (使用者技能)。

    結論

    Agent Skills 代表了 AI 協作模式的一次重要演進,從簡單的提示工程邁向了一個更結構化、可重用且具備互通性的新範式。它不僅為開發者提供了前所未有的能力來「教導」AI 如何以標準化方式完成複雜任務,其跨平台的開放標準特性更有可能在未來催生出一個繁榮的技能生態系統。

    隨著這個開放標準的發展,您會想打造什麼樣的專業技能來為您的工作流程賦能?

    附上心智圖

    同場加映

    SKILL.md 的 YAML 前言(Frontmatter)中,雖然各工具都遵循基礎標準,但 Claude Code 提供最豐富的進階控制欄位。

    Claude Code YAML 欄位定義

    根據官方文件,Claude Code 的欄位配置如下:

    欄位名稱是否必填說明與使用方式範例
    name技能唯一標識符,僅限小寫字母、數字與連字號,上限 64 字元。name: pr-reviewer
    description描述功能與觸發時機,上限 1024 字元。代理據此決定何時激活技能。description: 審查 PR 並檢查代碼規範。
    allowed-tools限制代理在技能激活時可用的工具。若省略則不限制。allowed-tools: Read, Grep, Glob
    model指定執行該技能時使用的特定 AI 模型。model: claude-sonnet-4-20250514
    context設置為 fork 時,技能會在獨立的子代理上下文中執行,不影響主對話。context: fork
    agentcontext: fork 時,可指定子代理類型(如 Explore, Plan)。agent: Plan
    hooks定義技能生命週期中的自動化腳本(如 PreToolUse, PostToolUse)。見下文說明
    user-invocable是否在斜線命令選單中顯示。預設為 trueuser-invocable: false
    disable-model-invocation設置為 true 可阻止代理自動發現並觸發此技能。disable-model-invocation: true

    其他 AI 工具的欄位差異與額外欄位

    其他工具通常僅支援基礎欄位,但有少數獨特定義:

    • GitHub Copilot:
      • license (選填):用於描述該技能適用的授權條款。
    • OpenAI Codex:
      • metadata (選填):可在其下定義 short-description,作為面向使用者的簡短說明。
    • Cursor & Antigravity:
      • name (選填):這兩個工具中 name 並非必填。若省略,系統會自動使用父資料夾名稱作為技能名稱。
    • Gemini CLI:
      • 主要遵循基礎標準(namedescription),並無 Claude 特有的 hooksfork 欄位。

    共通的核心機制

    儘管欄位略有不同,所有工具皆採用**漸進式披露(Progressive Disclosure)**機制:啟動時僅讀取 namedescription 以節省 Token,只有當任務匹配時才會加載完整的指令與資源。

    在撰寫 SKILL.md 的 YAML 前言時,VS Code (GitHub Copilot)Claude Code 都遵循基礎標準,但 Claude Code 提供了更多進階的控制欄位。

    VS Code (GitHub Copilot) 的 YAML 欄位

    VS Code 的配置相對簡約,主要聚焦於識別與觸發:

    • name (必填):唯一標識符,限小寫、數字與連字號,上限 64 字元。
    • description (必填):定義技能功能與觸發時機(Copilot 據此決定何時加載),上限 1024 字元。
    • license (選填):描述該技能適用的授權條款。

    Claude Code 的進階 YAML 欄位

    Claude Code 除了支援上述基礎欄位外,還增加了許多功能性控制:

    • allowed-tools:限制代理在技能激活時可使用的工具(例如只允許 ReadGrep),增加安全性。
    • context: fork:將技能放在獨立的「子代理」中執行,避免污染主對話歷史。
    • agent:配合 fork 使用,指定子代理類型(如 ExplorePlan)。
    • hooks:定義自動化腳本的觸發事件(如 PreToolUseStop)。
    • user-invocable:控制該技能是否顯示在 / 斜線命令選單中(預設為 true)。
    • disable-model-invocation:若設為 true,可阻止 Claude 自動發現並觸發此技能。

    核心差異總結

    特性VS Code (Copilot)Claude Code
    主要定位任務導向的指令擴充高度自動化的工作流控制
    工具限制不支援限制工具可透過 allowed-tools 精確限制
    環境隔離始終在當前對話中加載可透過 fork 建立獨立執行環境
    生命週期無特定事件處理可透過 hooks 執行前後置腳本