用 AI 编程最大的痛点不是它不够聪明,而是它太好心——修个小 bug 顺手把整个模块重构了、写着写着把 API Key 硬编码进去、提交时消息永远是 "fix bug"。Hooks 就是给 AI 装上纪律。
先讲一个场景:你被 AI「好心办坏事」了
某天你让 CodeBuddy 修一个登录验证的 bug,预期改动不超过 10 行。AI 干完后你发现:
• .env 文件被改了——API Key 暴露在代码里
• package-lock.json 被动了——依赖版本乱了
• 提交消息就写了 "fix bug"
• 没跑测试就直接 push 到 main 分支
本来 10 分钟的事,现在够你收拾一下午。
CodeBuddy Hooks 就是解决这个的。
Hooks 是什么:一个比喻就够了
把 CodeBuddy 想象成一个特别能干的职场新人。他代码写得快,但有三个毛病:
• 不懂规矩——不知道公司代码要用 Prettier 格式化
• 太能干了——让他修个 bug,他把整个模块重构了
• 没安全意识——可能把密钥写进代码
Hooks 就是你给这个新人配的三个「随叫随到的助手」:
| 助手 | 触发时机 | 做什么 | 类比 |
|---|---|---|---|
| PreToolUse | AI 执行工具之前 | 拦住不该动的文件、拦截危险命令 | 门卫——管进不管出 |
| PostToolUse | AI 执行工具之后 | 自动格式化、检查规范、跑测试 | 管家——干完活收拾 |
| 普通事件 | 会话开始/结束、用户发消息等 | 注入规范、内容审查、归档日志 | 秘书——全程看着 |
一句话:Hooks 是在 AI 执行流程的关键节点插入自定义脚本的能力。
九大事件覆盖全生命周期
CodeBuddy Hooks 提供了 9 个事件,从会话启动到结束全覆盖:
| 事件 | 触发时机 | 一句话用途 |
|---|---|---|
SessionStart | 会话创建时 | 注入团队编码规范 |
UserPromptSubmit | 用户提交消息时 | 内容审查、敏感词过滤 |
PreToolUse | 工具执行前 | 拦截危险操作、权限校验 |
PostToolUse | 工具执行后 | 自动格式化、跑测试 |
Notification | 权限请求或空闲时 | 桌面通知 |
Stop | 主 Agent 响应结束时 | 要求继续、补充建议 |
SubagentStop | 子任务结束时 | 子任务质量检查 |
PreCompact | 上下文压缩前 | 保留关键信息 |
SessionEnd | 会话结束时 | 清理资源、生成报告 |
最常用的两个是 PreToolUse(事前拦截)和 PostToolUse(事后加工),组成「事前控制 + 事后加工」的完整闭环。
三个必学实战案例
案例 1:防止误删和危险操作(PreToolUse)
场景:AI 不小心执行了 rm -rf / 或 chmod 777。
解法:在 PreToolUse 中拦截 Bash 命令,匹配危险模式就拒绝执行。
配置很简单——Hook 支持正则匹配命令内容,发现 rm -rf /、curl | bash、git push --force 等模式直接阻断。
效果:高危命令被实时拦截,AI 只能「看到」拒绝提示并重新想办法。
案例 2:自动代码格式化和质量检查(PostToolUse)
场景:AI 写完代码不格式化、不跑测试、不检查规范。
解法:在 PostToolUse 中匹配 Write|Edit 工具,写完后自动运行 Prettier/ESLint,检查是否存在硬编码密钥。
• 匹配 .ts/.js 文件 → 自动 npx prettier --write
• 匹配 Write 工具 → 检查内容是否包含 Password/API Key
• 如果检查不通过 → 通过 additionalContext 把错误信息注入 AI 上下文,让它当场修正
关键机制:Hook 脚本的输出可以直接注入 AI 的上下文(System Prompt),让 AI 在同一个会话中「学会」不再犯同样的错误。
案例 3:自动提交规范(PreToolUse)
场景:团队要求 Conventional Commits 格式(feat(auth): add login),但 AI 经常直接写 "fix bug"。
解法:在 PreToolUse 中匹配 Bash 工具,拦截 git commit 命令,检查提交信息是否符合规范。不符合就拒绝并告诉 AI 正确的格式。
进阶用法:三层防护体系
有经验的团队会组合多个 Hooks 事件,构建三层防护:
第 1 层:事前拦截(SessionStart + PreToolUse)
↓ 注入规范 + 阻止危险操作
第 2 层:事中修正(PostToolUse)
↓ 自动格式化 + 质量检查 + 反馈注入
第 3 层:事后验证(Stop + SessionEnd)
↓ 全量扫描 + 生成报告不是「事后补救」,而是「提前拦截 + 实时修正 + 最终验证」。
3 分钟上手步骤
1. 安装 CodeBuddy Code:npm install -g @tencent-ai/codebuddy-code
2. 创建配置:在项目目录创建 .codebuddy/settings.json
3. 写第一个 Hook:最简单的——每次启动打印欢迎信息
4. 测试:打开 CodeBuddy,输入任意内容,看 Hook 是否触发
也可以直接用 /hooks 斜杠命令交互式配置,选事件 → 选匹配器 → 填命令 → 保存。
和其他能力的分工
CodeBuddy 生态里各组件各司其职:
• Rules:约定规则(「要做什么」「不能做什么」)
• Skills:专业技能包(「怎么做好一件事」)
• MCP:扩展外部工具(「还能用什么」)
• Hooks:执行过程监督(「有没有按规矩来」)
一句话定位:Rules 定规矩,Skills 教方法,Hooks 做监督。 三者配合用,AI 的能力边界被锁得刚刚好。
总结
用 Hooks 之后的变化,CodeBuddy 团队用了三个词概括:
• 从「随缘」到「确定」:AI 不会突然干出意料之外的事
• 从「事后补救」到「事前预防」:问题在执行瞬间就被拦住
• 从「被动接受」到「主动编排」:你定义规则,AI 在你的框架里发挥
给 AI 装上 Hooks,等于给它定了一套纪律。剩下的,让它在你画好的框里尽情发挥。
Hooks 目前仅 CodeBuddy Code 支持,更多的模板参考官方文档和开源社区 → aitmpl.com/hooks 🪝
夜雨聆风