首页 › LLM大语言模型 › Claude专栏 › Claude Code 完全指南:使用方式、技巧与最佳实践 › 三、核心概念详解 › 3.2 Hooks(钩子)

3.2 Hooks(钩子)

什么是 Hooks?​

Hooks 是在特定事件触发时自动执行的脚本,用于自定义工作流、拦截危险操作、自动格式化代码等。​

核心价值:​

Hook 事件类型​

​

#iJTkQfdtMHFT text { white-space: pre; }#iJTkQfdtMHFT .fb0 { stroke: var(--N900-FG, 0.15); }#iJTkQfdtMHFT .fb0 {stroke: rgba(31,35,41, 0.15)}#iJTkQfdtMHFT .fx0 { stroke-miterlimit: 10; }#iJTkQfdtMHFT .fx0 {stroke-miterlimit: 10}#iJTkQfdtMHFT .fa1 { fill: rgb(187, 191, 196); }#iJTkQfdtMHFT .fa1 {fill: rgb(187, 191, 196)}#iJTkQfdtMHFT .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#iJTkQfdtMHFT .fx1 {font-style: normal}#iJTkQfdtMHFT .fx2 { text-anchor: middle; }#iJTkQfdtMHFT .fx2 {text-anchor: middle}#iJTkQfdtMHFT .fx3 { dominant-baseline: central; }#iJTkQfdtMHFT .fx3 {dominant-baseline: central}#iJTkQfdtMHFT .fx4 { stroke: none; }#iJTkQfdtMHFT .fx4 {stroke: none}#iJTkQfdtMHFT .fc0 { fill: var(--text-caption); }#iJTkQfdtMHFT .fc0 {fill: #646a73}#iJTkQfdtMHFT .fa2 { fill: var(--text-link-disabled); }#iJTkQfdtMHFT .fa2 {fill: rgb(187, 191, 196)}#iJTkQfdtMHFT .fa3 { fill: rgb(238, 240, 246); }#iJTkQfdtMHFT .fa3 {fill: rgb(238, 240, 246)}#iJTkQfdtMHFT .fa4 { fill: rgb(255, 255, 255); }#iJTkQfdtMHFT .fa4 {fill: rgb(255, 255, 255)}#iJTkQfdtMHFT .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#iJTkQfdtMHFT .fx5 {font-style: normal}#iJTkQfdtMHFT .fx6 { text-anchor: start; }#iJTkQfdtMHFT .fx6 {text-anchor: start}#iJTkQfdtMHFT .fx7 { dominant-baseline: alphabetic; }#iJTkQfdtMHFT .fx7 {dominant-baseline: alphabetic}#iJTkQfdtMHFT .fc1 { fill: rgb(34, 34, 34); }#iJTkQfdtMHFT .fc1 {fill: rgb(34, 34, 34)}#iJTkQfdtMHFT .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#iJTkQfdtMHFT .fx8 {font-style: normal}#iJTkQfdtMHFT .fb1 { fill: var(--N900-FG, 0.15); }#iJTkQfdtMHFT .fb1 {fill: rgba(31,35,41, 0.15)}#iJTkQfdtMHFT .fb2 { fill: rgb(223, 227, 236); }#iJTkQfdtMHFT .fb2 {fill: rgb(223, 227, 236)}#iJTkQfdtMHFT .fb3 { fill: rgb(223, 230, 236); }#iJTkQfdtMHFT .fb3 {fill: rgb(223, 230, 236)}#iJTkQfdtMHFT .fa5 { fill: var(--bg-body); }#iJTkQfdtMHFT .fa5 {fill: #fff}ABC123456事件类型user-prompt-submittool-useafter-tool-usepermission-requestnotification触发时机典型用途用户提交提示词前工具使用前工具使用后权限请求时通知时验证、修改提示词权限检查、参数验证日志记录、结果处理拦截危险操作发送告警、更新状态

​

Hook 配置方式​

方式一:通过 /hooks 命令​

​

飞书文档 - 图片

​

方式二:通过配置文件​

在 ~/.claude/settings.json 或项目 .claude/settings.json 中配置:​

​

飞书文档 - 图片

​

Hook 实战示例​

拦截危险命令:​

​

飞书文档 - 图片

​

自动格式化代码:​

​

飞书文档 - 图片

​

发送通知:​

​

飞书文档 - 图片

​

自动格式化代码(PostToolUse Hook):​

来自创始人的实战经验 - 彻底消灭 CI 里的格式报错:​

​

飞书文档 - 图片

​

工作原理:​

每次 Claude 使用 Write 或 Edit 工具后自动触发​

运行格式化命令(这里是 bun run format)​

|| true 确保即使格式化失败也不阻塞流程​

虽然 Claude 已经写得很规范,但这最后 10% 的自动化处理能彻底解决格式问题​

效果:​

•

✅ CI 中不再有格式报错​

•

✅ 代码风格始终一致​

•

✅ 无需手动运行格式化​

•

✅ Git diff 更清晰​