Skill 与工作流

钩子(Hook)

Hook 是挂在智能体动作生命周期某个固定节点上、自动运行的一段代码或检查,通常就在动作执行前或执行后触发。

动作执行前Hook动作执行
Hook 在检查点拦截,动作才继续执行。

智能体会执行动作——运行一条命令、编辑一个文件、调用一个工具。Hook 就是在不改变智能体自身推理逻辑的前提下,在这个生命周期的某个特定节点插一脚:一段 shell 命令或脚本,由运行智能体的程序在动作执行前、执行后、或其他定义好的节点自动运行。

Hook 常用来处理那些不该每次都靠智能体自己判断的事:记录每一条执行过的命令、文件编辑完之后自动跑一遍格式化,或者在危险命令执行前强制要求确认。因为 hook 是确定性运行的(不是模型自己决定要不要做),所以适合放那些必须每次都发生、或者绝不能被漏掉的行为。

Claude Code 的 hooks 就是一个真实的例子:在配置文件里按事件(比如某个工具即将运行、或刚刚运行完)设置,可以检查、记录,甚至直接拦截它挂载的那个动作。

怎么运作

Hook 注册在某个生命周期事件上——某类动作执行前、执行完之后,等等。事件一旦发生,运行智能体的程序就会执行这个 hook 对应的命令;根据具体实现,它的输出或退出状态还可能决定这个动作要不要继续、要不要被修改,或者只是单纯记录一下发生了什么。

举个例子

一个配置在“文件编辑类工具执行前”的 hook,可以拦截对 secrets/ 目录下文件的修改——一旦匹配到,就返回一个错误,直接终止这次操作,而不是任由智能体写进那个路径。

和相关概念的区别

Hook 和 trigger 的区别:trigger 是从外部事件启动一次全新的智能体运行;hook 是在一次已经在运行的过程里,拦截其中某一个具体的动作。

常见误解

常被以为: Hook 只能用来记录日志,改变不了实际行为。
实际上: 取决于具体实现,hook 也可以直接拦截一个动作,或者要求人工确认之后才能继续,并不只限于被动记录。

常见问题

Claude Code 里的 hook 是什么?
是在某类动作执行前后自动运行的一段命令,在配置文件里设置,常用于日志记录、格式化,或拦截有风险的操作。
Hook 和 trigger 有什么区别?
Trigger 是由外部事件启动一次全新的智能体运行;hook 是在一次已经在跑的运行里,拦在某个具体动作前后。

最近核实: 2026-08-28

相关术语