跳至主要內容

Claude Code 架構深度分析:Skills 系統設計

Claude Code 架構深度分析:Skills 系統設計

你是否好奇,為什麼 Claude Code 能夠如此靈活地適應各種開發任務?為什麼只需要編輯 Markdown 文件,就能讓 AI 助手學會新的技能?

這不是魔法,而是精心設計的架構。當大多數 AI 工具還在依賴硬編碼的提示詞時,Claude Code 已經建立了一套完整的配置驅動系統。這套系統不僅讓開發者能夠自由擴展功能,更重要的是,它用一種優雅的方式解決了 AI 工具最大的痛點:如何讓 AI 持續學習新知識,而不需要重新訓練模型。

這篇文章將帶你深入 Claude Code 的核心架構,探索 Skills 系統的設計哲學,理解配置驅動開發如何改變 AI 工具的遊戲規則。

Claude Code 的多層架構設計

Claude Code 的強大並非來自單一技術,而是建立在精心設計的多層架構之上。這個架構就像一座精密的建築,每一層都有明確的職責,層與層之間通過清晰的介面溝通。

整個系統分為四個主要層級:

graph TB subgraph "應用層 Application Layer" CLI[CLI 命令列介面] IDE[IDE 整合] end subgraph "能力擴展層 Capability Layer" Skills[Skills 系統] Commands[Commands] Agents[Agents] Hooks[Hooks] end subgraph "整合層 Integration Layer" MCP[MCP 協議] Plugins[Plugins 系統] end subgraph "執行層 Execution Layer" Tools[工具調用] Permissions[權限管理] Context[上下文管理] end CLI --> Skills IDE --> Skills Skills --> MCP Commands --> Tools Agents --> Permissions Hooks --> Context MCP --> Tools Plugins --> Tools

應用層負責使用者互動,包括 CLI 命令列介面和 IDE 整合。這一層的設計原則是簡潔直觀,讓開發者能夠快速上手。

能力擴展層是 Claude Code 的核心創新所在。Skills、Commands、Agents 和 Hooks 共同組成了一個強大的能力體系。這一層定義了「Claude Code 能做什麼」,而且完全通過配置文件來管理。

整合層負責連接外部資源。MCP(Model Context Protocol)協議讓 Claude Code 可以整合任何工具和 API,Plugins 系統則提供了模組化的擴展機制。

執行層處理實際的工具調用、權限管理和上下文管理。這一層確保所有操作都在安全、可控的環境中執行。

這種分層設計最大的優勢是關注點分離(Separation of Concerns)。當你想要修改 AI 的行為時,只需要編輯能力擴展層的配置文件,完全不需要碰觸底層的執行邏輯。這就是配置驅動開發的威力。

Skills 系統:用 Markdown 賦予 AI 專業知識

Skills 是整個 Claude Code 架構中最具革命性的設計。它的核心理念非常簡單:用 Markdown 文件來教 AI 如何完成特定任務

傳統的 AI 工具需要你每次都重複說明背景和規則。今天你讓它審查代碼,需要解釋代碼審查的標準;明天你讓它寫文檔,又需要重新說明文檔格式。這不僅浪費時間,也容易出現不一致。

Skills 系統徹底改變了這個流程。你可以把代碼審查的標準、文檔格式、安全檢查清單,全部寫在一個 Markdown 文件裡。當你下次請求相關任務時,Claude Code 會自動激活對應的 Skill,就像一個訓練有素的專業人員,立即知道該做什麼。

Skills 的組織結構

Skills 採用階層式的組織結構,支援四個不同的層級:

  1. 專案層級.claude/skills/):專案特定的 Skills,優先級最高
  2. 使用者層級~/.claude/skills/):個人偏好的 Skills,跨專案共享
  3. 企業層級:組織統一部署的 Skills
  4. Plugin 層級:第三方 Plugin 捆綁的 Skills

