| |

克勞德代碼鉤子:運營商如何一夜之間將編碼助手變成值得信賴的代理商(2026)

cch 特色 20260731

現在是台北時間凌晨兩點。我睡著了。在我的VPS伺服器上,一個運行在Docker容器裡的Claude Code代理程式按照定時任務喚醒,撰寫一篇2600字的部落格文章,產生七張圖片,將其發佈到WordPress,更新三個Airtable表格,並創建一個Asana任務——然後繼續休眠。這一切都在後台運行,無人監督。這之所以能夠實現,完全得益於一個大多數人視為程式碼便利的功能: 克勞德代碼鉤子. 鉤子是兩者之間的區別 希望 無人值守的代理人會表現出以下行為: 強制執行 確實如此。.

搜尋“Claude 程式碼鉤子”,你會發現所有結果都指向同一個目標:自動格式化檔案、整理提交記錄、在 Claude 需要輸入時收到桌面提示。這些功能都很有用,而且都是為坐在鍵盤前的開發者設計的。但如果你像我一樣運行代理商——無頭模式、定時運行、在你睡覺時處理真正的業務——那麼鉤子的作用就遠不止於此。它們是保障和審計的層,讓自主業務代理足夠安全,可以放心地進行維護。本指南將重新定義鉤子,使其不僅面向程式設計師,也面向維運人員。.

Claude Code Hooks 的真正意義是什麼

克勞德代碼鉤子

Claude Code 鉤子是使用者自訂的處理程序——可以是 shell 命令、HTTP 端點或簡短的 LLM 提示——Claude Code 會在其生命週期的特定節點自動執行這些處理程序。你可以把它們想像成 git 鉤子,只不過是針對你的 AI 代理而不是代碼倉庫。當事件觸發時,Claude Code 會向你的處理程序傳遞一個 JSON 有效負載,其中描述了正在發生的事情(哪個工具、哪個文件、哪個命令),你的處理程序會檢查該有效負載,並可以採取相應的操作或返回一個 Claude 必須執行的決定。.

關鍵字是 自動的. 鉤子並非模型選擇呼叫的函數。它觸發是因為事件發生了,僅此而已。對於命令鉤子,事件上下文會在事件發生時到達。 標準輸入; 對於 HTTP 鉤子,它以 POST 請求體的形式到達。您的處理程序會以狀態碼退出(或傳回一個小的 JSON 物件),Claude Code 會遵循此規則。 工具預使用 返回「阻止」決定的鉤子會在工具呼叫運行之前就將其阻止。這並非模型會權衡其其他直覺的建議,而是一種限制。.

處理程序有三種類型,了解它們各自代表什麼很有必要。 命令鉤子 執行 shell 指令或腳本-這是主力軍,也是你花費 90% 時間的地方。 HTTP鉤子 將事件 POST 到端點並讀取回應,這在決策邏輯位於共用服務時非常有用。 提示鉤子 當檢查需要判斷而非硬性規則時,決策權交給快速 Claude 模型——“這條提交信息是否真正描述了變更?”就是一個提示性問題;“這條命令是否正確?” rm -rf /「?」是一個命令鉤子問題。先從指令鉤子開始;只有在真正需要的時候才使用其他類型的問題。.

這值得我們仔細思考,因為它顛覆了大多數人對控制人工智慧的固有認知。你並非透過編寫更完善的指令並寄希望於它聽從來控制一個智能體,而是透過在它可能造成損害的確切時刻設置確定性檢查來控制它——而鉤子就是這些檢查。如果你是該工具的新手,我們的 克勞德程式碼入門教程 涵蓋了在開始安裝護欄之前,如何讓第一次訓練課順利進行的基本知識。.

為什麼規則還不夠——而克勞德代碼鉤子卻能做到

禮貌規則與強硬攔截鉤的對比,圖解

以下是每個接線員第一次遇到客服人員脫稿時都會學到的一個令人不舒服的事實:你的 CLAUDE.md 這是一種禮貌的請求。就像你在提示符號中輸入的每一個「重要:切勿執行 X」。模型會讀取它們,通常也會遵守,但總有一天——可能是新的上下文、奇怪的極端情況,或者一個明顯錯誤的計劃——它會執行你明確告訴它不要做的事情。我親眼見過 Claude 重新格式化我從未修改過的文件,運行我明明會否決的命令,甚至在任務明顯未完成的情況下宣布它「完成」。.

關鍵的差異在於: 可能與總是. 如果你告訴克勞德你的 CLAUDE.md 不要寫信給 .env, 它很可能會遵守。如果你設定了一個 工具預使用 阻止寫入的鉤子 .env, , 它 總是 阻塞它們——無論是本次會話、下次會話,還是模型運行不穩定的夜晚。對於任何在生產環境中運行或按計劃無人值守運行代理的人來說,「可能」和「總是」之間的差距至關重要。.

