
Claude Code 語音通知:成為 AI 奴隸主的第一步
先說結論(直接看示範)
看這個 30 秒影片,你就懂了:
- AI 會用語音報告進度
- 我在旁邊喝咖啡滑手機
- 「主人,搞定了!」聽到就可以回去驗收
- 影片封面是我的魔犬秋口,很可愛吧
這就是我現在的日常
一個月燒了 37 萬元的 API 費用
上個月我分享了《Claude Code Max 5x / 20x 方案使用心得》,經過了一個月的使用,我共用了 8,297,053,205 個 token(我知道你一定在數,不用數了是 82 億),共價值美金 $12,685 的 API 費用!相當台幣約 38 萬元的 API 使用量

Damn!!!!! 這輩子還沒想過我可以消耗這宇宙的哪個東西,單位可以到 80 億個
訂閱 Claude Code Max 20x 方案,一個月付 6,000 台幣訂閱費,投報率爆表,token 富翁就是我!
接下來我會寫一系列的使用技巧和心得分享
目前規劃的內容:
- 語音通知:成為 Claude Code 奴隸主第一步(本文)
- Claude Code Status Line:專業奴隸主,要有一套自己的監控系統
- 我的 Claude Code 自訂指令-視覺化
- 為什麼你的 AI 比較笨?可能犯了這三大上下文錯誤
- 我的 Claude Code 自訂指令-並行開發工作樹
- 工程師最愛的非同步:並行執行任務
- 讓 Claude 變成你的形狀,持續改善你的 CLAUDE.md
- Claude Code 有一堆很實用的功能,但你不知道
- 規格驅動開發 SDD
- Claude Code 不只是寫程式,我用來營運公司
這一個月來,我幾乎把 Claude Code 當成我的奴隸在用
從早到晚都在命令他
寫程式、寫文件、問問題、查資料、整理我的資料夾 XD,真的沒得嫌!
我多了好多時間滑脆看廢文,看 YT 上 Claude Code 的影片
為什麼你需要語音通知?
不管用哪家 AI 寫程式,你一定遇過:
- 下完 prompt 去看 YouTube,就忘記回來 XD
- 同時開 3 個視窗,熊熊忘記哪個在幹嘛
- AI 在等你確認,你還在滑廢文
為什麼會這樣?
因為你在 “等” AI 生成回覆
這時候如果可以像真實世界那樣,你交辦一件事情讓別人去做,完成後他來跟你回報
那你就不用等,你可以去做別的事,等他回報再來接手處理
兩種情境,兩種通知
經過一個月的實際使用,我認為實際上就兩種情況需要通知:
情境一:AI 需要你確認(阻塞型通知,要馬上處理)
- AI 需要你同意他的操作:通常是要求權限的通知,而你通常都會同意
- 另外 Claude Code 的 Plan Mode,會需要你確認他的計畫,同意後他才會繼續
這兩種情境,其實只要隨便發出一個推播聲音就可以了,你聽到就知道要切回去看
情境二:AI 做完了(完成型)
在你發出指令後, AI 一頓操作猛如虎,最後結束後,用說的跟你報告結果
不管是完成、失敗、還是遇到問題,一聽就能知道,也能先有心理準備XD
你聽完可以判斷:
- 重要的話馬上看
- 要不要細看過程紀錄
有什麼好處,爽度指標
- 聽到「主人,搞定了」爽
- 可以安心去耍廢 爽
- 如果你正在忙,也可以選擇充耳不聞,也不會不禮貌
- 同事會覺得你很潮、很認真工作,AI 一直在回報進度 (誤,我沒同事這是我的想像)
有什麼壞處
- 大概就是開太多時,剛好同時回報會很吵,也聽不清楚
- 很恥,但可以調整恥度
設定教學
核心知識
其實很簡單,MAC電腦系統有一個指令 say -r 180 "你好",數字是語速
你可以直接在終端機輸入,電腦就會唸出來了,聲音就是 SIRI 的聲音
你想要的話可以到系統設定 → 輔助使用 → 語音內容,裡面換預設的系統聲音(我試過一輪最後還是換回 SIRI)

