跳到正文

生命周期钩子

Hook

中级通用

生命周期钩子(Hook)是框架或工具在运行到特定阶段时,自动调用你预先接入的代码。它让你在不改动主流程的情况下插入检查或处理,例如让 AI Agent 在执行工具前核对命令。

你可能会说:「我想让 AI Agent 每次执行命令前先检查风险,不想在每个任务里反复提醒它。」

读之前建议先了解

动手看看

删除请求Agent提出调用执行前钩子检查命令文件工具尚未执行执行后钩子尚未触发
1

Agent 要删除一张过期的临时图片。框架走到工具执行前,自动调用我们预先接入的检查代码。

要点

  1. 1

    先找到流程里的固定时机

    钩子的时机由框架或工具提供,比如任务开始、调用工具前、调用工具后。你只能接入它开放的时机,不能光靠写一个函数,就让系统在任意步骤自动运行它。

  2. 2

    再指定到点要执行的处理

    你把自己的代码或命令登记到对应时机。以 AI Agent 为例,执行命令前的钩子可以检查命令内容;如果运行环境支持阻止执行,它就能在发现危险操作时拦下来。

  3. 3

    确认输入输出和失败后的行为

    接入前,我们得看这个钩子能拿到哪些信息、能返回什么结果,以及运行失败会怎样。因为钩子由主流程自动触发,写错了可能让每次工具调用都受影响。

容易混淆的地方

钩子和普通函数的区别在于谁决定调用时机:普通函数由你的代码主动调用,钩子由框架在指定阶段调用。它也不等于插件;插件是一种扩展功能的组织方式,内部可能用钩子接入流程。Webhook 则通常是系统之间通过网络传递事件。

什么时候用

适合用

  • 做 AI 编程工具时,想在 Agent 执行终端命令前检查目标目录或危险参数。
  • 做网站时,想在页面或组件进入框架指定阶段后,统一接入清理等处理。
  • 做后台任务时,想在任务结束后统一记录结果,而不在每个任务里重复写相同逻辑。

不适合用

  • 点击保存按钮后只需提交一次表单,用按钮的事件处理函数更直接,不必寻找生命周期钩子。
  • 两个独立服务要在订单支付后互相通知,优先考虑消息队列或 Webhook;本地钩子不能代替跨服务通信。
  • 你能直接修改主流程,而且处理逻辑本来就只在一个固定位置使用,直接调用函数会更清楚。

练一练

你在做一个 AI 编程工具,希望 Agent 每次调用终端工具前,都先检查命令是否试图删除项目目录。哪种做法最符合生命周期钩子的用途?

让 AI 帮你做

请检查当前 AI Agent 工具是否提供终端调用前的生命周期钩子。若提供,接入命令风险检查:发现删除项目目录的操作时阻止执行并说明原因;同时告诉我钩子能拿到哪些信息,以及检查失败时工具会如何处理。

接下来学什么