跳到主要內容
maxstudioNews
AI 自動化DEV Community (Claude Code)約 2 分鐘

利用 PostToolUse 鉤子,讓 Claude Code 每次編輯後自動執行測試

雖然直接指示程式碼代理在修改後執行測試通常有效,但透過鉤子(hook)能確保每次都自動執行,且只需少量程式碼。Claude Code 在工具呼叫完成後會觸發 PostToolUse 鉤子。只要匹配檔案編輯工具,就能在每次編輯後可靠地執行快速檢查,並立即將結果回傳給代理。

利用 PostToolUse 鉤子,讓 Claude Code 每次編輯後自動執行測試
圖片來源:DEV Community (Claude Code)

雖然直接指示程式碼代理「修改後執行測試」在大多數情況下都能奏效,但透過鉤子(hook)能確保每次編輯後都自動執行,而且只需大約十幾行程式碼就能實現。

Claude Code 在每次工具呼叫完成後,都會觸發 PostToolUse 鉤子。如果將其匹配到檔案編輯工具上,就能在每次編輯後獲得一個可靠的執行時機,讓你可以快速檢查並將結果直接回傳給代理。

這個鉤子腳本會載入事件資訊,並從中取得檔案路徑。它只會對 TypeScript(.ts, .tsx)和 Python(.py)等原始碼檔案做出反應,忽略文件或鎖定檔。接著,它會執行 npm test 指令來運行測試,並在測試失敗時,將失敗訊息輸出到標準錯誤流,並以阻塞狀態回傳給代理。

你可以將 npm test 替換成 pytest -x -q,或是任何你最快的測試套件。請務必保持測試速度,因為如果檢查時間比編輯時間還長,代理將會花費整個會話的時間等待。

要啟用這個功能,請在 .claude/settings.json 設定檔中加入以下配置。這段設定會將 PostToolUse 鉤子與 Edit、Write 或 MultiEdit 等檔案編輯操作匹配,並在這些操作完成後執行指定的 Python 腳本。

這種做法優於單純的指令,因為代理能夠在同一個回合中立即看到失敗輸出,而不是在三次編輯後才發現問題。即使在長時間的會話中,它也永遠不會「忘記」執行測試。此外,你的專案指令可以保持簡短,因為這項規則已經寫入程式碼中。

鉤子的數量應保持精簡,兩到三個就足夠了,例如一個用於危險指令的編輯前防護、一個編輯後測試執行,以及一個格式化工具。超過這個數量,每次編輯都會變得緩慢且嘈雜。如果你想要一套現成的鉤子(包含防護鉤子、編輯後測試鉤子、設定檔和簡短的 CLAUDE.md),Vildanden Claude Code Ops Pack 提供了這些套件。

如果只是想要內部規則檔案,免費的 Agent Config 範例會是一個很好的起點。

Share

覺得值得一看?分享給朋友。

以上為 AI 自動翻譯導讀。原文版權歸 DEV Community (Claude Code) 所有, 建議透過「閱讀原文」前往原始網站,以取得最完整資訊並支持原作者。

Newsletter

不用每天追,AI 重點每週寄給你

43 個來源、每 2 小時更新,太多看不完。電子報每週挑最值得看的幾則,附上 Max 的看法。

每週一封。Email 只用來寄電子報,每封信都能一鍵退訂。