在这里插入图片描述

AI 编程最危险的时刻,往往不是它开始写代码的时候。

而是它写完以后,你觉得“差不多可以提交了”的时候。

代码能跑。

测试看起来也过了。

diff 里好像都是刚才那件事。

于是你顺手让 AI 写个 commit message,或者自己敲下 git commit

这一步看起来很自然,但它恰恰是很多问题混进仓库的入口。

因为 AI 生成代码之后,最容易留下的不是语法错误,而是更隐蔽的东西:

无关改动。

半截实现。

没人调用的新方法。

没有验证的边界。

解释“做了什么”的注释,却没有证明“为什么这样做”的证据。

这些问题单独看都不吓人,但一旦进入历史,就会变成未来排查问题时的噪音。

这也是我做 dev-skills 时,专门把提交前 review 拆成独立 skill 的原因。

简单说,dev-skills(仓库:Jason-chen-coder/dev-skills)是一套给 AI 编程用的工程协作技能链。

它不是让 AI “想到哪写到哪”,而是把一次改动拆成几个更稳的环节:先把需求和边界问清楚,再定方案,再写代码或修 bug,再用真实命令验证,最后在 commit 前审查 diff。

在这条链路里,dev-code-review 负责最后一道门。

所以准备 commit 的默认动作不是直接写 message。

而是先跑:

dev-code-review

它的定位很明确:在代码进入历史之前,对当前 git diff 做一次提交前风险审查。

不是夸 AI 写得好不好。

不是泛泛评价代码风格。

更不是替正式 CR 盖章。

它只做一件事:判断这次改动现在值不值得被 commit。

01. commit 前最该被拦住的,不是坏代码,而是坏 diff

在这里插入图片描述

很多人说“AI 写代码要 review”,这句话当然对,但还不够具体。

真正要 review 的不是“代码”这个抽象概念,而是当前这一次 diff。

因为 commit 不是把代码保存一下。

commit 是把一组变更打包成历史。

历史里的每一次提交,都应该能回答三个问题:

这次为什么改?

具体改了什么?

它靠什么证明自己是安全的?

如果一个 diff 同时塞进了功能修改、临时调试、格式化噪音、无关注释清理、顺手重构,它可能每一行都能解释,但作为一次 commit 是不合格的。

这就是 dev-code-review 要处理的问题。

它不是站在“这段代码能不能运行”的角度看。

它是站在“这次提交能不能进入项目历史”的角度看。

这两者差别很大。

代码能运行,只说明主路径大概率没崩。

diff 值得提交,意味着范围清楚、闭环完整、风险可见、验证有据。

很多 AI 编程工作流的问题,不是少写了代码,而是少了一道把 diff 当作工程责任来审查的关口。

02. dev-code-review 是 dev-skills 里的提交前门禁

在这里插入图片描述

dev-skills 不是一堆互不相干的 prompt。

它更像一条轻量的工程链路:

dev-grill-docs / dev-spec -> dev-plan -> dev-tdd / dev-fix -> dev-verify -> dev-code-review -> git commit

前面的 skill 负责把需求说清楚、把方案定下来、把代码写出来、把结果验证掉。

但即使前面都做了,commit 前仍然需要最后一道门。

因为实现阶段和验证阶段解决的是“有没有做成”。

dev-code-review 解决的是“这个 diff 能不能干净地进入历史”。

它默认接管所有模糊的 commit 请求。

你说:

帮我 commit

或者:

准备提交,看下这次修改

dev-skills 的语义里,这不是“立刻写 commit message”。

这是“先 review,READY 之后再给 commit message”。

只有当你明确说“跳过 review,只要 message”,才会转到 dev-commit-writer

这个边界非常重要。

因为很多团队质量问题,就是从“把提交信息写漂亮”误当成“这次提交已经准备好”开始的。

dev-code-review 反过来规定了一个更稳的顺序:

先判断 diff 是否 READY。

再谈 commit message。

03. 它不是泛泛 review,而是按五个轴审查

