一个 Hook 让 AI 每次写文件前自动检查编码规范,违规代码再也提交不进来 AI 生成代码有个问题它偶尔会忘记你的规范。尤其是对话轮数多了之后之前 steering 里的约束可能被稀释。我写了一个 preToolUse Hook每次 AI 要写文件时自动检查。相当于给 AI 装了个写之前先 lint的闸门。从此 AI 产出的代码合规率从 85% 到接近 100%。问题场景第 1 轮对话AI 老老实实用 dayjs 第 5 轮对话AI 突然用了 moment上下文稀释 第 8 轮对话AI 用了 class 组件忘了你说只用函数组件 你发现的时候 ├── 要么在 CR 时才看到 → 已经提了 MR ├── 要么在构建时 lint 报错 → 要来回改 └── 总之发现越晚修复成本越高解决方案preToolUse Hook{name:Code Standards Check,version:1.0.0,description:AI 写文件前自动检查是否符合编码规范,when:{type:preToolUse,toolTypes:[write]},then:{type:askAgent,prompt:在写入文件前请检查以下编码规范\n1. 是否引入了 moment应使用 dayjs\n2. 是否使用了 class 组件应使用函数组件\n3. 是否使用了 var应使用 const/let\n4. 日期格式化是否用了 dayjs 而非 new Date\n5. 样式文件是否使用 .m.less 后缀CSS Modules\n6. import 路径是否使用了 或 别名\n\n如果有违规请修正后再写入。如果全部合规继续执行写入。}}工作原理AI 准备写文件 ↓ preToolUse Hook 触发 ↓ AI 自我审查即将写入的内容 ↓ ┌─────────┐ ┌────────────┐ │ 发现违规 │ │ 全部合规 │ └────┬────┘ └─────┬──────┘ ↓ ↓ 修正代码 继续写入 ↓ 再次写入实际拦截案例案例 1moment 引入被拦截AI 在第 6 轮对话中准备写入importmomentfrommomentconstformatDate(date:string)moment(date).format(YYYY-MM-DD)Hook 触发后 AI 自动修正为importdayjsfromdayjsconstformatDate(date:string)dayjs(date).format(YYYY-MM-DD)案例 2样式文件后缀AI 准备创建styles.lessHook 提醒后改为index.m.less。案例 3路径别名// 准备写入import{Button}from../../../components/Button// Hook 修正后import{Button}from/Button为什么不只靠 SteeringSteering软约束 ├── 写在配置文件里 ├── AI 应该遵守 ├── 上下文长了可能被忽略 ├── 效果~85% 合规率 └── 类比贴在工位上的规范海报 Hook硬约束 ├── 每次写文件都触发 ├── AI 必须通过检查 ├── 不受上下文长度影响 ├── 效果~99% 合规率 └── 类比门禁刷卡不符合进不去两者结合效果最好Steering 让 AI 一开始就按规范写Hook 在最后关口兜底。进阶按文件类型差异化检查不同文件的规范不同可以在 prompt 里加判断逻辑{then:{type:askAgent,prompt:检查即将写入的文件\n\n如果是 .tsx/.ts 文件\n- 检查 import 规范别名、dayjs、函数组件\n- 检查导出方式优先 named export\n\n如果是 .m.less 文件\n- 检查是否使用了全局选择器应该都是局部类名\n- 检查是否有 !important尽量避免\n\n如果是 services/ 下的文件\n- 检查请求函数是否有返回类型\n- 检查是否使用了统一的 request 实例}}性能影响每次写文件额外耗时约 1-2sAI 自检 每天写文件次数约 30-50 次 每天总额外耗时约 1-2min vs 不用 Hook 的代价 ├── CR 发现规范问题 → 来回改15min/次 ├── lint 报错 → 回去修5min/次 ├── 按每天 3 次规范问题计算45min/天 ROI每天省 40 分钟值。配置建议建议放进 Hook 的规则 ├── 高频违规的moment、var、class 组件 ├── 机械性的路径别名、文件后缀 └── 难以事后修复的全局样式污染 不建议放的 ├── 主观性强的这个变量名不够语义化 ├── 需要全局上下文的这个组件应该提取出去 └── 频繁变化的规则每周都在调整的 你们有没有遇到 AI 生成代码偶尔出格的问题用什么方法来兜底完整 Skills 源码已开源github.com/sleepyccat/ai-native-workflow欢迎 Star ⭐ 和 PR。

相关新闻

最新新闻

电赛G题备赛:从51到STM32的单片机稳定方案框架

电赛G题备赛:从51到STM32的单片机稳定方案框架

2026电赛G题目前谁也说不准具体会考什么,但备赛完全不需要等题目。很多队伍最大的问题是到了现场才把开发板和传感器拼起来,结果测试时间一到,连基础功能都跑不稳。G题的难点通常不是某一个电路原理,而是把单片机、传感器、执行器…

2026/9/1 8:26:40
游戏手机稳定性实测指南:帧率、温控与功耗的评判标准

游戏手机稳定性实测指南:帧率、温控与功耗的评判标准

同价位游戏机谁更稳?iQOO Neo10 和 Z10 Turbo Pro 是两千元档里经常被放在一起比较的两台直屏机型,都有高刷屏,都强调游戏调度,价格又落在同一区间。可“稳”这个字在不同人口中含义完全不同:有人说的稳是长时间不掉帧…

2026/9/1 8:26:40
Cesium自定义Shader实战:雷达扫描与飞线动画性能优化

Cesium自定义Shader实战:雷达扫描与飞线动画性能优化

之前在做 Cesium 项目时,被一个很实际的问题卡了很久:同样的雷达扫描、飞线效果,我拿CallbackProperty一帧一帧去改位置,结果浏览器 CPU 直接拉满,帧率掉到个位数。而别人做的特效,不仅顺滑,而且…

2026/9/1 8:26:40
【单片机毕业设计】基于 STM32 或 51 单片机的 WiFi 多路温度数据传输与报警系统设计 基于 STM32 或 51 单片机的 LED 状态指示多路温度监测装置设计(022805)

【单片机毕业设计】基于 STM32 或 51 单片机的 WiFi 多路温度数据传输与报警系统设计 基于 STM32 或 51 单片机的 LED 状态指示多路温度监测装置设计(022805)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/1 8:26:40
ASP.NET Core 从入门到精通:系统学习路线与实战项目指南

ASP.NET Core 从入门到精通:系统学习路线与实战项目指南

如果你是一名 .NET 开发者,或者正打算进入这个领域,那么“ASP.NET Core”这个词对你来说一定不陌生。但你可能正面临一个更实际的问题: 面对海量的视频教程、博客文章和官方文档,如何才能真正高效地掌握 ASP.NET Core&#xff0c…

2026/9/1 8:26:40
从H桥到FOC:电机驱动与控制全链路工程实践指南

从H桥到FOC:电机驱动与控制全链路工程实践指南

在机器人、自动化、无人机和智能硬件领域,电机驱动与控制是连接数字指令与物理动作的核心桥梁。无论是让机械臂精准抓取,还是让无人机稳定悬停,其背后都离不开对电机转矩、转速和位置的精确控制。然而,从原理图上的一个H桥电路&am…

2026/9/1 8:21:40