当前位置: 首页 > news >正文

AI 写完了代码,你却还在发呆?用 Claude Code Hooks 给 AI 装上“下班铃“

AI 写完了代码,你却还在发呆?用 Claude Code Hooks 给 AI 装上"下班铃"

你有没有过这种经历:让 AI 帮你重构一个模块,然后切到浏览器摸鱼,结果十分钟后切回来发现他早就干完了——而你白白浪费了宝贵的摸鱼时间?今天就来教你怎么让 AI 干活结束时自动弹窗喊你。


一、痛点场景

用 Claude Code(或类似的 AI 编程工具)执行长任务时,通常的模式是:

  1. 下指令 → 2. 干等 → 3. 时不时回来看看 → 4. 发现早完成了

这个"时不时回来看看"就是效率黑洞。作为一个追求极致摸鱼效率的人,我翻了 Claude Code 的文档,找到了Hooks机制。


二、Claude Code Hooks 是什么

Hooks 是 Claude Code 提供的生命周期钩子,你可以在特定事件触发时自动执行自定义脚本。支持的事件包括:

Hook 事件触发时机
PreToolUse工具调用前
PostToolUse工具调用后
Notification通知事件
StopAgent 任务结束
PreCompact上下文压缩前

其中最实用的就是Stop——任务完成时触发,正是我们要的"下班铃"。


三、配置文件结构

Hooks 配置存放在.claude/settings.json中:

{"hooks":{"Stop":[{"hooks":[{"type":"command","command":"powershell.exe -ExecutionPolicy Bypass -File \"path\\to\\hook\\notify.ps1\" -Message \"任务已结束\""}]}]}}

配置说明:

  • hooks.Stop— 数组,可注册多个 Stop hook
  • 每个 hook 内再嵌套一个hooks数组,这是command类型
  • command字段指定要执行的脚本(支持传参)

四、Windows 弹窗通知脚本

光执行脚本还不够——我们要一个能弹窗+播放音效的体验。这里用 PowerShell 调用 Windows Forms 写了一个通知脚本notify.ps1

param([string]$Message="任务完成!",[string]$Title="Claude Code",[string]$Sound="Exclamation",[string]$SoundFile="")Add-Type-AssemblyName System.Windows.FormsAdd-Type-AssemblyName System.Drawing# ===== 音效播放 =====functionPlay-Sound{param([string]$SoundType,[string]$FilePath)if($FilePath-and(Test-Path$FilePath)){try{(New-ObjectSystem.Media.SoundPlayer($FilePath)).Play()return}catch{}}if($SoundType-eq'None'){return}$map= @{'Beep'=[System.Media.SystemSounds]::Beep'Exclamation'=[System.Media.SystemSounds]::Exclamation'Question'=[System.Media.SystemSounds]::Question'Asterisk'=[System.Media.SystemSounds]::Asterisk}if($map.ContainsKey($SoundType)){$map[$SoundType].Play()}}Play-Sound-SoundType$Sound-FilePath$SoundFile# ===== GUI 弹窗(暗黑风格) =====$form=New-ObjectSystem.Windows.Forms.Form$form.Text =$Title$form.Size =New-ObjectSystem.Drawing.Size(400,200)$form.StartPosition ='CenterScreen'$form.BackColor ='#2d2d30'$label=New-ObjectSystem.Windows.Forms.Label$label.Text =$Message$label.Font =New-ObjectSystem.Drawing.Font("Microsoft YaHei",16)$label.ForeColor ='#ffffff'$label.AutoSize =$true$label.Location =New-ObjectSystem.Drawing.Point(50,50)$button=New-ObjectSystem.Windows.Forms.Button$button.Text ='确定'$button.Size =New-ObjectSystem.Drawing.Size(80,30)$button.Location =New-ObjectSystem.Drawing.Point(160,100)$button.Add_Click({$form.Close()})$form.Controls.Add($label)$form.Controls.Add($button)$form.ShowDialog()|Out-Null

效果:AI 完成任务 → 系统发出提示音 → 屏幕中央弹出深色主题弹窗,显示自定义消息,点击"确定"关闭。


五、权限白名单

当你使用 Hooks 执行脚本时,Claude Code 会弹出权限确认。如果你不想每次都点确认,可以在.claude/settings.local.json里加上白名单:

