一、项目目标与自动化功能
本文详细讲解如何通过配置 Claude Code 的 Hook 系统,实现六大自动化功能:权限弹窗提醒、开机日程播报、摘要卡片记录、文件自动整理、久坐提醒以及长任务完成推送。这些自动化功能将帮助你在日常开发中减少等待时间,显著提升工作效率,并增强工作流程的自动化水平。
二、最终效果一览
- 当 Claude Code 需要你的授权时,系统自动弹出通知,避免任务因等待而停滞。
- 每次启动或恢复 Claude Code 时,自动输出天气、日程与问候信息,提升日常体验。
- 在上下文即将被压缩前,自动生成摘要卡片,记录当前会话的关键内容,并保存至跨项目可访问的目录。
- 指定文件夹中的新文件被自动识别、重命名并归类到对应子目录,减少手动整理负担。
- 持续运行 Claude Code 超过一小时后,自动推送久坐提醒,关注健康。
- 长任务完成后,通过手机或手表推送通知,并附带任务状态。
三、技术方案详解
所有功能均基于 Claude Code 内置的 Hook 系统实现。Hook 是事件驱动的脚本,在特定操作发生时自动触发执行。日常使用的 Hook 事件包括:会话开始(ConversationStart)、上下文预压缩(PreContextCompression)、需要授权(NeedsPermission)、文件事件(FileSystemEvent)以及任务完成(TaskComplete)。每个 Hook 对应一条规则化的 Shell 脚本或命令,运行时不消耗 Token。部分功能(如文件自动整理)需要同时使用 Skill,其中 Hook 负责触发,Skill 负责具体的文件处理逻辑。
四、环境与依赖准备
- Claude Code 工具(已安装并完成配置)
- 操作系统:macOS 或 Windows(文中示例以 macOS 为主)
- 系统通知工具:macOS 的
osascript或 Windows 的msg - 可选:Bark(iOS 推送工具,免费,从 AppStore 下载)
- 可选:飞书 CLI(用于日程播报)
- 可选:天气 API(如 OpenWeatherMap)
五、项目结构说明
Hook 的配置文件存储于 Claude Code 的项目目录中,通常位于 .claude 文件夹下。每个 Hook 对应一个配置文件,内容为触发条件与执行命令。
项目目录/
├── .claude/
│ ├── hooks/
│ │ ├── permission_alert.sh
│ │ ├── startup_greeting.sh
│ │ ├── summary_card.sh
│ │ ├── file_organizer.sh
│ │ ├── sit_reminder.sh
│ │ └── task_complete.sh
│ └── skills/
│ └── file_organizer_skill.md
六、核心实现步骤
1. 权限弹窗提醒
在 Claude Code 对话框中输入以下指令:
帮我配置一个通知的Hook,每当需要我授权的时候,调用系统自带的工具给我来一个弹窗提醒。
Claude Code 会自动生成 Hook 脚本。以 macOS 为例,生成的脚本内容类似:
#!/bin/bash
osascript -e 'display notification "需要您的授权才能继续" with title "Claude Code"'
配置完成后,让 Claude Code 测试一次,当需要授权时,右上角会弹出系统通知。
2. 开机日程播报
在对话框中输入:
帮我创建一个会话开始的Hook,每当我打开或恢复Claude Code的时候,输出一段元气满满的问候。告诉我北京朝阳区今天的天气,会不会下雨、要不要带伞,调用飞书CLI拉出当天的日程安排,内容要有趣一些。
Claude Code 会生成一个会话开始事件(ConversationStart)的 Hook,其中包含天气查询命令和飞书 CLI 调用。例如:
#!/bin/bash
echo "早上好!"
curl -s "https://api.openweathermap.org/data/2.5/weather?q=Beijing&appid=YOUR_API_KEY" | jq '.weather[0].description'
feishu cli schedule --today
重新打开 Claude Code 后,终端会自动输出问候、天气和日程。
3. 摘要卡片
输入以下指令:
帮我编写一个Hook,当上下文处于预压缩时,生成一张摘要卡片,记录当前上下文的概要内容,方便我后续查看,将文件保存到一个跨项目也可以查看的地方,总结完毕后打印到Claude Code中,方便我查看。
该 Hook 监听 PreContextCompression 事件。生成的脚本会提取当前上下文的关键信息,写入一个 Markdown 文件,例如:
#!/bin/bash
echo "## 摘要 $(date)" > ~/claude_summaries/$(date +%Y%m%d_%H%M).md
echo "上下文内容:$CLAUDE_CONTEXT" >> ~/claude_summaries/$(date +%Y%m%d_%H%M).md
echo "摘要已保存至 ~/claude_summaries/"
每次上下文被压缩时,会在 ~/claude_summaries/ 目录下生成一个带时间戳的摘要文件,同时打印到终端。
4. 文件自动整理
首先,创建一个 Hook 监听文件夹事件:
指定一个文件夹,每次有新文件丢进来,它自己看一下这是什么、内容是什么,然后自动重命名,再挪到该去的地方。
Claude Code 会生成一个文件事件 Hook。然后,创建一个 Skill 处理文件逻辑:
Skill名称:文件整理助手
功能:识别新文件内容,按规则重命名并移动到对应文件夹
规则:
- 会议纪要:移动到 ~/Documents/会议纪要/
- 发片:移动到 ~/Documents/报销/
- 截图:按内容起名,移动到 ~/Documents/截图/
将两个文件放入 .claude/hooks/ 和 .claude/skills/ 目录。保持 Claude Code 运行,它将自动监控文件夹,新文件出现几秒后开始处理。
5. 久坐提醒
输入指令:
只要我启动了Claude Code之后,只要过了一个小时,Claude Code就会给我发通知提醒我休息了。
Claude Code 会生成一个定时任务 Hook,基于 ConversationStart 事件启动一个后台计时器:
#!/bin/bash
sleep 3600
osascript -e 'display notification "已经坐了一个小时,站起来活动一下吧!" with title "健康提醒"'
启动 Claude Code 后,一小时后自动弹出提醒。
6. 长任务完成推送
安装 Bark(从 AppStore 下载),获取推送链接。在 Claude Code 中输入:
帮我写一个调用Bark的Hook,当任务完成时推送通知到手机。
生成的 Hook 脚本示例:
#!/bin/bash
curl -X POST "https://api.day.app/YOUR_BARK_KEY/任务完成/Claude Code 完成了任务" -d "sound=minuet"
你也可以自定义推送声音,区分任务成功和失败:
if [ "$CLAUDE_TASK_STATUS" == "success" ]; then
curl -X POST "https://api.day.app/YOUR_BARK_KEY/任务成功/Claude Code 完成了任务" -d "sound=alarm"
else
curl -X POST "https://api.day.app/YOUR_BARK_KEY/任务失败/Claude Code 遇到了错误" -d "sound=bell"
fi
配置完成后,长任务结束时,手机和手表会同时收到推送。
七、配置说明与常用事件
所有 Hook 配置完成后,无需额外操作,Claude Code 会自动加载。你可以在 Claude Code 底部输入 /hooks 查看所有活动的 Hook 和可用事件。启动时,它会列出所有可用的 Hook 事件,目前有将近 30 个事件,常用事件包括:
ConversationStart:会话开始PreContextCompression:上下文预压缩NeedsPermission:需要授权FileSystemEvent:文件系统事件TaskComplete:任务完成
八、运行方法指引
- 打开 Claude Code 终端。
- 输入
/hooks查看当前 Hook 状态。 - 输入
/skills查看当前 Skill 状态。 - 按照上述步骤分别配置每个 Hook。
- 配置完成后,重新启动 Claude Code 或等待对应事件触发。
九、结果验证方法
验证每个功能是否正常工作:
- 权限弹窗提醒:让 Claude Code 执行需要授权的操作,检查是否弹出系统通知。
- 开机日程播报:重新打开 Claude Code,查看终端输出。
- 摘要卡片:运行一个长对话,直到上下文被压缩,检查
~/claude_summaries/目录下是否生成摘要文件。 - 文件自动整理:向指定文件夹拖入一个新文件,等待几秒,检查文件是否被重命名并移动到正确目录。
- 久坐提醒:启动 Claude Code 后,等待一小时,检查是否弹出提醒。
- 长任务完成推送:让 Claude Code 执行一个耗时较长的任务,完成后检查手机是否收到推送。
十、常见问题解答
- Hook 消耗 Token 吗? 绝大多数 Hook 是写死的规则脚本,运行时不消耗 Token。只有需要模型能力的部分(如文件识别)会消耗少量 Token。
- 如何管理多个 Hook? 在
.claude/hooks/目录下,每个 Hook 是一个独立的脚本文件,可以随时编辑或删除。 - 文件自动整理失败怎么办? 确保 Skill 文件已正确配置,且模型有足够的权限访问目标文件夹。建议先在小范围测试,避免误操作。
- 推送声音不生效? 检查 Bark 的推送链接是否正确,以及自定义声音名称是否在 Bark 支持列表中。
十一、后续优化方向
- 扩展摘要卡片功能:添加一个定时 Hook,每周五自动将本周的摘要汇总成周报。
- 增强推送通知:为不同任务状态设置不同的推送声音,例如成功用轻快音,失败用明显音。
- 文件整理范围:将监控范围扩展到多个文件夹,如工作项目文件夹,按客户名和日期自动重命名。
- 硬件集成:考虑结合硬件,如键盘锁定,强制用户离开电脑。
完成以上配置后,你的 Claude Code 将具备六个自动化功能。请对照以下清单检查完成情况:
- 权限弹窗提醒已配置并测试通过
- 开机日程播报已配置并测试通过
- 摘要卡片已配置并生成示例文件
- 文件自动整理已配置并测试通过
- 久坐提醒已配置并测试通过
- 长任务完成推送已配置并测试通过
