Hook
定义
Hook,是指在某个预先定义好的时刻发生时,自动触发一段规则、脚本或后续处理动作的机制。
它的核心不是“这轮对话说了什么”,而是“到了这个时刻,系统要自动做什么”。
在 Agent、Claude Code 以及各类自动化系统里,Hook 常被当作循环和自动化的起点:当某个事件被触发,就执行对应命令、调用工具、发出通知,或者把后续工作交给其他能力模块继续完成。
从更通俗的角度看,Hook 很像触发器。比如到了某个时间自动执行动作,识别到某种状态就切换模式,或当某个步骤结束后立即做下一步。这类“特定时刻触发特定动作”的设计,就是 Hook 的基本形态。
在本文语境中的含义
在本文讨论的 Loop Engineering 语境里,Hook 是构造循环的基础组件。
原文明确强调,loop 的核心是“循环”,而任何循环都需要先有最基础、最初始的触发器:如果发生了某个动作,就去执行某个命令。这个触发条件本身,就是 Hook。
因此,Hook 解决的是“一个时刻”的问题:
- 某个权限请求出现时,要不要提醒人来处理;
- 某个会话开始或恢复时,要不要自动播报信息;
- 上下文即将被压缩时,要不要先做归档;
- 某个长任务完成时,要不要立刻通知;
- 某个文件进入监控目录时,要不要自动整理。
原文最后给出了一组非常清晰的分工:
- Prompt 解决的是一次对话;
- Skill 解决的是一类能力;
- Hook 解决的是一个时刻。
这也是 Hook 与普通提示词最大的区别。提示词更像临时指令,而 Hook 是长期存在、在特定事件发生时自动运行的规则。
为什么 Hook 常见于 Agent 与 Claude Code
原文指出,几乎每一个 Agent 里都会有 Hook,Claude Code 和 Codex 的自动化背后也都有这类机制。
原因很简单:只要系统要从“被动等人发话”变成“在合适时机自己行动”,就必须依赖事件触发。
在 Claude Code 中,用户可以通过 /hooks 查看可用事件。原文提到,作者年初查看时大约只有 13 个事件,而到写作时已经接近 30 个,数量翻了一倍多。这说明 Hook 已经不只是一个边缘功能,而是在持续扩展的自动化入口层。
不过,事件种类增多并不意味着日常都要用上。原文也提醒,虽然可用 Hook 事件很多,但普通使用中真正高频、常用的仍然只是少数几个关键时刻。
关键机制
1. 事件触发
Hook 必须依附于一个明确事件。
这个事件可以是:
- 需要用户授权时;
- 会话被打开或恢复时;
- 上下文即将压缩时;
- 监控目录出现新文件时;
- 使用一段时间后达到某个时长阈值时;
- 某个任务成功、失败或结束时。
没有事件,就没有 Hook。它不是随时都在主动思考,而是在约定好的时刻被拉起执行。
2. 预设动作
Hook 被触发后,会执行预先写好的动作。
这些动作可以很简单,例如:
- 调用系统通知工具弹窗;
- 输出一段固定格式的信息;
- 写入一份摘要文件;
- 发送手机推送。
也可以进一步调用外部工具、脚本或能力模块,把动作延长成一条自动化链路。
3. 与 AI 本体解耦
原文特别解释了一点:很多人担心 Hook 每次运行都要消耗大量 Token,但绝大多数 Hook 本质上就是代码、脚本或写死的规则。
也就是说,Hook 运行时往往和模型推理没有强耦合,不一定需要重新走一轮完整 AI 对话,因此通常不会像频繁调用模型那样带来明显 Token 消耗。
这也是 Hook 适合承担“高频、固定、重复”动作的原因。
4. 可以与 Skill 组合
对于简单动作,Hook 自己就够了;但一旦动作本身需要复杂判断,就会与 Skill 配合。
原文给出了一个很直观的比喻:Hook 是门铃,Skill 是开门以后真正干活的人。
也就是说:
- Hook 负责感知“某个时刻到了”;
- Skill 负责在这个时刻到来后,做需要理解、分类、命名、处理的复杂工作。
这在文件整理场景里尤其明显:监控到新文件进入,是 Hook;识别文件内容、判断类别、按规则重命名、移动到正确位置,则更适合交给 Skill 或模型能力执行。
原文中的典型玩法
权限弹窗提醒
这是一个非常典型的事件驱动自动化场景。
问题是:用户给 Claude Code 下达任务后切到别的页面,结果系统卡在权限请求上,十分钟后回来发现根本还没开始执行。
对应的 Hook 做法是:当系统需要用户授权时,调用系统自带工具弹出提醒。
这样,用户即使不在当前窗口前,也能及时知道任务被权限步骤卡住了。
这个例子说明 Hook 的价值不一定是“替你完成复杂任务”,也可能只是把关键阻塞点及时暴露出来,避免时间被白白浪费。
会话开始播报
原文把它称为“开机日程播报”。
做法是在会话开始或恢复时触发 Hook,自动输出一段信息,例如:
- 问候语;
- 指定地区天气;
- 是否下雨、要不要带伞;
- 通过 飞书 CLI 拉取当天日程安排;
- 用更有趣、更拟人化的方式展示结果。
这个案例的重点不只是“好玩”,而是说明 Hook 可以把 AI 从一个冷冰冰的终端入口,变成一个会在固定时刻主动汇总上下文信息的工作界面。
上下文压缩前生成摘要卡片
这是原文认为最实用的 Hook 玩法之一。
问题背景是:
- 用户同时长期迭代 4 到 5 个项目;
- 有些项目还会开多个分支并行运行;
- 一天之内频繁在多个 Agent 间切换;
- 很多有价值的结论藏在长对话里;
- 一旦上下文被压缩,或者执行
/clear之类动作,再回头找信息会非常痛苦。
对应方案是:在上下文处于预压缩状态时,自动生成一张摘要卡片,记录当前上下文概要,并保存到一个跨项目也能查看的位置,同时把总结结果打印回 Claude Code 界面。
这个案例特别能体现 Hook 的时间点价值:它不是事后回忆,而是在“信息马上要丢失之前”触发归档。
原文把这类摘要卡片形容为“AI 替你写的工作日记”。和翻几万字历史对话相比,回看这些卡片只需要一两分钟,就能快速知道某一天到底做了什么。
原文还进一步提出扩展思路:在已有摘要卡片的基础上,再加一个定时 Hook,例如每周五自动把这些摘要整理成周报。
文件自动整理
这是 Hook 与 Skill 联动的代表案例。