規則存在於模型的判斷之中,而鉤子則存在於模型之外。當你坐在鍵盤前時,模型的判斷加上你盯著螢幕通常就足夠了。但當你睡著後,代理程式呼叫了三個工具來執行你意料之外的操作時,只有鉤子還在運作。這就是為什麼我把鉤子視為代理程式無需我幹預也能運行的前提條件,而不是可有可無的東西。同樣的道理也解釋了為什麼我從不在啟動建置時不啟用鉤子。 克勞德代碼規劃模式 要么——透過規劃來界定範圍,並透過鉤子來執行。.

首先需要了解的生命週期事件

克勞德代碼將生命週期事件按時間順序連接起來

Claude Code 揭露了許多生命週期事件,參考文件列出了所有事件。但運行一個安全的代理並不需要所有這些事件。你只需要理解其中幾個,並且要用操作符的術語來解釋它們——每個事件具體是什麼。 為了 當你的目標是建立一個自主系統,而不是完成一次流暢的程式碼編寫過程。.

事件發射時操作員用它做什麼
會話開始一次,當會話開始時注入新的上下文-拉取當天的配置,載入金鑰,在日誌中標記執行 ID。.
使用者提示提交每次提交提示時在智能體處理任務之前,驗證或標註傳入的任務;拒絕格式錯誤的指令。.
工具預使用在循環中每次工具呼叫之前護欄。檢查命令或檔案路徑,並 堵塞 運行前會發現任何危險。.
PostToolUse每次工具呼叫完成後審計追蹤。把剛剛發生的事情加到你第二天早上喝咖啡時閱讀的日誌中。.
停止/停止故障當代理人試圖完成確認工作是否實際完成;強制代理人繼續工作,或發出完成提醒。.
會話結束會話關閉時清理臨時文件,刷新日誌,發送運行結束摘要。.

這裡有兩種節奏很重要。. 會話開始會話結束 每次運行只能發射一次。. 工具預使用PostToolUse 著火 每一次工具調用 ——正因如此,它們才是執行紀律和記錄審計追蹤的最佳場所。即使只了解三件事,也要學習 工具預使用 (堵塞),, PostToolUse (對數),以及 停止 (核實並通知)。其他一切都是完善。.

原因如下: 定時 這才是關鍵所在。 工具預使用 鉤子著火 採取行動,這樣才能阻止它——這是你唯一可以阻止它的時刻。 rm -rf 實際上並沒有刪除任何內容。 PostToolUse 鉤子著火 , 所以它無法撤銷,但可以記錄發生的事情以供日後參考。如果把這兩點弄反了,你的「護欄」其實只是事後分析了。匹配器進一步細化了這一點:將護欄連接到… 巴什 專門針對工具或文件寫入工具,因此它只在有值得檢查的內容時運行,並且永遠不會給無害的讀取操作增加阻力。.

免費人工智慧自動化操作手冊

竊取我的人工智慧自動化策略手冊

我用來在睡夢中運行自主業務代理的確切系統——包括鉤子、護欄和收據。免費,直接寄到您的信箱。.

引流工具 - AI 策略手冊

每個自主代理人都需要的三個關鍵要素

三個守護鉤保護一個自主代理

拋開那二十多個事件和花哨的技巧,一個無人值守代理只需要三個鉤子就能值得信賴。我的叢集中的每個容器都在運行這三個鉤子。.

1. 阻止危險操作(PreToolUse)。. 一個鉤子會在每次執行 Bash 命令和每次檔案寫入之前進行檢查。如果指令匹配到危險模式—— rm -rf 對於臨時目錄之外的任何內容, curl … | bash, 向受保護路徑寫入數據,例如 .env 或者你的生產配置——鉤子會回傳一個程式碼區塊,Claude 會收到一個解釋原因的錯誤訊息,而不是執行它。這使得你無需祈禱就能高度自主地運作。你既能獲得無人值守代理的速度,又能擁有堅實的保障。.

2. 稽核日誌記錄每次工具呼叫(PostToolUse)。. 每次工具運行後,鉤子程式都會在每次運行日誌中附加一行記錄——時間戳記、工具、目標、結果。第二天早上,只需兩秒鐘就能知道“我的代理昨晚到底做了什麼?”,無需調查。一旦發現異常,日誌就成了你的黑盒子。沒有審計追踪,就沒有信任;就這麼簡單。.

