乐于分享
好东西不私藏

AI 写代码总乱来?给 CodeBuddy 装上 Hooks,让它在关键节点「自己管自己」

AI 写代码总乱来?给 CodeBuddy 装上 Hooks,让它在关键节点「自己管自己」

用 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 就是你给这个新人配的三个「随叫随到的助手」:

       
                                           
助手触发时机做什么类比
PreToolUseAI 执行工具之前拦住不该动的文件、拦截危险命令门卫——管进不管出
PostToolUseAI 执行工具之后自动格式化、检查规范、跑测试管家——干完活收拾
普通事件会话开始/结束、用户发消息等注入规范、内容审查、归档日志秘书——全程看着
       
     

一句话: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 🪝

                 

相关学习资料