Skip to main content

第 19 課:分叉情境與進階技能

學習目標

完成本課程後,您將能夠:

  • 瞭解分叉子代理情境
  • 使用技能熱重載(2.1.x 自動!)
  • 在技能 frontmatter 中組態情境分叉
  • 設定回應語言偏好
  • 在技能中指定代理
  • 使用完整 frontmatter 建立進階技能

先決條件

  • 已完成第 1-18 課 - 核心操作與代理團隊
  • 技能經驗 - 建議先完成第 5 課
  • Frontmatter 知識 - 基本 YAML/JSON 瞭解

預估時間: 35 分鐘


什麼是分叉情境?

分叉情境為子代理建立獨立的環境,讓它擁有自己的對話情境,同時維持對父代工具和檔案的存取。

概念:程序分叉

將分叉想像為您作業系統中的程序:

父程序(主要 Claude)

├─ 主要對話情境
├─ 完整對話歷史
└─ 存取所有工具


fork()

┌────┴────┐
│ │
子程序 1 子程序 2
(分叉) (分叉)
│ │
└─ 新情境 └─ 新情境
└─ 乾�始化 └─ 乾淨開始
└─ 繼承 └─ 繼承
工具 工具

為何使用分叉情境?

好處:

  1. 乾淨開始 - 沒有父對話負擔的新情境
  2. 無干擾 - 父情境不會偏離子代理
  3. 專注執行 - 子代理只看到它需要的
  4. Token 效率 - 不重複對話歷史
  5. 可預測行為 - 子代理每次都重新開始

何時使用:

  • 應該獨立執行的技能
  • 需要乾淨情境的指令
  • 執行特定任務的子代理
  • 減少重複任務的 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:[執行更新的測試技能並包含覆蓋率報告]

熱重載最佳實踐

  1. 立即測試技能變更

    編輯技能 → 儲存 → 執行技能 → 驗證
  2. 快速反覆運算

    # 開發迴圈
    vim ~/.claude/skills/feature.md # 編輯
    /feature # 測試
    vim ~/.claude/skills/feature.md # 再次編輯
    /feature # 再次測試
  3. 無需重新啟動

    • 技能自動重新載入
    • 保持 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

[現在包含覆蓋率報告]

✅ 檢查您的理解

  1. 分叉情境做什麼?

    • 複製對話歷史
    • 建立乾淨、獨立的情境
    • 與父代共享情境
    • 需要更多 token
  2. True or False: 您需要在 2.1.x 中重新啟動 Claude Code 才能看到技能變更。

    • True
    • False(熱重載是自動的!)
  3. 如何在技能中設定回應語言?

    • lang: spanish
    • language: spanish
    • locale: spanish
    • responseLanguage: spanish
  4. 什麼欄位在技能中指定代理類型?

    • agentType
    • agent
    • type
    • useAgent
  5. 哪種情境模式最適合無偏見的程式碼審查?

    • 繼承情境
    • 分叉情境
    • 無情境
    • 共享情境

答案: 1-b, 2-False, 3-b, 4-b, 5-b


總結

在本課程中,您學到了:

  • 分叉情境 - 獨立的子代理環境
  • 技能熱重載 - 2.1.x 自動!
  • 語言設定 - 組態回應語言
  • 代理指定 - 選擇代理類型和模型
  • 進階 frontmatter - 完整技能組態

下一步

在**第 20 課:2.1.x 進階功能**中,您將學到:

  • 萬用字元權限模式
  • 增強的 hooks 系統
  • 工作階段分叉與倒轉
  • 外部編輯器支援
  • 增強的 vim 動作
  • 任務相依性

進階閱讀


繼續到第 20 課:2.1.x 進階功能