3. 完成時通知(停止/通知)。. 當一項技能執行完畢後,系統會透過 Telegram 發送一條簡短的摘要:執行了什麼、是否成功以及發佈的 URL。我不會查看控制面板;客服人員會給我發訊息。我特別寫了一篇文章來解釋原因。 每個人工智慧代理都應該在完成後給你發短信。 — 這種心跳聲是一個關鍵點,也是一群特工能夠對一個操作員保持可讀性的原因。.

阻止、記錄、通知。這是最基本的信任層。更進階的功能——自我驗證——則需要進一步完善。 停止 鉤子、呼叫外部策略服務的 HTTP 鉤子——都是建立在這三者之上的。如果你覺得為自己的技術堆疊配置這些東西正是那種你不想在周末花在做的枯燥乏味的底層工作,, 預約自動化策略會議 我會為你們的代理人制定實際需要的防護措施。.

喬恩瓊斯

⚡ 取得人工智慧優勢

每週提供真正省時省錢的AI小技巧。沒有廢話,沒有誇大其詞——只有切實有效的方法。.

訂閱電子報 - 部落格行動號召

JonOps Hook 的真實設置,詳解

操作員睡著了,而受保護的自主代理卻安全運作。

鉤子在以下位置配置: settings.json 文件-專案級、使用者級或兩者兼具。您新增一個 鉤子 創建一個程式碼區塊,命名事件,可以選擇性地添加一個匹配器,以便鉤子僅在特定工具觸發時才執行,並將其指向你的處理程序。以下是我運行容器時始終保留的基本防護措施:

{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "python3.claude/hooks/guard.py" } ] } ], "PostToolUse": [ { "matZ": "" "python3.claude/hooks/audit.py" } ] } ], "Stop": [ { "hooks": [ { "type": "command", "command": "bash telegram-alert.sh" } ] } ] } }

guard.py 處理程序從中讀取工具有效載荷 標準輸入, 它會檢查提議的命令是否在禁入列表中,如果匹配成功,則返回非零值並附帶一條訊息——這個非零返回值就是阻止操作。 審計.py 處理程序會在今天的日誌中新增一行,然後乾淨地退出,因此不會造成任何干擾。 停止 hook 會觸發 Telegram 摘要。三個小腳本,容器就會從「相信我」變成「驗證我」。“

一個細節容易讓人犯錯: 在哪裡 設定檔案的存在決定了它的作用範圍。 .claude/settings.json 對專案的承諾適用於運行代理商的任何用戶(或任何容器)——這就是我如何在不重新配置每個品牌的情況下,將相同的防護措施部署到所有品牌的方法。使用者級設定檔會將您的個人預設設定疊加在其上。當兩者都為相同事件定義鉤子時,它們會疊加而不是覆蓋,因此項目的阻止規則和您的個人日誌記錄規則都會觸發。將不可協商的防護措施保留在專案文件中;將便利性設定保留在您的使用者文件中。.

這背後更深層的紀律是 讀寫分離. 我的特工可以自由閱讀——這既便宜又安全。寫入和 shell 命令都經過了嚴格的審查。 工具預使用 必須進行保護,因為寫入操作是代理真正可能造成傷害的地方。我使用鉤子而不是設定檔中的段落來強制執行這項策略,正是因為如果模型忘記寫入,我無法及時發現並修復。一旦運作多個代理,這種機制也能確保整個系統的安全運作。 克勞德·科德特工團隊 避免互相踩踏或損壞您的生產資料。.

現成的自主代理防護措施

想要真正可以放心放手的經紀人嗎?

我建立了一個鉤子和護欄層,讓自僱人士和小團隊可以無人值守地運行 Claude Code 代理程式——攔截、記錄、通知,一切都搞定。如果您不想自己動手,而是希望有人幫您配置好,我們來聊聊。.

鉤子 + 規劃模式 + 權限 = 信任堆疊

圍繞自主代理的分層信任架構

掛鉤就像是三腳架的一條腿。它們單獨使用時可以起到阻擋和記錄的作用,但真正讓人安心入睡的信任來自於三層結構的疊加,每一層都能彌補其他層的不足。.

計劃模式在工作開始前確定工作範圍。. 你要求代理人提交方案,你閱讀並批准。這是成本最低的風險控制措施-在執行任何工具操作之前就發現錯誤方案。這是防患於未然的最佳途徑。.

權限設定了大致的界限。. Claude Code 的允許和拒絕清單決定了哪些工具和路徑可以使用。它就像院子周圍的柵欄——寬廣、固定且易於理解。.

鉤子函數用於強制執行細粒度的動態規則。. 權限可以聲明「允許使用 Bash」;只有鉤子才能聲明「允許使用 Bash」。 除非 該命令符合這種危險模式,順便說一句,請記錄每次運行的命令。 」鉤子函數是將判斷轉換為程式碼的地方。.

