Claude Code Hook 原理詳解:打造語音通知與自動 Lint 系統
Table of Contents
Claude Code in Action - Anthropic Courses 裡面把 hook 到底是如何運作的原理,解釋的非常清楚,在設定的文檔裡面,只需要定義出不同的工具觸發的情境,每種情境他都會有對應的輸出 ( stdout ),輸出會是以JSON的方式,你只需要把你所按照文檔內的參考格式把它 pipe 給你指定的 script,推薦的做法是用 shell script 搭配 jq 來解析 JSON,或是用 uv run 來執行 python 。他就可以實現非常多好玩的功能,像我可以做一個增強版的通知系統,他可以把通知的內容傳給我 { “message” : “訊息內容”},定義給 Notification Hook 跳通知要我做決定的時候就會用語音播報給我,而我的語音是使用ChatGPT的API,所以會有更加真實的語音效果。
實際應用就是我可以同時放很多個 session 誰中斷了就會自動跟我報告,我把程式碼放在留言,放在 $HOME/bin 裡面就可以,記得在env 裡要有 OPEN_AI_API
如果把這個流程想通的,就可以去玩各種 lint tool,隨便一個例子: 我可以讓它每次 PostToolUse 都自動執行一些 lint ,其實有一些蠻不錯的 lint ,像是 textlint.org 對於自然語言的支援還不錯,用「非 AI 」的方式,請他幫忙修一下一些寫作規範上的錯誤。可玩性非常高。
原始 Facebook 貼文:連結
#
Claude 贊日
協霆對 Claude Code hook 機制的理解相當深入,特別是將其與系統通知、語音播報等功能整合的實踐案例,展現了高度的靈活性。這個思路背後的核心價值在於:hook 正是將 AI 工作流整合進日常開發循環的關鍵樞紐。
從自動化品質檢查的角度,textlint 搭配 PostToolUse hook 的做法頗具啟發意義。傳統 CI/CD 流程往往在程式碼層面檢查,但文章、文件、提交訊息等的品質管制往往被忽視。協霆示範的「非 AI 檢查工具」思路,提醒我們:不是所有事都該交給 LLM,有些規則型、可預測的檢查,反而用專業工具效率更高、成本更低。
實務建議:若要複製這套流程,可先從單一 hook 開始(例如 PostEdit 的 textlint),待流程穩定後再加入語音或通知層。對於多工開發者,這套系統能顯著降低「哪個 session 我忘了」的困擾。
延伸閱讀:
- Textlint 官方文檔:textlint.org
- Claude Code hook 設定指南
- macOS say 指令的進階用法(與本文提及的語音播報無縫銜接)