Codex和Claude Code作为当前最热门的AI编程工具,正在改变开发者的工作方式。但很多人在使用过程中发现,单纯依赖AI生成代码往往会导致项目结构混乱、代码质量参差不齐。本文要分享的核心技巧是:如何通过强制复用成熟方案,让AI编程变得可控且高效。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 工具类型 | AI编程助手(Codex/Claude Code) |
| 核心功能 | 代码生成、代码审查、测试编写、文档生成 |
| 关键技术 | Spec驱动开发、Git版本控制、多Agent协作 |
| 适用场景 | 新功能开发、代码重构、测试覆盖、技术文档 |
| 硬件要求 | 无特殊要求,依赖云服务或本地API调用 |
| 核心价值 | 通过规范约束AI输出,确保代码质量一致性 |
2. 为什么需要强制复用成熟方案
很多开发者初次接触Vibe Coding时,会被AI快速生成代码的能力震撼,但很快会遇到以下问题:
常见痛点:
- AI一次性修改20+文件,方向错误时无法快速回滚
- 生成的代码风格与现有项目不一致
- 缺乏边界约束,AI可能修改不该碰的核心模块
- 多人协作时,不同AI代理产生的代码冲突
强制复用的价值:
- 保持代码风格一致性
- 降低后续维护成本
- 提高团队协作效率
- 减少代码审查工作量
3. Git工作流:AI编程的安全网
3.1 基础Git规范
在让AI动手前,必须先建立Git安全网:
# 检查当前工作区状态 git status --short # 为每个任务创建独立分支 git switch -c feat/order-export # 小任务也建议开分支,心理负担更小3.2 代码审查流程
AI修改完成后,不要急着看总结,先看代码差异:
# 查看影响范围 git diff --stat # 查看具体修改内容 git diff # 分段暂存和提交 git add -p git commit -m "feat: add order export"3.3 安全回滚机制
当AI修改出错时,要有可靠的恢复方案:
# 放弃某个未暂存文件的修改 git restore path/to/file # 撤销已经暂存的文件 git restore --staged path/to/file # 已经推送过的提交,优先生成反向提交 git revert <commit>注意:git reset --hard不是禁术,但不要随手交给AI代理使用。
4. Spec驱动开发:给AI明确边界
4.1 轻量级Spec示例
不要对AI说"帮我实现订单导出功能",这样太宽泛。应该编写明确的Spec:
## 目标 实现订单导出接口,支持按时间范围导出CSV。 ## 约束 - 单次最多导出5000条 - 时间范围不能超过31天 - 只能导出当前租户的数据 - 查询必须走order_tenant_time_idx索引 - 导出失败要记录失败原因,不能只返回unknown error ## 验收标准 - 正常导出CSV,字段顺序为order_no、amount、status、created_at - 超过5000条返回明确错误 - 越权租户数据不能被导出 - 单元测试覆盖无数据、越权、超过条数、超过时间范围4种情况4.2 项目级规则文件
长期项目可以把规则放到AI工具能稳定读取的位置:
- Claude Code:
CLAUDE.md - Codex:
AGENTS.md - Cursor:
Project Rules、.cursor/rules/*.mdc - GitHub Copilot:
.github/copilot-instructions.md
规则文件重点放技术栈版本、常用命令、架构取舍、团队约定和项目痛点;别堆空话、默认行为和大段文档。
5. Skill机制:可复用的工作手册
5.1 什么是Skill
Skill不是插件,也不是MCP工具本身,而是把某类任务的流程、约束、检查项和踩坑经验写进SKILL.md。
适合沉淀为Skill的场景:
- 写功能前走TDD:先写失败测试,再写实现
- 做代码审查时固定检查安全、事务、性能、边界条件和项目约定
- 写前端页面时固定检查响应式、hover状态、可访问性和设计系统
- 做网页调研时固定选择搜索、抓取、浏览器自动化这些工具的顺序
5.2 Skill编写原则
Anthropic的建议是,SKILL.md正文最好控制在500行以内;如果超过这个长度,就把细节放到单独文件里,通过渐进式暴露的方式让Agent按需读取。
编写Skill时可以问自己一句:这段话会不会直接影响Agent下一步怎么做?不会,就别啰嗦进去。
6. 多模型分工策略
不要什么活都扔给最贵的模型。更经济的做法是:
6.1 三阶段分工
# 第一阶段:方案设计(顶级模型) # 使用Claude Opus等顶级模型只讨论方案,不急着写代码 # 第二阶段:代码实现(经济模型) # 把具体Task交给DeepSeek V4-Pro/GLM5.1等同级低价模型 # 第三阶段:代码审查(顶级模型) # 把git diff返回给顶级模型做Review6.2 审查重点
让强模型专注于:
- Bug识别
- 越权风险
- 事务边界
- 性能问题
- 测试缺口
代码审查也可以这么干:先让便宜模型扫一遍项目,把疑似问题列出来;再让强模型复核这些问题到底成不成立。
7. 测试驱动开发(TDD)实践
7.1 基础TDD流程
不要只听AI说"修好了",要看证据。可以这样要求:
## 修改要求 先不要改实现。 先根据Spec补测试,覆盖正常路径、参数非法、权限不足、无数据、并发重复请求。 测试一开始应该失败。 我确认测试合理之后,你再改实现,直到测试通过。7.2 验收检查清单
让AI明确列出验收项目:
- [ ] 新增接口有权限校验 - [ ] 错误返回符合统一格式 - [ ] 数据库查询命中指定索引 - [ ] 空值、越界、重复请求都有测试 - [ ] 日志不打印token、password、api key - [ ] 所有测试通过还要贴运行过的命令和结果8. 上下文管理策略
8.1 上下文压缩原则
Vibe Coding里,上下文要管三件事:
第一,别把仓库一股脑塞进去。当前任务只需要Spec、相关文件、报错日志、验收命令和少量参考实现。其他内容先用路径、文件名、目录结构挂着,等需要时再让Agent去读。
第二,长任务要及时压缩。Claude Code可以用/compact压缩上下文,用/clear清空上下文;Codex或其他Agent也有类似的摘要、压缩、重启机制。
第三,关键进展要落到文件里。比如让Agent在长任务中维护一份NOTES.md或任务handoff,记录:
- 修改了哪些文件
- 哪些测试已经跑过
- 哪些问题已经确认不是Bug
8.2 会话管理最佳实践
小G的习惯是:一个会话只处理一个任务;超过两次纠正还不对,就开新会话;新会话只带当前Spec、相关文件、失败日志、验收命令和上一轮handoff。
对多数编码任务来说,3000到8000 tokens的高质量上下文,通常比几十万tokens的杂乱对话更可靠。
9. 多Agent协作规范
9.1 串行优于并行
多Agent分工协作的玩法确实很酷,但真心不建议大家上来就尝试多Agent并行(比如,一个写代码,一个补测试,一个做Review,一个写文档),很容易把项目搞乱。
你刚开始就串行着跑就好了:
- Plan Agent只读代码,输出方案和任务拆分
- Code Agent只负责一个Task,不碰其他任务
- Test Agent补测试并运行验证
- Review Agent只看diff,找问题,不直接大改
9.2 提交规范
一定不要让多个Agent同时修改代码,让它们在同一个feature分支上按顺序提交:
git commit -m "[plan] add order export design" git commit -m "[code] implement order export api" git commit -m "[test] add order export tests" git commit -m "[review] fix tenant permission check"10. 权限控制与安全边界
10.1 基础权限规则
AI Coding不能只靠Prompt里写一句"请您谨慎一点,别做危险操作"。Claude Code这类工具已经不只是回答问题,它会读文件、改代码、执行命令,也可能通过MCP调内部工具或外部服务。
风险自然也不再只是代码写错,更严重的问题可能误删文件、改错配置、跑错迁移、推送到远程,甚至碰到密钥、证书、生产配置这类敏感信息。
所以权限要提前收住:
.env.production、密钥、证书这类文件,默认就不该让AI读取或修改- 删除文件、数据库迁移、推送远程、改CI配置这类操作,必须人工确认
- 登录、支付、权限、上传、Webhook这类模块,改完要单独做安全Review
10.2 Claude Code权限机制
Claude Code官方也提供了对应的权限机制。比如可以用/permissions查看和管理工具权限;权限规则里可以配置allow、ask、deny,分别表示允许执行、执行前询问、直接拒绝。
像git diff、跑单测这类低风险命令,可以放得宽一点;git push、删除文件、读取.env、访问secrets/**这类操作,就应该放到ask或deny里。
11. 实战工作流总结
日常写需求时,小G一般按这个节奏走:
- 新建分支,先确认工作区是干净的
- 写一份轻量Spec,把目标、约束、验收标准说清楚
- 看看有没有合适的Skill,比如TDD、Code Review、前端设计、网页调研
- 先让顶级模型出方案,只讨论方案,不急着写代码
- 方案确认后,再把一个个Task交给低价模型
- 每完成一个Task,就跑测试、看diff,然后小步提交
- 当前diff稳定后,再让顶级模型做一次Review
- 修掉Review里合理的问题,再跑一遍测试
- 合并前,人工看关键diff
- 涉及数据、权限、支付、定时任务这类修改时,再补一下文档、回滚方案或者复杂度说明
这个流程比"一句话生成代码"慢一点。但慢的这点时间,通常会在后面赚回来。至少能少很多返工、回滚和线上排错。
12. 总结
GitHub Flow本身也是围绕分支、Pull Request、Review和合并来组织协作,不是让人直接往主分支怼代码。Codex这类工具也支持通过AGENTS.md放项目级规则,让AI按仓库里的约定做事,而不是每次都靠聊天临时提醒。
说白了,AI写代码越快,Git、测试、Review、Spec这些老东西越不能丢。以前它们是为了约束人,现在还得顺手约束AI。