用 Claude Code 写代码有个问题:写完就完了,没人帮你审。
我之前也用过 /code-review 命令,但那是手动的——你得记得调,调完还得自己看报告、自己改。有时候写着写着就忘了审,有时候一个小改动也去审,白白浪费 token。
我想要的效果
很简单,就三句话:
- 一个写,一个审 — 各干各的,不串台
- 审的不改代码 — 审手只挑毛病,把问题列出来发给写手
- 自动判断 — 我不知道啥时候该审,系统自己决定
做出来的东西
在 Claude Code 的 ECC 框架里做了一个 skill,叫 write-review。
角色分离
| Writer(写手) | Reviewer(审手) | |
|---|---|---|
| 读代码 | ✅ | ✅ |
| 写代码 | ✅ | ❌ 绝不允许 |
| 分析问题 | ✅ | ✅ |
| 改代码 | ✅ | ❌ |
| 提出修改建议 | — | ✅ |
审手用的是 Claude Code 自带的 code-reviewer agent。这个 agent 本身就只有 Read、Grep、Glob、Bash 四个只读工具,天然就不能改代码。我要做的就是给它加个 prompt 约束,让它明白自己是 Reviewer 不是修理工。
工作流程
你的任务 → Phase 0: 自动判断要不要审
↓
Phase 1: 理解需求
↓
Phase 2: Writer 写代码
↓
Phase 3: Reviewer 审代码(只读不改!)
↓
Phase 4: 有严重问题?→ 反馈给 Writer → 回到 Phase 2
没问题?→ 通过!
↓
Phase 5: 汇报结果
最多循环 3 轮。3 轮还过不了就停下来让你手动处理。
自动判断——解决"不知道啥时候该审"
这是最实用的部分。我在 Phase 0 放了一个决策矩阵:
| 维度 | 🔴 走审 | 🟢 跳过 |
|---|---|---|
| 规模 | 新文件 / 多文件 / >20行 | 单行修改 / 单变量改名 |
| 安全 | auth / 支付 / 用户数据 | 无安全相关 |
| 数据 | schema 变更 / 新查询 | 没动数据库 |
| API | 新增接口 / 改签名 | 内部调整 |
| 业务 | 核心逻辑 / 计算 | 纯格式 / 注释 |
| 重构 | 行为有变化 | 纯重命名 |
不确定时默认走审。 宁可多审一次,不要漏过问题。
实际效果:
- 你说"改个变量名" → 矩阵全部命中 🟢 → 直接改,300 token
- 你说"写个登录接口" → 命中 🔴(新文件+auth+API)→ 自动走写审循环
- 你说"加个注释" → 🟢 跳过
- 你说"重构支付模块" → 🔴(多文件+安全+行为变化)→ 走审
Token 消耗
| 场景 | 不审 | 自动审 | 多花的 |
|---|---|---|---|
| 修改变量名 | 300 | 300(跳过) | 0 |
| 新增工具函数 | 3K | 8K | +5K 但值得 |
| 多文件功能 | 8K | 26K(2轮) | +18K 但值得 |
| 安全相关 | 5K | 20K(审+安全审) | +15K 但必要 |
小改动不浪费,大改动不放过。
怎么用
以后不用手动调命令了。平时正常说话写代码,系统会在后台自动判断。你觉得重要的东西它自动就审了,鸡毛蒜皮的直接跳过。
想强制审查的时候,也可以手动调用:
/write-review 写一个支付回调处理接口
测试了一下
创建了一个简单的 demo-math-utils.js,包含 add 和 multiply 两个函数。系统走了完整流程:
- Phase 0 判断:新文件 → 🔴 走审
- Phase 2:写代码(24行,含 JSDoc)
- Phase 3:code-reviewer 审代码
- Phase 4:0 CRITICAL、0 HIGH → 通过
1 轮过审,review 报告保存在 .claude/reviews/ 目录下。
踩的坑
- deepseek-v4-pro 安全分类器经常挂 — 写文件的时候 Edit 被拦截了好几次,最后用 Write 整个覆写绕过了
- skill 文件太长 — 274 行的 SKILL.md,Edit 工具匹配 old_string 时如果不够精确就失败
- Phase 0 的设计改了三次 — 最开始想放在 CLAUDE.md 里,后来觉得太分散;想用 hook,又太重。最后放在 skill 的 Phase 0,既集中又不干扰其他流程
下一步想法
- 把审手从 code-reviewer 扩展到 security-reviewer,安全相关代码自动双审
- 支持"审手意见分歧"——Writer 觉得审手说得不对的时候,可以反驳
- 加个统计面板,看过去审了多少次、拦截了多少问题
写代码有人审,跟没人审,出来的东西真的不一样。现在我的 Claude Code 会自己帮我盯着了 😎