請完全依照以下方式執行——參數放在 heredoc 的第二行,永遠不要放在指令本身,保持在一行內,且只允許使用 quiet normal loud mute unmute --global approve on off 這些字詞:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/hwip-mode.sh" <<'HWIP_MODE_INPUT'
${CLAUDE_PROJECT_DIR}
$ARGUMENTS
HWIP_MODE_INPUT
Exit 2 表示參數錯誤——請向使用者顯示腳本印出的用法行。否則請用你自己的話報告狀態行:
NOTIFICATIONS: muted→ 此處的 Stop 與 Ask 鉤子保持靜音;hwip_*工具仍可運作,但除非使用者要求,否則不會被呼叫。靜音優先於所有音量設定。PUSH MODE: quiet→ 僅在使用者於終端機前時推送高優先級項目(阻塞性問題、標記為high的 Push Signal),並在使用者離開(HWIP_AWAY_SEC,預設 300 秒)後或當此工作階段的 tmux 窗格不在螢幕上時,發送一次完成推送。這是出廠預設值。PUSH MODE: normal→ 每個執行過實際工作的輪次都會推送,唯讀輪次則靜默;Push Signal 標記決定邊界情況。PUSH MODE: loud→ 每個輪次都推送,覆蓋skip。- 括號內說明音量設定的來源:
this project(此專案)、global default(使用--global設定,無專案設定的專案會繼承此值),或內建預設值。專案設定永遠優先於全域設定。 APPROVAL GATE: on|off→ 是否在此專案中,對難以復原的 Bash 指令(rm -rf、強制推送、生產環境部署、破壞性 SQL)等待核准。在終端機前,Claude Code 自己的權限提示會詢問;當使用者離開、處於 REMOTE 模式,或無法讀取在場狀態時,則由使用者的手機執行核准。on, but inactive while muted— 已靜音的專案無人可詢問,因此不會暫停任何操作。SCOPE: …→ 音量設定、靜音、核准閘門與自動模式屬於專案目錄,而非工作階段:同一目錄中的第二個 Claude 工作階段會共用這些設定。當使用者變更其中之一時,請告知此情況。AUTO MODE: …→ 有一個/hwip-auto工作階段正在執行,並顯示剩餘預算。off (an expired … session left its state behind — cleared)表示有一個已崩潰的工作階段。LAST PUSH: …→ CLI 記錄的上一次失敗推送(hwip notify會寫入此記錄,成功推送則會清除)。鉤子會隱藏 notify 的錯誤,因此此行是用來區分「已靜音,沒有要發送的內容」與「每次推送都失敗」。請轉達給定的原因與修復方式(例如,金鑰被拒 →hwip login,沒有應用程式登入 → 在 iPhone 或 Android 手機上登入 Hwip 應用程式);hwip verify提供更多資訊。Hwip: <device> changed its encryption key — …→ 並非失敗:使用者的某個裝置現在列出了與此機器先前鎖定不同的加密金鑰,且新金鑰已被信任。只顯示一次,然後清除。請將其轉達為此情況——重新安裝的應用程式或新手機可以解釋;如果都不是,hwip trust會顯示指紋以便與應用程式比對。
問題(hwip_ask,AskUserQuestion 的鏡像)在除了靜音之外的所有音量設定下都會推送。
密封問題攜帶的上下文(工作階段的遮罩 git diff 與最後終端機輸出行)不屬於此音量設定。如果使用者要求停止發送,請指引他們使用 hwip ask-context off(此專案)或 hwip ask-context off --global(所有專案);hwip ask-context 會顯示目前適用的設定。
如果輸出結尾有一個 === Hwip rules — replace the Hwip rules from session start === 區塊,表示狀態已變更,且 SessionStart 鉤子提供給此工作階段的規則已過時:請在整個工作階段(包括壓縮後)遵循該區塊的內容。Session rules unchanged 表示變更未影響規則(例如 normal ↔ loud);請保留你現有的規則。approve 永遠不會變更規則。could not refresh 行表示變更仍已套用,但規則未更新——請告知使用者新工作階段會採用這些規則。