{"permissions":{"allow":["Bash(powershell.exe *)","Bash(npm -v)","Bash(pnpm install *)"]}}

这样 Hook 脚本就能静默执行,不会在关键时刻打断 AI 的工作流。


六、进阶玩法:不止于提醒

Hooks 的潜力远不止弹窗通知。你可以用它来做:

  • PreToolUse→ AI 每次操作前记录日志,方便审计
  • PostToolUse→ 自动eslint --fix格式化 AI 修改过的文件
  • Stop→ 完成时自动git diff生成变更摘要、自动运行测试用例
  • Notification→ 集成飞书 / 钉钉 / 企业微信 Webhook,实现远程通知

一个稍微复杂一点的 Stop Hook 示例:

{"hooks":{"Stop":[{"hooks":[{"type":"command","command":"powershell -File notify.ps1 -Message '代码生成完毕'"},{"type":"command","command":"npm run lint"}]}]}}

这样任务结束后,先弹窗提醒,再自动跑 Lint 检查。


七、跨平台兼容

macOS / Linux 用户可以用osascriptnotify-send实现类似效果:

macOS:

{"command":"osascript -e 'display notification \"任务完成\" with title \"Claude Code\" sound name \"Glass\"'"}

Linux:

{"command":"notify-send 'Claude Code' '任务已完成' -i dialog-information"}

八、总结

Claude Code Hooks 让"AI 写代码,你摸鱼"的模式真正闭环了。配置一次,受益终身。核心要点:

  1. Hook 配置写在.claude/settings.json,支持多种生命周期事件
  2. Stop Hook 最实用——任务完成时自动通知
  3. 跨平台兼容——PowerShell / osascript / notify-send 都能接
  4. 不止通知——可以串联 lint、测试、构建等自动化流程

希望这篇文章能帮你在摸鱼之路上更进一步。如果你有其他有趣的 Hooks 玩法,欢迎在评论区交流。


*本文示例代码基于 Windows 11 + PowerShell 5.1 + Claude Code 实践。

http://www.cnnetsun.cn/news/3606747.html

相关文章:

  • 【PyTorch】with torch.no_grad() 详解
  • 如何基于小型工控机与openwrt打造家用软路由
  • 麒麟信安登录央视, 深度展现为中国信息安全铸“魂”之路
  • 【模拟IC学习笔记】 PSS和Pnoise仿真
  • PairLIE论文阅读笔记
  • AI生成音乐版权雷区全扫描,律师+音频工程师双视角解析:93%创作者不知的4类侵权高发场景
  • Qt 定时器放在线程中执行,支持随时开始和停止定时器。
  • AI模型优化与多模态学习实战指南
  • 动态住宅代理使用指南:粘性会话 vs. 每次请求轮换 IP,如何选择?
  • 关于在VM虚拟机下,安装OpenWrt软路由,所遇错误及解决方法。
  • 如何在PVE(Proxmox)中安装OpenWrt软路由?
  • AI如何革新本科生论文写作:从选题到答辩的全流程优化
  • 随身wifi刷openwrt变软路由--103s没网的解决
  • OpenWrt 软路由介绍
  • CTFHub-WEB-文件上传
  • YOLOv5工业检测优化:CSP-EDLAN模型实战解析
  • Github项目分享——免费的编程中文书籍索引
  • 【单片机毕业设计推荐】 基于 STM32 或 51 单片机的智能感应自动门控制系统设计与实现,基于 STM32 或 51 单片机的带人数统计功能智能门禁装置设计(012403)
  • ARM DAP与JTAG指令深度解析:从调试原理到故障排查实战
  • AI技术如何革新论文查重系统
  • Tiva™ TM4C129LNCZAD PWM故障保护与中断控制全解析
  • 从技术层级角度看多链路聚合通信技术
  • TM4C I2C从机中断与FIFO配置实战:从寄存器原理到高效数据引擎
  • 从零构建C++轻量级系统监控方案:原理、实现与生产实践
  • AI招聘解决方案:重构招聘价值链的16项核心技术
  • 索引失效避坑: 明明是等值查询,为何EXPLAIN显示走了全表扫描?
  • 嵌入式外设识别与EPI接口:从GPIO身份验证到高速并行通信
  • 深入Tiva™ TM4C129时钟与电源管理:从寄存器配置到低功耗实战
  • DSP上AES算法性能优化实战:从C代码到线性汇编的深度调优
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。