第 19 課:分叉情境與進階技能
學習目標
完成本課程後,您將能夠:
- 瞭解分叉子代理情境
- 使用技能熱重載(2.1.x 自動!)
- 在技能 frontmatter 中組態情境分叉
- 設定回應語言偏好
- 在技能中指定代理
- 使用完整 frontmatter 建立進階技能
先決條件
- 已完成第 1-18 課 - 核心操作與代理團隊
- 技能經驗 - 建議先完成第 5 課
- Frontmatter 知識 - 基本 YAML/JSON 瞭解
預估時間: 35 分鐘
什麼是分叉情境?
分叉情境為子代理建立獨立的環境,讓它擁有自己的對話情境,同時維持對父代工具和檔案的存取。
概念:程序分叉
將分叉想像為您作業系統中的程序:
父程序(主要 Claude)
│
├─ 主要對話情境
├─ 完整對話歷史
└─ 存取所有工具
│
▼
fork()
│
┌────┴────┐
│ │
子程序 1 子程序 2
(分叉) (分叉)
│ │
└─ 新情境 └─ 新情境
└─ 乾�始化 └─ 乾淨開始
└─ 繼承 └─ 繼承
工具 工具
為何使用分叉情境?
好處:
- 乾淨開始 - 沒有父對話負擔的新情境
- 無干擾 - 父情境不會偏離子代理
- 專注執行 - 子代理只看到它需要的
- Token 效率 - 不重複對話歷史
- 可預測行為 - 子代理每次都重新開始
何時使用:
- 應該獨立執行的技能
- 需要乾淨情境的指令
- 執行特定任務的子代理
- 減少重複任務的 token 使用
何時不使用:
- 需要對話歷史的工作
- 相依於情境的操作
- 需要連續性的多步工作流程
技能熱重載(2.1.x 新增!)
什麼是熱重載?
2.1.x 之前:您必須重新啟動 Claude Code 才能看到技能變更。
2.1.x 及之後: 技能在修改時自動重新載入!
運作方式
自動偵測:
.claude/skills/
├── refactor.md
├── test.md
└── deploy.md
[您編輯 refactor.md]
Claude Code 偵測檔案變更 → 立即重新載入技能 → 技能準備好使用
支援的位置:
~/.claude/skills/- 使用者層級技能.claude/skills/- 專案層級技能- 巢狀
.claude/skills/- 子目錄技能
熱重載實作
之前(舊行為):
# 編輯技能檔案
vim ~/.claude/skills/refactor.md
# 重新啟動 Claude Code
exit
claude
# 現在技能已更新
之後(2.1.x 行為):
# 編輯技能檔案
vim ~/.claude/skills/refactor.md
# 技能立即可用!
# 無需重新啟動
即時範例:
您:編輯測試技能以包含覆蓋率報告
[您開啟 ~/.claude/skills/test.md]
[新增覆蓋率報告指示]
[儲存檔案]
Claude:我偵測到測試技能的更新。
技能已重新載入並準備好使用。
您:/test
Claude:[執行更新的測試技能並包含覆蓋率報告]
熱重載最佳實踐
-
立即測試技能變更
編輯技能 → 儲存 → 執行技能 → 驗證 -
快速反覆運算
# 開發迴圈
vim ~/.claude/skills/feature.md # 編輯
/feature # 測試
vim ~/.claude/skills/feature.md # 再次編輯
/feature # 再次測試 -
無需重新啟動
- 技能自動重新載入
- 保持 Claude Code 運作
- 專注於技能開發
組態分叉情境
context Frontmatter 欄位
技能可以在 frontmatter 中指定 context: fork:
---
context: fork
---
# 技能名稱
此技能在乾淨狀態的分叉情境中執行。
分叉 vs. 繼承情境
繼承情境(預設):
---
name: analyze-with-history
---
# 使用歷史分析
此技能看到完整的對話歷史。
使用時:先前訊息的情境很重要
分叉情境:
---
name: clean-task
context: fork
---
# 乾淨任務
此技能以新的情境開始。
使用時:您想要獨立、乾淨的執行
實作範例
範例 1:程式碼審查技能
---
name: code-review
context: fork
description:在沒有對話偏見的情況下審查程式碼
---
# 程式碼審查
您是一名程式碼審查者。客觀地審查提供的程式碼。
指南:
- 檢查錯誤和邊界情況
- 驗證錯誤處理
- 評估效能
- 建議改進
審查此程式碼:
{{code}}
不要參考先前的對話情境。只審查您看到的內容。
為何分叉? 審查應該是客觀的,不受先前討論的影響。
範例 2:除錯技能
---
name: debug
context: fork
description:以新鮮視角除錯問題
---
# 除錯
您是一名除錯者。調查回報的問題。
問題:{{issue}}
除錯步驟:
1. 重現問題
2. 識別根本原因
3. 提議解決方案
4. 驗證修正
重新開始 - 不要從先前的情境假設。
為何分叉? 避免來自先前除錯嘗試的假設。
範例 3:部署技能
---
name: deploy
description:部署到生產環境(使用對話情境)
---
# 部署
您正在部署到生產環境。
從我們對話中的情境:
- 我們已測試功能
- 所有測試通過
- 程式碼已審查
按照標準程序部署。
為何不分手? 部署相依於先前的測試和審查情境。
語言設定
組態回應語言
從 2.1.0 開始,您可以組態 Claude 的回應語言。
方法 1:設定檔
{
"language": "japanese"
}
方法 2:環境變數
export CLAUDE_LANGUAGE="spanish"
claude
方法 3:技能 frontmatter
---
name: francais
language: french
---
# Compétence en Français
始終用法文回應。
支援的語言
Claude 瞭解的任何語言:
- 英文(預設)
- 西班牙文
- 法文
- 德文
- 義大利文
- 葡萄牙文
- 荷蘭文
- 日文
- 簡體中文
- 繁體中文
- 韓文
- 俄文
- 阿拉伯文
- 印地文
- 以及更多...
語言範例
日文技能:
---
name: refactor-jp
language: japanese
description:日本語でリファクタリング
---
# リファクタリング
日本語でコードをリファクタリングします。
{{code}}
中文技能:
---
name: debug-zh
language: chinese
description:用中文調試代碼
---
# 調試
用中文幫你調試代碼。
問題:{{issue}}
多語言支援:
您:/refactor-jp
Claude:このコードをリファクタリングしましょう。
[將回應限制為日文]
您:/debug-zh
Claude:我來幫你調試這個問題。
[將回應限制為中文]
技能中的代理指定
agent 欄位
技能可以指定要使用的代理類型:
---
agent: general-purpose
model: claude-haiku-4-5
---
# 快速任務
使用 Haiku 執行這個快速、簡單的任務。
代理類型
可用的代理類型:
general-purpose- 預設,所有工具可用bash- 指令執行專家plan- 規劃和設計專家explore- 程式庫探索專家- 來自
.claude/agents/的自訂代理
代理 + 模型組合
快速執行(Haiku):
---
name: quick-fix
agent: general-purpose
model: claude-haiku-4-5
description:使用 Haiku 快速修正
---
# 快速修正
快速套用這個簡單的修正。
修正:{{fix_description}}
平衡(Sonnet):
---
name: feature
agent: general-purpose
model: claude-sonnet-4-5
description:功能實作
---
# 功能
使用 Sonnet 實作這個功能。
功能:{{feature_description}}
複雜推理(Opus):
---
name: architecture
agent: plan
model: claude-opus-4-5
description:使用 Opus 進行架構設計
---
# 架構
為這個複雜系統設計架構。
需求:{{requirements}}
Bash 專家:
---
name: run-tests
agent: bash
description:執行測試套件
---
# 執行測試
使用 bash 指令執行測試套件。
測試套件:{{test_path}}
進階技能 Frontmatter
完整 Frontatter 參考
---
# 基本
name: skill-name
description:單行描述
category: development
# 情境
context: fork # 或 "inherit"(預設)
# 代理
agent: general-purpose
model: claude-sonnet-4-5
# 語言
language: english
# 權限
allowed-tools:
- Read
- Edit
- Write
- Bash
# Hooks
hooks:
pre-tool: ./scripts/check.sh
post-tool: ./scripts/notify.sh
# 輸入(供使用者叫用的技能)
arguments:
- name: file
description:要處理的檔案
required: true
# 元資料
user-invocable: true
version: "1.0.0"
author:您的名字
tags:
- refactoring
- testing
---
# 技能內容
技能指示在這裡。
YAML 樣式清單(2.1.x 新增!)
舊樣式(JSON):
allowed-tools: ["Read", "Edit", "Write"]
新樣式(YAML):
allowed-tools:
- Read
- Edit
- Write
兩者都可行,但 YAML 更簡潔易讀。
僅一次 Hooks(2.1.x 新增!)
---
hooks:
pre-tool:
command: ./scripts/once.sh
once: true # 每個工作階段只執行一次
---
進階範例
範例 1:完整的重構技能
---
name: refactor-complete
description:全面的程式碼重構
category: development
context: fork
agent: general-purpose
model: claude-sonnet-4-5
allowed-tools:
- Read
- Edit
- Write
- Bash
user-invocable: true
tags:
- refactoring
- cleanup
- optimization
---
# 全面重構
全面重構提供的程式碼。
## 分析階段
1. 瞭解程式碼用途
2. 識別問題:
- 錯誤
- 效能問題
- 程式碼異味
- 安全漏洞
## 重構階段
1. 修正識別的問題
2. 改善結構
3. 新增文件
4. 最佳化效能
## 驗證階段
1. 執行測試
2. 驗證功能
3. 檢查回歸
要重構的程式碼:
{{code}}
以新鮮視角開始 - 不要從先前情境假設。
範例 2:多語言部署技能
---
name: deploy
description:部署應用程式
category: operations
language: japanese
agent: bash
allowed-tools:
- Bash
hooks:
pre-tool:
command: ./scripts/pre-deploy-check.sh
post-tool:
command: ./scripts/post-deploy-notify.sh
arguments:
- name: environment
description:目標環境(staging/production)
required: true
---
# デプロイ (Deploy)
アプリケーションをデプロイします。
環境:{{environment}}
手順:
1. 事前チェック
2. ビルド
3. デプロイ
4. 事後検証
5. 通知
實作範例:建立進階技能
讓我們使用所有這些功能建立一個全面的技能。
情境:自動化測試技能
需求:
- 分叉情境(乾淨的測試環境)
- 使用 Haiku 提高速度
- Bash 代理用於測試執行
- 熱重載用於快速反覆運算
- 前/後 hooks
步驟 1:建立初始技能
mkdir -p ~/.claude/skills
vim ~/.claude/skills/auto-test.md
步驟 2:撰寫 frontmatter 技能
---
name: auto-test
description:使用 Haiku 進行自動化測試
category: testing
context: fork
agent: bash
model: claude-haiku-4-5
allowed-tools:
- Bash
- Read
hooks:
pre-tool:
command: npm run lint
post-tool:
command: ./scripts/test-notify.sh
user-invocable: true
tags:
- testing
- automation
---
# 自動化測試
使用 Haiku 的速度執行自動化測試套件。
## 事前檢查
在測試之前自動執行 lint。
## 測試執行
執行完整測試套件:
```bash
npm test
分析
分析結果:
- 計算通過/失敗的測試
- 識別失敗的測試
- 總結問題
報告
傳送結果通知。
重新開始 - 只使用測試結果,不使用先前情境。
**步驟 3:測試並反覆運算(熱重載實作)**
```bash
# 執行技能
/auto-test
[技能執行,注意到缺少通知腳本]
# 編輯技能以修正
vim ~/.claude/skills/auto-test.md
# 新增缺少腳本的錯誤處理
[儲存 - 技能自動重新載入!]
# 再次執行
/auto-test
[技能現在正常運作]
步驟 4:增強技能
# 新增覆蓋率報告
vim ~/.claude/skills/auto-test.md
# 新增覆蓋率指示
[儲存 - 自動重新載入!]
# 測試增強版本
/auto-test
[現在包含覆蓋率報告]
✅ 檢查您的理解
-
分叉情境做什麼?
- 複製對話歷史
- 建立乾淨、獨立的情境
- 與父代共享情境
- 需要更多 token
-
True or False: 您需要在 2.1.x 中重新啟動 Claude Code 才能看到技能變更。
- True
- False(熱重載是自動的!)
-
如何在技能中設定回應語言?
-
lang: spanish -
language: spanish -
locale: spanish -
responseLanguage: spanish
-
-
什麼欄位在技能中指定代理類型?
-
agentType -
agent -
type -
useAgent
-
-
哪種情境模式最適合無偏見的程式碼審查?
- 繼承情境
- 分叉情境
- 無情境
- 共享情境
答案: 1-b, 2-False, 3-b, 4-b, 5-b
總結
在本課程中,您學到了:
- 分叉情境 - 獨立的子代理環境
- 技能熱重載 - 2.1.x 自動!
- 語言設定 - 組態回應語言
- 代理指定 - 選擇代理類型和模型
- 進階 frontmatter - 完整技能組態
下一步
在**第 20 課:2.1.x 進階功能**中,您將學到:
- 萬用字元權限模式
- 增強的 hooks 系統
- 工作階段分叉與倒轉
- 外部編輯器支援
- 增強的 vim 動作
- 任務相依性
進階閱讀
繼續到第 20 課:2.1.x 進階功能 →