AI 编码代理中的 Hooks、插件与会话
判断一个玩具级编码代理很简单:它能回答问题,也许能改一个文件,然后交互结束后几乎什么都忘了。
判断一个平台级编码代理则不同:它可以被扩展、被拦截、被恢复、被监督。
这就是 hooks、插件和会话的作用。
它们不是最闪亮的功能,却是 AI 助手成长为真实产品所需的基础设施。
系列地图
本文属于 Inside the AI Coding Agent Stack 系列:
- Claw Code 揭示的 AI 编码代理架构
- 为什么 AI 编码代理会同时使用 Rust 和 Python
- 工具、权限与 MCP:编码代理如何变成真实系统
- AI 编码代理中的 Hooks、插件与会话
- 面向 AI 代理团队的 Clean-Room 重写与 Parity Audit
Hooks 是策略遇到行动的位置
Hooks 的价值在于,它们位于意图与执行之间。
实际系统中,hooks 可以在工具执行前、执行成功后、执行失败后运行。这个模式看起来简单,却非常强大,因为它给运行时提供了一个位置,用来检查或修改输入、拒绝风险动作、强制额外审查、发出日志、附加策略决策或触发后续行为。
编码代理不只是生成文本,它会执行有副作用的动作。当代理可以运行 shell、改文件、调用远程服务或把工作交给子代理时,执行顺序本身就变成产品逻辑。
Hooks 为这种逻辑提供了清晰的承载位置。
为什么 hooks 比看起来更重要
从外部看,hooks 像是高级用户功能。
从内部看,它说明团队理解了更深的事实:代理系统需要拦截点。
没有 hooks,策略决策通常只能被塞进两个糟糕位置:prompt 或工具实现。prompt 太软,工具实现太硬。Hooks 则提供了中间层,让运行时既能保持适应性,又不至于混乱。
这对需要快速调整审批规则、遥测或策略检查的团队尤其有用。
插件把功能变成生态
第二个重要平台信号是插件。
编码代理跨过一个门槛时,它就不再只提供固定内置能力,而是支持带有 manifest、命令、工具、权限和生命周期行为的扩展包。
插件让团队可以把内部工具接入代理,而不需要 fork 核心代码。它也让代理产品能形成生态:不同团队可以安装不同能力,同一个运行时可以服务多种工作流。
不过插件也会带来风险。没有权限、命名空间和审计,插件很容易把核心系统污染成不可预测的环境。因此插件系统必须和权限模型一起设计。
会话让代理能承担长任务
真实编码工作会跨很多轮:理解代码、制定计划、修改文件、运行测试、遇到失败、修复、总结,再继续下一个分支。
没有会话,代理每次都像刚醒来一样。它不知道前面发生了什么,也无法可靠恢复上下文。
会话层需要保存:
- transcript
- 工具输出
- session ID
- 权限选择
- 当前计划或状态
- 恢复时需要的上下文
这不是聊天记录归档,而是工作连续性的基础。
三者合在一起才像平台
Hooks 让系统能拦截行动,插件让系统能扩展能力,会话让系统能跨时间保持连续。
这三者合在一起,编码代理才从一次性 demo 变成平台。用户可以添加能力、监督执行、恢复工作,并让代理适应自己的工程流程。
Claw Code 的公开结构之所以值得看,不是因为每个实现细节都独一无二,而是因为它把这些平台原语放在了正确的位置。
这也是未来编码代理竞争的关键:谁能把模型能力嵌入一个可扩展、可恢复、可治理的操作环境里。