如何 AI Coding
这篇文章讨论程序员如何与 AI 协作完成一个项目(基于当前的 agentic coding 方法)。
核心目标只有两个:
- 让 AI 能持续推进具体工作。
- 让 AI 不容易跑偏,且跑偏后能被及时发现和纠正。
AI Coding 不仅是“让 AI 帮忙写代码”,更重要的是为 AI 提供清晰的边界、稳定的上下文和可验证的目标。
总体原则
1. 关键操作由人决策,低风险任务交给 AI 处理
程序员负责目标、边界、风险取舍和关键操作确认。
AI 负责信息整理、任务拆解、实现、测试、调试和文档同步。
决策按风险分级:
- 低风险任务由 AI 处理,例如局部实现、补测试、修 lint、更新普通文档。
- 中风险任务由 AI 执行后提交结果,由程序员评审,例如跨模块重构、较大范围改动。
- 高风险任务必须由程序员确认,例如合并主分支、发布、回滚、删除数据、修改关键配置。
2. 事实优先于文档
文档很重要,但要以事实为准。
当文档、代码、测试和运行结果冲突时,应优先相信更接近事实的东西。通常优先级如下:
- 运行结果、报错、测试结果
- 当前代码和配置
- 工程约束、决策记录、技术方案
- 需求说明和历史文档
也就是说,文档用来减少跑偏,代码和验证结果用来纠偏。
3. 先验证再更新文档
AI Coding 的核心不是“先写很多说明”,而是“先把目标和验收条件说清,然后快速验证”。
每轮任务至少要明确三件事:
- 目标是什么
- 边界是什么
- 验收标准是什么
AI 完成实现后,应该先验证结果,再更新主文档。不要把尚未验证的假设直接写成事实。
4. 文档要少,但必须有用
太多文档会给 AI 带来噪声,不要刻意追求完整,保证给 AI 提供足够的稳定上下文即可。
如果一份文档不能帮助 AI 更准确地做决定、约束边界或完成验证,那它大概率就不该存在。
推荐流程
1. 先建立最小协作上下文
一个新项目开始时,先准备最小但必要的上下文:
- 项目要解决什么问题
- 当前版本做什么、不做什么
- 有哪些工程约束和禁区
- 哪些操作 AI 不能直接做
- 当前任务如何验证完成
这一步的目标是让 AI 从最开始就有边界。
2. 让 AI 在边界内执行
AI 接到任务后,默认按下面的顺序工作:
- 读取当前任务所需的最小上下文
- 明确缺失信息、假设和风险
- 实现、构建、测试、调试
- 输出变更说明、验证结果和剩余风险
- 在确认结果成立后更新文档
这一步的目标是让 AI 每一轮都能闭环。
3. 人只在关键节点介入
程序员不需要盯着 AI 的每一步,而应该集中在以下节点:
- 目标是否合理
- 边界是否清晰
- 风险是否可接受
- 验证结果是否可信
- 是否允许进入高风险操作
文档结构
适合 AI Coding 的文档结构,通常分成三层就够了。
1. 主文档
主文档记录当前仍然有效的长期信息,应该直接更新,不保留过时内容作为当前上下文。
通常包括:
- 项目简报
- 技术方案
- 工程约束
- 架构说明
2. 当前任务文档
这是最容易被忽略,但对 AI 最重要的一层。
它只服务当前迭代,回答这轮到底要做什么。
建议包含:
- 本轮目标
- 范围和非目标
- 验收标准
- 风险点
- 验证命令或验证方式
如果没有这层文档,AI 往往会从长期文档中自行猜测当前任务边界。
3. 决策记录
决策记录只回答一件事:为什么这样做。
它适合追加,不适合覆盖。因为它保存的是当时的判断依据,而不是当前状态。
最小文档集合
多数项目在开始阶段,4 份文档已经够用:
- 项目简报:为什么做、给谁做、做到什么程度算成功。
- 任务文档:当前版本或当前迭代具体做什么、不做什么、如何验收。
- 技术方案:如何实现、模块怎么划分、主要风险是什么。
- 工程约束:目录、命名、测试、配置、禁止事项、评审和发布规则。
决策记录按需增加,不必一开始就写很多。
什么不该写进文档
下面这些内容如果提前写太多,通常只会制造噪音:
- 没有近期价值的远期规划
- 还没验证的实现细节
- 只在短期内有效的临时讨论
- 与当前任务无关的大段背景说明
- AI 无法据此做出更好决策的空泛规则
文档应该服务执行,而不是替代执行。
一句话总结
AI Coding 在今天的重点,不是让 AI 参与编程,而是让 AI 在明确边界内推进工作,并始终被验证、约束和纠偏。