8 8
9當 mod 的模組或其中一個 hook 失敗時,Claude Code 會跳過它,工作階段會繼續進行,因此損壞的 mod 看起來可能像沒有作用的 mod。首先檢查 Claude Code 從您的 mod 讀取了什麼,以及它在哪裡報告問題,然後找到您遇到的症狀或訊息。9當 mod 的模組或其中一個 hook 失敗時,Claude Code 會跳過它,工作階段會繼續進行,因此損壞的 mod 看起來可能像沒有作用的 mod。首先檢查 Claude Code 從您的 mod 讀取了什麼,以及它在哪裡報告問題,然後找到您遇到的症狀或訊息。
10 10
11<h2 id="find-out-why-a-mod-does-nothing">11## 找出 mod 為什麼沒有作用
12 找出 mod 為什麼沒有作用
13</h2>
14 12
15當 mod 沒有作用時,請檢查 Claude Code 從 mod 的檔案讀取的內容,以及它在跳過某些內容時寫入的那一行。對於第一項,在您的 shell 中執行 [`claude plugin validate`](/docs/zh-TW/plugins/mods/create#check-what-claude-code-reads-from-your-mod),並使用 mod 的目錄,例如 `claude plugin validate ./first-mod`。它會捕捉拼寫錯誤的事件、不良的資訊清單和 Claude Code 無法讀取的模組,而無需啟動工作階段。13當 mod 沒有作用時,請檢查 Claude Code 從 mod 的檔案讀取的內容,以及它在跳過某些內容時寫入的那一行。對於第一項,在您的 shell 中執行 [`claude plugin validate`](/docs/zh-TW/plugins/mods/create#check-what-claude-code-reads-from-your-mod),並使用 mod 的目錄,例如 `claude plugin validate ./first-mod`。它會捕捉拼寫錯誤的事件、不良的資訊清單和 Claude Code 無法讀取的模組,而無需啟動工作階段。
16 14
20* **任何其他互動式工作階段,例如執行您從市場安裝的 mod 的工作階段**:[偵錯日誌](#read-the-debug-log)只有。若要取得一個,請使用 `claude --debug` 啟動工作階段。18* **任何其他互動式工作階段,例如執行您從市場安裝的 mod 的工作階段**:[偵錯日誌](#read-the-debug-log)只有。若要取得一個,請使用 `claude --debug` 啟動工作階段。
21* **`claude -p` 執行 `--plugin-dir`**:stderr,採用預設文字輸出格式。另一個 mod 的拒絕只會進入偵錯日誌。19* **`claude -p` 執行 `--plugin-dir`**:stderr,採用預設文字輸出格式。另一個 mod 的拒絕只會進入偵錯日誌。
22 20
23<h2 id="check-whether-mods-can-load">21## 檢查 mod 是否可以載入
24 檢查 mod 是否可以載入
25</h2>
26 22
27若要檢查您的設定是否允許 mod 載入,而無需安裝一個,請在您的 shell 中執行 `claude plugin test`,從不包含 mod 的目錄執行。您不需要工作階段。它列印的訊息會告訴您狀態:23若要檢查您的設定是否允許 mod 載入,而無需安裝一個,請在您的 shell 中執行 `claude plugin test`,從不包含 mod 的目錄執行。您不需要工作階段。它列印的訊息會告訴您狀態:
28 24
35 31
36組織也可以設定 `allowManagedModsOnly` 以僅允許其自己的 mod,此命令不會報告。在這種情況下,Claude Code 會拒絕您安裝的 mod,並且[訊息會說明原因](/docs/zh-TW/plugins/mods/troubleshoot#messages-from-the-built-in-guard)。32組織也可以設定 `allowManagedModsOnly` 以僅允許其自己的 mod,此命令不會報告。在這種情況下,Claude Code 會拒絕您安裝的 mod,並且[訊息會說明原因](/docs/zh-TW/plugins/mods/troubleshoot#messages-from-the-built-in-guard)。
37 33
38<h2 id="the-mod-doesn’t-load">34## mod 不載入
39 mod 不載入
40</h2>
41 35
42mod 新增的任何內容都不會出現:沒有命令、沒有繪圖,也沒有行為變化。36mod 新增的任何內容都不會出現:沒有命令、沒有繪圖,也沒有行為變化。
43 37
44<h3 id="your-version-is-too-old">38### 您的版本太舊
45 您的版本太舊
46</h3>
47 39
48請參閱[應使用哪個版本以及如何檢查您的版本](/docs/zh-TW/plugins/mods/overview#turn-mods-on-or-off)。40請參閱[應使用哪個版本以及如何檢查您的版本](/docs/zh-TW/plugins/mods/overview#turn-mods-on-or-off)。
49 41
50<h3 id="the-mods-active-line-doesn’t-name-the-mod">42### `mods active` 行不命名 mod
51 `mods active` 行不命名 mod
52</h3>
53 43
54mod 新增的任何內容都不會出現,並且 `/plugin` 中的 [`mods active` 行](/docs/zh-TW/plugins/mods/overview#see-which-mods-a-session-loaded)不命名它。hooks 模組未載入。當 Claude Code 拒絕它時,偵錯日誌有一行以 `hooks module`、mod 的名稱和 `not loaded:` 開頭,例如 `hooks module first-mod@inline not loaded: disableAllHooks in managed settings`,用於使用 `--plugin-dir` 載入的 mod。44mod 新增的任何內容都不會出現,並且 `/plugin` 中的 [`mods active` 行](/docs/zh-TW/plugins/mods/overview#see-which-mods-a-session-loaded)不命名它。hooks 模組未載入。當 Claude Code 拒絕它時,偵錯日誌有一行以 `hooks module`、mod 的名稱和 `not loaded:` 開頭,例如 `hooks module first-mod@inline not loaded: disableAllHooks in managed settings`,用於使用 `--plugin-dir` 載入的 mod。
55 45
57 47
58部分設定會停用 mod,但讓其外掛的其餘部分繼續運作。[開啟或關閉 mod](/docs/zh-TW/plugins/mods/overview#turn-mods-on-or-off) 列出了這些設定。48部分設定會停用 mod,但讓其外掛的其餘部分繼續運作。[開啟或關閉 mod](/docs/zh-TW/plugins/mods/overview#turn-mods-on-or-off) 列出了這些設定。
59 49
60<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">50### `claude -p` 執行列印 `hooks module not loaded`
61 `claude -p` 執行列印 `hooks module not loaded`
62</h3>
63 51
64該行以 mod 的名稱開頭,並進入 stderr。hooks 模組被拒絕。非互動式執行沒有文字記錄,因此訊息進入 stderr。52該行以 mod 的名稱開頭,並進入 stderr。hooks 模組被拒絕。非互動式執行沒有文字記錄,因此訊息進入 stderr。
65 53
66讀取冒號後的原因。[拒絕訊息](#refusal-messages)部分列出每一個。54讀取冒號後的原因。[拒絕訊息](#refusal-messages)部分列出每一個。
67 55
68<h3 id="refusal-messages">56### 拒絕訊息
69 拒絕訊息
70</h3>
71 57
72每一個都遵循偵錯日誌中的 `hooks module`、mod 的名稱和 `not loaded:`。58每一個都遵循偵錯日誌中的 `hooks module`、mod 的名稱和 `not loaded:`。
73 59
80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | 您使用 `--bare` 啟動了 Claude Code |66| `installed plugins that are not managed load no hooks module in this mode (--bare)` | 您使用 `--bare` 啟動了 Claude Code |
81| `another plugin of that name loads first` | 另一個已啟用的外掛與您的 mod 同名,並[佔有該名稱](/docs/zh-TW/plugins/loading#hooks-when-two-enabled-plugins-share-a-name),因此您的 hook 模組不會載入 |67| `another plugin of that name loads first` | 另一個已啟用的外掛與您的 mod 同名,並[佔有該名稱](/docs/zh-TW/plugins/loading#hooks-when-two-enabled-plugins-share-a-name),因此您的 hook 模組不會載入 |
82 68
83<h3 id="messages-from-the-built-in-guard">69### 來自內建防護的訊息
84 來自內建防護的訊息
85</h3>
86 70
87在具有受管設定的機器上,或對於使用 Team 或 Enterprise 方案登入的使用者,[內建防護](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default)可以拒絕 mod 或其中一個答案。每條訊息都命名您的組織管理員設定以變更規則的選項。71在具有受管設定的機器上,或在憑證為 Team 或 Enterprise `/login` 的工作階段中,[內建防護](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default)可以拒絕 mod 或其中一個答案。每條訊息都命名您的組織管理員設定以變更規則的選項。
88 72
89| 訊息包含 | 這表示什麼 | 它出現在哪裡 |73| 訊息包含 | 這表示什麼 | 它出現在哪裡 |
90| :- | :- | :- |74| :- | :- | :- |
92| `tried to lift a deny rule in your settings` | 您的 mod 的 [`tool.check`](/docs/zh-TW/plugins/mods/reference#tools) hook 批准了 `deny` 規則拒絕的呼叫。呼叫保持被拒絕。 | 文字記錄和偵錯日誌,每個工作階段中的每個 mod 一次。在 `claude -p` 執行中,僅偵錯日誌。 |76| `tried to lift a deny rule in your settings` | 您的 mod 的 [`tool.check`](/docs/zh-TW/plugins/mods/reference#tools) hook 批准了 `deny` 規則拒絕的呼叫。呼叫保持被拒絕。 | 文字記錄和偵錯日誌,每個工作階段中的每個 mod 一次。在 `claude -p` 執行中,僅偵錯日誌。 |
93| `the deny rules in your settings could not be checked for this call, so it is refused` | 防護在檢查 mod 批准的呼叫時失敗,因此它拒絕了呼叫 | Claude 為被拒絕的呼叫讀取的原因 |77| `the deny rules in your settings could not be checked for this call, so it is refused` | 防護在檢查 mod 批准的呼叫時失敗,因此它拒絕了呼叫 | Claude 為被拒絕的呼叫讀取的原因 |
94 78
95<h3 id="validate-passes-and-lists-no-hooks-line">79### `validate` 通過且不列出 `hooks` 行
96 `validate` 通過且不列出 `hooks` 行
97</h3>
98 80
99`hooks/hooks.json` 沒有 `modules` 鍵,或鍵拼寫錯誤。81`hooks/hooks.json` 沒有 `modules` 鍵,或鍵拼寫錯誤。
100 82
101新增 `"modules": ["./register.js"]`。83新增 `"modules": ["./register.js"]`。
102 84
103<h3 id="hooks-module-did-not-load">85### `hooks module did not load`
104 `hooks module did not load`
105</h3>
106 86
107該行以 mod 的名稱開頭,然後是 `hooks module did not load:` 和一個原因,當問題在您的程式碼中時,該原因會給出檔案和行。Claude Code 無法載入模組,例如因為其頂級程式碼拋出。87該行以 mod 的名稱開頭,然後是 `hooks module did not load:` 和一個原因,當問題在您的程式碼中時,該原因會給出檔案和行。Claude Code 無法載入模組,例如因為其頂級程式碼拋出。
108 88
109修復原因命名的錯誤。89修復原因命名的錯誤。
110 90
111<h3 id="options-do-not-fit-plugin-json-userconfig">91### `options do not fit plugin.json userConfig`
112 `options do not fit plugin.json userConfig`
113</h3>
114 92
115該行以 mod 的名稱開頭,然後是 `hooks module did not load: options do not fit plugin.json userConfig:` 和一個原因。選項未通過其 [`userConfig`](/docs/zh-TW/plugins/components#user-configuration) 欄位的驗證,例如高於欄位 `max` 的數字,或必填欄位沒有值。93該行以 mod 的名稱開頭,然後是 `hooks module did not load: options do not fit plugin.json userConfig:` 和一個原因。選項未通過其 [`userConfig`](/docs/zh-TW/plugins/components#user-configuration) 欄位的驗證,例如高於欄位 `max` 的數字,或必填欄位沒有值。
116 94
117設定或變更值。該行的末尾命名其在 `settings.json` 中的 `pluginConfigs` 項目。95設定或變更值。該行的末尾命名其在 `settings.json` 中的 `pluginConfigs` 項目。
118 96
119<h3 id="code-nested-too-deep-to-scan-more-than-2000-scopes">97### `code nested too deep to scan: more than 2000 scopes`
120 `code nested too deep to scan: more than 2000 scopes`
121</h3>
122 98
123該行以 mod 的名稱開頭,然後是 `hooks module did not load:`、檔案,以及 `code nested too deep to scan: more than 2000 scopes`。hook 模組中的檔案不能將作用域(例如函式、區塊和迴圈)巢狀超過 [2,000 層](/docs/zh-TW/plugins/mods/reference#limits)。[`claude plugin validate`](/docs/zh-TW/plugins/mods/create#check-what-claude-code-reads-from-your-mod) 會回報相同的原因。99該行以 mod 的名稱開頭,然後是 `hooks module did not load:`、檔案,以及 `code nested too deep to scan: more than 2000 scopes`。hook 模組中的檔案不能將作用域(例如函式、區塊和迴圈)巢狀超過 [2,000 層](/docs/zh-TW/plugins/mods/reference#limits)。[`claude plugin validate`](/docs/zh-TW/plugins/mods/create#check-what-claude-code-reads-from-your-mod) 會回報相同的原因。
124 100
125重寫程式碼,以減少其作用域的巢狀深度。101重寫程式碼,以減少其作用域的巢狀深度。
126 102
127<h3 id="no-mod-loads-in-a-directory-you-opened-for-the-first-time">103### 沒有 mod 在您首次開啟的目錄中載入
128 沒有 mod 在您首次開啟的目錄中載入
129</h3>
130 104
131您尚未回答該目錄的信任提示。105您尚未回答該目錄的信任提示。
132 106
133使用 `claude` 在該目錄中啟動互動式工作階段,並接受它開啟的信任提示。107使用 `claude` 在該目錄中啟動互動式工作階段,並接受它開啟的信任提示。
134 108
135<h3 id="no-installed-plugin-loads-at-all">109### 沒有已安裝的 plugin 載入
136 沒有已安裝的 plugin 載入
137</h3>
138 110
139您使用 `--safe-mode` 啟動了 Claude Code。111您使用 `--safe-mode` 啟動了 Claude Code。
140 112
141啟動時不使用該旗標。113啟動時不使用該旗標。
142 114
143<h3 id="claude-code-stops-asking-to-enable-hot-reloading">115### Claude Code 不再詢問是否啟用熱重新載入
144 Claude Code 不再詢問是否啟用熱重新載入
145</h3>
146 116
147Claude 在互動式工作階段中撰寫 mod,但沒有任何內容載入,而且 Claude Code 不再詢問[是否啟用熱重新載入](/docs/zh-TW/plugins/mods/create#ask-claude-for-a-mod)。如果該問題有三次在未選擇答案的情況下結束,熱重新載入會保持關閉。例如,當您設定了 [`askUserQuestionTimeout`](/docs/zh-TW/settings-reference#askuserquestiontimeout),且在您回答之前時間已到,問題就會以這種方式結束。該設定在此適用,是因為 Claude Code 是在[與 `AskUserQuestion` 相同的問題對話框](/docs/zh-TW/tools-reference#question-auto-continue-timeout)中詢問。您自行關閉的問題不計入這三次。117Claude 在互動式工作階段中撰寫 mod,但沒有任何內容載入,而且 Claude Code 不再詢問[是否啟用熱重新載入](/docs/zh-TW/plugins/mods/create#ask-claude-for-a-mod)。如果該問題有三次在未選擇答案的情況下結束,熱重新載入會保持關閉。例如,當您設定了 [`askUserQuestionTimeout`](/docs/zh-TW/settings-reference#askuserquestiontimeout),且在您回答之前時間已到,問題就會以這種方式結束。該設定在此適用,是因為 Claude Code 是在[與 `AskUserQuestion` 相同的問題對話框](/docs/zh-TW/tools-reference#question-auto-continue-timeout)中詢問。您自行關閉的問題不計入這三次。
148 118
149若要執行該 mod,請[將其目錄從 mods 資料夾複製出來](/docs/zh-TW/plugins/mods/create#use-the-mod-in-other-sessions),然後在 shell 中使用 `--plugin-dir` 啟動新的工作階段,例如 `claude --plugin-dir ~/mods/git-branch`。119若要執行該 mod,請[將其目錄從 mods 資料夾複製出來](/docs/zh-TW/plugins/mods/create#use-the-mod-in-other-sessions),然後在 shell 中使用 `--plugin-dir` 啟動新的工作階段,例如 `claude --plugin-dir ~/mods/git-branch`。
150 120
151<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">121## hook 被跳過或 mod 被卸載
152 hook 被跳過或 mod 被卸載
153</h2>
154 122
155mod 已載入,然後 Claude Code 跳過了其中一個 hook 或卸載了它。123mod 已載入,然後 Claude Code 跳過了其中一個 hook 或卸載了它。
156 124
157<h3 id="hook-skipped">125### `hook skipped`
158 `hook skipped`
159</h3>
160 126
161該行命名 mod 和事件,然後說 `hook skipped:` 和一個原因,例如 `first-mod: tool.call hook skipped: threw Error: boom`。hook 拋出、執行超過其[時間限制](/docs/zh-TW/plugins/mods/reference#limits),或返回了錯誤形狀的結果。該行針對每個事件和失敗類型出現一次,直到 mod 重新載入。127該行命名 mod 和事件,然後說 `hook skipped:` 和一個原因,例如 `first-mod: tool.call hook skipped: threw Error: boom`。hook 拋出、執行超過其[時間限制](/docs/zh-TW/plugins/mods/reference#limits),或返回了錯誤形狀的結果。該行針對每個事件和失敗類型出現一次,直到 mod 重新載入。
162 128
163修復錯誤。偵錯日誌對每次發生都有一行。129修復錯誤。偵錯日誌對每次發生都有一行。
164 130
165<h3 id="no-command-run-hook-answered-it">131### `no command.run hook answered it`
166 `no command.run hook answered it`
167</h3>
168 132
169您執行 mod 新增的命令,回覆命名 mod 和命令,例如 `first-mod registered /tally but no command.run hook answered it`,然後告訴您新增 hook。Claude Code 在命令到達鏈的末端且沒有答案時列印該回覆,這在兩種情況下發生:133您執行 mod 新增的命令,回覆命名 mod 和命令,例如 `first-mod registered /tally but no command.run hook answered it`,然後告訴您新增 hook。Claude Code 在命令到達鏈的末端且沒有答案時列印該回覆,這在兩種情況下發生:
170 134
173 137
174如果模組已經有回覆描述的 hook,請尋找命名 `command.run` 的 `hook skipped` 行,它會給出原因。執行命令的[測試](/docs/zh-TW/plugins/mods/test)會因相同原因失敗。138如果模組已經有回覆描述的 hook,請尋找命名 `command.run` 的 `hook skipped` 行,它會給出原因。執行命令的[測試](/docs/zh-TW/plugins/mods/test)會因相同原因失敗。
175 139
176<h3 id="it-crashed-the-hooks-worker">140### `it crashed the hooks worker`
177 `it crashed the hooks worker`
178</h3>
179 141
180該行以 mod 的名稱開頭,例如 `first-mod was unloaded: it crashed the hooks worker`。已安裝的 mod 共享一個工作執行緒。工作執行緒停止回應或崩潰,Claude Code 將其追蹤到此 mod 並卸載了它。阻止執行緒的 hook(例如永不等待的迴圈)是一個原因。142該行以 mod 的名稱開頭,例如 `first-mod was unloaded: it crashed the hooks worker`。已安裝的 mod 共享一個工作執行緒。工作執行緒停止回應或崩潰,Claude Code 將其追蹤到此 mod 並卸載了它。阻止執行緒的 hook(例如永不等待的迴圈)是一個原因。
181 143
182修復 hook。144修復 hook。
183 145
184<h3 id="its-session-start-ran-again-in-a-fresh-copy">146### `its session.start ran again in a fresh copy`
185 `its session.start ran again in a fresh copy`
186</h3>
187 147
188該行以 mod 的名稱開頭,並命名一個 `$.prompt.submit`、`$.command.run` 或 `$.agent.spawn` 呼叫,例如 `first-mod: its session.start ran again in a fresh copy; the $.prompt.submit call it had already made was not made again`。Claude Code 再次載入了 mod 的模組,例如在 hook 工作執行緒崩潰並被取代之後,而新副本的 [`session.start`](/docs/zh-TW/plugins/mods/reference#session) hook 執行了。該行命名的呼叫以其第一次執行的結果解析,而不是再次執行,因此您的 mod 不會重複提交提示詞、執行命令或啟動 subagent。hook 的其餘部分照常執行。148該行以 mod 的名稱開頭,並命名一個 `$.prompt.submit`、`$.command.run` 或 `$.agent.spawn` 呼叫,例如 `first-mod: its session.start ran again in a fresh copy; the $.prompt.submit call it had already made was not made again`。Claude Code 再次載入了 mod 的模組,例如在 hook 工作執行緒崩潰並被取代之後,而新副本的 [`session.start`](/docs/zh-TW/plugins/mods/reference#session) hook 執行了。該行命名的呼叫以其第一次執行的結果解析,而不是再次執行,因此您的 mod 不會重複提交提示詞、執行命令或啟動 subagent。hook 的其餘部分照常執行。
189 149
191 151
192在 v2.1.292 之前,該呼叫會執行第二次,因此提示詞會被提交兩次、命令會被執行兩次,或 subagent 會被啟動兩次。152在 v2.1.292 之前,該呼叫會執行第二次,因此提示詞會被提交兩次、命令會被執行兩次,或 subagent 會被啟動兩次。
193 153
194<h3 id="$-agent-register-refused-the-hooks-module-that-made-the-call-is-no-longer-loaded">154### `$.agent.register refused: the hooks module that made the call is no longer loaded`
195 `$.agent.register refused: the hooks module that made the call is no longer loaded`
196</h3>
197 155
198該行以您的 mod 名稱開頭,例如 `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`,且該 agent 不會被註冊。您的 mod 在此呼叫之前已被重新載入或卸載。重新載入會載入 hook 模組的新副本,而此呼叫來自仍在舊副本中執行的程式碼,例如尚未返回的 hook。156該行以您的 mod 名稱開頭,例如 `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`,且該 agent 不會被註冊。您的 mod 在此呼叫之前已被重新載入或卸載。重新載入會載入 hook 模組的新副本,而此呼叫來自仍在舊副本中執行的程式碼,例如尚未返回的 hook。
199 157
200如果該 hook 未捕捉此拒絕,它會失敗,Claude Code 會[跳過它](#hook-skipped)。若要讓保持載入的副本註冊該 agent,請在您的 [`session.start`](/docs/zh-TW/plugins/mods/reference#session) hook 中進行呼叫,該 hook 會在重新載入後於每個新副本中再次執行。158如果該 hook 未捕捉此拒絕,它會失敗,Claude Code 會[跳過它](#hook-skipped)。若要讓保持載入的副本註冊該 agent,請在您的 [`session.start`](/docs/zh-TW/plugins/mods/reference#session) hook 中進行呼叫,該 hook 會在重新載入後於每個新副本中再次執行。
201 159
202<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">160### `mods that run in the hooks worker are off for this session`
203 `mods that run in the hooks worker are off for this session`
204</h3>
205 161
206該行讀取 `hooks: mods that run in the hooks worker are off for this session: it crashed 3 times`。工作執行緒停止了三次,Claude Code 無法將停止追蹤到一個 mod,因此它卸載了每個不是內建的 mod,包括您的組織安裝的 mod。此行到達每個互動式工作階段中的文字記錄。162該行讀取 `hooks: mods that run in the hooks worker are off for this session: it crashed 3 times`。工作執行緒停止了三次,Claude Code 無法將停止追蹤到一個 mod,因此它卸載了每個不是內建的 mod,包括您的組織安裝的 mod。此行到達每個互動式工作階段中的文字記錄。
207 163
208執行 `/reload-plugins` 以再次載入它們。164執行 `/reload-plugins` 以再次載入它們。
209 165
210<h2 id="a-tool-call-is-denied">166## 工具呼叫被拒絕
211 工具呼叫被拒絕
212</h2>
213 167
214mod 已載入,其 hook 執行,它接觸的工具呼叫被拒絕。168mod 已載入,其 hook 執行,它接觸的工具呼叫被拒絕。
215 169
216<h3 id="a-hook-changed-this-call’s-input-after-the-model-wrote-it">170### `a hook changed this call's input after the model wrote it`
217 `a hook changed this call's input after the model wrote it`
218</h3>
219 171
220在自動模式中,被拒絕的工具呼叫會給出此原因。hook 在[伺服器端分類器](/docs/zh-TW/permission-modes#server-side-classifier-review)檢查後變更了工具呼叫的輸入,因此該檢查不涵蓋將執行的內容。hook 可以是 mod 的 [`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) 或 [`turn.step`](/docs/zh-TW/plugins/mods/reference#turns) hook,或 [`PreToolUse`](/docs/zh-TW/hooks#pretooluse) 設定 hook。訊息不會說明是哪一個。172在自動模式中,被拒絕的工具呼叫會給出此原因。hook 在[伺服器端分類器](/docs/zh-TW/permission-modes#server-side-classifier-review)檢查後變更了工具呼叫的輸入,因此該檢查不涵蓋將執行的內容。hook 可以是 mod 的 [`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) 或 [`turn.step`](/docs/zh-TW/plugins/mods/reference#turns) hook,或 [`PreToolUse`](/docs/zh-TW/hooks#pretooluse) 設定 hook。訊息不會說明是哪一個。
221 173
222訊息告訴 Claude 再次發出記錄的呼叫。如果也被拒絕,hook 每次都會變更輸入,因此關閉 mod 或 hook,或離開自動模式並自己批准呼叫。174訊息告訴 Claude 再次發出記錄的呼叫。如果也被拒絕,hook 每次都會變更輸入,因此關閉 mod 或 hook,或離開自動模式並自己批准呼叫。
223 175
224<h3 id="a-message-about-the-deny-rules-in-your-settings">176### 關於您設定中的拒絕規則的訊息
225 關於您設定中的拒絕規則的訊息
226</h3>
227 177
228`tried to lift a deny rule in your settings` 和 `the deny rules in your settings could not be checked for this call, so it is refused` 都來自內建防護。178`tried to lift a deny rule in your settings` 和 `the deny rules in your settings could not be checked for this call, so it is refused` 都來自內建防護。
229 179
230在[來自內建防護的訊息](#messages-from-the-built-in-guard)中查詢它們。180在[來自內建防護的訊息](#messages-from-the-built-in-guard)中查詢它們。
231 181
232<h2 id="a-drawing-doesn’t-appear-or-respond">182## 回合停止後出現提示訊息
233 繪圖不出現或不回應183
234</h2>184### `Stopped: type a message to continue; a mod cannot resume work after Stop`
185
186此提示訊息表示在您停止回合之後(例如按下 Esc),某個 mod 嘗試自行開始工作,而 Claude Code 未允許它這麼做。無需修正任何問題。在您傳送下一則訊息後,mod 即可再次開始工作,而[部分工作會自行恢復](/docs/zh-TW/plugins/mods/api#work-your-mod-started-before-the-interruption)。如果您預期該 mod 產生的結果沒有恢復,請再次提出要求,或再次執行該 mod 的命令。
187
188如果您是該 mod 的作者,請參閱[使用者中斷回合後的呼叫與背景工作](/docs/zh-TW/plugins/mods/api#calls-and-background-work-after-the-user-interrupts-a-turn)。
189
190## 繪圖不出現或不回應
235 191
236mod 已載入,其窗格、帶狀、toast 或控制項的行為不符合您的預期。192mod 已載入,其窗格、帶狀、toast 或控制項的行為不符合您的預期。
237 193
238<h3 id="another-mods-band-shows-and-yours-doesnt">194### 顯示的是另一個 mod 的帶狀,而不是您的
239 顯示的是另一個 mod 的帶狀,而不是您的
240</h3>
241 195
242提示詞上方只有一個帶狀,所有 mod 共用。在[您的 mod 之前](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in)執行的 mod,若返回的樹中不包含 `next(e)` 的結果,就會取代您的帶狀。若要同時顯示兩個帶狀,請修改該 mod 的 hook,或請其作者修改:196提示詞上方只有一個帶狀,所有 mod 共用。在[您的 mod 之前](/docs/zh-TW/plugins/mods/events#the-order-mods-run-in)執行的 mod,若返回的樹中不包含 `next(e)` 的結果,就會取代您的帶狀。若要同時顯示兩個帶狀,請修改該 mod 的 hook,或請其作者修改:
243 197
248 202
249變更之後,若任何 mod 返回未通過驗證的樹,帶狀中將不會顯示任何內容。若要讀取原因,請在 `--plugin-dir` 工作階段的逐字稿中尋找 `ui.render (AbovePrompt) refused:` 行,或在偵錯日誌中搜尋 `does not validate`。當帶狀中有多個 mod 時,這兩行都不會指出是哪個 mod,因此請檢查每個 mod 的樹。203變更之後,若任何 mod 返回未通過驗證的樹,帶狀中將不會顯示任何內容。若要讀取原因,請在 `--plugin-dir` 工作階段的逐字稿中尋找 `ui.render (AbovePrompt) refused:` 行,或在偵錯日誌中搜尋 `does not validate`。當帶狀中有多個 mod 時,這兩行都不會指出是哪個 mod,因此請檢查每個 mod 的樹。
250 204
251<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">205### 窗格或帶狀為空或顯示 Claude Code 的常見內容
252 窗格或帶狀為空或顯示 Claude Code 的常見內容
253</h3>
254 206
255您的 hook 返回的[樹](/docs/zh-TW/plugins/mods/interface#build-a-tree-from-elements)未通過驗證。使用 `--plugin-dir` 時,逐字稿會顯示 `ui.render (Pane) refused:` 並附上原因,例如 `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`。偵錯日誌中會有 `a hook returned a tree that does not validate` 並附上相同的原因。207您的 hook 返回的[樹](/docs/zh-TW/plugins/mods/interface#build-a-tree-from-elements)未通過驗證。使用 `--plugin-dir` 時,逐字稿會顯示 `ui.render (Pane) refused:` 並附上原因,例如 `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`。偵錯日誌中會有 `a hook returned a tree that does not validate` 並附上相同的原因。
256 208
257讀取該行上的原因。常見原因是元素不接受的 prop 和應用程式沒有的元素。209讀取該行上的原因。常見原因是元素不接受的 prop 和應用程式沒有的元素。
258 210
259<h3 id="a-ui-render-line-says-threw-while-drawn">211### `ui.render` 行顯示 `threw while drawn`
260 `ui.render` 行顯示 `threw while drawn`
261</h3>
262 212
263該行會指出[轉譯位置](/docs/zh-TW/plugins/mods/reference#render-sites),接著顯示 `threw while drawn:` 與錯誤,例如 `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`。Claude Code 在繪製您的 [`ui.render`](/docs/zh-TW/plugins/mods/reference#interface) hook 返回的樹時,或在根據[您的 hook 傳給 `next` 的 `props`](/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws) 繪製該位置時,遇到了該錯誤。結尾的 `the engine drew its own` 表示該位置顯示 Claude Code 的常見內容。213該行會指出[轉譯位置](/docs/zh-TW/plugins/mods/reference#render-sites),接著顯示 `threw while drawn:` 與錯誤,例如 `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`。Claude Code 在繪製您的 [`ui.render`](/docs/zh-TW/plugins/mods/reference#interface) hook 返回的樹時,或在根據[您的 hook 傳給 `next` 的 `props`](/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws) 繪製該位置時,遇到了該錯誤。結尾的 `the engine drew its own` 表示該位置顯示 Claude Code 的常見內容。
264 214
266 216
267在 v2.1.289 之前,逐字稿列中的此錯誤會以 [`Claude Code exited after an unrecoverable interface error`](/docs/zh-TW/errors#exited-after-an-unrecoverable-interface-error) 結束工作階段。217在 v2.1.289 之前,逐字稿列中的此錯誤會以 [`Claude Code exited after an unrecoverable interface error`](/docs/zh-TW/errors#exited-after-an-unrecoverable-interface-error) 結束工作階段。
268 218
269<h3 id="the-module-failed-without-a-message">219### `the module failed without a message`
270 `the module failed without a message`
271</h3>
272 220
273某個 [`Client`](/docs/zh-TW/plugins/mods/interface#when-a-client-fails) 因沒有訊息的錯誤而失敗,例如 `throw new Error()`。在其位置顯示的那一行類似 `my-mod: Client client/spinner.js: the module failed without a message`。221某個 [`Client`](/docs/zh-TW/plugins/mods/interface#when-a-client-fails) 因沒有訊息的錯誤而失敗,例如 `throw new Error()`。在其位置顯示的那一行類似 `my-mod: Client client/spinner.js: the module failed without a message`。
274 222
276 224
277在 v2.1.289 之前,該行會改為顯示 `Error` 作為原因。225在 v2.1.289 之前,該行會改為顯示 `Error` 作為原因。
278 226
279<h3 id="$-ui-open-runs-and-no-pane-appears">227### `$.ui.open` 執行且沒有窗格出現
280 `$.ui.open` 執行且沒有窗格出現
281</h3>
282 228
283呼叫不是來自使用者所做的操作,並且終端機的寬度小於[該窗格所需的寬度](/docs/zh-TW/plugins/mods/interface#when-a-pane-waits-for-a-wider-terminal)。229呼叫不是來自使用者所做的操作,並且終端機的寬度小於[該窗格所需的寬度](/docs/zh-TW/plugins/mods/interface#when-a-pane-waits-for-a-wider-terminal)。
284 230
285從命令或按鈕開啟窗格,或檢查呼叫的 `isPlaced` 結果。請參閱[在正確的時間開啟窗格](/docs/zh-TW/plugins/mods/interface#open-a-pane-at-the-right-time)。231從命令或按鈕開啟窗格,或檢查呼叫的 `isPlaced` 結果。請參閱[在正確的時間開啟窗格](/docs/zh-TW/plugins/mods/interface#open-a-pane-at-the-right-time)。
286 232
287<h3 id="a-toast-doesn’t-appear">233### toast 未出現
288 toast 未出現
289</h3>
290 234
291您的 mod 在互動式終端機工作階段中呼叫 [`$.ui.toast`](/docs/zh-TW/plugins/mods/api#show-something-without-starting-a-turn),但您沒有看到 toast。若要確認該呼叫已執行,請在[偵錯日誌](#read-the-debug-log)中尋找包含您的 mod 名稱與 toast 文字的行,例如 `$.ui.toast (first-mod): build finished`。接著檢查以下可能原因:235您的 mod 在互動式終端機工作階段中呼叫 [`$.ui.toast`](/docs/zh-TW/plugins/mods/api#show-something-without-starting-a-turn),但您沒有看到 toast。若要確認該呼叫已執行,請在[偵錯日誌](#read-the-debug-log)中尋找包含您的 mod 名稱與 toast 文字的行,例如 `$.ui.toast (first-mod): build finished`。接著檢查以下可能原因:
292 236
298 242
299在 v2.1.290 之前,Claude Code 會捨棄在其為您的 mod 顯示上一個 toast 後兩秒內發出的 toast,且被捨棄 toast 的偵錯日誌行會顯示 `within 2000ms of the last; dropped`。243在 v2.1.290 之前,Claude Code 會捨棄在其為您的 mod 顯示上一個 toast 後兩秒內發出的 toast,且被捨棄 toast 的偵錯日誌行會顯示 `within 2000ms of the last; dropped`。
300 244
301<h3 id="hotkeys-do-nothing">245### 快捷鍵沒有作用
302 快捷鍵沒有作用
303</h3>
304 246
305您的窗格沒有鍵盤焦點,或繪圖位於 VS Code 擴充功能中,而該處的按鈕沒有快捷鍵。請執行相符的操作:247您的窗格沒有鍵盤焦點,或繪圖位於 VS Code 擴充功能中,而該處的按鈕沒有快捷鍵。請執行相符的操作:
306 248
307* **沒有鍵盤焦點**:按 Ctrl+X 然後 Tab,或按一下窗格。若要讓窗格在開啟時取得焦點,請從命令以 `focus: true` 開啟它。249* **沒有鍵盤焦點**:按 Ctrl+X 然後 Tab,或按一下窗格。若要讓窗格在開啟時取得焦點,請從命令以 `focus: true` 開啟它。
308* **在 VS Code 擴充功能中**:按一下按鈕,或在按鈕取得焦點後按 Enter250* **在 VS Code 擴充功能中**:按一下按鈕,或在按鈕取得焦點後按 Enter
309 251
310<h3 id="a-drawing-works-in-the-terminal-and-not-in-the-desktop-app-or-vs-code">252### 繪圖在終端機中有效,但在 Desktop 應用程式或 VS Code 中無效
311 繪圖在終端機中有效,但在 Desktop 應用程式或 VS Code 中無效
312</h3>
313 253
314可能是該應用程式不繪製該位置或元素,或是該工作階段屬於 VS Code 擴充功能不會為 mod 繪製任何內容的情況。mod 的其他 hook 仍會執行。請檢查以下原因:254可能是該應用程式不繪製該位置或元素,或是該工作階段屬於 VS Code 擴充功能不會為 mod 繪製任何內容的情況。mod 的其他 hook 仍會執行。請檢查以下原因:
315 255
317* **VS Code 擴充功能版本早於 2.1.299**:聊天面板從[擴充功能版本](/docs/zh-TW/vs-code#install-the-extension) 2.1.299 起會為 mod 繪製內容。請在 VS Code 的 Extensions 檢視中檢查版本,並在該處更新擴充功能。257* **VS Code 擴充功能版本早於 2.1.299**:聊天面板從[擴充功能版本](/docs/zh-TW/vs-code#install-the-extension) 2.1.299 起會為 mod 繪製內容。請在 VS Code 的 Extensions 檢視中檢查版本,並在該處更新擴充功能。
318* **擴充功能版本早於 2.1.304 且工作階段不擷取功能旗標**:請更新擴充功能,或改為在 VS Code 的整合式終端機中執行 `claude`。在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段會略過此擷取。對於其他會略過擷取的工作階段,例如 [Claude apps 閘道](/docs/zh-TW/claude-apps-gateway)工作階段,請參閱[需要擷取功能旗標的功能](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)。258* **擴充功能版本早於 2.1.304 且工作階段不擷取功能旗標**:請更新擴充功能,或改為在 VS Code 的整合式終端機中執行 `claude`。在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段會略過此擷取。對於其他會略過擷取的工作階段,例如 [Claude apps 閘道](/docs/zh-TW/claude-apps-gateway)工作階段,請參閱[需要擷取功能旗標的功能](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)。
319 259
320<h2 id="an-edit-or-a-value-is-lost">260## 編輯或值遺失
321 編輯或值遺失
322</h2>
323 261
324mod 執行,您所做的變更或它保留的值不存在。262mod 執行,您所做的變更或它保留的值不存在。
325 263
326<h3 id="your-edits-don’t-take-effect">264### 您的編輯不生效
327 您的編輯不生效
328</h3>
329 265
330您正在編輯您安裝的 plugin。Claude Code 執行已安裝版本的快取副本。266您正在編輯您安裝的 plugin。Claude Code 執行已安裝版本的快取副本。
331 267
332使用指向您的工作副本的 `--plugin-dir` 進行開發,例如 `claude --plugin-dir ./first-mod`,它在您儲存時重新載入。268使用指向您的工作副本的 `--plugin-dir` 進行開發,例如 `claude --plugin-dir ./first-mod`,它在您儲存時重新載入。
333 269
334<h3 id="a-value-resets-when-the-module-reloads">270### 模組重新載入時值重設
335 模組重新載入時值重設
336</h3>
337 271
338模組級變數在每次重新載入時重新初始化。272模組級變數在每次重新載入時重新初始化。
339 273
340[將值保留在 `$.state` 或 `$.store`](/docs/zh-TW/plugins/mods/interface#keep-state)。274[將值保留在 `$.state` 或 `$.store`](/docs/zh-TW/plugins/mods/interface#keep-state)。
341 275
342<h3 id="a-value-resets-after-/clear-/resume-or-/branch">276### `/clear`、`/resume` 或 `/branch` 後值重設
343 `/clear`、`/resume` 或 `/branch` 後值重設
344</h3>
345 277
346值重設,或儲存的值被其預設值取代。這些命令中的每一個都將 `$.state` 重設為其預設值,並且 `session.start` 不會再次觸發。278值重設,或儲存的值被其預設值取代。這些命令中的每一個都將 `$.state` 重設為其預設值,並且 `session.start` 不會再次觸發。
347 279
348[在 `classic.SessionStart` hook 中再次載入儲存的值](/docs/zh-TW/plugins/mods/interface#load-a-saved-value-again-after-clear)。280[在 `classic.SessionStart` hook 中再次載入儲存的值](/docs/zh-TW/plugins/mods/interface#load-a-saved-value-again-after-clear)。
349 281
350<h2 id="read-the-debug-log">282## 讀取偵錯日誌
351 讀取偵錯日誌
352</h2>
353 283
354偵錯日誌對 Claude Code 載入或拒絕的每個模組、失敗的每個 hook 和它拒絕的每個結果都有一行,因此當逐字稿顯示沒有內容時,這是要查看的地方。若要寫入一個,在您的 shell 中使用 `--debug` 啟動 Claude Code,或使用 `--debug-file <path>` 選擇它的位置:284偵錯日誌對 Claude Code 載入或拒絕的每個模組、失敗的每個 hook 和它拒絕的每個結果都有一行,因此當逐字稿顯示沒有內容時,這是要查看的地方。若要寫入一個,在您的 shell 中使用 `--debug` 啟動 Claude Code,或使用 `--debug-file <path>` 選擇它的位置:
355 285
373 303
374當您編輯使用 `--plugin-dir` 載入的 mod 時,逐字稿會為每次重新載入顯示一行,其命名 mod 並列出其 hook。如果儲存破壞了模組,該行說 `reload failed, the previous version stays loaded:` 並帶有原因,最後一個可運作的版本會保持執行,直到 Claude Code 下次重新載入外掛為止,例如當您執行 `/reload-plugins` 時。304當您編輯使用 `--plugin-dir` 載入的 mod 時,逐字稿會為每次重新載入顯示一行,其命名 mod 並列出其 hook。如果儲存破壞了模組,該行說 `reload failed, the previous version stays loaded:` 並帶有原因,最後一個可運作的版本會保持執行,直到 Claude Code 下次重新載入外掛為止,例如當您執行 `/reload-plugins` 時。
375 305
376<h2 id="next-steps">306## 後續步驟
377 後續步驟
378</h2>
379 307
380* [測試 mod](/docs/zh-TW/plugins/mods/test):在問題到達工作階段之前捕捉它們308* [測試 mod](/docs/zh-TW/plugins/mods/test):在問題到達工作階段之前捕捉它們
381* [排除 plugin 的故障](/docs/zh-TW/plugins/troubleshooting):安裝和載入 plugin 的問題,不特定於 mod309* [排除 plugin 的故障](/docs/zh-TW/plugins/troubleshooting):安裝和載入 plugin 的問題,不特定於 mod