一、常见方案模式
九个场景按用途分三类:通知类(被动感知)、守卫类(主动拦截)、增强类(自动补充)。每个场景独立可用,不依赖其他 Hook。
通知类
桌面通知
Claude 在长任务中等待输入时,你可能已经切到其他窗口。Notification 事件在 Claude 发出通知时触发。
Linux 替换命令为 notify-send 'Claude Code' 'Claude needs attention'。
任务完成提示音
Stop 事件在 Claude 完成响应时触发。挂一个系统提示音,不用盯着终端等。
错误自动通知
StopFailure 事件在 API 限流、认证失败等错误导致回合终止时触发。匹配器可过滤具体错误类型:rate_limit、authentication_failed、billing_error、server_error。
只关注限流?设 "matcher": "rate_limit"。
守卫类
文件保护
PreToolUse 事件在工具执行前触发。匹配器 Edit|Write 只拦截文件编辑操作。脚本检查路径,退出码 2 阻断操作。
注册配置:
脚本需要执行权限:chmod +x .claude/hooks/protect-files.sh。Claude 收到退出码 2 和 stderr 内容后,会理解限制并调整方案。
命令日志
PostToolUse 事件在工具执行成功后触发。匹配器 Bash 只捕获 Bash 命令。
所有 Claude 执行的命令追加到 ~/.claude/command-log.txt,事后审查用。
增强类
代码格式化
PostToolUse + 匹配器 Edit|Write,每次文件编辑后自动运行格式化工具。
Python 项目替换为 ruff format,Go 项目替换为 gofmt -w。格式化工具需要项目中已安装。
上下文注入
长对话 compact 后 Claude 可能丢失关键信息。PostCompact 事件在压缩完成后触发,stdout 输出会被注入 Claude 上下文。