這就是最重要的核心知識了,用這個功能的好處是效能消耗很低
雖然語音沒有現在 AI 語音那麼自然,但免錢、速度快
還有情懷,會感覺 SIRI 變超屌(想起當初 SIRI 剛出時跟他在那邊對牛彈琴的夜晚)
Windows 系統就沒有這個指令了,我問了 ChatGPT,有變通的作法,但我無法實測,效能跟聲音品質我就不知道了,給使用 Windows 的人參考

備註:語速 180 是我有加快,預設值我忘記是多少了,你可以刪除或自行調整
設定步驟(情境一)
再來就要根據情境一和情境二來設定觸發語音指令
情境一的通知我們使用 Claude Code 的 hook 功能 (不想讀可以看最下面備注)
所有需要你確認的狀況,Claude Code 都會觸發 Notification Hook,你可以很簡單的直接設定:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "say -r 180 '請確認'"
}
]
}
]
}
}
這樣每次需要你確認時,電腦就會發出“請確認”的語音通知,是不是很酷~
當然這樣是不夠的,我們還需要一些情緒價值
不然一直叫我去確認,到底誰是老闆~
我怕他搞不清楚,因此我請 AI 幫我寫了一個腳本
建立一個 notification.sh 檔案
#!/bin/bash
# Claude Code Notification Hook
# 建立時間: 2025-07-10 08:55:52 (更新時間: 2025-08-18)
# 用途: 當 Claude Code 需要通知使用者時執行語音通知(無日誌記錄)
# 讀取來自 stdin 的 JSON 輸入 (標準格式)
INPUT_JSON=$(cat)
# 解析 JSON 資料
MESSAGE=$(echo "$INPUT_JSON" | jq -r '.message // "Claude Code 通知"')
TITLE=$(echo "$INPUT_JSON" | jq -r '.title // "Claude Code"')
# 輸出通知訊息到終端機
echo "📢 [Notification Hook] $(date '+%H:%M:%S'): $TITLE - $MESSAGE"
# 隨機語音訊息陣列
msgs=(
'廢物,別廢了,該工作了'
'嘿,醒醒啊'
'泰呈,這裡有程式需要你的確認'
'主人,這樣真的可以嗎,我不敢自己決定啦'
'拜託你!快點選!'
'泰呈,只有你能決定這段程式的命運'
'求你了,看看他'
'帥哥,看這裡'
)
# 條件語音播放 - 跳過等待輸入的通知
if [[ "$MESSAGE" == *"Claude is waiting for your input"* ]]; then
echo "🔇 跳過語音播放 (等待使用者輸入)"
else
# 播放隨機語音通知
random_msg="${msgs[RANDOM % ${#msgs[@]}]}"
echo "🔊 播放語音: $random_msg"
say -r 180 "$random_msg"
fi
# 成功完成
exit 0
然後設定 settings.json
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "/Users/jackle/.claude/hooks/notification.sh"
}
]
}
],
},
}
你可以自行修改
msgs=(
'廢物,別廢了,該工作了'
'嘿,醒醒啊'
'泰呈,這裡有程式需要你的確認'
'主人,這樣真的可以嗎,我不敢自己決定啦'
'拜託你!快點選!'
'泰呈,只有你能決定這段程式的命運'
'求你了,看看他'
'帥哥,看這裡'
)
這樣每次觸發通知時,就會從這裡面隨機選一個念出來
請看示範
你可以發揮你的創意、個人喜好,讓你的奴隸用你喜歡的方式通知你
設定步驟(情境二)
情境二本質是摘要任務結果,並把結果觸發 say 指令說出來
這肯定必須要用到 AI 的功能了,先說這部分我踩過的雷
我一開始想要用 Stop hook 觸發,使用 claude -p 非互動功能指令,讓 Stop hook 幫我把整個對話內容送給 AI 請他摘要,回傳後再用 pipe 方式吐給 say 指令(這也是我問 AI 的,我本來根本不會這個指令)
邏輯和想法完美沒有問題,但是我一直無法成功,後來發現是 hook 的環境好像讀不到系統環境變數,導致 claude -p 沒辦法讀到 claude max 訂閱方案的權限,所以會沒有回應,我試老半天試不出來,突然靈機一動想到一個好方法
我何不直接要求 Claude Code 每次完成任務後,就把完成的摘要用語音通知我就好了
因此我在 CLAUDE.md 增加了以下規則
## 語音通知系統
### 核心規則
**當前模式:預設模式**(可透過「語音模式:[預設|精簡|安靜]」切換)
#### 執行公式
| 時機 | 預設模式 | 精簡模式 | 安靜模式 |
| -------- | ------------------ | -------------- | ------------- |
| 狀態變更 | `say` | 無 | 無 |
| 任務完成 | `say` 結束通知 | `say` 結束通知 | 無 |
#### 執行範例
# 狀態變更
bash指令 say -r 180 "我正在修登入" # 語音使用完整口語句子
# 任務完成
bash指令 say -r 180 "主人!登入修好了,我就說小case~"
**語音規則**:使用「我正在...」的完整句子結構,避免技術術語
**任務完成通知**:
- 觸發:對話主要任務完成並輸出結果後
- 語氣:專業助理,充滿自信
- 稱謂:隨機選擇(主人/泰呈/帥哥/阿呈)
- 格式:`say -r 180 "{稱謂},{成就描述}"`
#### 執行時機
- 每個新任務開始時
- 切換工作焦點時
- 取得重大進展時
- 對話結束時(完成通知)
**注意**:語音內容限制 20 字內
預設他會一直跟你報告他現在在幹嘛,做到哪報到哪,有夠奴
一聽哪裡不對勁,可以馬上暫停,還能用說的罵他(按這個麥克風)

嫌他吵的話,可以輸入「語音模式:精簡」,他就只會完成時再通知
在開會或是想安靜,就叫他閉嘴,他就會嘴巴閉閉了
就這麼簡單,現在你的 AI 會說話了。
三種模式
整理一下,我設定三種模式,根據場合切換,你也可以自行調整 Prompt:
預設模式(完整通知)
# 開始和結束都有語音
say "我正在修 bug"
# ...工作中...
say "主人,bug 修好了!"
精簡模式(只有結束通知)
# 過程不講話
# ...工作中...
say "主人,bug 修好了!" # 只有結束才講
安靜模式(開會用)
# 完全不出聲
# 不會有任何語音
切換方式:
- 預設模式下,整個過程都會通知,完成也會通知
- 「語音模式:精簡」:只有完成會通知
- 「安靜」:不會語音通知
備註:因為這是指令,AI 就有可能不會執行,通常是 Context Window 太大或是自動壓縮後,有可能 AI 會忘記,這也是一種判斷上下文視窗是不是太滿的方式
但現在我用狀態列判斷更準(這部分下篇講)
試了才知道有多爽
以上就是語音通知的做法。
我覺得這個功能完全改變我的開發體驗
這個互動感,我不確定適不適合在辦公室、咖啡廳使用 XD
目前只有 Claude Code 有 hook 功能,如果其他工具未來有支援,是可以通用的(據說 Codex 快要出了)
語音通知會成為每天在背後默默執行的功能,習慣之後就回不去了
有時候聽到他說「寶貝!我完成了」,情緒價值有夠高
我的多巴胺就是你的兩倍,搞得你每天都想要好好工作
但要小心真實世界的寶貝有可能會不爽
我已經可以想像,讓 AI 扮演 Linus,把你當北七開嘲諷,想像力就是你的超能力
是說不管聽到早餐店阿姨還是 AI 叫我「帥哥」,感覺好像都差不多
P.S. 我知道你很懶,你可以直接把這篇貼給 Claude Code 叫他讀一讀幫你設定