32
32 / 50

AI Coding 工作流

⏱️ 40分钟

AI Coding 的产出不是“模型写了一段代码”,而是一个工程师能够解释、测试、回退并交给同事审查的变更。工具会更新,稳定的工作流不会:先确认结果,再理解仓库,然后小步实现、验证和提交证据。


一条可靠的开发闭环

任务结果与边界
  → 读取仓库规则
  → 定位现有实现与相邻模式
  → 写计划和验收条件
  → 建立失败基线
  → 实现最小 vertical slice
  → 单测 / 集成 / UI 或真实客户端验证
  → 审查 diff 与安全边界
  → scoped commit + evidence
阶段必须回答的问题证据
目标用户最后能做什么?Acceptance criteria
探索现有模式和约束在哪里?文件、规则、相邻实现
基线修改前如何失败?可复现命令或截图
实现最小改动是什么?Scoped diff
验证哪些检查覆盖风险?Test、HTTP、浏览器、provider read-back
交接下一位工程师如何复核?Commit、日志摘要、已知限制

按任务形态选工作界面

不要把工具品牌当能力边界。先看任务需要什么交互方式:

任务合适界面原因
局部补全、单函数重构、即时预览IDE 内联或聊天反馈快,当前文件清晰
跨文件修改、运行测试、检查 GitTerminal Agent能持续观察命令和仓库状态
新功能、需求仍有歧义Spec-first 流程先固化 requirements、design、tasks
高风险迁移、生产故障人主导 + 只读诊断先控制影响面和权限
大量独立任务隔离工作树或并行任务减少文件冲突与 context 污染

Cursor、Claude Code、Codex、Kiro 等产品都可能覆盖多个界面。具体能力和价格会变化,页面不应把某个产品固定描述为永久“最适合”。


开工前的 Task Brief

## Outcome

登录失败时,用户看到可恢复的错误提示,不再出现空白页。

## In scope

-   登录表单错误状态
-   401/429 的用户提示
-   对应单元测试和浏览器回归

## Out of scope

-   更换认证 provider
-   修改现有 URL
-   重做整个登录页视觉

## Constraints

-   保留现有 API contract
-   使用仓库已有 request/error helper
-   不记录密码或 token

## Acceptance

-   错误密码返回明确提示
-   429 告知稍后重试
-   刷新后可再次提交
-   相关测试和真实浏览器流程通过

“修一下登录”会迫使 Agent 猜目标、边界和终点。Brief 不是写长 PRD,而是把不可猜的决定写清楚。


先探索,再允许修改

第一轮只读检查应包括:

pwd
rg --files -g 'AGENTS.md' -g 'CLAUDE.md' -g 'README.md'
rg -n "login|signIn|401|429" src
git status --short
git log -5 --oneline

要求 Agent 回答:

  1. 当前数据路径是什么?
  2. 最接近的已实现模式在哪里?
  3. 哪些用户改动必须保留?
  4. 哪个测试最能重现问题?
  5. 这次修改会不会触碰 URL、权限、数据库或外部发布?

没有定位证据就开始写代码,通常会产生重复 utility、错误目录或覆盖并行工作。


Plan 只需要覆盖风险

一个可执行计划应该是 vertical slice,而不是“分析、编码、测试”三句废话:

1. 在 request error mapper 中保留 401/429 类型
2. 登录表单根据错误类型显示可恢复文案
3. 为 mapper 添加边界测试
4. 在浏览器执行错误密码与 rate-limit 两条流程
5. scoped stage,仅提交本次文件

每一步都应有完成信号。若计划会改变公开 URL、删除数据、发送消息或部署生产,需要停下来获得明确授权。


小步实现与验证

建议节奏:

修改一个行为
  → 跑最窄测试
  → 查看 diff
  → 修复或继续
  → 完成 vertical slice
  → 跑更高层验证
变更最窄检查更高层检查
纯映射函数Unit test调用方集成测试
API 规则Service/controller testHTTP status 与 response shape
页面交互Component test浏览器真实流程
数据迁移Dry-run 与 fixture备份、抽样 read-back、回滚演练
外部发布本地预检Provider 状态和公开 URL 读回

测试“命令退出 0”不等于用户结果完成。验证层级要与任务终点一致。


Diff Review:AI 代码重点看什么

  1. Scope drift:是否改了未授权模块或 URL?
  2. Invented API:import、函数、配置项是否真实存在?
  3. Pattern drift:是否绕过已有 helper 和设计系统?
  4. Hidden side effects:是否新增写库、网络、日志或删除?
  5. Error semantics:错误是否被吞掉或全变成 500?
  6. Security boundary:客户端校验是否错误地替代服务端授权?
  7. Test quality:测试是在验证行为,还是复制实现?