想像一下真實的夜晚。一個內容創作技能透過定時任務啟動,提交任務並開始工作。由於當天早上已經規劃了任務範圍,所以這種方法是合理的。它調用 Bash 來運行一個鏡像腳本—— 工具預使用 警衛檢查了命令,沒發現危險,就放行了。 PostToolUse 記錄下來。之後它試圖寫入其所在路徑之外的路徑;守衛阻止了它,克勞德讀取到錯誤,進行調整,然後繼續前進。技能完成後, 停止 hook 會寄一封包含已發佈 URL 的簡短摘要給我。我一邊喝咖啡一邊閱讀。我全程都沒睡醒,代理也從未處於無人監管狀態──監管只是代碼取代了我。.

計畫、權限、鉤子——三者結合,就能建構縱深防禦。糟糕的想法會在計劃階段被發現,錯誤的工具會在權限階段被發現,危險的特定操作會在鉤子階段被發現,而所有運行的操作都會被記錄下來,以便進行後續的例行審查。這就是信任堆疊,也是為什麼我的容器可以在我無需幹預的情況下運行數週的原因。注重安全的維運人員應該同時仔細審查代理的存取權限——這本身就是一個值得單獨撰寫一篇關於如何安全運行 Claude Code 的指南的主題。.

Claude Code Hooks 常見問題與最終感想

鉤子會減慢克勞德·科德的速度嗎?

勉強夠用,前提是你的管理人員精簡。 工具預使用 執行快速模式檢查的守衛會增加幾毫秒時間。陷阱在於… PostToolUse 每次編輯都會重新格式化檔案的鉤子-每次變更都會向系統發送提醒,並佔用大量視窗空間。解決方法是批次處理繁重的工作:在每次編輯時格式化檔案。 停止 在結尾處添加鉤子,而不是在每次編輯後都添加。.

鉤子能否完全阻止代理?

是的——這就是重點。 工具預使用 返回阻止決策的鉤子會停止對該特定工具的調用,並將原因告知 Claude。你也可以使用 停止 鉤子 防止 阻止代理完成任務,強制其持續工作直至滿足條件。如果使用得當,代理可以透過這種方式驗證自身的工作;如果使用不當,則會導致無限循環,因此需要添加合理的退出條件。.

鉤子程式可以在無頭會話和定時任務會話中運行嗎?

確實如此,而這正是它們發揮作用的地方。當你坐在鍵盤前時,桌面通知鉤子只是錦上添花;而當會話在凌晨兩點無人值守運行時,阻止-日誌-通知堆疊就至關重要了。無論會話是如何啟動的,鉤子的配置方式都相同。.

Bash hook 還是 HTTP hook?我應該使用哪一個?

首先使用命令鉤子(bash 或 Python)。它們最簡單,本地運行,並且涵蓋了絕大多數安全防護措施。當決策由其他地方決定時,例如跨多個代理程式共享的策略服務,或需要本地腳本沒有的資料的檢查,則可以使用 HTTP 鉤子。大多數運維人員只需要命令鉤子即可。如果您需要將鉤子整合到外部工具中,請參閱我們的指南。 克勞德代碼和 MCP 覆蓋結締組織。.

最後想說的

網路會不斷兜售 Claude Code 的鉤子,聲稱可以自動格式化程式碼。好吧——但這只是它們最不起眼的功能。它們真正的功能是將一個通常都能做出正確判斷的 AI 助手,變成一個你可以完全放手的智能體,因為它的運作機制不再受模型情緒的影響。規則只是一種希望,而鉤子才是真正的契約。如果你想運作自主系統,而不僅僅是擺弄它們,那麼你必須跨越這道界線。.

先從三個面向著手:阻止、記錄、通知。在前面新增規劃模式,並在外圍新增權限。這就是完整的信任堆棧,目前我車隊中所有品牌都運行相同的設定。當您準備好建立第一個真正的代理來指向此設定時,請參閱我們的指南。 如何建構人工智慧代理 下一步自然是——然後回來用鉤子把它纏起來,在你離開之前千萬別動它。.

免費人工智慧自動化操作手冊

獲取我營運艦隊的秘訣

一個操作員,一堆自主代理,真實的收據。加入郵件列表,我會把系統發給你——包括鉤子、防護措施,以及在我睡覺時自動發布的自動化程序。.

引流工具 - AI 策略手冊
人工智慧行動指南-免費下載

📥 免費:《人工智慧劇本》

我用來經營一人代理公司的所有工具和工作流程。 25 年的行銷經驗濃縮成一份實用指南。免費贈送。.

引流工具 - AI 策略手冊

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *