# 策展 · X (Twitter) 🔥🔥🔥🔥

> 作者：Daniel San (@dani_avila7) · 平台：X (Twitter) · 日期：2026-04-27

> 原始來源：https://x.com/dani_avila7/status/2048486242321662189

## 中文摘要

# 使用 Subagents 保持你的 Claude Code context 清潔

長期的 Claude Code 會話很快就會變得混亂。每一次的 grep、find 和 ls 指令都會留在你的 context 中，佔用你再也不會回頭閱讀的空間。Subagents 可以解決這個問題：它們在自己的視窗中執行工作，並只回傳最終結果。

這篇文章將直接切入重點：什麼是 Subagents、如何建立一個 Subagent、Claude Code 內建的 Subagents，以及如何透過 `CLAUDE_CODE_FORK_SUBAGENT=1` 來 fork context。

## 什麼是 Subagent

Subagent 是一個專門的助理，它在自己的 context 視窗中執行，擁有獨立的系統 Prompt、工具和權限。

主 Agent 會呼叫它，Subagent 在隔離環境中完成工作，並回傳一份摘要。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782080-iaHG2dPKkXcAEFdnupng.png)

你可以使用 Markdown 檔案和 frontmatter 來建立一個 Subagent：

```markdown
---
name: code-reviewer
description: Reviews code for quality, security, and maintainability. Use after writing or modifying code.
tools: Read, Grep, Glob, Bash
model: sonnet
---

You are a senior code reviewer. When invoked:
1. Run git diff to see recent changes
2. Focus on modified files
3. Start the review immediately
```

Claude Code 會自動偵測到它，並在描述符合任務時呼叫它。

## Subagents 存放的位置

你可以根據作用範圍將檔案儲存在不同的位置。當兩個 Subagents 名稱相同時，優先級較高的位置會勝出。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782115-iaHG2it8wakAAcOfujpg.jpg)

在大多數情況下，你會使用 `.claude/agents/`（將其納入版本控制，與團隊共享）或 `~/.claude/agents/`（個人使用，隨處可用）。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782099-iaHG2h12BagAAlLhKjpg.jpg)

## 問題所在：所有操作都在同一個視窗中

如果沒有 Subagents，主 Agent 會在單一 context 中完成所有事情。你要求它審查一個 controller、尋找一個模式、驗證某個東西。它會執行 grep、find、ls、glob、cd，再執行更多 grep，又一次 find，每一次呼叫都會留在你的 context 中。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782097-iaHG2jzwPWwAA9Fldpng.png)

三十分鐘後，你會有 80k token 的雜訊，而你永遠不會去讀它們。

當 Claude 壓縮 context 時，這些資訊會被扁平化。重要的細節會在摘要中遺失。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782130-diaHG2k2iaQAESJ6vjpg.jpg)

## 內建 Subagents：Explore 與 Plan

Claude Code 針對常見情況提供了內建的 Subagents。你最常使用的兩個是：

Explore：搜尋程式庫而不污染你的主 context。它會在自己的視窗中執行所有的 grep 和 find 呼叫，並只回傳相關的搜尋結果。

Plan：進行調查並產出實作計畫。它會讀取檔案、理解架構，並回傳一份逐步執行的文件。你的主 context 永遠不會看到中間的讀取過程。

流程看起來像這樣：

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782132-iaHG2lXxzbQAAxYxbpng.png)

與其在你的視窗中出現 50 次工具呼叫，你只會得到 3 行答案。其餘的內容都會被捨棄。

## Forking context：

預設情況下，Subagent 會以空白的 context 啟動。這對於保持乾淨很有幫助，但當你已經投入 100k token 來建立對程式庫的理解，並希望 Subagent 繼承這一切時，這就不太方便了。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782113-iaHG2tsNjasAAO8Hypng.png)

Forking 解決了這個問題：Subagent 會在 fork 的瞬間，以父層 context 的精確副本啟動。

```bash
export CLAUDE_CODE_FORK_SUBAGENT=1
```

## 運作原理

一旦設定了 `CLAUDE_CODE_FORK_SUBAGENT=1`，每個產生的 Subagent 預設都會繼承完整的父層 context。

你也可以透過 `/fork` 斜線指令按需進行 fork：

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782126-iaHG2rKsIXoAA38ETjpg.jpg)

Fork 出來的工具呼叫會保持隔離，只有最終結果會回到你的對話中。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782118-iaHG2ra1ObQAAvOdSjpg.jpg)

Fork 出來的 Subagent：

- 在 fork 時繼承父層完整的對話內容

- 與父層共享 prompt cache 前綴（第 2 到 N 個子層的輸入 token 成本約便宜 10 倍）

- 在隔離環境中執行，其工具呼叫不會污染父層

- 只回傳最終摘要

## 即時查看：context-timeline hook

從控制台追蹤主 Agent 的 context 以及平行執行的 Subagents 是很困難的。我建立了一個 hook 來解決這個問題：context-timeline。

連結：https://www.aitmpl.com/component/hook/monitoring/context-timeline

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1777249782123-iaHG2tdzUXIAAKaa6jpg.jpg)

安裝：

```bash
npx claude-code-templates@latest --hook monitoring/context-timeline
```

它的功能：在你開啟會話的那一刻啟動，並顯示一個時間軸，呈現主 Agent 的 context 視窗，以及 Subagents 如何在各自獨立的 context 中開始工作。

你執行的每一個 Subagent 都會即時顯示，連同它在完成後回傳給主 Agent 的 context 一併呈現。

我的建議是，從 `.claude/agents/` 中的一個簡單 Subagent 開始。在第一次長時間的會話中，你就會感受到差異。

## 標籤

Claude Code, CLI, 教學資源, 自動化, Anthropic, Claude
