生命周期钩子
Hook
中级通用生命周期钩子(Hook)是框架或工具在运行到特定阶段时,自动调用你预先接入的代码。它让你在不改动主流程的情况下插入检查或处理,例如让 AI Agent 在执行工具前核对命令。
你可能会说:「我想让 AI Agent 每次执行命令前先检查风险,不想在每个任务里反复提醒它。」
读之前建议先了解
动手看看让 Agent 安全清理临时图片
1
Agent 要删除一张过期的临时图片。框架走到工具执行前,自动调用我们预先接入的检查代码。
要点生命周期钩子是怎么接入流程的?
- 1
先找到流程里的固定时机
钩子的时机由框架或工具提供,比如任务开始、调用工具前、调用工具后。你只能接入它开放的时机,不能光靠写一个函数,就让系统在任意步骤自动运行它。
- 2
再指定到点要执行的处理
你把自己的代码或命令登记到对应时机。以 AI Agent 为例,执行命令前的钩子可以检查命令内容;如果运行环境支持阻止执行,它就能在发现危险操作时拦下来。
- 3
确认输入输出和失败后的行为
接入前,我们得看这个钩子能拿到哪些信息、能返回什么结果,以及运行失败会怎样。因为钩子由主流程自动触发,写错了可能让每次工具调用都受影响。
容易混淆的地方
钩子和普通函数的区别在于谁决定调用时机:普通函数由你的代码主动调用,钩子由框架在指定阶段调用。它也不等于插件;插件是一种扩展功能的组织方式,内部可能用钩子接入流程。Webhook 则通常是系统之间通过网络传递事件。
什么时候用
适合用
- 做 AI 编程工具时,想在 Agent 执行终端命令前检查目标目录或危险参数。
- 做网站时,想在页面或组件进入框架指定阶段后,统一接入清理等处理。
- 做后台任务时,想在任务结束后统一记录结果,而不在每个任务里重复写相同逻辑。
不适合用
- 点击保存按钮后只需提交一次表单,用按钮的事件处理函数更直接,不必寻找生命周期钩子。
- 两个独立服务要在订单支付后互相通知,优先考虑消息队列或 Webhook;本地钩子不能代替跨服务通信。
- 你能直接修改主流程,而且处理逻辑本来就只在一个固定位置使用,直接调用函数会更清楚。
练一练选一个答案,看看解释
你在做一个 AI 编程工具,希望 Agent 每次调用终端工具前,都先检查命令是否试图删除项目目录。哪种做法最符合生命周期钩子的用途?
让 AI 帮你做复制给 AI Agent 直接用
请检查当前 AI Agent 工具是否提供终端调用前的生命周期钩子。若提供,接入命令风险检查:发现删除项目目录的操作时阻止执行并说明原因;同时告诉我钩子能拿到哪些信息,以及检查失败时工具会如何处理。