W
AI-Wiki
CONCEPT

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 联动的代表案例。