SpyBara
Go Premium

Documentation 2026-10-08 22:58 UTC to 2026-10-09 00:01 UTC

15 files changed +110 −39. View all changes and history on the product overview
2026
Fri 9 01:00 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

146| `auto` | 模型分類核准 | 模型分類器檢閱殼層命令和網路請求等動作,允許或阻止它檢閱的每一個。請參閱 [Auto 模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)以了解可用性和決策順序 |146| `auto` | 模型分類核准 | 模型分類器檢閱殼層命令和網路請求等動作,允許或阻止它檢閱的每一個。請參閱 [Auto 模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)以了解可用性和決策順序 |

147 147 

148<Warning>148<Warning>

149 **子代理繼承:** 子代理在父工作階段的權限模式中執行,除非您在其 [`AgentDefinition`](/docs/zh-TW/agent-sdk/typescript#agentdefinition) 上設定 `permissionMode`,且父工作階段處於 `default`、`dontAsk` 或 `plan` 模式。即使如此,Claude Code 也永遠不會套用 `"bypassPermissions"` 值。子代理只有在父工作階段本身處於 `bypassPermissions` 模式時,才會在該模式中執行。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更新版本。149 **Subagent 繼承:** subagent 在父工作階段的權限模式中執行,除非您在其 [`AgentDefinition`](/docs/zh-TW/agent-sdk/typescript#agentdefinition) 上設定 `permissionMode`,且父工作階段處於 `default`、`dontAsk` 或 `plan` 模式。即使如此,Claude Code 也永遠不會套用 `"bypassPermissions"` 值,且只有在該 subagent [可使用自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)時才會套用 `"auto"` 值。subagent 只有在父工作階段本身處於 `bypassPermissions` 模式時,才會在該模式中執行。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更新版本。

150 150 

151 子代理可能具有不同的系統提示和比您的主代理更少受限的行為,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權。[沒有任何模式自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)仍然適用。151 子代理可能具有不同的系統提示和比您的主代理更少受限的行為,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權。[沒有任何模式自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)仍然適用。

152</Warning>152</Warning>

Details

323 偵測子代理程式叫用323 偵測子代理程式叫用

324</h2>324</h2>

325 325 

326Claude 透過 Agent 工具叫用子代理程式。若要偵測何時叫用子代理程式,請檢查 `tool_use` 區塊,其中 `name` 為 `"Agent"`。來自子代理程式內容中的訊息包含 `parent_tool_use_id` 欄位。326Claude 透過 Agent 工具叫用 subagent。若要偵測何時叫用 subagent,請檢查 `tool_use` 區塊,其中 `name` 為 `"Agent"`。

327 

328來自 subagent 內容中的訊息包含 `parent_tool_use_id` 欄位。在 TypeScript 中,subagent 產生的每則助理訊息和使用者訊息也帶有 [`agent_id`](/docs/zh-TW/agent-sdk/typescript#sdkassistantmessage):即該 subagent 之[任務事件](/docs/zh-TW/agent-sdk/typescript#sdktaskstartedmessage)的 `task_id`。`agent_id` 需要 TypeScript Agent SDK v0.3.292 或更新版本。

327 329 

328<Note>330<Note>

329 該工具在 `tool_use` 區塊中顯示為 `"Agent"`,但在 `system:init` 工具清單中顯示為 `"Task"`。在 Claude Code v2.1.63 之前,`tool_use` 區塊也將其命名為 `"Task"`。為了保持偵測在各個 SDK 版本中正常運作,請在 `block.name` 中同時符合兩個值。331 該工具在 `tool_use` 區塊中顯示為 `"Agent"`,但在 `system:init` 工具清單中顯示為 `"Task"`。在 Claude Code v2.1.63 之前,`tool_use` 區塊也將其命名為 `"Task"`。為了保持偵測在各個 SDK 版本中正常運作,請在 `block.name` 中同時符合兩個值。


331 333 

332訊息結構在 SDK 之間有所不同。在 Python 中,您可以透過 `message.content` 直接存取內容區塊。在 TypeScript 中,`SDKAssistantMessage` 包裝 Claude API 訊息,因此您透過 `message.message.content` 存取內容。334訊息結構在 SDK 之間有所不同。在 Python 中,您可以透過 `message.content` 直接存取內容區塊。在 TypeScript 中,`SDKAssistantMessage` 包裝 Claude API 訊息,因此您透過 `message.message.content` 存取內容。

333 335 

334此範例會逐一查看串流訊息,在叫用子代理程式時以及後續訊息源自該子代理程式執行內容時進行記錄。336此範例會逐一查看串流訊息,在叫用 subagent 時以及後續訊息源自該 subagent 執行內容時進行記錄。TypeScript 版本也會記錄每則帶有 `agent_id` 的 subagent 訊息之 `agent_id`。

335 337 

336<CodeGroup>338<CodeGroup>

337 ```python Python theme={null}339 ```python Python theme={null}


403 // Check if this message is from within a subagent's context405 // Check if this message is from within a subagent's context

404 if (msg.parent_tool_use_id) {406 if (msg.parent_tool_use_id) {

405 console.log(" (running inside subagent)");407 console.log(" (running inside subagent)");

408 // On assistant and user messages, agent_id matches the task_id

409 // on that subagent's task_started and other task events

410 if (msg.agent_id) {

411 console.log(` agent_id: ${msg.agent_id}`);

412 }

406 }413 }

407 414 

408 if ("result" in message) {415 if ("result" in message) {

Details

1561 parent_tool_use_id: string | null;1561 parent_tool_use_id: string | null;

1562 error?: SDKAssistantMessageError;1562 error?: SDKAssistantMessageError;

1563 aborted?: true;1563 aborted?: true;

1564 agent_id?: string;

1564 timestamp?: string;1565 timestamp?: string;

1565 context_usage?: SDKContextUsage;1566 context_usage?: SDKContextUsage;

1566 user_message_uuid?: string;1567 user_message_uuid?: string;


1580 1581 

1581當中斷或中止在串流完成前截斷助手訊息時,`aborted` 為 `true`:訊息沒有 `stop_reason`,內容可能在詞的中間結束。該欄位在正常完成的訊息上不存在。它需要 Agent SDK v0.3.214 或更新版本。1582當中斷或中止在串流完成前截斷助手訊息時,`aborted` 為 `true`:訊息沒有 `stop_reason`,內容可能在詞的中間結束。該欄位在正常完成的訊息上不存在。它需要 Agent SDK v0.3.214 或更新版本。

1582 1583 

1584`agent_id` 識別產生該訊息的 subagent,主執行緒的訊息不會有此欄位。其值等於該 subagent 的 [`task_started`](#sdktaskstartedmessage) 及其他任務事件上的 `task_id`,且在 subagent [恢復](/docs/zh-TW/agent-sdk/subagents#resume-subagents)時保持不變。此欄位需要 Agent SDK v0.3.292 或更新版本。

1585 

1586請依 `agent_id` 將 subagent 的訊息與其任務事件配對,而不是將訊息的 `parent_tool_use_id` 與任務事件的 `tool_use_id` 配對。當工具呼叫恢復 subagent 時,任務事件會帶有該呼叫的 `tool_use_id`,而訊息則保留最初啟動該 subagent 之工具呼叫的 `parent_tool_use_id`,因此兩者將不再相符。

1587 

1583Claude Code 會在回合的第一個助手訊息上設定 `user_message_uuid` 和 `user_message_uuids`,條件請見 [`user_message_uuid`](#user_message_uuid)。當 Claude Code 重新執行被重新啟動中斷的回合時,重新執行中攜帶這些欄位的助手訊息也會攜帶 [`resume_reason`](#resume_reason)。1588Claude Code 會在回合的第一個助手訊息上設定 `user_message_uuid` 和 `user_message_uuids`,條件請見 [`user_message_uuid`](#user_message_uuid)。當 Claude Code 重新執行被重新啟動中斷的回合時,重新執行中攜帶這些欄位的助手訊息也會攜帶 [`resume_reason`](#resume_reason)。

1584 1589 

1585`timestamp` 是訊息內容在產生它的程序上完成生成的 ISO 8601 時間。該值來自該機器的時鐘,因此僅用於顯示,不要依其排序訊息。一個 API 回合可以產生多個共用同一 `message.id` 的助手訊息,每個都有自己的 `timestamp`。當欄位不存在時,請改用您收到訊息的時間。1590`timestamp` 是訊息內容在產生它的程序上完成生成的 ISO 8601 時間。該值來自該機器的時鐘,因此僅用於顯示,不要依其排序訊息。一個 API 回合可以產生多個共用同一 `message.id` 的助手訊息,每個都有自己的 `timestamp`。當欄位不存在時,請改用您收到訊息的時間。


1597 type: "user";1602 type: "user";

1598 uuid?: UUID;1603 uuid?: UUID;

1599 session_id?: string;1604 session_id?: string;

1605 agent_id?: string;

1600 message: MessageParam; // From Anthropic SDK1606 message: MessageParam; // From Anthropic SDK

1601 pasted_content?: MessageParam["content"][];1607 pasted_content?: MessageParam["content"][];

1602 parent_tool_use_id: string | null;1608 parent_tool_use_id: string | null;


1636};1642};

1637```1643```

1638 1644 

1645subagent 產生的使用者訊息(例如其自身某個工具呼叫的 `tool_result`)會帶有 `agent_id`。請參閱 [`SDKAssistantMessage`](#sdkassistantmessage),其中定義了此欄位及其版本需求。

1646 

1639在帶有 `tool_result` 區塊的訊息上,`tool_use_result` 是工具的結構化輸出物件,而非傳送給模型的文字。其形狀取決於對應 `tool_use` 區塊所指名的工具,因此此欄位的型別為 `unknown`;內建形狀列於[工具輸出類型](#tool-output-types)。下列結果需要超出其所列形狀的處理:1647在帶有 `tool_result` 區塊的訊息上,`tool_use_result` 是工具的結構化輸出物件,而非傳送給模型的文字。其形狀取決於對應 `tool_use` 區塊所指名的工具,因此此欄位的型別為 `unknown`;內建形狀列於[工具輸出類型](#tool-output-types)。下列結果需要超出其所列形狀的處理:

1640 1648 

1641* `Agent` 工具:`tool_use_result` 為 [`AgentOutput`](#agent-2)。請依據它來呈現,而非剖析 `tool_result` 文字。`completed` 結果的 `content` 包含 subagent 的報告;對於透過 `SubagentHandback` 工具呼叫交回報告的 subagent,則是以一段關於該交回的簡短說明取代報告。在 Claude Code v2.1.271 或更新版本的[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中,每個產生 `completed` 結果的 subagent 都會以這種方式回報,除非它是 [fork](/docs/zh-TW/sub-agents#fork-the-current-conversation),且 Claude 會以來自 subagent 的獨立訊息接收報告。1649* `Agent` 工具:`tool_use_result` 為 [`AgentOutput`](#agent-2)。請依據它來呈現,而非剖析 `tool_result` 文字。`completed` 結果的 `content` 包含 subagent 的報告;對於透過 `SubagentHandback` 工具呼叫交回報告的 subagent,則是以一段關於該交回的簡短說明取代報告。在 Claude Code v2.1.271 或更新版本的[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中,每個產生 `completed` 結果的 subagent 都會以這種方式回報,除非它是 [fork](/docs/zh-TW/sub-agents#fork-the-current-conversation),且 Claude 會以來自 subagent 的獨立訊息接收報告。


1992 `SDKPartialAssistantMessage`2000 `SDKPartialAssistantMessage`

1993</h3>2001</h3>

1994 2002 

1995串流部分訊息(僅當 `includePartialMessages` 為 true 時)。`parent_tool_use_id` 欄位一律為 `null`:串流事件僅針對主工作階段發出。若要進行 subagent 歸屬,請使用攜帶 `parent_tool_use_id` 的完整訊息,或啟用 [`forwardSubagentText`](#options) 以完整訊息形式接收 subagent 的文字和思考。2003串流部分訊息(僅在 `includePartialMessages` 為 true 時)。

2004 

2005`parent_tool_use_id` 欄位一律為 `null`:串流事件僅針對主工作階段發出。若要歸屬 subagent,請使用完整訊息(其帶有 [`agent_id`](#sdkassistantmessage) 和 `parent_tool_use_id`),或啟用 [`forwardSubagentText`](#options) 以完整訊息形式接收 subagent 的文字和思考內容。

1996 2006 

1997```typescript theme={null}2007```typescript theme={null}

1998type SDKPartialAssistantMessage = {2008type SDKPartialAssistantMessage = {


5776 task_type?: string;5786 task_type?: string;

5777 is_backgrounded?: boolean;5787 is_backgrounded?: boolean;

5778 spawn_depth?: number;5788 spawn_depth?: number;

5789 parent_task_id?: string;

5779 ambient?: boolean;5790 ambient?: boolean;

5780 uuid: UUID;5791 uuid: UUID;

5781 session_id: string;5792 session_id: string;


5793 5804 

5794[已恢復的 subagent](/docs/zh-TW/agent-sdk/subagents#resume-subagents) 始終報告 `is_backgrounded: true`,因為 Claude Code 在背景執行每個已恢復的 subagent。當前景工作稍後移至背景時,Claude Code 在 [`task_updated`](#sdktaskupdatedmessage) 訊息中報告新的 `is_backgrounded` 值,而不是傳送第二個 `task_started`。5805[已恢復的 subagent](/docs/zh-TW/agent-sdk/subagents#resume-subagents) 始終報告 `is_backgrounded: true`,因為 Claude Code 在背景執行每個已恢復的 subagent。當前景工作稍後移至背景時,Claude Code 在 [`task_updated`](#sdktaskupdatedmessage) 訊息中報告新的 `is_backgrounded` 值,而不是傳送第二個 `task_started`。

5795 5806 

5807`parent_task_id` 保存啟動此工作的 subagent 的 `task_id`。使用它將每個工作歸類到啟動它的 subagent 之下。Claude Code 在 subagent、Bash 和 [Monitor](#monitor) 工作上設定它。該欄位需要 Agent SDK v0.3.292 或更新版本。在下列情況下,該欄位不存在:

5808 

5809* 主執行緒啟動了該工作

5810* Claude Code 不再追蹤父工作

5811* [隊員](/docs/zh-TW/agent-teams)或工作流程內的 agent 啟動了該工作

5812 

5813父工作可能是前景工作或已結束的工作,因此請將您不認識的 ID 視為沒有父工作。

5814 

5796<h3 id="sdktaskprogressmessage">5815<h3 id="sdktaskprogressmessage">

5797 `SDKTaskProgressMessage`5816 `SDKTaskProgressMessage`

5798</h3>5817</h3>


5849 `SDKBackgroundTasksChangedMessage`5868 `SDKBackgroundTasksChangedMessage`

5850</h3>5869</h3>

5851 5870 

5852每當即時背景工作集變更時發出:工作啟動、完成、被終止、前景 agent 被背景化,或工作的 `description` 或 `ambient` 欄位變更。5871每當即時背景工作集變更時發出:工作啟動、完成或被終止;前景 agent 被背景化;或工作的 `description`、`ambient` 或 `parent_task_id` 欄位變更。如需每個項目上的 `parent_task_id` 欄位,請參閱 [`SDKTaskStartedMessage`](#sdktaskstartedmessage),它定義了該欄位及其版本要求。

5853 5872 

5854`tasks` 陣列是完整的即時集。用每個 payload 替換任何快取集,而不是配對 `task_started` 和 `task_notification` 事件,如此下一個成員資格變更會更正您遺漏的任何事件。5873`tasks` 陣列是完整的即時集。用每個 payload 替換任何快取集,而不是配對 `task_started` 和 `task_notification` 事件,如此下一個成員資格變更會更正您遺漏的任何事件。

5855 5874 

5856相對於這些每個工作事件的順序未指定,因此不要關聯兩個串流。5875當工作結束時,其 [`task_updated`](#sdktaskupdatedmessage) 和 [`task_notification`](#sdktasknotificationmessage) 會在將其從清單中移除的 `background_tasks_changed` 之前到達。除此之外,相對於每個工作事件的順序未指定。

5857 5876 

5858啟動時不發出任何內容。每當工作階段的 CLI 程序啟動或重新啟動時重設為空集,並讓下一個成員資格變更重新填入它。5877啟動時不發出任何內容。每當工作階段的 CLI 程序啟動或重新啟動時重設為空集,並讓下一個成員資格變更重新填入它。

5859 5878 


5870 task_type: string;5889 task_type: string;

5871 subagent_type?: string;5890 subagent_type?: string;

5872 description: string;5891 description: string;

5892 parent_task_id?: string;

5873 ambient?: boolean;5893 ambient?: boolean;

5874 }[];5894 }[];

5875 uuid: UUID;5895 uuid: UUID;

errors.md +12 −14

Details

3990`plugin eval` is currently unavailable3990`plugin eval` is currently unavailable

3991```3991```

3992 3992 

3993第一則訊息表示您的組建版本早於 v2.1.269,這是該命令正式推出的第一個版本。第二則訊息表示 Anthropic 已在伺服器端關閉該命令;您的機器上沒有任何設定可以將其重新開啟。3993第一則訊息表示您的建置版本早於 v2.1.269,這是該命令正式推出的第一個版本。第二則訊息表示 Anthropic 已在伺服器端關閉該命令;您的機器上沒有任何設定可以將其重新開啟。

3994 3994 

3995**該怎麼做:**3995**該怎麼做:**

3996 3996 

3997* 執行 `claude --version`,然後執行 `claude update`,並在新的工作階段中再次執行該命令。請參閱 [plugin evals 的需求](/docs/zh-TW/plugin-evals#requirements)3997* 執行 `claude --version`,然後執行 `claude update`,並在新的工作階段中再次執行該命令。請參閱 [plugin evals 的需求](/docs/zh-TW/plugin-evals#requirements)

3998* 如果您在目前的組建版本上看到第二則訊息,請在執行另一個 `claude update` 後稍後再試一次3998* 如果您在目前的建置版本上看到第二則訊息,請在執行另一個 `claude update` 後稍後再試一次

3999 3999 

4000<h3 id="marketplace-is-registered-from-an-untrusted-source">4000<h3 id="marketplace-is-registered-from-an-untrusted-source">

4001 Marketplace 是從不受信任的來源註冊的4001 Marketplace 是從不受信任的來源註冊的

4002</h3>4002</h3>

4003 4003 

4004Marketplace 是以 [為官方 Anthropic marketplace 保留的名稱](/docs/zh-TW/plugins/marketplace-reference#marketplace-file) 註冊的,但其註冊的來源不是 `anthropics` GitHub 儲存庫。Claude Code 每次載入或重新整理 marketplace 時都會重新檢查保留的名稱,因此 marketplace 及從中安裝的 plugin 會停止載入。在 v2.1.205 之前,名稱只在新增 marketplace 時檢查,因此在其名稱變成保留名稱之前註冊的項目會繼續載入。4004Marketplace 是以 [為官方 Anthropic marketplace 保留的名稱](/docs/zh-TW/plugins/marketplace-reference#marketplace-file) 註冊的,但其註冊的來源不是 `anthropics` GitHub 儲存庫。Claude Code 每次載入或重新整理 marketplace 時都會重新檢查保留的名稱,因此 marketplace 及從中安裝的 plugin 會停止載入。在 v2.1.205 之前,在其名稱變成保留名稱之前註冊的項目會繼續載入。

4005 4005 

4006```text theme={null}4006```text theme={null}

4007Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.4007Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.


4019 Marketplace 名稱是保留名稱的另一種拼寫4019 Marketplace 名稱是保留名稱的另一種拼寫

4020</h3>4020</h3>

4021 4021 

4022Marketplace 的名稱本身不是保留名稱,但 Claude Code 將其視為另一種拼寫。[保留的 marketplace 名稱](/docs/zh-TW/plugins/marketplace-reference#reserved-name-spellings) 列出哪些拼寫算作保留名稱。Claude Code 在您新增 marketplace 時拒絕這樣的名稱:4022Marketplace 的名稱本身不是保留名稱,但 Claude Code 將其視為某個保留名稱的另一種拼寫。[保留名稱](/docs/zh-TW/plugins/marketplace-reference#reserved-name-spellings) 列出哪些拼寫算作保留名稱。Claude Code 在您新增 marketplace 時拒絕這樣的名稱:

4023 4023 

4024```text theme={null}4024```text theme={null}

4025Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.4025Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.


4064 Marketplace 已從不同的來源新增4064 Marketplace 已從不同的來源新增

4065</h3>4065</h3>

4066 4066 

4067您透過 [`/plugin install <plugin> --marketplace <source>`](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command) 確認新增 marketplace,而 Claude Code 從該來源擷取的目錄將自己命名為與您已從不同來源新增的 marketplace 相同的名稱。Claude Code 保留現有的 marketplace 而不是替換它,plugin 不會被安裝。4067您在工作階段中或從 shell 使用 [安裝命令上的 `--marketplace <source>`](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command) 指定了新的 marketplace 來源。Claude Code 從該來源擷取的目錄,與您已從不同來源新增的 marketplace 名稱相同。Claude Code 保留現有的 marketplace 而不是替換它,plugin 不會被安裝。

4068 4068 

4069```text theme={null}4069```text theme={null}

4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


4137 4137 

4138在 `claude plugin` 命令輸出中,相同的錯誤讀作 `Path escapes plugin directory: ./../shared.md (commands)`。4138在 `claude plugin` 命令輸出中,相同的錯誤讀作 `Path escapes plugin directory: ./../shared.md (commands)`。

4139 4139 

4140Claude Code 拒絕指向 plugin 外部的路徑(如 `../shared-utils`)和導致 plugin 外部的符號連結,以及 [marketplace 符號連結規則](/docs/zh-TW/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) 不允許的符號連結。對於符號連結,訊息也會說明路徑解析的位置:4140Claude Code 會拒絕字面上指向 plugin 外部的路徑(例如 `../shared-utils`),以及導向 plugin 外部且不屬於 [marketplace 符號連結規則](/docs/zh-TW/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) 所允許的符號連結。對於符號連結,訊息也會說明路徑解析的位置:

4141 4141 

4142```text theme={null}4142```text theme={null}

4143commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory4143commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory

4144```4144```

4145 4145 

4146在 macOS 和 Linux 上,Claude Code 也拒絕包含反斜線的元件路徑,即使路徑保持在 plugin 內。使用 Windows 風格分隔符的元件路徑的 plugin 在 Windows 上載入並在其他平台上觸發此拒絕:4146在 macOS 和 Linux 上,Claude Code 也拒絕任何位置包含反斜線的元件路徑,即使路徑保持在 plugin 內。使用 Windows 風格分隔符的元件路徑的 plugin 在 Windows 上載入並在其他平台上觸發此拒絕:

4147 4147 

4148```text theme={null}4148```text theme={null}

4149commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform4149commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform

4150```4150```

4151 4151 

4152在 v2.1.251 之前,Claude Code 載入在 marketplace 項目中宣告的 `commands` 路徑,即使它指向 plugin 目錄外。Claude Code 已經拒絕在 `plugin.json` 中宣告的路徑和 marketplace 項目中的其他元件路徑。4152在 v2.1.251 之前,Claude Code 載入在 marketplace 項目中宣告的 `commands` 路徑,即使它指向 plugin 目錄外。

4153 4153 

4154在 v2.1.257 之前,檢查只查看路徑的拼寫,而不是符號連結導向的位置。4154在 v2.1.257 之前,檢查只查看路徑的拼寫,而不是符號連結導向的位置。

4155 4155 


4217 4217 

4218**該怎麼做:**4218**該怎麼做:**

4219 4219 

4220* 如果您維護 marketplace,將項目的 `source` 寫成純相對路徑(例如 `./plugins/my-plugin`),並保持它跨越的任何符號連結指向 marketplace 目錄內4220* 如果您維護 marketplace,將項目的 `source` 寫成使用正斜線的純相對路徑(例如 `./plugins/my-plugin`),並保持它跨越的任何符號連結指向 marketplace 目錄內

4221* 如果您從直接 URL 新增了 marketplace,相對項目無法解析。要求 marketplace 作者使用 [另一個 plugin 來源](/docs/zh-TW/plugins/marketplace-reference#plugin-sources),或改為從其 git 儲存庫新增 marketplace4221* 如果您從直接 URL 新增了 marketplace,相對項目無法解析。要求 marketplace 作者使用 [另一個 plugin 來源](/docs/zh-TW/plugins/marketplace-reference#plugin-sources),或改為從其 git 儲存庫新增 marketplace

4222 4222 

4223<h3 id="failed-to-load-marketplace-configuration">4223<h3 id="failed-to-load-marketplace-configuration">


4226 4226 

4227Claude Code 將您新增的 plugin marketplace 保留在 `~/.claude/plugins/known_marketplaces.json` 的登錄檔案中。當 Claude Code 無法使用該檔案時,需要登錄的 plugin 命令(例如 `claude plugin install`)會失敗,並顯示以下兩則訊息之一:4227Claude Code 將您新增的 plugin marketplace 保留在 `~/.claude/plugins/known_marketplaces.json` 的登錄檔案中。當 Claude Code 無法使用該檔案時,需要登錄的 plugin 命令(例如 `claude plugin install`)會失敗,並顯示以下兩則訊息之一:

4228 4228 

4229* `Failed to load marketplace configuration`:檔案不是有效的 JSON,或無法讀取。空檔案也會以這種方式失敗。4229* `Failed to load marketplace configuration`:檔案存在,但不是有效的 JSON,或無法讀取。空檔案也會以這種方式失敗。

4230* `Marketplace configuration file is corrupted`:檔案是有效的 JSON,但其內容與登錄架構不符。4230* `Marketplace configuration file is corrupted`:檔案是有效的 JSON,但其內容與登錄 schema 不符。

4231 

4232遺失的檔案不是失敗:Claude Code 將其視為沒有 marketplace 的登錄。

4233 4231 

4234使用空檔案時,`claude plugin install` 報告:4232使用空檔案時,`claude plugin install` 報告:

4235 4233 


4241 4239 

4242**該怎麼做:**4240**該怎麼做:**

4243 4241 

4244* 開啟 `~/.claude/plugins/known_marketplaces.json` 並修復 JSON,或修復訊息命名為與登錄架構不符的項目4242* 開啟 `~/.claude/plugins/known_marketplaces.json` 並修復 JSON,或修復訊息命名為與登錄 schema 不符的項目

4245* 如果您無法修復它,刪除檔案或用 `{}` 替換其內容,然後使用 `claude plugin marketplace add <source>` 重新新增每個 marketplace。Claude Code 在您下次在已信任的資料夾中啟動它時,重新註冊您的使用者或受管設定在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 中宣告的 marketplace。4243* 如果您無法修復它,刪除檔案或用 `{}` 替換其內容,然後使用 `claude plugin marketplace add <source>` 重新新增每個 marketplace。Claude Code 在您下次在已信任的資料夾中啟動它時,重新註冊您的使用者或受管設定在 [`extraKnownMarketplaces`](/docs/zh-TW/settings-reference#extraknownmarketplaces) 中宣告的 marketplace。

4246 4244 

4247<h3 id="plugin-is-required-by-your-organization">4245<h3 id="plugin-is-required-by-your-organization">

hooks.md +17 −7

Details

1237 SessionStart 決策控制1237 SessionStart 決策控制

1238</h4>1238</h4>

1239 1239 

1240Claude Code 會將其[視為純文字](#exit-code-0)的 stdout 加入 Claude 的上下文。除了所有 hook 都可使用的 [JSON 輸出欄位](#json-output)之外,您還可以傳回下列事件專屬欄位:1240SessionStart hook 可以為 Claude 新增上下文、提供第一則使用者訊息、設定工作階段標題、監看檔案,以及重新載入 skill。除了所有 hook 皆可使用的 [JSON 輸出欄位](#json-output)之外,請針對每項功能傳回對應的欄位:

1241 1241 

1242| 欄位 | 說明 |1242| 欄位 | 說明 |

1243| :- | :- |1243| :- | :- |

1244| `additionalContext` | 在對話開始時、第一個提示詞之前加入 Claude 上下文的字串。關於文字如何傳遞以及應放入什麼內容,請參閱[為 Claude 加入上下文](#add-context-for-claude) |1244| `additionalContext` | 在對話開始時、第一個提示詞之前加入 Claude 上下文的字串。關於文字如何傳遞以及應放入什麼內容,請參閱[為 Claude 加入上下文](#add-context-for-claude) |

1245| `initialUserMessage` | 用作工作階段第一則使用者訊息的字串。適用於使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless),即使未提供提示詞,它也會成為第一個回合。如果提供了提示詞,提示詞會作為下一個回合接續。與附加到既有回合的 `additionalContext` 不同,此欄位會建立該回合 |1245| `initialUserMessage` | 在使用 `-p` 旗標的[非互動模式](/docs/zh-TW/headless)中,作為工作階段第一則使用者訊息的字串。即使您未傳入提示詞,它也會成為第一個回合。您傳入的提示詞則會作為下一個回合 |

1246| `sessionTitle` | 設定工作階段標題,效果與 `/rename` 相同。可用來依據啟動資料夾、git 分支或 worktree 名稱自動命名工作階段。在 `source` 為 `"startup"`、`"resume"` 或 `"fork"` 時套用;在 `"clear"` 和 `"compact"` 時忽略 |1246| `sessionTitle` | 設定工作階段標題,效果與 `/rename` 相同。當 `source` 為 `"startup"`、`"resume"` 或 `"fork"` 時適用 |

1247| `watchPaths` | 在此工作階段期間要監看 [FileChanged](#filechanged) 事件的絕對路徑陣列 |1247| `watchPaths` | 在此工作階段期間要監看 [FileChanged](#filechanged) 事件的絕對路徑陣列 |

1248| `reloadSkills` | 布林值。為 `true` 時,Claude Code 會在 SessionStart hook 完成後重新掃描 [skill](/docs/zh-TW/skills) 和命令目錄,讓 hook 安裝的 skill 從第一個提示詞開始就能在同一個工作階段中使用 |1248| `reloadSkills` | 布林值。為 `true` 時,Claude Code 會在 SessionStart hook 完成後重新掃描 [skill](/docs/zh-TW/skills) 和命令目錄。請參閱[重新載入 hook 安裝的 skill](#reload-skills-that-a-hook-installs) |

1249 

1250此輸出會新增上下文並為工作階段命名:

1249 1251 

1250```json theme={null}1252```json theme={null}

1251{1253{


1257}1259}

1258```1260```

1259 1261 

1260由於此事件的純 stdout 已會傳達給 Claude,只載入上下文的 hook 可以直接輸出到 stdout,無須建構 JSON。當您需要將上下文與 `sessionTitle` 等其他欄位結合時,請使用 JSON 格式。1262只新增上下文的 hook 可以直接輸出內容而不必建構 JSON,因為 Claude Code 會將 SessionStart hook 的[純文字 stdout](#exit-code-0) 加入 Claude 的上下文。

1263 

1264如果您外掛的 SessionStart hook 提供 `initialUserMessage` 或 `sessionTitle`,請在工作階段開始前安裝該外掛。對於在 SessionStart hook 執行後才完成安裝的外掛,Claude Code 會忽略這兩個欄位。

1265 

1266<h4 id="reload-skills-that-a-hook-installs">

1267 重新載入 hook 安裝的 skill

1268</h4>

1269 

1270若要讓 SessionStart hook 安裝的 skill 在同一個工作階段中可用,請傳回 `reloadSkills`。skill 探索通常會在 SessionStart hook 完成之前執行,因此若沒有此欄位,hook 寫入 `~/.claude/skills/` 或 `.claude/skills/` 的檔案可能在第一個提示詞執行時尚不存在。

1261 1271 

1262當 SessionStart hook 會安裝或更新 skill 時,請使用 `reloadSkills`。skill 探索通常會在 SessionStart hook 完成之前執行,因此 hook 寫入 `~/.claude/skills/` 或 `.claude/skills/` 的檔案,否則只會在下一個工作階段中出現。此範例會同步共用的 skill 儲存庫並請求重新掃描:1272此範例會同步共用的 skill 儲存庫並請求重新掃描:

1263 1273 

1264```bash theme={null}1274```bash theme={null}

1265#!/bin/bash1275#!/bin/bash


1270echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1280echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1271```1281```

1272 1282 

1273儲存庫 URL 只是預留位置,請替換為您自己的 skill 儲存庫。使用預留位置時,clone 會失敗並在 stderr 輸出 `fatal:` 訊息。以 0 結束的 SessionStart hook 的 stderr 僅供參考,因此 `reloadSkills` 請求仍會套用。1283儲存庫 URL 僅為預留位置。請替換為您自己的 skill 儲存庫。

1274 1284 

1275<h4 id="persist-environment-variables">1285<h4 id="persist-environment-variables">

1276 保存環境變數1286 保存環境變數

Details

91| `-y, --yes` | 接受顯示的安裝命令,無需 `Run this command now?` 提示。當命令在 Claude Code 工作階段內執行時(例如從 Bash 工具或 hook)被忽略。需要 Claude Code v2.1.229 或更新版本 |91| `-y, --yes` | 接受顯示的安裝命令,無需 `Run this command now?` 提示。當命令在 Claude Code 工作階段內執行時(例如從 Bash 工具或 hook)被忽略。需要 Claude Code v2.1.229 或更新版本 |

92| `--accept-command <sha256>` | 接受顯示的安裝命令,其 `sha256` 先前的 [`--json` 執行](#plugin-json-result) 在 `shownCommand` 中報告,代替 `-y`。無法與 `-y` 結合。請參閱 [接受顯示的安裝命令](#accept-a-displayed-install-command)。需要 Claude Code v2.1.271 或更新版本 |92| `--accept-command <sha256>` | 接受顯示的安裝命令,其 `sha256` 先前的 [`--json` 執行](#plugin-json-result) 在 `shownCommand` 中報告,代替 `-y`。無法與 `-y` 結合。請參閱 [接受顯示的安裝命令](#accept-a-displayed-install-command)。需要 Claude Code v2.1.271 或更新版本 |

93| `--json` | 將結果列印為 stdout 最後一行的一個 JSON 物件,而不是人類可讀的訊息,供指令碼使用。請參閱 [JSON 結果格式](#plugin-json-result)。需要 Claude Code v2.1.268 或更新版本 |93| `--json` | 將結果列印為 stdout 最後一行的一個 JSON 物件,而不是人類可讀的訊息,供指令碼使用。請參閱 [JSON 結果格式](#plugin-json-result)。需要 Claude Code v2.1.268 或更新版本 |

94| `--marketplace <source>` | 從位於 `<source>` 的市集安裝以裸名稱給出的 `<plugin>`,如果您尚未新增該市集,會先新增它。請參閱 [在一個命令中新增市集並安裝](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command)。需要 Claude Code v2.1.292 或更新版本 |

94 95 

95在您的 shell 中執行 `claude plugin install --help`,查看您的版本支援的每個選項。96在您的 shell 中執行 `claude plugin install --help`,查看您的版本支援的每個選項。

96 97 

Details

189 189 

190* **Scope**:預設為使用者範圍。傳遞 `--scope project` 或 `--scope local` 以變更它。190* **Scope**:預設為使用者範圍。傳遞 `--scope project` 或 `--scope local` 以變更它。

191* **When the plugins load**:它安裝的外掛程式在您下次啟動 Claude Code 時載入,或當您在已開啟的工作階段中執行 `/reload-plugins` 時載入。191* **When the plugins load**:它安裝的外掛程式在您下次啟動 Claude Code 時載入,或當您在已開啟的工作階段中執行 `/reload-plugins` 時載入。

192* **The marketplace must be added first**:在沒有人開啟互動式 Claude Code 工作階段的機器上,官方市集未註冊,因此從它安裝的指令碼在安裝前執行 `claude plugin marketplace add anthropics/claude-plugins-official`。192* **The marketplace on a new machine**:在尚未有人開啟互動式 Claude Code 工作階段的機器上,官方市集未註冊,因此從它安裝的指令碼在安裝前執行 `claude plugin marketplace add anthropics/claude-plugins-official`。請參閱 [從您的 shell 新增和安裝](#add-and-install-from-your-shell)。

193 193 

194```bash theme={null}194```bash theme={null}

195claude plugin install formatter@your-org --scope project195claude plugin install formatter@your-org --scope project


232 新增市集並在一個命令中安裝232 新增市集並在一個命令中安裝

233</h3>233</h3>

234 234 

235若要從您尚未新增的市集安裝外掛程式,請在 Claude Code 工作階段中執行 `/plugin install` 並使用 `--marketplace` 命名市集來源。需要 Claude Code v2.1.275 或更新版本。235若要從您尚未新增的市集安裝外掛程式,請在安裝命令上使用 `--marketplace` 命名市集來源,可在工作階段中或從 shell 執行。來源採用 [與 `/plugin marketplace add` 相同的形式](#add-a-marketplace),例如 GitHub `owner/repo`、git URL 或本機路徑。單獨給出外掛程式名稱,不帶 `@marketplace` 後綴。

236 

237<h4 id="add-and-install-in-a-session">

238 在工作階段中新增並安裝

239</h4>

240 

241在 Claude Code 工作階段中執行 `/plugin install`,並提供外掛程式和來源。需要 Claude Code v2.1.275 或更新版本。在工作階段中,來源不能包含空格。

236 242 

237```text theme={null}243```text theme={null}

238/plugin install deploy-helper --marketplace your-org/plugins244/plugin install deploy-helper --marketplace your-org/plugins

239```245```

240 246 

241來源採用 [與 `/plugin marketplace add` 相同的形式](#add-a-marketplace),例如 GitHub `owner/repo`、git URL 或本機路徑,除了它不能包含空格。單獨給出外掛程式名稱,不帶 `@marketplace` 後綴。

242 

243如果您尚未新增該市集,Claude Code 會顯示它解析的來源並要求您在新增前確認。市集新增後,外掛程式的詳細資訊開啟,您選擇 [安裝範圍](#install-a-plugin)。如果來源與您已新增的市集相符,Claude Code 會跳過確認並在該市集中開啟外掛程式的詳細資訊。247如果您尚未新增該市集,Claude Code 會顯示它解析的來源並要求您在新增前確認。市集新增後,外掛程式的詳細資訊開啟,您選擇 [安裝範圍](#install-a-plugin)。如果來源與您已新增的市集相符,Claude Code 會跳過確認並在該市集中開啟外掛程式的詳細資訊。

244 248 

249<h4 id="add-and-install-from-your-shell">

250 從 shell 新增並安裝

251</h4>

252 

253在 shell 中,無需啟動工作階段,執行 `claude plugin install` 並提供外掛程式和來源。需要 Claude Code v2.1.292 或更新版本。

254 

255```bash theme={null}

256claude plugin install deploy-helper --marketplace your-org/plugins

257```

258 

259shell 命令會新增市集而不經過確認步驟。您已從該來源新增的市集會被重複使用。新的市集會在與 `claude plugin marketplace add` 相同的 [組織政策檢查](/docs/zh-TW/plugins/org#restrict-what-users-can-install) 下新增,並且即使您傳遞 `--scope project`,也會宣告在您的使用者設定中。

260 

245<h3 id="add-a-private-marketplace">261<h3 id="add-a-private-marketplace">

246 新增私人市集262 新增私人市集

247</h3>263</h3>

Details

138| `$.mcp.call` | 在連接的 MCP 伺服器上呼叫工具,受工作階段的權限規則約束 |138| `$.mcp.call` | 在連接的 MCP 伺服器上呼叫工具,受工作階段的權限規則約束 |

139| `$.model.complete` | 使用使用者的計畫或 API 金鑰進行模型呼叫 |139| `$.model.complete` | 使用使用者的計畫或 API 金鑰進行模型呼叫 |

140| `$.prompt.submit` | 提交提示,可以將其作為使用者自己的話語發送 |140| `$.prompt.submit` | 提交提示,可以將其作為使用者自己的話語發送 |

141| `$.session.send` | 發送另一個工作階段或子代理的 Claude 讀取的訊息 |141| `$.session.send` | 發送另一個工作階段、subagent 或[隊員](/docs/zh-TW/agent-teams)的 Claude 讀取的訊息 |

142 142 

143在 `hooks:` 行中,[`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) 和 [`prompt.submit`](/docs/zh-TW/plugins/mods/reference#prompts-and-what-claude-reads) 表示 mod 看到每個工具呼叫和每個提示,並可以更改它們。[`session.append`](/docs/zh-TW/plugins/mods/reference#session) 表示 mod 可以在儲存前重寫對話的每一行。[`ui.render{component=AskUserQuestion}`](/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws) 表示 mod 可以重繪 Claude 用來詢問使用者問題的對話框。`tool.check` 表示 mod 可以在權限提示出現之前批准或拒絕工具呼叫。[了解預設情況下會發生什麼](#know-what-happens-by-default)列出您的哪些規則和 hooks 優先於其答案。143在 `hooks:` 行中,[`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) 和 [`prompt.submit`](/docs/zh-TW/plugins/mods/reference#prompts-and-what-claude-reads) 表示 mod 看到每個工具呼叫和每個提示,並可以更改它們。[`session.append`](/docs/zh-TW/plugins/mods/reference#session) 表示 mod 可以在儲存前重寫對話的每一行。[`ui.render{component=AskUserQuestion}`](/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws) 表示 mod 可以重繪 Claude 用來詢問使用者問題的對話框。`tool.check` 表示 mod 可以在權限提示出現之前批准或拒絕工具呼叫。[了解預設情況下會發生什麼](#know-what-happens-by-default)列出您的哪些規則和 hooks 優先於其答案。

144 144 

Details

159 在工作階段之間傳送和接收訊息159 在工作階段之間傳送和接收訊息

160</h2>160</h2>

161 161 

162一個 mod 可以向另一個工作階段或此工作階段的子代理傳送純文字訊息,並觀察到達和離開的訊息。`$.session.send({ to, text })` 傳送一個訊息,與 SendMessage 工具進行相同的傳遞。`to` 是工作階段的 `{ sessionId }`、來自 `$.agent.list()` 的子代理的 `{ agentId }`,或接收訊息來自的字串位址。呼叫在訊息排隊後解析,返回 `{ isDelivered: true }`。當沒有任何內容被傳遞時,它會以 `{ isDelivered: false, reason }` 解析,`reason` 說明原因。162mod 可以向您的另一個工作階段、此工作階段的某個 subagent,或其 [agent team](/docs/zh-TW/agent-teams) 中的隊員傳送純文字訊息。它也可以觀察到達和離開的訊息。

163 

164若要傳送訊息,請呼叫 `$.session.send({ to, text })`,它會進行與 SendMessage 工具相同的傳遞。依據接收訊息的對象設定 `to`:

165 

166* **您的另一個工作階段**:`{ sessionId }`

167* **subagent 或隊員**:`{ agentId }`,使用來自 `$.agent.list()` 的 id

168* **您所收到訊息的寄件者**:該訊息來源的字串位址

169 

170呼叫在訊息排入佇列後解析,返回 `{ isDelivered: true }`。當沒有任何內容被傳遞時,它會以 `{ isDelivered: false, reason }` 解析,`reason` 說明原因。

163 171 

164此 hook 透過詢問您在其後輸入的 id 的工作階段的狀態,來回答 `/ping` 命令([註冊為命令](#add-a-command)):172此 hook 透過詢問您在其後輸入的 id 的工作階段的狀態,來回答 `/ping` 命令([註冊為命令](#add-a-command)):

165 173 

Details

281 281 

282`result.usage` 保存 Claude API 為請求回報的 token 計數,以及回應的 `model`:`input_tokens`、`output_tokens`、`cache_read_input_tokens` 和 `cache_creation_input_tokens`。此 hook 也會針對 subagent 的請求執行,因此若您只想要主要對話,請檢查 `e.agentId`。282`result.usage` 保存 Claude API 為請求回報的 token 計數,以及回應的 `model`:`input_tokens`、`output_tokens`、`cache_read_input_tokens` 和 `cache_creation_input_tokens`。此 hook 也會針對 subagent 的請求執行,因此若您只想要主要對話,請檢查 `e.agentId`。

283 283 

284若要查看 API 在請求期間自行執行的工具呼叫,例如對 [advisor 工具](/docs/zh-TW/advisor)的呼叫,請讀取 `result.serverToolUses`。Claude Code 不會執行這些呼叫,因此不會針對它們觸發任何 `tool.call` 或 `tool.check` hook。當回應中沒有此類呼叫時,該欄位不會存在,且此欄位需要 Claude Code v2.1.290 或更新版本。

285 

284<h3 id="hook-the-settings-hook-events">286<h3 id="hook-the-settings-hook-events">

285 處理設定 hook 事件287 處理設定 hook 事件

286</h3>288</h3>

Details

209| [`$.ui`](/docs/zh-TW/plugins/mods/interface#pick-where-to-draw) | `resolve`、`invalidate`、`open`、`close`、`panes`、`focus`、`scroll`、`toast`、`status`、`log`、`notice`、`ask`、`copy`、`selection`、`blit` |209| [`$.ui`](/docs/zh-TW/plugins/mods/interface#pick-where-to-draw) | `resolve`、`invalidate`、`open`、`close`、`panes`、`focus`、`scroll`、`toast`、`status`、`log`、`notice`、`ask`、`copy`、`selection`、`blit` |

210| [`$.command`](/docs/zh-TW/plugins/mods/api#add-a-command) | `register`、`run`、`list` |210| [`$.command`](/docs/zh-TW/plugins/mods/api#add-a-command) | `register`、`run`、`list` |

211| [`$.tool`](/docs/zh-TW/plugins/mods/api#add-a-tool) | `register`、`call`、`check`、`list` |211| [`$.tool`](/docs/zh-TW/plugins/mods/api#add-a-tool) | `register`、`call`、`check`、`list` |

212| `$.agent` | `register`、`spawn`、`list` |212| `$.agent` | `register`、`spawn`、`list`。`list()` 會回傳此工作階段的 subagent 與隊友,每個都帶有 `status`,其值為 `pending`、`running`、`waiting`、`idle`、`completed`、`failed` 或 `killed`,其中 `idle` 與 `waiting` 需要 Claude Code v2.1.289 或更新版本。 |

213| [`$.model`](/docs/zh-TW/plugins/mods/api#call-a-model) | `complete`、`fork`、`classify` |213| [`$.model`](/docs/zh-TW/plugins/mods/api#call-a-model) | `complete`、`fork`、`classify` |

214| [`$.prompt`](/docs/zh-TW/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`、`read`、`fill`、`suggest`、`compose`。Claude 會在一個指明您的 mod 為傳送者的句子之後,讀取來自 `submit({ text })` 的文字。`submit({ text, asUser: true })` 會將文字當作使用者本人的話傳送,不附帶該句子。 |214| [`$.prompt`](/docs/zh-TW/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`、`read`、`fill`、`suggest`、`compose`。Claude 會在一個指明您的 mod 為傳送者的句子之後,讀取來自 `submit({ text })` 的文字。`submit({ text, asUser: true })` 會將文字當作使用者本人的話傳送,不附帶該句子。 |

215| `$.turn` | `abort` |215| `$.turn` | `abort` |


317| `$.process.run` 逾時 | 預設 30 秒,最多 10 分鐘 |317| `$.process.run` 逾時 | 預設 30 秒,最多 10 分鐘 |

318| `$.model.complete` `maxTokens` | 預設 1024,最多 64,000 或模型的輸出上限 |318| `$.model.complete` `maxTokens` | 預設 1024,最多 64,000 或模型的輸出上限 |

319| `$.fs.read` 與 `$.fs.write` | 單一檔案 4 MiB |319| `$.fs.read` 與 `$.fs.write` | 單一檔案 4 MiB |

320| hook 的 `drop` 原因或 `config.set` `deny` 原因 | 4,096 個字元。較長原因的結尾會被截斷,drop 或 deny 仍會生效。截斷需要 Claude Code v2.1.292 或更新版本,在較早的版本中,hook 則會改為[失敗](/docs/zh-TW/plugins/mods/events#handle-a-hook-that-fails)。 |

320| 單一樹狀結構中的文字 | 只繪製前 100,000 個字元 |321| 單一樹狀結構中的文字 | 只繪製前 100,000 個字元 |

321| `Code` 的 `language` 或 `path`、`Select` 選項的 `value`,或 `Client` 的 `module` | 10,000 個字元。若其中任一項較長,Claude Code 會[自行繪製該位置的版本](/docs/zh-TW/plugins/mods/interface#build-a-tree-from-elements)。 |322| `Code` 的 `language` 或 `path`、`Select` 選項的 `value`,或 `Client` 的 `module` | 10,000 個字元。若其中任一項較長,Claude Code 會[自行繪製該位置的版本](/docs/zh-TW/plugins/mods/interface#build-a-tree-from-elements)。 |

322| `Link` 的 `href` | 2,048 個字元。較長的 `href` 會導致整個樹狀結構無法繪製。 |323| `Link` 的 `href` | 2,048 個字元。較長的 `href` 會導致整個樹狀結構無法繪製。 |

Details

110* `returned neither { value } nor { deny }`:mods API 呼叫的 stub 返回了一個裸值,這會使測試失敗110* `returned neither { value } nor { deny }`:mods API 呼叫的 stub 返回了一個裸值,這會使測試失敗

111* `no implementation for` 後跟一個名稱:您的 mod 進行了該呼叫,沒有 stub 回答它111* `no implementation for` 後跟一個名稱:您的 mod 進行了該呼叫,沒有 stub 回答它

112 112 

113該套件還在記憶體中匯出 mocks,為您回答整個命名空間。`mock.clock(on)` 回答 [`$.clock`](/docs/zh-TW/plugins/mods/api#run-work-in-the-background),`mock.store(on, { count: 7 })` 從以這些項目開始的存儲中回答 `$.store`,`mock.env(on, { CI: 'true' })` 從這些變數中回答 `$.env.get`。`mock.clock` 返回一個您的測試可以推進的模擬時鐘,因此計時器測試不會等待。`mock.store` 不返回任何內容,因此要檢查您的 mod 保存了什麼,請自己編寫兩個 `store` stubs,如 [drawing test](#test-a-drawing) 所做的那樣。113該套件還匯出了現成的 mock,用於時鐘、存儲、環境變數,以及附加到對話中的列:

114 

115* **`mock.clock(on)`**:回答 [`$.clock`](/docs/zh-TW/plugins/mods/api#run-work-in-the-background),並返回一個由您的測試推進的模擬時鐘,因此計時器測試不會等待。

116* **`mock.store(on, { count: 7 })`**:從以這些項目開始的存儲中回答 `$.store`。它不返回任何內容,因此要檢查您的 mod 保存了什麼,請自己編寫兩個 `store` stub,如 [drawing test](#test-a-drawing) 所做的那樣。

117* **`mock.env(on, { CI: 'true' })`**:從這些變數中回答 `$.env.get`。

118* **`mock.session(on)`**:返回一個模擬工作階段,其 `appended()` 方法會列出您的 mod 透過 [`$.session.append`](/docs/zh-TW/plugins/mods/reference#session) 新增的列,由舊到新排列;需要 Claude Code v2.1.293 或更新版本。

114 119 

115<h3 id="follow-the-test-kit’s-rules">120<h3 id="follow-the-test-kit’s-rules">

116 遵循測試套件的規則121 遵循測試套件的規則


168 查詢 stub 返回的內容173 查詢 stub 返回的內容

169</h3>174</h3>

170 175 

171您的 mod 在測試中進行的每個 mods API 呼叫都需要一個 stub 來回答,除了套件自己回答的少數幾個:[`$.ui.invalidate`](/docs/zh-TW/plugins/mods/interface#redraw-when-something-changes) 和 [`$.state`](/docs/zh-TW/plugins/mods/interface#keep-state) 呼叫。對於 `$.clock` 呼叫,使用 `mock.clock(on)`,否則您的 mod 的 `$.clock.now()` 會失敗,並顯示 `no implementation for clock.now`。176您的 mod 在測試中進行的每個 mods API 呼叫都需要一個代替 Claude Code 回答的 stub,除了套件自己回答的少數幾個:[`$.ui.invalidate`](/docs/zh-TW/plugins/mods/interface#redraw-when-something-changes)、[`$.state`](/docs/zh-TW/plugins/mods/interface#keep-state) 和 `$.session.append` 呼叫。對於 `$.clock` 呼叫,使用 `mock.clock(on)`,否則您的 mod 的 `$.clock.now()` 會失敗,並顯示 `no implementation for clock.now`。

172 177 

173此表列出了 mods 最常使用的。第一列是您的 mod 進行的呼叫或它使用 `next(e)` 傳遞的事件。第二列是傳遞給該名稱下的 `on` 的函數,因此 `$.store.get` 列變成 `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`。stub 中的 `'...'` 標記您要填入的文字:178此表列出了 mods 最常使用的。第一列是您的 mod 進行的呼叫或它使用 `next(e)` 傳遞的事件。第二列是傳遞給該名稱下的 `on` 的函數,因此 `$.store.get` 列變成 `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`。stub 中的 `'...'` 標記您要填入的文字:

174 179 

Details

129* 新增市集一次:`claude plugin marketplace add your-org/your-marketplace`,其中引數是 GitHub `owner/repo` 速記、URL 或路徑129* 新增市集一次:`claude plugin marketplace add your-org/your-marketplace`,其中引數是 GitHub `owner/repo` 速記、URL 或路徑

130* 安裝外掛程式:`claude plugin install deploy-helper@your-marketplace`130* 安裝外掛程式:`claude plugin install deploy-helper@your-marketplace`

131* 或從工作階段內執行兩者:`/plugin install deploy-helper --marketplace your-org/your-marketplace`。需要 Claude Code v2.1.275 或更新版本。請參閱 [在一個命令中新增市集和安裝](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command)131* 或從工作階段內執行兩者:`/plugin install deploy-helper --marketplace your-org/your-marketplace`。需要 Claude Code v2.1.275 或更新版本。請參閱 [在一個命令中新增市集和安裝](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command)

132* 或從 shell 以一個命令執行兩者:`claude plugin install deploy-helper --marketplace your-org/your-marketplace`。需要 Claude Code v2.1.292 或更新版本

132 133 

133<h3 id="ship-updates-to-users">134<h3 id="ship-updates-to-users">

134 向使用者發送更新135 向使用者發送更新

Details

163 `Invalid marketplace source format`163 `Invalid marketplace source format`

164</h3>164</h3>

165 165 

166您執行了 `/plugin marketplace add <source>` 或 `claude plugin marketplace add <source>`,Claude Code 回覆 `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`。166您執行了 `/plugin marketplace add <source>`、`claude plugin marketplace add <source>` 或 `claude plugin install <plugin> --marketplace <source>`,Claude Code 回覆 `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`。

167 167 

168Claude Code 接受以下形式之一的來源:168Claude Code 接受以下形式之一的來源:

169 169 


568 `Marketplace "<name>" is already added from a different source`568 `Marketplace "<name>" is already added from a different source`

569</h3>569</h3>

570 570 

571您確認透過 [`/plugin install <plugin> --marketplace <source>`](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command) 新增市集,Claude Code 從該來源擷取的目錄與您已從不同來源新增的市集具有相同的名稱。Claude Code 保留現有市集而不是替換它,外掛程式未安裝。571您在工作階段中或從 shell 使用 [安裝命令上的 `--marketplace <source>`](/docs/zh-TW/plugins/install#add-a-marketplace-and-install-in-one-command) 指定了新的市集來源。Claude Code 從該來源擷取的目錄與您已從不同來源新增的市集具有相同的名稱。Claude Code 保留現有市集而不是替換它,外掛程式未安裝。

572 572 

573完整訊息如下所示:573完整訊息如下所示:

574 574 

sub-agents.md +3 −1

Details

609主對話的權限模式決定 Claude Code 是否使用您設定的值:609主對話的權限模式決定 Claude Code 是否使用您設定的值:

610 610 

611* 當主對話在 `bypassPermissions`、`acceptEdits` 或[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中時,子代理在該相同模式中執行,Claude Code 忽略您設定的 `permissionMode`。在自動模式下,分類器使用主對話的阻止和允許規則評估子代理的工具呼叫。當子代理完成時,分類器也在報告被傳遞之前檢查其工作和最終報告,如[自動模式如何處理子代理](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)所述。611* 當主對話在 `bypassPermissions`、`acceptEdits` 或[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中時,子代理在該相同模式中執行,Claude Code 忽略您設定的 `permissionMode`。在自動模式下,分類器使用主對話的阻止和允許規則評估子代理的工具呼叫。當子代理完成時,分類器也在報告被傳遞之前檢查其工作和最終報告,如[自動模式如何處理子代理](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)所述。

612* 當主對話在 `default`、`dontAsk` 或 `plan` 模式中時,子代理在您設定的權限模式中執行,除了 `bypassPermissions`。宣告 `bypassPermissions` 的子代理保持主對話的模式。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更新版本。612* 當主對話處於 `default`、`dontAsk` 或 `plan` 模式時,subagent 會以您設定的權限模式執行。在以下情況下,它會改為保持主對話的權限模式:

613 * 您設定了 `bypassPermissions`。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更新版本。

614 * 您設定了 `auto`,但 subagent [無法使用自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),例如設定檔設定了 [`disableAutoMode`](/docs/zh-TW/settings-reference#disableautomode),或 subagent 的模型不支援自動模式。

613 615 

614`permissionMode` 接受這些值,以及 `manual` 作為 `default` 的別名:616`permissionMode` 接受這些值,以及 `manual` 作為 `default` 的別名:

615 617