git diff --check
git diff --stat
git diff -- path/to/scoped/files
git status --short

只看 Agent 总结不够。总结可能漏掉文件,Git diff 才是变更事实源。


团队规则放哪里

内容合适载体
全仓库不变量、安全与 Git 规则AGENTS.md / CLAUDE.md
目录或语言特定规范更近目录的规则文件
可复用专项流程Skill
单个功能的结果、设计与任务Spec / PRD / issue
每次提交的事实Commit 与测试证据

Kiro 的 Specs 当前以 requirements、design、tasks 组织功能;Claude Code 等工具支持项目规则文件。关键不是格式名称,而是规则有明确作用域、能版本管理,并且不会每次靠口头重述。


用证据衡量效率

不要写未经验证的“效率提升 50%”。建立团队自己的基线:

指标计算方式防止误读
Cycle timetask ready → merged按任务类型和规模分组
First-review pass无需行为修改即通过的 PR / 总 PR文案修正与逻辑修正分开
Escaped defectsmerge 后发现的相关缺陷关联原 PR,而非只数总 bug
Rework被删除或大改的生成代码记录生成量与最终保留量
Verification cost测试、review、修复耗时不只统计“生成时间”
Provider cost实际账单 / 成功任务不硬编码网页价格

比较前后使用相同时间窗口和任务分类。没有可比基线时,指标应标为 unavailable,不要猜。


高风险任务的额外闸门

  • Auth、权限、计费:人先写 threat model 和业务不变量。
  • Migration:先备份、dry run、抽样、回滚,不允许 Agent 直接生产执行。
  • 并发与分布式锁:验证多进程/多 pod,不接受只在单进程通过。
  • 删除与公开发布:解析精确目标,人工批准并读取外部终态。
  • Secrets:日志、Prompt、截图和提交中都不得出现。

AI 可以帮助诊断和生成候选 patch,但责任人必须理解每个高风险变更的失败方式。


动手练习

选一个真实的小 bug:

  1. 写 Task Brief 和 out-of-scope。
  2. 让 Agent 只读探索并引用现有模式。
  3. 保存修改前的失败证据。
  4. 一次只实现一个行为并跑最窄测试。
  5. 做 diff review,再跑真实用户流程。
  6. 生成 evidence pack:文件、命令、结果、未覆盖风险和 commit。

完成标准

  • 目标、边界和验收不是由 Agent 猜出来的。
  • 修改前有基线,修改后有同一流程的验证。
  • 我读过 scoped diff,并能解释高风险代码。
  • 提交不包含其他人的工作区改动。
  • 效率结论来自可比数据,不使用虚构数字。

相关阅读

官方参考

📚 相关资源

常见问题

点击问题,查看本章对应的实践答案。

AI Coding 工作流核心要做什么?

核心闭环是:写清用户结果与边界 → 读取仓库规则和现有模式 → 保存失败基线 → 计划最小 vertical slice → 小步修改和窄测试 → 真实用户流程验证 → scoped diff 与提交证据。AI 可以加速探索和候选实现,但目标、架构取舍、高风险授权与生产责任仍由工程师承担。

Cursor、Claude Code、GitHub Copilot 该先学哪个?

先按任务界面选,而不是背产品排名:局部补全和即时预览适合 IDE;跨文件、测试与 Git 检查适合 Terminal Agent;需求仍有歧义的新功能适合 Spec-first;生产故障与迁移先采用人主导的只读诊断。产品能力和价格会变化,选一个能覆盖当前任务并满足权限、测试和版本管理要求的工具即可。

为什么要让 AI 先出 plan 再动手?

Plan 的作用是提前暴露范围、依赖、验收和高风险副作用,不是增加形式。有效计划应列出具体 vertical slice 和每步完成信号;如果会改变公开 URL、删除数据、发送消息或部署,就必须在执行前获得授权。两三行局部修改可以直接做,但仍需说明预期结果并检查 diff。

AI Coding 应该一次让 AI 改十几个文件吗?

文件数量不是唯一标准;一次修改应对应一个可验证的 vertical slice。跨十几个文件可能是一个必要的类型迁移,也可能是 scope drift。更稳的节奏是修改一个行为 → 跑最窄检查 → 看 scoped diff → 再继续,并为其他人的工作区改动做精确 staging。

AI Coding 工作流真正拉开效率差距的是什么?

差距来自可复用的仓库规则、Task Brief、验收清单、测试夹具、debug runbook 和真实结果证据,而不是 Prompt 写得花哨。团队应跟踪 cycle time、首次 review 通过、返工、线上缺陷、验证时间和实际账单;没有基线的指标标为 unavailable,不写猜测的提升比例。