---
title: 管理工具上下文
url: https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/manage-tool-context
description: 在工具搜尋、程式化工具呼叫、提示快取與上下文編輯之間做出選擇，以管理上下文膨脹問題。
---

工具定義與累積的 `tool_result` 區塊會消耗您的「context window」（上下文視窗）。擁有許多工具或經歷許多輪次的長時間執行代理，可能會在任務完成之前就耗盡可用的上下文。有四種方法可在流程的不同環節解決此問題。

## 四種方法

每種方法針對不同的上下文壓力來源。請選擇與您的 token 消耗去向相符的方法。

| 方法      | 減少的內容                    | 適用時機                           | 了解更多                                                                                                         |
| ------- | ------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| 工具搜尋    | 預先載入的工具定義                | 大型工具集（20 個以上工具），且大多數工具並非每一輪都需要 | [工具搜尋工具](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/tool-search-tool)                  |
| 程式化工具呼叫 | `tool_result` 往返次數       | 可作為單一腳本執行的工具呼叫鏈                | [程式化工具呼叫](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/programmatic-tool-calling)        |
| 提示快取    | 重複工具定義的 token 成本         | 跨多個請求保持穩定的工具集                  | [搭配提示快取的工具使用](https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/tool-use-with-prompt-caching) |
| 上下文編輯   | 歷史記錄中的舊 `tool_result` 區塊 | 早期結果已不再相關的長對話                  | [上下文編輯](https://platform.claude.com/docs/zh-TW/build-with-claude/context-editing)                            |

### 工具搜尋

「Tool search」（工具搜尋）會將工具定義保留在上下文視窗之外，直到 Claude 要求取用為止。您無需預先傳送 50 個工具結構描述，而是只傳送單一的 `tool_search` 工具，讓 Claude 按需探索其餘工具。這是以少量的「latency」（延遲）（多一輪查詢工具）換取基準上下文使用量的大幅降低。

### 程式化工具呼叫

「Programmatic tool calling」（程式化工具呼叫）會將一連串工具呼叫摺疊為單一程式碼區塊，由 Claude 撰寫並在 Anthropic 的程式碼執行沙箱中執行。Claude 不需進行五次 `tool_use` 與 `tool_result` 的往返，而是輸出一個腳本，在沙箱內呼叫全部五個函式。中間結果永遠不會進入對話歷史記錄。

### 提示快取

「Prompt caching」（提示快取）不會減少上下文中的 token 數量，但會降低您在後續請求中為這些 token 支付的費用。如果您的工具定義是穩定的，只需快取一次，即可在數千個請求中重複使用已快取的前綴。當工具集龐大但固定時，這是正確的選擇。

### 上下文編輯

「Context editing」（上下文編輯）會在舊的 `tool_result` 區塊完成其用途後，將其從對話歷史記錄中移除。一個長時間的代理迴圈可能會產生數百個中間結果，這些結果在當時很有用，但現在已成為累贅。上下文編輯讓您無需重新開始對話即可將其修剪掉。

## 組合使用多種方法

這些方法可以組合使用。一個長時間執行的代理可能會使用工具搜尋來保持工具集精簡、使用提示快取來分攤其餘定義的成本，並使用上下文編輯在對話增長時修剪過時的結果。每種方法解決問題的不同部分，因此同時使用它們並不衝突。

對於高流量代理，一個合理的起點是：

1. 從第一天起就對您的工具定義啟用提示快取。快取寫入的費用比基本輸入定價高出 25%，在第二個命中快取的請求時即可回本。
2. 當您的工具集增長到超過約 20 個工具，或基準上下文使用量變得明顯時，加入工具搜尋。
3. 當個別對話開始長到早期結果變得不相關時，加入上下文編輯。
4. 如果您注意到有重複的小型工具呼叫鏈可以作為單一批次執行，請考慮使用程式化工具呼叫。

## 後續步驟

<CardGroup cols={2}>
  <Card title="工具搜尋工具" icon="magnifying-glass" href="https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/tool-search-tool">
    按需載入工具定義，而非預先載入。
  </Card>

  <Card title="程式化工具呼叫" icon="code" href="https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/programmatic-tool-calling">
    將工具呼叫鏈摺疊為單一可執行腳本。
  </Card>

  <Card title="搭配提示快取的工具使用" icon="database" href="https://platform.claude.com/docs/zh-TW/agents-and-tools/tool-use/tool-use-with-prompt-caching">
    跨請求快取工具定義以降低 token 成本。
  </Card>

  <Card title="上下文編輯" icon="scissors" href="https://platform.claude.com/docs/zh-TW/build-with-claude/context-editing">
    從長時間執行的對話中修剪過時的工具結果。
  </Card>
</CardGroup>