在这里插入图片描述

普通的 AI review 很容易变成一堆正确废话:

建议增加错误处理。

建议提升可维护性。

建议补充测试。

建议注意边界情况。

这些话没有错,但也没有抓手。

dev-code-review 的不同之处在于,它不是让 AI 随便发挥,而是把审查收束到五个轴。

第一,规范。

它会看这次 diff 是否符合当前项目的语言习惯和 lint 配置,有没有调试输出、未使用 import、异常吞掉、命名风格突兀、硬编码敏感信息。

规范不是为了洁癖,而是为了让团队以后少为低级噪音付费。

第二,功能。

它会把 diff 当成即将发出去的变更来读:逻辑是否真的符合意图?空值、异常、重复触发、异步时序、输入边界有没有处理?有没有 copy-paste 错误、条件反了、参数传错?

这一步关注的是“会不会坏”。

第三,闭环。

这是 dev-code-review 最有价值的一轴。

很多 diff 看上去写了很多东西,但实际上没有接上。

新增了组件,没有父级渲染。

新增了配置,没有地方读取。

新增了方法,没有 caller。

新增了事件类型,没有接收方处理。

新增了 API 封装,没有业务路径使用。

这类问题最容易出现在 AI 生成代码里:它很会“补齐形状”,但不一定真的把链路接通。

所以 dev-code-review 要求闭环检查不是凭感觉,而是要用证据。对新符号、新入口、新配置、新组件,要验证它有没有真实消费者;没有外部调用、也不属于框架自动调用的豁免,就不能轻易说 READY。

第四,注释。

AI 特别喜欢写解释性注释。

问题是,很多注释只是在复述代码:

“遍历数组。”

“更新状态。”

“调用接口。”

这些注释不会让代码更清楚,只会让代码显得像生成物。

dev-code-review 会盯住多余注释、过期注释、无 owner 的 TODO、注释和代码不一致的地方。

它保留真正解释 why 的注释,清理只是在制造噪音的注释。

第五,废码。

AI 编程很容易留下脚手架残渣。

一个没用上的 helper。

一个空的类。

一个为了兼容预留但没有消费者的 wrapper。

一段旧逻辑已经被替换,却忘了删。

这些东西暂时不一定会报错,但会持续污染项目理解成本。

dev-code-review 会把它们作为提交前必须面对的问题,而不是留给未来某个人猜。

这五个轴加起来,才像一次真正的 pre-commit review。

它不是问“代码看起来怎么样”。

它问的是:

规范有没有破,功能有没有错,闭环有没有断,注释有没有噪音,废码有没有混进去。

04. READY 不是情绪判断,而是门禁结果

在这里插入图片描述

dev-code-review 最值得保留的设计,是它有明确 verdict。

它不是输出一篇长长的心得。

它会给出三种结果:

✅ READY
⚠ FIX P1
❌ BLOCK

这三个结果让 review 从“建议”变成“门禁”。

如果存在 P0,比如未闭环、泄露密钥、公共 API 被删但调用方还在、明显首调用就会崩,那就是 ❌ BLOCK

这不是“建议修一下”。

这是不能 commit。

如果存在 P1,比如可达的边界遗漏、调试输出残留、异常被吞、信任边界缺输入校验,那就是 ⚠ FIX P1

这意味着你还没到写 commit message 的阶段。

如果没有 P0/P1,闭环也通过,没有明显废码和调试残留,才是 ✅ READY

只有 READY 时,它才输出 commit message。

这个设计很关键。

因为它把“写 commit message”从默认动作,变成 review 通过后的奖励。

在 AI 工作流里,这种顺序比想象中重要。

如果你让 AI 一上来就写 commit message,它会自然地把自己放进“包装成果”的模式。

如果你先让 dev-code-review 出 verdict,它会先进入“挑问题”的模式。

一个负责放行。

一个负责包装。

角色不能混。

05. dev-code-review 让 AI 不再自我批准

在这里插入图片描述

AI 开发有一个很隐蔽的问题:实现者和审查者经常是同一个上下文。

同一个 AI 刚写完代码,马上又说“看起来不错,可以提交”。

这在人类团队里是很奇怪的。

我们不会让一个人写完关键改动后,完全不换视角就自己批准自己。

但在 AI 编程里,这件事经常发生。

dev-code-review 通过 skill 边界把这个问题显性化。

它要求 review 和实现分开。

它只读当前工作树,不主动修改文件。

它优先输出风险、证据、行号和 verdict。

如果发现问题,应该先修,再重新验证,再重新 review。

这不是形式主义。

这是为了让 AI 协作也有基本的工程制衡。

AI 可以写代码。

AI 可以修 bug。

AI 可以跑验证。

但 commit 前,仍然应该有一个独立的审查动作,专门盯 diff 风险。

这就是 dev-code-review 的角色价值。

它让 AI 不再一边产出,一边给自己盖章。

06. 一个实际的使用方式

在这里插入图片描述

最简单的用法是,在你准备提交时直接说:

用 dev-code-review 看下这次修改,准备 commit

它会先收集当前变更:

git status --short
git diff --stat
git diff
git diff --cached
git log --oneline -10

如果 diff 涉及逻辑文件,它还会读完整文件,而不是只看 hunks。

因为很多问题只看局部 diff 看不出来。

比如一个新方法在 hunk 里看起来没问题,但全文件里根本没有调用。

比如一个状态字段改了默认值,但上游初始化路径没有同步。

比如一个组件 props 新增了可选参数,但调用方仍然按旧语义使用。

最后输出会像一份简短但有约束力的提交前报告:

━━━ Dev Code Review ━━━
Verdict   : ⚠ FIX P1
Scope     : 3 files · +84 / −12 · staged
Intent    : 修复重复提交时的错误提示
Languages : Dart

Axis Check
  规范   ✓
  功能   ⚠
  闭环   ✓
  注释   ✓
  废码   ✓

Findings
  [P1] lib/.../submit_button.dart:88   功能   连续点击时仍可能触发第二次请求
       → 在请求开始前禁用按钮,或在 handler 首行加 re-entry guard

这类输出的好处是,它不会把你淹没在长篇建议里。

它只告诉你:现在能不能 commit,不能的话先修哪里。

07. 它真正保护的是团队的 review 带宽

在这里插入图片描述

很多人把 commit 前 review 看成个人习惯。

但我觉得它更像团队礼仪。

PR review 是很贵的。

同事花时间看你的代码,不应该被迫先帮你抓调试输出、无关文件、未使用方法、明显没接上的配置。

这些问题本来就应该在本地被挡住。

dev-code-review 的价值,就是让进入团队 review 的 diff 更干净。

它不是替代同事。

它是在尊重同事。

你交出去的不是:

“我让 AI 写完了,你们帮我看看吧。”

而是:

“这次变更已经过了一轮提交前审查,P0/P1 风险已处理,闭环和范围都检查过了。”

这两种姿态完全不同。

前者是在把风险外包给团队。

后者是在把责任先收回到自己这里。

08. 最后

在这里插入图片描述

dev-code-review 最重要的地方,不是它能发现多少惊天大 bug。

而是它把 commit 前那几分钟,变成了一个稳定的工程动作。

不再凭感觉说“差不多了”。

不再把 commit message 当成完成标志。

不再让 AI 写完代码就顺手自我批准。

而是先问一遍:

这次 diff 的意图清楚吗?

范围干净吗?

功能闭环吗?

有没有注释和废码噪音?

有没有足够证据证明它可以进入历史?

如果答案还不够硬,就先别 commit。

先修。

先验证。

再 review。

最后才提交。

这就是 dev-skillsdev-code-review 的意义。

它不是一个好看的流程节点。

它是 AI 编程从“能生成代码”走向“能交付可靠变更”的最后一道门禁。

真正专业的 AI 开发工作流,不是让 AI 写得越来越多。

而是让每一次被提交的代码,都更经得起未来回头看。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