167 167
168## 可用資料168## 可用資料
169 169
170Claude Code 透過 stdin 將以下 JSON 欄位傳送到您的指令碼:170Claude Code 會透過 stdin 將下列 JSON 欄位傳送給您的指令碼:
171 171
172| 欄位 | 描述 |172| 欄位 | 說明 |
173| - | - |173| - | - |
174| `model.id`, `model.display_name` | 目前的模型識別碼和顯示名稱 |174| `model.id`, `model.display_name` | 目前模型的識別碼與顯示名稱 |
175| `cwd`, `workspace.current_dir` | 目前的工作目錄。兩個欄位包含相同的值;`workspace.current_dir` 因與 `workspace.project_dir` 一致而首選。 |175| `cwd`, `workspace.current_dir` | 目前工作目錄。兩個欄位包含相同的值;建議使用 `workspace.current_dir`,以便與 `workspace.project_dir` 保持一致。 |
176| `workspace.project_dir` | 啟動 Claude Code 的目錄,如果工作階段期間工作目錄變更,可能與 `cwd` 不同 |176| `workspace.project_dir` | 啟動 Claude Code 的目錄,若工作目錄在工作階段期間變更,可能與 `cwd` 不同 |
177| `workspace.added_dirs` | 透過 `/add-dir` 或 `--add-dir` 新增的其他目錄。如果未新增任何目錄,則為空陣列 |177| `workspace.added_dirs` | 透過 `/add-dir` 或 `--add-dir` 新增的其他目錄。若未新增任何目錄,則為空陣列 |
178| `workspace.git_worktree` | 當目前目錄位於使用 `git worktree add` 建立的連結 worktree 內時的 Git worktree 名稱。在主工作樹中不存在。對任何 git worktree 都會填入,不同於 `worktree.*` 僅在 [worktree 工作階段](https://code.claude.com/docs/zh-TW/worktrees.md)期間出現 |178| `workspace.git_worktree` | 當目前目錄位於以 `git worktree add` 建立的連結 worktree 內時的 Git worktree 名稱。在主要工作樹中不存在。任何 git worktree 都會填入此欄位,這點與 `worktree.*` 不同,後者僅在工作階段處於 [worktree 工作階段](https://code.claude.com/docs/zh-TW/worktrees.md) 時才會出現 |
179| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | 從 `origin` 遠端解析的儲存庫身分,例如 `"github.com"`、`"anthropics"`、`"claude-code"`。在 git 儲存庫外或未設定 `origin` 遠端時不存在。對於巢狀在子群組中的 gitlab.com 專案,`owner` 是包含斜線的完整命名空間路徑,例如 `"group/subgroup"`。在 v2.1.260 之前,這些專案的 `workspace.repo` 不存在 |179| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | 從 `origin` 遠端解析出的儲存庫身分,例如 `"github.com"`、`"anthropics"`、`"claude-code"`。在 git 儲存庫之外或未設定 `origin` 遠端時不存在。對於巢狀於子群組中的 gitlab.com 專案,`owner` 是包含斜線的完整命名空間路徑,例如 `"group/subgroup"`。在 v2.1.260 之前,這類專案的 `workspace.repo` 不存在 |
180| `cost.total_cost_usd` | 工作階段預估成本(美元),在用戶端以清單價格計算,除非有 [`modelPricing`](https://code.claude.com/docs/zh-TW/settings-reference#modelpricing) 表生效。可能與您的實際帳單不同。當 `/clear` 開始新工作階段時重設為 \$0 |180| `cost.total_cost_usd` | 以美元計的預估工作階段費用,除非 [`modelPricing`](https://code.claude.com/docs/zh-TW/settings-reference#modelpricing) 表格生效,否則會在用戶端依牌價計算。可能與您的實際帳單不同。當 `/clear` 開始新的工作階段時會重設為 \$0 |
181| `cost.total_duration_ms` | 自工作階段開始以來的總掛鐘時間(毫秒) |181| `cost.total_duration_ms` | 工作階段實際執行的總掛鐘時間,以毫秒為單位。會在多次恢復工作階段之間累計,且不包含工作階段未執行期間的時間 |
182| `cost.total_api_duration_ms` | 等待 API 回應所花費的總時間(毫秒) |182| `cost.total_api_duration_ms` | 等待 API 回應所花費的總時間,以毫秒為單位 |
183| `cost.total_lines_added`, `cost.total_lines_removed` | 變更的程式碼行數 |183| `cost.total_lines_added`, `cost.total_lines_removed` | 變更的程式碼行數 |
184| `context_window.total_input_tokens`, `context_window.total_output_tokens` | 目前在 context window 中的令牌計數,來自最近的 API 回應。輸入包括快取讀取和寫入 |184| `context_window.total_input_tokens`, `context_window.total_output_tokens` | 目前位於上下文視窗中的 token 數量,來自最近一次的 API 回應。輸入包含快取讀取與寫入 |
185| `context_window.context_window_size` | 最大 context window 大小(令牌)。預設為 200000,或具有擴展 context 的模型為 1000000。 |185| `context_window.context_window_size` | 以 token 計的最大上下文視窗大小。預設為 200000,具有延伸上下文的模型則為 1000000。 |
186| `context_window.used_percentage` | 預先計算的已使用 context window 百分比 |186| `context_window.used_percentage` | 預先計算的上下文視窗已使用百分比 |
187| `context_window.remaining_percentage` | 預先計算的剩餘 context window 百分比 |187| `context_window.remaining_percentage` | 預先計算的上下文視窗剩餘百分比 |
188| `context_window.current_usage` | 最後一次 API 呼叫中的令牌計數,在 [context window 欄位](#context-window-fields)中描述 |188| `context_window.current_usage` | 上一次 API 呼叫的 token 數量,說明請見 [上下文視窗欄位](#context-window-fields) |
189| `exceeds_200k_tokens` | 最近 API 回應中的總令牌計數(輸入、快取和輸出令牌合併)是否超過 200k。這是一個固定閾值,與實際 context window 大小無關。 |189| `exceeds_200k_tokens` | 最近一次 API 回應的 token 總數(輸入、快取與輸出 token 的總和)是否超過 200k。這是固定的門檻值,與實際上下文視窗大小無關。 |
190| `fast_mode` | 是否為工作階段啟用 [fast mode](https://code.claude.com/docs/zh-TW/fast-mode.md) |190| `fast_mode` | 工作階段是否啟用了 [快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md) |
191| `effort.level` | 目前的推理努力等級(`low`、`medium`、`high`、`xhigh` 或 `max`)。反映即時工作階段值,包括工作階段中途的 `/effort` 變更。當目前模型不支援努力參數時不存在 |191| `effort.level` | 目前的推理投入程度(`low`、`medium`、`high`、`xhigh` 或 `max`)。反映工作階段的即時值,包括工作階段中途透過 `/effort` 所做的變更。當目前模型不支援 effort 參數時不存在 |
192| `thinking.enabled` | 是否為工作階段啟用擴展思考 |192| `thinking.enabled` | 工作階段是否啟用了延伸思考 |
193| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | 消耗的 5 小時或 7 天速率限制的百分比,從 0 到 100 |193| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | 5 小時或 7 天速率限制的已使用百分比,範圍為 0 到 100 |
194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | 5 小時或 7 天速率限制視窗重設時的 Unix 紀元秒數 |194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | 5 小時或 7 天速率限制視窗重設時的 Unix epoch 秒數 |
195| `rate_limits.spend_limit.used_percentage`, `rate_limits.spend_limit.resets_at` | 在 Claude apps 閘道後面,您已使用多少支出限制,以及其期間何時重設。請參閱[支出限制欄位](#spend-limit-fields)。需要 Claude Code v2.1.251 或更新版本 |195| `rate_limits.spend_limit.used_percentage`, `rate_limits.spend_limit.resets_at` | 在 Claude apps 閘道後方時,您已使用多少支出上限,以及其週期何時重設。請參閱 [支出上限欄位](#spend-limit-fields)。需要 Claude Code v2.1.251 或更新版本 |
196| `rate_limits.spend_limit.used_usd`, `rate_limits.spend_limit.limit_usd`, `rate_limits.spend_limit.period` | 您以美元計的預估支出和限制,以及限制的期間。這些欄位可能不存在。請參閱[支出限制欄位](#spend-limit-fields)。Claude Code 和閘道都需要 v2.1.284 或更新版本 |196| `rate_limits.spend_limit.used_usd`, `rate_limits.spend_limit.limit_usd`, `rate_limits.spend_limit.period` | 以美元計的預估支出與上限,以及上限的週期。這些欄位可能不存在。請參閱 [支出上限欄位](#spend-limit-fields)。Claude Code 與閘道都需要 v2.1.284 或更新版本 |
197| `prompt_cache` | 工作階段的 [prompt cache](https://code.claude.com/docs/zh-TW/prompt-caching.md) 統計資料(針對主對話):命中率、未命中次數,以及快取是否溫暖。請參閱 [prompt cache 欄位](#prompt-cache-fields)以了解每個欄位。在主對話的第一次 API 回應之前不存在。需要 Claude Code v2.1.251 或更新版本 |197| `prompt_cache` | 工作階段主要對話的 [提示快取](https://code.claude.com/docs/zh-TW/prompt-caching.md) 統計資料:命中率、未命中次數,以及快取是否處於暖狀態。所有欄位請參閱 [提示快取欄位](#prompt-cache-fields)。在主要對話的第一個 API 回應之前不存在。需要 Claude Code v2.1.251 或更新版本 |
198| `session_id` | 唯一的工作階段識別碼 |198| `session_id` | 唯一的工作階段識別碼 |
199| `session_name` | 工作階段名稱。使用使用 `--name` 旗標或 `/rename` 設定的自訂名稱(如果存在),否則使用 AI 產生的工作階段標題。[預設顯示名稱](https://code.claude.com/docs/zh-TW/sessions.md#name-your-sessions)(例如 `my-app-3f`)不會填入此欄位。當工作階段既沒有自訂名稱也沒有 AI 產生的標題時不存在 |199| `session_name` | 工作階段名稱。若存在以 `--name` 旗標或 `/rename` 設定的自訂名稱則使用該名稱,否則使用 AI 產生的工作階段標題。[預設顯示名稱](https://code.claude.com/docs/zh-TW/sessions.md#name-your-sessions)(例如 `my-app-3f`)不會填入此欄位。當工作階段既沒有自訂名稱也沒有 AI 產生的標題時不存在 |
200| `prompt_id` | 識別目前正在處理的使用者提示詞的 UUID。符合 [OpenTelemetry 事件上的 `prompt.id` 屬性](https://code.claude.com/docs/zh-TW/monitoring-usage#event-correlation-attributes)。在第一次使用者輸入之前不存在 |200| `prompt_id` | 識別目前正在處理之使用者提示詞的 UUID。與 [OpenTelemetry 事件上的 `prompt.id` 屬性](https://code.claude.com/docs/zh-TW/monitoring-usage#event-correlation-attributes) 相符。在第一次使用者輸入之前不存在 |
201| `transcript_path` | 對話記錄檔案的路徑 |201| `transcript_path` | 對話逐字稿檔案的路徑 |
202| `version` | Claude Code 版本 |202| `version` | Claude Code 版本 |
203| `output_style.name` | 目前輸出樣式的名稱 |203| `output_style.name` | 目前輸出風格的名稱 |
204| `vim.mode` | 啟用 [vim 模式](https://code.claude.com/docs/zh-TW/interactive-mode.md#vim-editor-mode)時的目前 vim 模式(`NORMAL`、`INSERT`、`VISUAL` 或 `VISUAL LINE`) |204| `vim.mode` | 啟用 [vim 模式](https://code.claude.com/docs/zh-TW/interactive-mode.md#vim-editor-mode) 時的目前 vim 模式(`NORMAL`、`INSERT`、`VISUAL` 或 `VISUAL LINE`) |
205| `agent.name` | 使用 `--agent` 旗標或設定的代理設定執行時的代理名稱 |205| `agent.name` | 使用 `--agent` 旗標執行或已設定 agent 設定時的 agent 名稱 |
206| `pr.number`, `pr.url` | 目前分支的開啟提取請求。鏡像底部狀態列中的 PR 徽章。在具有 GitLab 遠端的儲存庫中,Claude Code 改為從分支的開啟 [merge request](https://code.claude.com/docs/zh-TW/interactive-mode.md#gitlab-merge-requests) 填入這些欄位,因此 `pr.number` 是 merge request 編號。Merge request 資料需要 Claude Code v2.1.234 或更新版本。當不在 git 儲存庫中、在找到提取請求或 merge request 之前,或一旦它合併或關閉後不存在 |206| `pr.number`, `pr.url` | 目前分支的開啟中 pull request。與頁尾中的 PR 徽章相對應。在具有 GitLab 遠端的儲存庫中,Claude Code 會改以該分支開啟中的 [merge request](https://code.claude.com/docs/zh-TW/interactive-mode.md#gitlab-merge-requests) 填入這些欄位,因此 `pr.number` 是 merge request 編號。Merge request 資料需要 Claude Code v2.1.234 或更新版本。在 git 儲存庫之外、找到 pull request 或 merge request 之前,或其合併或關閉後,皆不存在 |
207| `pr.review_state` | 開啟 PR 的審查狀態:`approved`、`pending`、`changes_requested` 或 `draft`。即使 `pr` 存在,也可能獨立不存在 |207| `pr.review_state` | 開啟中 PR 的審查狀態:`approved`、`pending`、`changes_requested` 或 `draft`。即使 `pr` 存在,此欄位也可能單獨不存在 |
208| `pr.kind` | 當 `pr` 描述 [GitLab merge request](https://code.claude.com/docs/zh-TW/interactive-mode.md#gitlab-merge-requests)時為 `mr`。對於 GitHub 提取請求不存在,因此在此欄位之前編寫的指令碼可繼續運作。對於 merge request,當 GitLab 報告它可合併時,Claude Code 將 `review_state` 設定為 `approved`,對於任何其他開啟狀態設定為 `pending`,對於草稿設定為 `draft`。需要 Claude Code v2.1.234 或更新版本 |208| `pr.kind` | 當 `pr` 描述的是 [GitLab merge request](https://code.claude.com/docs/zh-TW/interactive-mode.md#gitlab-merge-requests) 時為 `mr`。對於 GitHub pull request 則不存在,因此在此欄位出現之前撰寫的指令碼仍可正常運作。對於 merge request,當 GitLab 回報其可合併時,Claude Code 會將 `review_state` 設為 `approved`,其他任何開啟中狀態設為 `pending`,草稿則設為 `draft`。需要 Claude Code v2.1.234 或更新版本 |
209| `worktree.name` | 作用中 worktree 的名稱。僅在 [worktree 工作階段](https://code.claude.com/docs/zh-TW/worktrees.md)期間出現 |209| `worktree.name` | 作用中 worktree 的名稱。僅在工作階段處於 [worktree 工作階段](https://code.claude.com/docs/zh-TW/worktrees.md) 時出現 |
210| `worktree.path` | worktree 目錄的絕對路徑 |210| `worktree.path` | worktree 目錄的絕對路徑 |
211| `worktree.branch` | worktree 的 Git 分支名稱(例如 `"worktree-my-feature"`)。對於基於 hook 的 worktree 不存在 |211| `worktree.branch` | worktree 的 Git 分支名稱(例如 `"worktree-my-feature"`)。對於以 hook 為基礎的 worktree 則不存在 |
212| `worktree.original_cwd` | Claude 進入 worktree 之前所在的目錄 |212| `worktree.original_cwd` | Claude 進入 worktree 之前所在的目錄 |
213| `worktree.original_branch` | 進入 worktree 之前簽出的 Git 分支。對於基於 hook 的 worktree 不存在 |213| `worktree.original_branch` | 進入 worktree 之前已簽出的 Git 分支。對於以 hook 為基礎的 worktree 則不存在 |
214 214
215> **完整 JSON 架構**215> **完整 JSON schema**
216>216>
217> 您的狀態列命令透過 stdin 接收此 JSON 結構:217> 您的狀態列命令會透過 stdin 接收此 JSON 結構:
218>218>
219> ```json theme={null}219> ```json theme={null}
220> {220> {
330> }330> }
331> ```331> ```
332>332>
333> **可能不存在的欄位**(不在 JSON 中):333> **可能不存在的欄位**(不會出現在 JSON 中):
334>334>
335> * `session_name`:當使用 `--name` 或 `/rename` 設定自訂名稱時出現,或一旦存在 AI 產生的工作階段標題。預設顯示名稱(例如 `my-app-3f`)不會填入此欄位335> * `session_name`:當已透過 `--name` 或 `/rename` 設定自訂名稱,或已存在 AI 產生的工作階段標題時出現。預設顯示名稱(例如 `my-app-3f`)不會填入此欄位
336> * `prompt_id`:僅在第一次使用者輸入後出現336> * `prompt_id`:僅在第一次使用者輸入之後出現
337> * `workspace.git_worktree`:僅當目前目錄位於連結 git worktree 內時出現337> * `workspace.git_worktree`:僅在目前目錄位於連結的 git worktree 內時出現
338> * `workspace.repo`:僅在 git 儲存庫內且設定了 `origin` 遠端時出現338> * `workspace.repo`:僅在已設定 `origin` 遠端的 git 儲存庫內出現
339> * `effort`:僅當目前模型支援推理努力參數時出現339> * `effort`:僅在目前模型支援推理投入程度參數時出現
340> * `vim`:僅在啟用 vim 模式時出現340> * `vim`:僅在啟用 vim 模式時出現
341> * `agent`:僅在使用 `--agent` 旗標或設定的代理設定執行時出現341> * `agent`:僅在使用 `--agent` 旗標執行或已設定 agent 設定時出現
342> * `pr`:僅在為目前分支找到開啟 PR 或 GitLab merge request 時出現,一旦它合併或關閉就會移除。`pr.review_state` 和 `pr.kind` 可能獨立不存在342> * `pr`:僅在目前分支找到開啟中的 PR 或 GitLab merge request 時出現,並會在其合併或關閉後移除。`pr.review_state` 與 `pr.kind` 可能單獨不存在
343> * `worktree`:僅在 [worktree 工作階段](https://code.claude.com/docs/zh-TW/worktrees.md)期間出現。存在時,對於基於 hook 的 worktree,`branch` 和 `original_branch` 也可能不存在343> * `worktree`:僅在工作階段處於 [worktree 工作階段](https://code.claude.com/docs/zh-TW/worktrees.md) 時出現。出現時,對於以 hook 為基礎的 worktree,`branch` 與 `original_branch` 也可能不存在
344> * `rate_limits`:僅對 Claude.ai Pro 和 Max 訂閱者,或在設定支出限制的 Claude apps gateway 後面,以及僅在工作階段中第一次 API 回應後出現。每個視窗(`five_hour`、`seven_day`、`spend_limit`)可能獨立不存在,Claude Code 會在其 `resets_at` 時間過去後捨棄視窗。使用 `jq -r '.rate_limits.five_hour.used_percentage // empty'` 以優雅地處理不存在的情況。344> * `rate_limits`:僅對 claude.ai Pro 與 Max 訂閱者,或位於為您設定支出上限的 Claude apps 閘道後方時出現,且僅在工作階段的第一個 API 回應之後出現。每個視窗(`five_hour`、`seven_day`、`spend_limit`)可能單獨不存在,且一旦其 `resets_at` 時間過後,Claude Code 就會移除該視窗。使用 `jq -r '.rate_limits.five_hour.used_percentage // empty'` 可妥善處理欄位不存在的情況。
345> * `prompt_cache`:在主對話的第一次 API 回應後出現。請參閱 [prompt cache 欄位](#prompt-cache-fields)345> * `prompt_cache`:在主要對話的第一個 API 回應之後出現。請參閱 [提示快取欄位](#prompt-cache-fields)
346>346>
347> **可能為 `null` 的欄位**:347> **可能為 `null` 的欄位**:
348>348>
349> * `context_window.current_usage`:在工作階段中第一次 API 呼叫之前為 `null`,以及在 `/compact` 之後直到下一次 API 呼叫重新填入為止349> * `context_window.current_usage`:在工作階段的第一次 API 呼叫之前為 `null`,在 `/compact` 之後也會再次為 `null`,直到下一次 API 呼叫重新填入
350> * `context_window.used_percentage`, `context_window.remaining_percentage`:在工作階段早期可能為 `null`350> * `context_window.used_percentage`、`context_window.remaining_percentage`:在工作階段初期可能為 `null`
351>351>
352> 在您的指令碼中使用條件存取處理遺漏的欄位,並使用後備預設值處理 null 值。352> 請在指令碼中使用條件式存取處理缺少的欄位,並以備援預設值處理 null 值。
353 353
354### Context window 欄位354### 上下文視窗欄位
355 355
356`context_window` 物件描述來自最近 API 回應的即時 context window。356`context_window` 物件描述最近一次 API 回應中的即時上下文視窗。
357 357
358* **合併總計**(`total_input_tokens`, `total_output_tokens`):目前在 context window 中的令牌。`total_input_tokens` 是 `input_tokens`、`cache_creation_input_tokens` 和 `cache_read_input_tokens` 的總和;`total_output_tokens` 是最近回應中的輸出令牌。在第一次 API 回應之前兩者都是 `0`。358* **合計總數**(`total_input_tokens`、`total_output_tokens`):目前位於上下文視窗中的 token。`total_input_tokens` 是 `input_tokens`、`cache_creation_input_tokens` 與 `cache_read_input_tokens` 的總和;`total_output_tokens` 是最近一次回應的輸出 token。兩者在第一個 API 回應之前皆為 `0`。
359* **按元件使用情況**(`current_usage`):相同的令牌計數按類別分解。當您需要將快取命中與新輸入分開時,請使用此項。359* **各元件用量**(`current_usage`):依類別細分的相同 token 數量。當您需要將快取命中與新輸入分開時,請使用此欄位。
360 360
361`current_usage` 物件包含:361`current_usage` 物件包含:
362 362
363* `input_tokens`:目前 context 中的輸入令牌363* `input_tokens`:目前上下文中的輸入 token
364* `output_tokens`:產生的輸出令牌364* `output_tokens`:產生的輸出 token
365* `cache_creation_input_tokens`:寫入快取的令牌365* `cache_creation_input_tokens`:寫入快取的 token
366* `cache_read_input_tokens`:從快取讀取的令牌366* `cache_read_input_tokens`:從快取讀取的 token
367 367
368如需了解快取欄位的含義及其計費方式,請參閱[檢查快取效能](https://code.claude.com/docs/zh-TW/prompt-caching.md#check-cache-performance)。368關於快取欄位的意義及其計費方式,請參閱 [檢查快取效能](https://code.claude.com/docs/zh-TW/prompt-caching.md#check-cache-performance)。
369 369
370`used_percentage` 欄位僅從輸入令牌計算:`input_tokens + cache_creation_input_tokens + cache_read_input_tokens`。它不包括 `output_tokens`。370`used_percentage` 欄位僅根據輸入 token 計算:`input_tokens + cache_creation_input_tokens + cache_read_input_tokens`。不包含 `output_tokens`。
371 371
372如果您從 `current_usage` 手動計算 context 百分比,請使用相同的僅輸入公式以符合 `used_percentage`。372若您從 `current_usage` 手動計算上下文百分比,請使用相同的僅輸入公式,以與 `used_percentage` 一致。
373 373
374`current_usage` 物件在工作階段中第一次 API 呼叫之前為 `null`,以及在 `/compact` 之後直到下一次 API 呼叫重新填入為止再次為 `null`。374`current_usage` 物件在工作階段的第一次 API 呼叫之前為 `null`,在 `/compact` 之後也會立即再次為 `null`,直到下一次 API 呼叫重新填入。
375 375
376### 支出限制欄位376### 支出上限欄位
377 377
378在[設定支出限制的 Claude apps 閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code)後面,`rate_limits.spend_limit` 物件描述適用於您的支出限制。它在工作階段的第一次 API 回應後出現,且需要 Claude Code v2.1.251 或更新版本。您的指令碼會依不同的排程接收其欄位:378在 [具有支出上限的 Claude apps 閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code) 後方時,`rate_limits.spend_limit` 物件描述適用於您的支出上限。它會在工作階段的第一個 API 回應之後出現,且需要 Claude Code v2.1.251 或更新版本。您的指令碼會依不同的時程接收其欄位:
379 379
380* `used_percentage` 和 `resets_at`:隨每個回應提供,因此只要 `spend_limit` 存在,它們就會存在。`used_percentage` 從 0 到 100,或一旦您超過限制就超過 100,而 `resets_at` 是限制期間重設時的 Unix 紀元秒數。380* `used_percentage` 與 `resets_at`:隨每個回應一起提供,因此只要 `spend_limit` 存在,它們就會存在。`used_percentage` 的範圍為 0 到 100,超過上限後會大於 100;`resets_at` 是上限週期重設時的 Unix epoch 秒數。
381* `used_usd`、`limit_usd` 和 `period`:您目前為止以美元計的預估支出和限制,以及限制涵蓋的期間,為 `daily`、`weekly` 或 `monthly` 之一。閘道[從 token 計數計算 `used_usd`](https://code.claude.com/docs/zh-TW/claude-apps-gateway-spend-limits#how-requests-are-priced),因此它是預估值,而非計費金額。Claude Code 透過另一個請求從閘道讀取它們,在您傳送請求期間約每五分鐘一次。美元金額可能比 `used_percentage` 舊約五分鐘,因此兩者可能會短暫不一致。Claude Code 和閘道都需要 v2.1.284 或更新版本。381* `used_usd`、`limit_usd` 與 `period`:您到目前為止以美元計的預估支出與上限,以及上限涵蓋的週期,為 `daily`、`weekly` 或 `monthly` 其中之一。閘道會 [根據 token 數量計算 `used_usd`](https://code.claude.com/docs/zh-TW/claude-apps-gateway-spend-limits#how-requests-are-priced),因此它是預估值,而非實際計費金額。Claude Code 會在您傳送請求期間,約每五分鐘以另一個請求從閘道讀取這些欄位。金額可能比 `used_percentage` 舊約五分鐘,因此兩者可能短暫不一致。Claude Code 與閘道都需要 v2.1.284 或更新版本。
382 382
383即使 `spend_limit` 存在,也請將 `used_usd`、`limit_usd` 和 `period` 視為選用。您的指令碼會先收到百分比,再收到這些欄位;如果您設定了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`(會關閉該請求),這些欄位將保持不存在。請在指令碼中以備援值讀取每個欄位,例如 `jq -r '.rate_limits.spend_limit.used_usd // empty'`。383即使 `spend_limit` 存在,也請將 `used_usd`、`limit_usd` 與 `period` 視為選用欄位,因為您的指令碼會先收到百分比。請在指令碼中以備援值讀取每個欄位,例如 `jq -r '.rate_limits.spend_limit.used_usd // empty'`。在 Claude Code v2.1.295 之前,若您設定了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`,這些欄位會一直不存在,因為該設定會關閉這個請求。
384 384
385### Prompt cache 欄位385### 提示快取欄位
386 386
387`prompt_cache` 物件總結工作階段的主對話如何使用 [prompt cache](https://code.claude.com/docs/zh-TW/prompt-caching.md)。Claude Code 從 API 回應中的快取令牌計數計算它,因此它適用於每個提供者。387`prompt_cache` 物件總結工作階段的主要對話如何使用 [提示快取](https://code.claude.com/docs/zh-TW/prompt-caching.md)。Claude Code 根據 API 回應中的快取 token 數量計算此物件,因此適用於所有供應商。
388 388
389該物件在主對話的第一次 API 回應後出現。Claude Code 不會在這些統計資料中計算子代理請求。需要 Claude Code v2.1.251 或更新版本。389此物件會在主要對話的第一個 API 回應之後出現。Claude Code 不會將 subagent 請求計入這些統計資料。需要 Claude Code v2.1.251 或更新版本。
390 390
391該表列出每個欄位及其含義。時間戳記是 Unix 紀元秒,與 `rate_limits.*.resets_at` 相同的單位。簡短的狀態列通常顯示其中一個或兩個;`warm` 和 `hit_ratio` 最直接地總結快取狀態。391下表列出每個欄位及其意義。時間戳記為 Unix epoch 秒數,與 `rate_limits.*.resets_at` 的單位相同。簡短的狀態列通常只會顯示其中一兩個;`warm` 與 `hit_ratio` 最能直接概括快取狀態。
392 392
393| 欄位 | 描述 |393| 欄位 | 說明 |
394| - | - |394| - | - |
395| `warm` | 快取的前綴是否仍在其 TTL 內。當最後一次回應未報告快取令牌時為 `false`,即使 `caching_observed` 為 `true` |395| `warm` | 快取的前綴是否仍在其 TTL 內。當上一次回應未回報任何快取 token 時為 `false`,即使 `caching_observed` 為 `true` 亦然 |
396| `caching_observed` | 此工作階段的任何回應是否報告快取令牌。`false` 表示 prompt caching 已關閉,或您的提供者或 gateway 不報告它 |396| `caching_observed` | 此工作階段中是否有任何回應回報了快取 token。`false` 表示提示快取已關閉,或您的供應商或閘道未回報此資訊 |
397| `ttl` | 目前快取前綴的 [cache lifetime](https://code.claude.com/docs/zh-TW/prompt-caching.md#cache-lifetime):`"5m"` 或 `"1h"` |397| `ttl` | 目前快取前綴的 [快取存留時間](https://code.claude.com/docs/zh-TW/prompt-caching.md#cache-lifetime):`"5m"` 或 `"1h"` |
398| `expires_at` | 快取的前綴何時離開其 TTL 並變冷,以紀元秒為單位。當最後一次回應未報告快取令牌時為 `null` |398| `expires_at` | 快取前綴超出其 TTL 並轉為冷狀態的時間,以 epoch 秒數表示。當上一次回應未回報任何快取 token 時為 `null` |
399| `requests` | 此工作階段中為主對話記錄的 API 請求 |399| `requests` | 此工作階段中為主要對話記錄的 API 請求數 |
400| `misses` | 重新處理快取已保留內容的請求:超過 5% 且至少 2,000 個令牌的請求可能已從快取讀取,沒有壓縮或工具結果清除來解釋快取讀取的不足 |400| `misses` | 重新處理快取中已有內容的請求:超過該請求可從快取讀取之內容的 5% 且至少 2,000 個 token,且沒有壓縮或工具結果清除可解釋快取讀取的不足 |
401| `expected_rebuilds` | 遵循壓縮或清除舊工具結果的快取重建 |401| `expected_rebuilds` | 在壓縮或清除舊工具結果之後發生的快取重建次數 |
402| `hit_ratio` | 快取讀取令牌作為此工作階段所有輸入令牌的分數,從 0 到 1。分母計算快取讀取、快取寫入和未快取輸入。當這些計數都為零時為 `null` |402| `hit_ratio` | 此工作階段中快取讀取 token 佔所有輸入 token 的比例,範圍為 0 到 1。分母計入快取讀取、快取寫入與未快取的輸入。當這些數量皆為零時為 `null` |
403| `cache_write_tokens` | 此工作階段中寫入快取的所有令牌,包括第一個請求的初始寫入 |403| `cache_write_tokens` | 此工作階段中寫入快取的所有 token,包括第一個請求的初始寫入 |
404| `miss_recache_tokens` | 由計為未命中的請求寫入快取的令牌 |404| `miss_recache_tokens` | 被計為未命中的請求所寫入快取的 token |
405| `last_miss_at` | 最後一次未命中發生時,以紀元秒為單位。當工作階段沒有未命中時為 `null` |405| `last_miss_at` | 上一次未命中發生的時間,以 epoch 秒數表示。當工作階段沒有未命中時為 `null` |
406| `last_miss_cause` | Claude Code 識別為最後一次未命中可能原因的內容,在 [Last miss cause](#last-miss-cause) 下描述。需要 Claude Code v2.1.260 或更新版本 |406| `last_miss_cause` | Claude Code 判定為上一次未命中的可能原因,說明請見 [上一次未命中原因](#last-miss-cause)。需要 Claude Code v2.1.260 或更新版本 |
407| `miss_causes` | 此工作階段的診斷未命中中有多少個具有每個原因,以與 `last_miss_cause` 相同的原因名稱為鍵。需要 Claude Code v2.1.260 或更新版本 |407| `miss_causes` | 此工作階段中已診斷的未命中各有多少屬於每個原因,以與 `last_miss_cause` 相同的原因名稱作為鍵。需要 Claude Code v2.1.260 或更新版本 |
408| `recache_tokens_if_cold` | 如果快取到那時已變冷,下一個請求重新快取的令牌。在壓縮或清除舊工具結果後為 `null`,直到下一個請求記錄重寫對話的大小 |408| `recache_tokens_if_cold` | 若快取屆時已轉為冷狀態,下一個請求將重新快取的 token 數。在壓縮或清除舊工具結果之後立即為 `null`,直到下一個請求記錄改寫後對話的大小 |
409 409
410Claude Code 在終端機上顯示相同的統計資料,在 [`/usage` 命令的 `Prompt cache (main)` 行](https://code.claude.com/docs/zh-TW/costs#prompt-cache-statistics)上。410Claude Code 也會在終端機中的 [`/usage` 命令的 `Prompt cache (main)` 行](https://code.claude.com/docs/zh-TW/costs#prompt-cache-statistics) 顯示相同的統計資料。
411 411
412#### Last miss cause412#### 上一次未命中原因
413 413
414`last_miss_cause` 物件報告 Claude Code 識別為最後一次未命中可能原因的內容。其 `causes` 陣列保留一個或多個原因名稱,例如 `tools_changed`、`system_prompt_changed`、`ttl_expired_5m` 或 `likely_server_side`。該物件在工作階段的第一次未命中之前為 `null`,以及每當 Claude Code 無法識別最後一次未命中的原因時再次為 `null`。需要 Claude Code v2.1.260 或更新版本。414`last_miss_cause` 物件回報 Claude Code 判定為最近一次未命中的可能原因。其 `causes` 陣列包含一個或多個原因名稱,例如 `tools_changed`、`system_prompt_changed`、`ttl_expired_5m` 或 `likely_server_side`。此物件在工作階段第一次未命中之前為 `null`,且每當 Claude Code 無法為最近一次未命中判定原因時,也會再次為 `null`。需要 Claude Code v2.1.260 或更新版本。
415 415
416兩個原因將計數新增到物件:416有兩個原因會在物件中加入計數:
417 417
418* `tools_added` 和 `tools_removed`:使用 `tools_changed`,有多少工具被新增到或從請求中移除418* `tools_added` 與 `tools_removed`:搭配 `tools_changed`,表示請求中新增或移除了多少個工具
419* `system_char_delta`:使用 `system_prompt_changed`,系統提示長度的變化(以字元為單位)419* `system_char_delta`:搭配 `system_prompt_changed`,表示系統提示詞長度的變化,以字元為單位
420 420
421## 範例421## 範例
422 422