這個設計非常巧妙。專案層級的 Skills 可以覆蓋全域設定,讓你在不同專案中使用不同的標準。同時,使用者層級的 Skills 讓你可以建立個人的最佳實踐庫,在所有專案中復用。

Skills 的自動激活機制

Skills 最神奇的地方在於它的自動激活機制。當你輸入一個請求時,Claude Code 會進行語義分析,自動找到最相關的 Skill 並注入到系統提示中。

這個過程包含幾個關鍵階段:

sequenceDiagram participant User as 使用者 participant CLI as CLI participant Indexer as Skill Indexer participant Matcher as Semantic Matcher participant Claude as Claude AI User->>CLI: 輸入請求 Note over CLI: "幫我審查這段代碼" CLI->>Indexer: 掃描 Skills Note over Indexer: 發現階段 Indexer->>Indexer: 建立索引 Note over Indexer: 索引階段 CLI->>Matcher: 分析使用者輸入 Matcher->>Matcher: 語義分析 Note over Matcher: 匹配階段 Matcher->>Claude: 注入匹配的 Skill Note over Claude: 注入階段 Claude->>Claude: 遵循 Skill 流程 Note over Claude: 執行階段 Claude->>User: 返回結果

  1. 發現階段:啟動時掃描所有 SKILL.md 文件
  2. 索引階段:建立名稱和描述的索引
  3. 匹配階段:根據使用者輸入進行語義分析
  4. 注入階段:將匹配的 Skill 注入系統提示
  5. 執行階段:Claude 遵循 Skill 中定義的流程和規則

這意味著你不需要記住每個 Skill 的名稱,只需要自然地描述你的需求,系統就會自動找到對應的專業知識。

配置驅動 vs 代碼驅動:一場範式轉移

Claude Code 的設計哲學是配置驅動,這與傳統的代碼驅動方法形成了鮮明對比。

在傳統方法中,如果你想改變 AI 的行為,需要修改代碼、重新編譯、部署更新。這個流程不僅繁瑣,還需要編程知識。

配置驅動的方法則完全不同:

  • 即時生效:編輯 Markdown 文件後立即可用,無需重啟
  • 低門檻:只需要會寫 Markdown,不需要編程知識
  • 易分享:複製一個文件就能分享你的 Skill
  • Git 友好:純文字文件,完美支援版本控制

這不僅僅是技術細節的差異,而是一種思維方式的轉變。配置驅動讓「教 AI 新技能」變成了一件輕鬆的事情,任何人都可以做到。

權限管理:三層防護體系

強大的功能需要配套的安全機制。Claude Code 實現了一套三層權限管理系統。

graph LR subgraph "全域層級 Global" G1[允許的工具] G2[禁止的工具] end subgraph "專案層級 Project" P1[專案允許] P2[專案禁止] end subgraph "組件層級 Component" C1[Skill 聲明] C2[權限檢查] end G1 --> P1 G2 --> P2 P1 --> C1 C1 --> C2 style G2 fill:#ff6b6b style P2 fill:#ffa06b style C2 fill:#4ecdc4

全域層級的權限控制哪些工具在整個系統中可用。這是最基本的安全防線,確保危險操作不會被意外執行。

專案層級的權限讓你可以針對特定專案放寬或收緊限制。比如,在一個需要訪問外部 API 的專案中,你可以允許 WebFetch 工具,但在其他專案中保持禁用。

組件層級的權限則更加細粒度。每個 Skill 可以聲明它需要哪些工具,系統會根據這個聲明進行權限檢查。

這套權限系統遵循最少權限原則(Principle of Least Privilege)。從最小權限開始,按需添加,定期審計,記錄變更原因。這確保了系統既靈活又安全。

Sub-agents:隔離執行的專門化助手

Sub-agents 是 Claude Code 中另一個重要的設計。它們就像專門化的助手,負責處理複雜的子任務。

最重要的一點是:Sub-agents 不從父對話繼承 Skills

