AI 时代的开发流程,
从需求到上线 全周期指南
这份手册给团队所有工程师:我们如何用 AI Agent(终端编码助手)做需求、设计、编码、测试和发布。 重点解决新人最容易懵的分支环境映射、merge/rebase、上线顺序问题。
01六条基本原则
不管在哪个阶段,这六条是判断"这样做对不对"的默认标尺。
02团队协作模式:高内聚,低耦合
AI 时代的协作不是"人 + AI 一起在一个文档里改",而是每个人/每个 Agent 独立负责一块,只交换结果,不纠缠过程。
基本单元:DRI(微型 CEO)+ Agent 集群
每个需求/模块有一个 DRI(Directly Responsible Individual) 对结果端到端负责,周围配一组可调度的 AI Agent 集群。DRI 做判断和担责,Agent 做执行和交付。
| 关系 | 怎么做 | 不怎么做 |
|---|---|---|
| 人 ↔ 人 |
|
|
| 人 ↔ AI |
|
|
| AI ↔ AI |
|
|
传统角色在 AI-Native SDLC 中干什么?
现阶段团队仍区分产品经理、前端、后端、测试,部分人已逐步跨职能。角色边界不是消失,而是从"各管一段"变成"围绕 DRI 补位":
| 角色 | 承担什么 | 不做什么 / 什么时候补位 |
|---|---|---|
| 产品经理 |
|
不写代码、不参与技术选型;评审 spec.md 是否还原业务意图 |
| 架构师 |
|
不逐行写业务代码;核心交易链路架构变更必须过架构师 |
| 前端 / 后端工程师 |
|
超出自己专业领域时(如前端碰复杂 SQL、后端碰交互设计),找对应专业人员补位,不硬扛 |
| 测试工程师 |
|
不重复开发自己跑一遍所有测试——把精力放在评测集建设和人工审核上 |
什么时候必须拉会协同?
高内聚低耦合不是什么都异步。遇到下面这些情况,该拉会还是要拉会:
03Git Flow 分支与环境映射
新人最容易搞混的三件事:merge 还是 rebase、先合并还是先部署、哪个环境对应哪个分支。这一节直接给答案。
分支-环境对照速查
| 环境 | 对应分支 | 部署方式 | 用途 |
|---|---|---|---|
| dev | develop | Codeup 自动部署 | 开发自测、联调 |
| uat | release/* | 运维手动触发 | 测试/产品验收 |
| prod | main | 运维手动触发 | 线上生产 |
新手必读:merge 还是 rebase?什么时候用哪个?
这是新人最常问的问题。规则很简单:
| 场景 | 用什么 | 为什么 |
|---|---|---|
| feature 分支更新代码 | git rebase develop | 保持提交历史线性,PR 干净 |
| feature 合回 develop | PR Merge(不 rebase) | 保留合并节点,可追溯这次发布包含哪些 feature |
| release 合回 main | PR Merge | 打版本标签,保留发布节点 |
| release 上的 bug fix | 直接在 release 分支提交,不走 feature 分支 | uat 验证对象 = 发布对象;随 release → develop 回合带回 develop,不允许只存在于 release 的提交 |
| hotfix 合回 main | PR Merge | 紧急修复也要留痕 |
新手必读:我们为什么不用 git flow release finish 命令?
标准 git flow release finish 会一口气做三件事:
- 合并 release → main
- 打版本标签
- 合并 release → develop
- 删除 release 分支
但我们的流程需要先发 prod、观察没问题、再合回 develop——因为如果 prod 出问题要 hotfix,develop 上不应该带着这个未验证的发布。所以我们不用这个命令,手动分步走 PR:
| 步骤 | 动作 | 操作方式 |
|---|---|---|
| 1 | uat 验证通过后,提 PR:release → main | Codeup 建 PR,合并后打版本标签 |
| 2 | main 合入,运维发 prod | 发布后观察 30 分钟监控 |
| 3 | prod 没问题,再提 PR:release → develop | 把这次发布的改动合回开发主干 |
| 4 | develop 合入后,删 release 分支 | Codeup 上删远程分支 |
git flow release finish 一把梭,那样 develop 会先于 prod 拿到未验证的代码。
新手必读:先合并还是先部署?正确顺序是什么?
以一个 feature 上线为例,正确顺序是:
- 在 feature 分支开发,本地跑 lint + 单测
- 提 PR 到 develop,等资深工程师 review
- Review 通过后 Merge 到 develop,Codeup 自动部署到 dev
- dev 环境验证没问题
- 从 develop 切出
release/x.x.x分支 - 通知运维部署 release 分支到 uat
- uat 验证通过(测试 + 产品验收)
- 提 PR 把 release 合到 main,打版本标签
- 通知运维部署 main 到 prod
- 观察线上指标,确认没问题后把 release 合回 develop
合并到 develop 后,Codeup 自动部署 dev 的完整机制
feature 合并到 develop 触发两段流水线:合并前校验 + 合并后部署验收。两段各自独立:
两段流水线
| 阶段 | 做什么 | 失败怎么办 |
|---|---|---|
| 合并前(PR 校验) | 只检查单个项目的问题:Lint、单测、构建 | 红灯不能合并,改到绿再提 |
| 合并后(部署流水线) | 重新构建制品 → 部署 dev → 单应用 + 跨应用端到端验收 | 见下方失败处理 |
失败处理与回滚
- 服务不可用(部署后探活失败、进程起不来)→ 自动回滚到上一个无问题构建产物
- 测试脚本失败(验收用例挂了)→ 人工介入,由 DRI 决定是否回滚(可能是脚本本身写错了)
- 回滚目标:上一个"部署后验证通过"的构建产物(制品回滚),不是回退代码分支。该原则同样适用于 prod(见 Deploy 章节)
- 回滚后:develop 分支不 revert,标注"dev 验证失败",让开发重提 PR 修复
DB 迁移
- feature 开发时就要一起提供数据库回滚脚本(up + down 成对)
- 没提供回滚脚本 = 说明该变更不需要回滚数据库,写清楚即可
- 迁移失败 → 用 down 脚本回滚数据,再回滚制品
跨应用验收
交易链路涉及多个服务,验收采用各自独立验收:A 服务合并部署完就验收 A(含对 B 的契约调用验证),不等 B 也更新完。跨应用契约在 spec.md 里定义,验收时按契约 mock 或真实调用验证。
04六个阶段怎么做
每个阶段都给出核心做法和常见坑。项目记忆文件和命令以当前团队使用的 Agent 工具为准,直接照做即可。
每阶段产出物总览
| 阶段 | 产出物 | 谁写 / 谁审批 | 过不了怎么办 |
|---|---|---|---|
| 1. Plan | intent.md + plan.md | intent.md(业务意图、验收标准)由产品经理主笔、产品负责人审;plan.md(实现计划)由 DRI 写、DRI 审 | 没想清楚就别动手,写大白话想法让 AI 追问 |
| 2. Design | spec.md | 架构师、工程师写;产品负责人确认业务还原,资深工程师 review 技术方案 | 只写"做什么、做成什么样",不写"怎么做" |
| 3. Build | 代码 + 测试(实现按 plan.md 执行) | DRI(工程师)写并自审 | 先改文档再改代码,返工成本低 |
| 4. Test | Evals 评测集 | 测试工程师兜底完备性;自动回归 | 20-50 个真实任务,掉分禁合并 |
| 5. Deploy | REVIEW.md | 人(DRI)最终审批 | AI 先审查标记问题,Hooks 拦截违规部署 |
| 6. Maintain | 新 intent.md | AI 诊断 → 人确认 | 监控指标异常 → AI 诊断 → 自动回到 Plan 阶段 |
怎么做
- 需求开始前,先确认产品经理提供的
intent.md(业务意图、目标、验收标准);没有就先补,再动手。 - DRI 基于意图写
plan.md(可以让 Agent 帮你起草,你改)。 - 计划必须包含:目标、非目标、可机器判定的验收标准、涉及哪些模块、有没有数据库变更。
- 自己先过一遍"陌生人测试":没参与讨论的人拿到这个 plan 能直接做吗?不能就补。
- 用 Agent 的 Plan Mode 启动,让它先输出实现计划,你确认后再让它写代码。
展开:plan.md 完整模板(交易链路适用)
# Feature: <名称> 关联需求:JIRA/工单号 ## 目标 一句话。例:订单超时未支付自动取消并释放库存。 ## 非目标 - 本次不做退款流程 - 本次不改消息推送模板 ## 验收标准 - [ ] 订单超过 30 分钟未支付,状态变为 CANCELLED - [ ] 取消后库存自动释放回可用库存 - [ ] 用户收到取消通知(短信+站内信) - [ ] 重复取消不产生副作用(幂等) ## 涉及模块 - 修改:order-service / 定时任务 / 库存服务 - 新增:取消订单的领域事件 ## 数据库变更 - 是否有 DDL:是/否 - 如有,回滚脚本:xxx.sql ## 风险 - 风险描述(例:并发取消导致超卖)→ 只登记风险,缓解方案写入 spec.md - 回滚方式:feature flag / 回退代码重发
- "帮我加个订单取消功能"——Agent 会自由发挥,产出你不要的东西
- 验收标准写"用户体验更好"——不可机器判定,没法测试
- 涉及数据库变更但没写回滚脚本——交易链路回滚可能要运维帮忙
怎么做
- 让 Agent 先列 2-3 个候选方案和各自的取舍,不要让它直接选一个就写。
- 涉及订单、支付、库存、资金这些核心链路的改动,方案必须给资深工程师过一眼。
- 重要决策写在 PR 描述里:为什么这么做、放弃了什么、什么条件下会推翻。
- 明确告诉 Agent 不能动什么:不要改 legacy 模块、不要新增依赖、不要破坏现有接口契约。
- 让 Agent 同时做设计和写代码——它会选最容易写的方案,不是最合理的
- 设计只在聊天记录里——下次会话 Agent 就忘了,会重新发明轮子
每次新会话必须做的事
- 在仓库根目录放
AGENTS.md(Agent 会自动读取),写清楚项目规范。 - 用 Agent 的 Plan Mode 启动:先让它出计划,你确认后再动手。
- 一次只让 Agent 做一个小改动——写完、跑测试、确认,再让它做下一个。
- 独立任务(比如写接口 + 写测试)可以用 Subagents 并行,但最后你统一 review。
- 关键决策写入项目记忆(omp 用
/memory retain;其他工具用其等价机制,如 CLAUDE.md 追加),下次会话不用重新说。
AGENTS.md 模板(本团队)
# 项目:XXX 服务 技术栈:Java 17 / Spring Boot / MySQL / Redis / Kafka # 常用命令(与硬门禁清单 ① 本地开发五项一一对应) - 格式:mvn spotless:apply - 静态检查:mvn checkstyle:check pmd:check spotbugs:check - 编译:mvn clean compile - 单测(改动模块):mvn test -Dtest=你改的类 - 全量测试:mvn test 提交前五项必须全绿(以本清单为准,与 CI 门禁保持同步)。 # 代码规范 - Controller 只做参数校验和路由,业务逻辑在 Service - 数据库操作必须走 Mapper,不要在 Service 里拼 SQL - 业务异常继承 BizException,错误码统一管理 - 交易链路接口必须加幂等设计 # 不能做的事 - 不要动 src/legacy/ 目录 - 不要引入新的第三方库(需要先问 Tech Lead) - 不要在循环里调用 RPC 或数据库查询 - 所有对外接口必须写参数校验和异常处理
docs 目录:业务知识沉淀(人审受控)
每个项目根目录 docs/ 下放业务文档——Agent 懂代码结构,但不懂业务语义。
- 放什么:业务场景说明、状态机、交易规则、接口契约——这些是人审受控文档:只能随代码同 PR 由人更新,Agent 不得自行改写(Agent 是 docs 最重度的消费者,不能既当读者又当作者)
- 怎么更新:改业务逻辑必须先改 docs 再改代码,同一个 PR。不允许只改代码不改 docs
- 多久 review:每季度 DRI 过一遍 docs 是否过时,过期的比没有更危险。review 落痕:在
docs/REVIEW-LOG.md追加一行(日期 / DRI / 结论),没记录 = 没做过
Skills 库(awesome-rules 仓)
高频操作沉淀成可复用的 Skill,存在 awesome-rules 仓,不用每次重新跟 Agent 描述。项目里引用即可。
- 怎么用:在 AGENTS.md 里引用需要的 Skill,Agent 按需加载,不用全塞进上下文
- 沉淀时机:同一个操作跟 Agent 描述过 3 次以上,就该写成 Skill 放进 awesome-rules
- 已有示例:查线上日志、写 SQL 排查、生成回滚脚本、PR 描述模板等
展开:当前 Agent 工具命令速查(以 omp 为例,换工具时找等价命令)
| 命令 | 用途 |
|---|---|
/memory view | 查看当前项目已记住的内容 |
/memory retain <事实> | 把重要决策存为长期记忆 |
| Plan Mode 启动 | 当前工具默认先出计划再执行,确认后才改代码 |
| Subagents | 独立任务并行派发,主会话把关 |
展开:多 Agent 并行开发——用 git worktree 隔离会话
同时跑多个 Agent 会话(一个改接口、一个写测试、一个重构),如果在同一个目录里,两个 Agent 会互相覆盖文件、git 状态打架。正确做法是每个 Agent 一个独立 worktree:同一个仓库,多个工作目录,各 check out 各的分支。
worktree 并行示意
标准操作流程
# 假设主仓库在 ~/repo/order-service # 1. 为任务 A 建一个独立 worktree(新目录 + 新分支) git worktree add ../order-A feature/order-cancel # 2. 为任务 B 再建一个 git worktree add ../order-B feature/order-refund # 3. 两个终端分别进去,各启动一个 Agent cd ../order-A && omp cd ../order-B && omp # 4. 各自开发、各自提 PR # 5. 任务完成后清理 worktree git worktree remove ../order-A git worktree remove ../order-B
为什么不用分支切换就行?
- 切换分支要 stash 当前未提交的改动,来回切很容易丢东西
- 两个 Agent 会话都有自己的上下文(已打开的文件、记忆),切分支会搞混
- worktree 共享同一个 .git 对象库,不占额外磁盘存两份代码
注意事项
2. 不要在两个 worktree 改同一个文件:合并时必冲突。并行任务提前拆清楚文件边界。
3. 数据库:多个 worktree 连同一个本地库没问题,但跑迁移脚本前确认其他 worktree 不在跑测试。
4. 用完就删:任务合并后立刻
git worktree remove,不然目录越堆越多。5. 查看有哪些 worktree:
git worktree list。
什么时候用 worktree,什么时候用 Subagents?
| 场景 | 用什么 |
|---|---|
| 一个需求里的两个独立子任务(写接口 + 写测试) | Subagents:同一个 Agent 会话里派,上下文共享,你统一 review |
| 两个完全独立的需求/任务,要长时间并行 | worktree:两个独立 Agent 会话,互不干扰 |
| 一个人同时修 bug + 做新功能 | worktree:bug 要紧急合,新功能还没好,别互相等 |
三步写代码:计划 → 写 → 自查
- 先出计划(plan.md):工程师审计划,消除模糊后再动手。先改文档返工更轻。
- AI 写代码:按计划一步步写,每步跑测试。
- AI 自查:写完自动跑测试 + 构建,全部通过才算完成。不通过自己改,最多 5 轮。
陌生人 Reviewer 闭环(核心场景)
参考 Peter Steinberger(OpenClaw 之父)的做法:主 Agent 写完代码后,唤起一个全新空白上下文的子 Agent 当 Reviewer,双方来回辩论:
- 主 Agent 写完代码,唤起空白 Reviewer:"帮我把刚才改的代码全盘过一遍"
- Reviewer 挑出问题回传给主 Agent
- 主 Agent 辩解或认错修改,改完再提交给 Reviewer
- 来回拉扯最多 10 个回合;第 10 回合仍未收敛即升级人裁决,双方意见全文留入 PR 描述,不无限辩论
跑与不跑按各项目 AGENTS.md 定义的人审范围执行:定义为核心链路的必须跑,之外可选。成本预期:核心链路 PR 预留 1-2 小时,排进发布节奏。
- 一个 prompt 让 Agent 改 5 个文件——review 起来你会崩溃
- 让 Agent 自己说"完成了"就算完——必须你自己跑测试确认
- 无限制让 Agent 改——最多 5 轮自修复,超过就人工介入
怎么做
- 让 Agent 写代码的同时把单测一起写了——不要留到最后补。
- 本地必须跑通:lint + 单测全绿,再提 PR。
- CI 红灯不要 skip——让 Agent 看日志、改到绿为止,最多 5 轮。
- 交易链路的改动,必须补边界 case:空值、并发、幂等、异常路径。
- 改完测试跑全量,不要只跑你改的那个文件。
AI 写的测试,信多少?
| 场景 | 信任程度 | 你要做什么 |
|---|---|---|
| 非核心场景(后台管理、内部工具、CRUD) | 基本全信 | 抽查断言是否真的验证了逻辑,而不是空跑 |
| 核心交易链路(下单、支付、退款、对账) | 必须人工审核 | 逐行看测试用例、边界覆盖、断言强度,Agent 写的测试可能"为了绿而绿" |
Evals 评测闭环(核心场景)
光靠单测不够——核心链路要维护一个 20-50 个真实任务的评测集,每次代码变更或 Agent 配置变更都自动跑一遍,通过率掉了就禁止合并。
- 同等待遇(目标态,3 个月内接线):代码变更和 Agent 配置变更(CLAUDE.md / Skills / Hooks 改动)一视同仁都要跑 Evals——当前 CI 仅代码变更触发,配置变更触发排在 3 个月路线
- 持续回归:不是提测前才跑,每次 PR 自动跑
- 掉分禁合并:通过率比基线低就红,不许强合。基线三条纪律:① 初始基线 = 评测集首次全量跑通率,记录在仓(如
evals/baseline.json);② 基线只升不降,下调需 PR + Tech Lead approve 并留痕;③ 新用例合入时基线重算为 min(当前通过率, 旧基线),新用例不得放松旧约束 - 线上 bug 转 Evals:每次线上修复后,补一个评测用例进集子里,下次自动检测
- 用例退役:连续 6 个月未捕获差异且业务已下线的用例,评测集 owner 可 PR 退役并留痕(防止集子只增不减变成新屎山)
- CI 红了就找"赶上线"理由跳过——下次技术债翻倍还
- 让 Agent 删掉跑不过的测试来"通过"——这是在掩盖问题
- 只测 happy path——交易链路出问题都在异常路径
发布流程(务必照做)
- develop → dev:PR 合并到 develop 后 Codeup 自动部署 dev,你自己验证。
- 切 release:从 develop 切
release/x.x.x,只修 bug,不加新功能。bug fix 一律在 release 分支上直接提交(保持 uat 验证对象 = 发布对象),由该 PR 的 DRI 负责随 release → develop 回合带回 develop——不允许只存在于 release 的提交。 - uat 验证:通知运维部署 release 到 uat,测试和产品验收。
- 合 main:uat 通过后,提 PR 把 release 合到 main,打版本标签。
- prod 发布:通知运维部署 main 到生产,发布后盯 30 分钟监控。
- 回 develop:发布确认没问题后,单独再提一个 PR 把 release 合回 develop,不要用
git flow release finish(它会一步合 main+develop,把未验证代码带进 develop)。
git flow release finish:这个命令会原子性地把 release 同时合 main 和 develop。我们的流程要求 prod 验证通过后才合回 develop,所以必须手动分两次 PR。详见上面"为什么不用 release finish"折叠块。
紧急回滚怎么做
展开:hotfix 完整流程(生产事故后的修复路径)
- 从 main(回滚后的版本标签)切出
hotfix/x.x.x分支 - 本地门禁照跑:lint + 单测,不豁免
- 提 PR 合回 main。交易链路可以豁免 uat,但不可豁免资深 + TL 双人 review——这是全流程唯一的裁剪点
- 打补丁版本标签,运维发 prod,照常盯 30 分钟监控
- prod 确认没问题后,PR 合回 develop(与 release → develop 同规则)——不回流 = 下个 release 把已修的 bug 带回生产
- 走「翻车复盘三步闭环」(见 Maintain 章节)
哪些路径必须资深 review
| 敏感路径 | 要求 |
|---|---|
| 订单、支付、资金相关 | 必须资深工程师 + Tech Lead 双人 review |
| 数据库 DDL / 表结构变更 | 必须有回滚脚本,提前告知运维 |
| 对外 API 接口变更 | 不能 breaking change,新增字段可以,删改必须兼容 |
| 权限、鉴权相关 | 必须资深 review |
| 普通工具类 / 内部后台 | 一人 review 即可 |
- feature 分支直接部署 uat 测——uat 跑的必须是 release 分支
- release 分支上继续加新功能——要加新功能等下一个版本
- uat 没测完就发 prod——交易链路出问题代价很大
- 出问题先慌着改代码——先回滚止血,再修
- prod 发布后,自己盯 30 分钟。判定基准(占位,按实际监控能力校准):错误率 > 发布前 1 小时基线的
2 倍、核心接口 P99 超基线30%、订单量低于上周同期70%,任一命中即触发回滚评估。监控入口:【dashboard 地址/命令待填】。 - 触发权:观察期内 DRI 有权直接呼叫运维回滚,不需要再审批。发现问题先关流量/回滚,再定位原因。
- 踩过的坑(比如某个配置项容易漏、某个边界 case 没想到)写入项目记忆(omp 用
/memory retain;其他工具用等价机制)记下来。 - 定期让 Agent 扫描热点路径,提性能优化 PR(这是后面的事,先把手头流程走顺)。
翻车复盘三步闭环
线上出问题后,光写复盘文档不够——要确保 Agent 下次不再犯同样的错:
- 写复盘文档:存档,讲清楚什么问题、根因、影响
- AGENTS.md 加一条"别再犯":把教训写进项目规则,Agent 下次自动遵守
- Evals 加一个用例:下次自动回归,再犯直接红
三步走完才算复盘结束。只写文档不加规则和评测 = 下次还会犯。
05硬门禁清单:每个环节必须过什么
硬门禁 = 红灯就不能往下走,没有"赶上线"例外。按本地开发 → PR → release → prod 四个环节逐层加严。
Agent 权限与安全边界(红线)
| 边界 | 规则 |
|---|---|
| 代码推送权限 | Agent 无权直接 push 到 main / develop,只能通过 feature/* 分支提 PR,由人 review 后合并 |
| 生产数据库 | 可读不可写;敏感表/敏感字段(用户手机号、身份证、交易密码相关)配置不可访问,Agent 查不到 |
| 密钥与凭据 | Agent 不能读取配置中心生产密钥;开发环境密钥脱敏后使用 |
| 部署权限 | Agent 不能触发 uat / prod 部署,只能跑 dev 环境自动流水线 |
| 提交身份 | Agent 提交一律使用本人 git 身份,commit message 带 AI 署名标注(如 Co-Authored-By: <agent> trailer)——回溯、缺陷率分桶统计、责任定界都依赖它 |
| AI 产出标注 | PR 标题或标签标明 AI 辅助程度(纯 AI / AI 辅助人写),与 PR 描述里的 Prompt 摘要互相印证 |
① 本地开发(你自己跑,跑不过别提 PR)
| 门禁 | 检查什么 | 命令 |
|---|---|---|
| 代码格式 | 缩进、import 顺序、命名风格统一 | mvn spotless:apply 或 checkstyle |
| 静态检查 | 空指针、未关闭资源、可疑写法、循环里调 RPC/DB | mvn checkstyle:check pmd:check spotbugs:check |
| 编译通过 | 类型错误、依赖冲突 | mvn clean compile |
| 单元测试 | 你改的模块的单测全绿 | mvn test -Dtest=你改的类 |
| 大测试全量 | 确认没改坏别的地方 | mvn test |
② PR 到 develop(Codeup CI 自动跑,红灯不能合并)
| 门禁 | 检查什么 | 级别 |
|---|---|---|
| 编译 + Lint | 和本地一致,CI 上再跑一遍 | 硬阻断 |
| 单元测试全量 | 所有单测必须绿 | 硬阻断 |
| 测试覆盖率 | 新增代码覆盖率 ≥ 80%,总覆盖率不能比 main 低 | 硬阻断 |
| 依赖漏洞扫描 | 第三方库有没有已知 CVE | 硬阻断(高危与中危均拦) |
| PR Review | 人审范围按各项目 AGENTS.md 定义:核心路径(交易链路 / DB / 对外接口 / 权限)强制人审,交易链路 = 资深 + TL 双人;非核心修改可由 Agent review 替代人审直接合并 | 硬阻断 |
| 不能 draft 直接合 | 草稿 PR 必须标记 ready 才能合 | 硬阻断 |
| commit 规范 | commit message 符合规范(feat/fix/refactor 开头) | 建议,暂不硬卡 |
③ release 分支(发 uat 前,比 PR 更严)
| 门禁 | 检查什么 | 级别 |
|---|---|---|
| 上面所有 + | PR 阶段全部门禁在 release 分支再跑一遍 | 硬阻断 |
| 集成测试 | 跨服务接口联调测试通过 | 硬阻断 |
| DB 变更检查 | 有 DDL 必须配套回滚脚本,提前通知运维 | 硬阻断 |
| 关键接口冒烟 | 核心交易链路接口 P99 耗时不超过基线 | 提示,超标要说明 |
④ prod 发布前(人工 + 流程门禁)
| 门禁 | 检查什么 | 谁来确认 |
|---|---|---|
| uat 验收通过 | 测试和产品在 uat 上点过 | 测试 + 产品 |
| 变更记录 | 发布内容、影响范围、回滚方式写清楚 | 开发自己写 |
| 回滚方案确认 | 出问题能不能 5 分钟内回退;含 DDL 的发布必须演练过 down 脚本 | 开发 + 运维 |
| 运维审批 | 通知运维发 prod,确认窗口 | 运维 |
| 发布后观察 | 盯 30 分钟错误率 / 核心指标 | 开发自己盯 |
06一次需求从开发到上线的完整 SOP
新人入职第一个需求,照着这张清单一步步走,不会错。先看谁做什么、再看时间顺序。
RACI 责任矩阵:每件事谁负责
| 活动 | 开发 | 资深/TL | 测试 | 产品 | 运维 |
|---|---|---|---|---|---|
| 写 intent.md(业务意图) | C | I | — | R/A | — |
| 写 plan.md / 技术方案 | R | A | C | C | I |
| 写代码(AI Agent 辅助) | R | I | — | — | — |
| PR Review | — | R/A | — | — | — |
| dev 环境验证 | R/A | — | — | — | I |
| dev 环境回滚(制品) | R/A | — | — | — | I |
| 部署 uat | — | — | — | — | R/A |
| uat 验收 | C | I | R | R | — |
| 部署 prod | — | — | — | — | R/A |
| prod 上线观察 | R/A | C | — | I | I |
| 生产回滚 | C | A | — | — | R |
R = 执行负责 A = 最终负责 C = 需要咨询 I = 知会 — = 不参与
一次需求的时序图
intent.md(业务意图)由 PM 提供;用 Agent 帮你起草 plan,自己改到"陌生人能照做"。涉及数据库变更必须写回滚脚本。feature/xxx,用 Agent Plan Mode 开发。一次做一个小改动,跑通再继续。release/x.x.x,通知运维部署到 uat。配合测试和产品验收。07团队接下来的落地路线
现状已经有 Codeup 流水线和硬门禁,下一步按这个顺序补:
第一个试点怎么选?
不要上来就动支付核心。试点选对了,团队有信心;选错了,翻车一次就推不动了。按这个原则挑:
| 维度 | 选什么样的 |
|---|---|
| 复杂度 | 中等——不是 CRUD 太简单(看不出 AI 价值),也不是核心交易链路(翻车代价大) |
| 失败代价 | 出错不影响钱、不影响用户,最多内部功能不好用 |
| 代码质量 | 已有测试覆盖、文档还可以——不然 Agent 在屎山上写代码,你 review 都看不懂 |
| owner | 找一个愿意试、心态开放的工程师当种子用户,别强推 |
| 大小 | 2-3 周能做完一个完整需求——太快没体感,太慢看不到结果 |
怎么度量 AI 真的提效了?
凭感觉不算。每月看一次这几个指标,对比用 Agent 前后的变化:
| 指标 | 看什么 | 目标方向 |
|---|---|---|
| PR 周期 | 从提 PR 到合并的时间 | 变短 |
| 返工率 | PR 被打回改超过 2 次的比例 | 下降 |
| 生产 bug 数 | 合并后 1 周内提 bug 的数量 | 不上升(这是底线) |
| 人 review 时长 | 一个 PR review 平均花多少分钟。解读批注:变长时先排查人审产能瓶颈(双审排队),再归因 AI——两者混判会得出「AI 提效失败」的假结论 | 不应该变长 |
基线怎么建:用 Agent 之前 3 个月的 git 历史数据算出来,每月对比看趋势。第一个月别期待太大,看方向不看绝对值。
技术债分级偿还
| 级别 | 什么样的债 | 什么时候还 |
|---|---|---|
| 红色(必须现在还) | 影响交易正确性、有安全风险、阻塞别人开发 | 下个迭代必须还,不许拖 |
| 黄色(计划还) | 代码丑、重复、性能小问题、缺注释 | 排进季度规划,跟着需求一起还 |
| 绿色(记录但不急) | 命名不优雅、小重构机会 | 写到 TODO,下次碰这块代码时顺手还 |
新人第一天 Checklist
| 顺序 | 做什么 |
|---|---|
| 1 | 读这份手册全文(30 分钟),重点看 Git Flow 分支映射和硬门禁 |
| 2 | 装环境:JDK 17、Maven、本地 MySQL/Redis、Codeup 账号、Agent 工具 |
| 3 | clone 主仓库,读 AGENTS.md 和 docs/ 目录下的业务文档 |
| 4 | 跑通 mvn clean package + 本地起服务,确认能打开首页 |
| 5 | 找你的 buddy(指定带你的资深工程师),选一个小需求开始第一个 PR |
| 6 | 第一个 PR 不要用 Agent——手动写,理解清楚流程后再用 |
08Review AI Agent 产出时重点盯这些
除了常规代码质量,AI Agent 生成的代码有几个特有的危险信号,review 时重点看:
展开:Prompt 摘要模板(5 行,PR 描述直接用)
## Prompt 摘要 - 背景:一句话说清这个 PR 解决什么问题 - 关键决策:2-3 条(为什么选这个方向、改了哪些边界条件) - 被否方案:1 条(试过什么、为什么放弃) - 遗留问题:有则写,无则删掉本行 (以上由人撰写;敏感数据已打码)
| 信号 | 为什么危险 |
|---|---|
| 删测试 / 跳过测试 | 为了让 CI 绿而删掉暴露问题的测试 |
| 重复造已有轮子 | Agent 没检索到仓库已有实现,写了个重复的 |
| 一次 PR 跨多个模块 | 违反小批量原则,review 难度指数上升 |
| 新引入未在 AGENTS.md 评估的依赖 | 可能违反许可证或安全要求 |
| diff 偏离 plan.md | 没记录的设计变更,要问为什么 |
| 循环里调 RPC / DB | 性能大坑,AI Agent 常犯 |