乐于分享
好东西不私藏

Hooks,提升 AI 的确定性

Hooks,提升 AI 的确定性

如果你经常用 AI,会发现它有个问题,不一定 100% 执行你的命令。

提示词里明明写了「用中文回答」,可能还是会用英文回复。

你强调别动某个文件,AI 可能还是会改。

这不是某个模型的 bug,而是大模型的天生缺陷。它算的是概率,不是在跑一定会执行的程序。

同样的一条规则,AI 今天遵守,明天就未必。

Claude Code 的 Hook,就是用来解决这种不确定性的。

举个例子

用 Claude Code 干活,一个任务经常要跑十几二十分钟。

这时候我会切出去做别的事情,结果常常忘了它还在跑,任务都跑完很久了,才想起来。

要么就是每隔几分钟切回来瞄一眼,注意力在多个任务之间切换,影响工作效率。

Hook 就能解决这个问题,让 Claude 干完活自动发条通知。它收工了我再回来看,中间这段时间该干嘛干嘛。

什么是 Hook

Hook 直译是钩子,可这翻译太抽象了,看不出来是啥意思。

简单来说,Hook 就是在设定的时刻必定执行设定任务。它解决的就是 AI 在执行任务的过程中的不确定性。

你在规则里写了「别动 photo 文件夹里的照片」,AI 大概率不会动。但大概率这三个字,就表示 AI 也可能会出错。

国外一位老兄让 Claude 帮忙整理妻子的电脑,结果 AI 执行一条 rm -rf 命令,删掉了他们存了 15 年、近 15000 张家庭照片,所幸后来靠 iCloud 的备份找了回来。

Hook 要做的,就是不把这种事交给 AI 自己去判断。

它不依赖 AI 判断该不该做,而是在固定的环节介入,由程序来决定执行还是拦下。

Hook 的位置

AI 执行一个任务,大致是这么一条线:

  • 会话开始
  • 你发出指令
  • AI 决定调用某个工具,读文件、改文件、跑命令(动手前)
  • 工具执行完(动手后)
  • 上面两步可能反复好几轮
  • AI 给出回复,本轮结束
  • 会话结束

这条线上几乎每个节点,都能设置 Hook。

不过最常用的几个:

  • 会话开始
  • 调用工具前
  • 调用工具后
  • 需要人工接入
  • 会话结束

Hook 能干什么

几个最常用的场景如下。

任务完成、或需要人工介入时,发通知。长任务不用再盯着,AI 要权限或者收工了,通知直接弹到眼前。

改完文件,自动格式化。每次写完或改完一个文件,自动跑一遍格式化,代码和文档风格始终统一,不用手动收拾。

新会话自动加载关键信息。每开一个新会话,AI 并不知道项目的规则和当前进展。用 Hook 在开场时把这些自动喂给它;长对话被压缩、规则丢失后,也能再补一次。

给重要文档留修改记录。文档每次被改,自动记下时间和改动内容,方便日后回溯。

拦住高危命令。像 rm -rf 这种能把整个目录端掉的命令,别让 AI 自动执行,用 Hook 设成执行前必须由你点头确认。

什么时候该用 Hook

如果这件事,不需要 AI 判断、必须确定发生,就交给 Hook。

比如:格式化、通知、拦高危命令、记录、加载固定的上下文。

反过来,如果一件事得让 AI 先读懂你的意图、再自己拿主意,那就别用 Hook。那是大模型的活,不是程序的活。

Hook 其实不是什么新奇东西,有编程经验的人对 Hook 应该很熟悉。

把它引入到 AI 中,只是让 AI 把可能执行的任务变成必然执行。

如果想了解得更详细,参见官方两篇文档:

  • 概念和常见用法的指南 
    https://code.claude.com/docs/zh-CN/hooks-guide
  • 完整参考

    https://code.claude.com/docs/zh-CN/hooks

觉得有用,点个在看~