這個設計看似增加了配置的複雜度,但實際上是深思熟慮的結果:

  1. 明確性:你清楚知道每個 Agent 確切擁有什麼能力
  2. 可預測性:Agent 的行為不會受到父對話的影響
  3. 安全性:防止意外的權限傳遞

這種顯式配置的方式,讓系統更加可靠和可維護。

Hooks:事件驅動的自動化

Hooks 系統提供了完整的生命週期控制。你可以在工具調用前後、提示詞提交時、對話開始和結束時執行自定義邏輯。

stateDiagram-v2 [*] --> ConversationStart: 對話開始 ConversationStart --> PrePromptSubmit: pre-conversation-start Hook PrePromptSubmit --> PromptSubmit: 提交提示詞 PromptSubmit --> PostPromptSubmit: user-prompt-submit Hook PostPromptSubmit --> PreToolUse: AI 決定調用工具 PreToolUse --> ToolExecution: pre-tool-use Hook ToolExecution --> PostToolUse: 工具執行 PostToolUse --> Response: post-tool-use Hook Response --> ConversationEnd: 返回結果 ConversationEnd --> [*]: post-conversation-end Hook

這開啟了無限的可能性:

  • 自動檢查:在提交提示詞前檢查敏感資訊
  • 日誌記錄:追蹤所有工具調用,用於審計
  • 格式化:自動調整輸入輸出格式
  • 通知:在關鍵操作完成後發送通知

Hooks 讓 Claude Code 從一個互動式工具,變成了一個可以完全自動化的系統。

如何開始實踐

理解了架構,下一步就是動手實踐。以下是一些具體的行動建議:

從建立第一個 Skill 開始。選擇一個你經常重複的任務,比如代碼審查或文檔生成,把你的標準和流程寫成 Markdown。不需要追求完美,先讓它工作起來。

使用階層式組織。把通用的 Skills 放在使用者層級,專案特定的 Skills 放在專案層級。這樣可以在保持一致性的同時,獲得靈活性。

善用 @file 引用。不要把所有內容都塞在一個文件裡。使用漸進式披露的方式,主 SKILL.md 保持精簡,詳細內容放在支援文件中。

設定明確的權限。為每個 Skill 聲明 allowed-tools,遵循最少權限原則。這不僅提高安全性,也讓 Skill 的行為更加可預測。

版本管理你的 Skills。使用 Git 追蹤 Skills 的變化,在 frontmatter 中記錄版本號和變更日誌。這讓你可以安心地迭代和實驗。

善用 Hooks 自動化檢查。設定 pre-prompt-submit Hook 來檢查敏感資訊,設定 post-tool-use Hook 來記錄日誌。讓系統自動保護你。

探索 MCP 整合。如果你需要整合外部工具或 API,研究 MCP 協議。它提供了標準化的介面,讓整合變得簡單。

組合多個 Skills。不要害怕讓多個 Skills 同時激活。它們可以協同工作,就像一個專業團隊一樣。

配置驅動的未來

Claude Code 的架構設計為我們展示了 AI 工具的一個可能方向:不是讓 AI 越來越複雜,而是讓它越來越可配置、可擴展、可控制。

配置驅動勝過代碼驅動,因為它降低了門檻,讓更多人可以參與到 AI 能力的定義中。

組合勝過單體,因為 Skills + Agents + Hooks + MCP 的組合可以創造出無限的可能性。

隔離勝過共享,因為明確的邊界和顯式的配置,讓系統更加可靠和安全。

這不僅僅是技術架構的選擇,更是一種設計哲學。它相信簡單的組件可以組合出複雜的系統,相信配置可以勝過代碼,相信開放的生態可以勝過封閉的平台。

當你開始使用 Claude Code,你不只是在使用一個工具,你是在參與一種新的開發範式。一種讓 AI 成為真正可編程、可擴展、可信賴的助手的範式。

如果這篇文章激發了你對 AI 工具架構的興趣,歡迎訂閱我的 Newsletter。我會定期分享關於開發工具、生產力系統、技術架構的深度思考,幫助你建立更高效的工作流程。