1. 从“用AI写代码”到“AI Native团队”:差的不是工具,是整套协作骨架
很多团队嘴上说着“我们已经 AI Native 了”,实际干的事无非是给每个人开了个 AI 编程助手的账号,然后继续用三年前那套需求评审、排期、联调、提测的流程。结果就是:个人效率确实涨了一点,但团队整体交付速度几乎没变,甚至因为 AI 生成的代码风格五花八门、没人说得清某段逻辑是谁让 AI 写的,反而让代码评审和线上排障变得更痛苦。
我前后参与过几个从零搭建的 AI Native 团队,也见过不少“伪 AI Native”团队翻车。踩下来最大的体会是:AI Native 不是给旧流程加一个 AI 工具,而是把 AI 当成团队里一个需要被管理、被约束、被喂上下文的“新成员”,围绕它重新设计整个软件开发生命周期(SDLC)。这个手册要讲的,就是这套骨架怎么搭:从CLAUDE.md这类项目级上下文文件,到 Plan Mode 这种先规划后执行的协作模式,再到 Agent 的编排、并发、安全边界,最后落到一个能真正跑起来的完整开发闭环。
这篇文章适合三类人:一是正在推动团队往 AI Native 转型的技术负责人;二是想搞清楚 Agent 到底怎么落地、而不是停留在 Demo 阶段的一线工程师;三是刚接触 AI 辅助开发、想知道“别人家团队到底怎么用”的开发者。我会尽量把每个环节背后的“为什么”讲透,而不是甩一堆工具名让你自己猜。
先说一个反直觉的结论:AI Native 团队最核心的资产不是模型,也不是 Agent 框架,而是那套让 AI 能稳定理解项目、稳定产出可合并代码的“上下文工程”和“流程约束”。模型会换、框架会过时,但这套骨架能一直用下去。下面我按实际落地顺序,一层层拆。
2. 先搞清楚 AI Native SDLC 到底改了什么,别急着上工具
2.1 传统 SDLC 和 AI Native SDLC 的真正分界线
传统 SDLC 的假设是:人是唯一的执行主体,工具只是辅助。需求由人写、设计由人做、代码由人敲、测试由人跑。AI 进来之后,很多团队的第一反应是“让 AI 帮我写代码”,但这只是把 AI 当成一个更快的键盘,流程本身没变。
AI Native SDLC 的假设变了:AI 是可以承担完整任务闭环的执行单元,人的角色从“执行者”转向“定义者、审核者、编排者”。这个转变带来的连锁反应是巨大的:
| 维度 | 传统 SDLC | AI Native SDLC |
|---|---|---|
| 需求表达 | 自然语言 PRD,人解读 | 结构化、可被 Agent 解析的任务描述 |
| 设计 | 人画图、写文档 | 人定约束,Agent 生成方案草案,人审核 |
| 编码 | 人逐行写 | Agent 按 Plan 执行,人审核关键节点 |
| 上下文 | 存在人脑和零散文档里 | 显式沉淀在CLAUDE.md、规则文件、知识库 |
| 评审 | 看代码逻辑 | 看代码逻辑 + 看 Agent 的决策链路 |
| 测试 | 人写用例 | Agent 生成用例,人定义验收标准 |
| 排障 | 人查日志 | Agent 辅助定位,人做最终判断 |
这张表不是让你照搬,而是让你意识到:如果你只是给旧流程插了个 AI,那表里右列的东西你一个都没做,效率自然上不去。
2.2 为什么“上下文工程”比“提示词技巧”重要一百倍
我见过太多团队把精力花在“怎么写出更神的提示词”上,结果每个人手里都攒了一堆 prompt 模板,但项目一换、人一换,全部失效。真正稳定的做法是上下文工程:把项目里那些“老员工才知道”的隐性知识,显式地写进 AI 能读到的文件里。
举个具体例子。一个新加入的工程师问“这个项目的接口返回格式为什么这么设计”,老员工能答上来,是因为他脑子里有历史背景。AI 没有这个背景,它只能瞎猜。CLAUDE.md这类文件的作用,就是把这些背景固化下来:
- 项目用了什么技术栈、什么版本、为什么选它
- 目录结构约定、命名规范、错误处理约定
- 哪些模块是核心、哪些是历史包袱、改动时要注意什么
- 常用的命令、构建方式、测试方式
- 团队踩过的坑和对应的规避规则
提示:上下文文件不是写一次就完事。每次 Agent 犯了一个“本不该犯”的错,你就应该问自己:是不是某条约定没写进去?把它补上,下次就不会再犯。这才是上下文文件的正确维护方式。
2.3 一个团队从“伪 AI Native”到“真 AI Native”的典型信号
怎么判断你的团队是不是真的 AI Native 了?我总结了几个信号,你可以对照:
- 信号一:新成员入职第一天,Agent 就能帮他跑通项目、理解核心模块,而不是靠人带两周。
- 信号二:一个中等复杂度的需求,从描述到可合并的 PR,中间人只做审核和关键决策,不做重复劳动。
- 信号三:代码评审时,评审者能说清“这段是 Agent 按哪条规则生成的”,而不是“不知道谁写的”。
- 信号四:线上出问题时,Agent 能基于上下文快速定位到相关模块,而不是从零开始读代码。
- 信号五:团队的知识不再只存在人脑里,而是沉淀在可被 AI 读取的文件中。
如果这五条你一条都不占,那基本还是“伪 AI Native”。别急,下面从最基础的一层开始搭。
3. CLAUDE.md 与项目上下文:让 Agent 第一天就“懂行”
3.1 CLAUDE.md 到底该写什么,不该写什么
CLAUDE.md这类项目级上下文文件,本质是给 AI 看的“项目说明书”。但很多人写成了 README 的复制粘贴,或者写成了一大段废话。我实测下来,有效的CLAUDE.md应该包含这几块:
第一块:项目定位与技术栈。用三五句话说清这个项目是干什么的、服务谁、核心技术栈是什么。不要写“本项目是一个基于微服务架构的分布式系统”这种空话,要写“这是一个面向内部运营的订单管理系统,后端 Spring Boot 3.x + MySQL,前端 React 18,部署在 K8s 上”。
第二块:目录结构与模块职责。把关键目录列出来,说明每个目录放什么。Agent 最怕的就是“不知道代码该放哪”,你写清楚了,它就不会乱放。
第三块:编码约定与禁忌。这是最有价值的部分。比如“所有对外接口必须做参数校验”“禁止在 Controller 层写业务逻辑”“日志必须用统一封装的 Logger,禁止直接 System.out”。这些约定写进去,Agent 生成代码时就会遵守。
第四块:常用命令。构建、测试、启动、格式化、lint 的命令都列出来。Agent 需要执行命令时,直接查这里,不用猜。
第五块:已知坑与规避规则。比如“这个模块的历史代码用了旧版 API,改动时注意兼容”“这个配置项在测试环境和生产环境不一样,别写死”。
不该写什么?不要写大段的业务背景介绍、不要写和代码无关的团队八卦、不要写会频繁变动的信息。上下文文件要稳定、精炼、可执行。
3.2 上下文文件的分层:项目级、模块级、任务级
一个常见的误区是:把所有上下文都塞进一个CLAUDE.md。项目小的时候没问题,项目一大,这个文件就变成几千行的怪物,Agent 读起来效率低,维护起来也痛苦。
我的做法是分三层:
- 项目级:根目录的
CLAUDE.md,放全局约定、技术栈、目录结构、通用命令。这层最稳定,改动最少。 - 模块级:每个核心模块目录下放一个
MODULE.md,放这个模块特有的约定、数据结构、对外接口。这层中等稳定。 - 任务级:具体任务执行时,通过 Plan Mode 或任务描述临时注入的上下文,比如“这次改动只涉及订单模块,不要动支付模块”。这层最灵活,用完即弃。
这样分层的好处是:Agent 在处理具体任务时,只需要读相关的那几层,不用把整个项目的上下文都加载一遍,既省 token 又提准确率。
3.3 上下文维护的实操节奏:什么时候更新,谁来更新
上下文文件最大的敌人是“写完就忘”。我见过太多团队的CLAUDE.md停留在三个月前,里面的命令早就变了,Agent 照着执行直接报错。
我的建议是把上下文维护嵌入到日常流程里:
- 每次 Agent 犯错后:如果是“本不该犯”的错,立刻检查是不是某条约定没写,补上。
- 每次架构调整后:目录结构、技术栈、核心约定变了,同步更新项目级文件。
- 每次新成员加入后:让新成员用 Agent 跑一遍项目,跑不通的地方就是上下文缺失的地方。
- 每周固定时间:花十分钟过一遍上下文文件,删掉过时的,补上新的。
注意:上下文文件的更新应该是“谁发现谁更新”,而不是“指定一个人维护”。指定专人维护的结果往往是这个人成了瓶颈,其他人发现问题也不改,最后文件越来越烂。
3.4 一个真实的反面案例:上下文缺失导致的连锁翻车
我之前见过一个团队,项目里有个约定:所有金额字段必须用BigDecimal,禁止用double。这个约定只存在于老员工脑子里,没写进任何文件。结果新来的工程师用 Agent 生成了一段订单金额计算代码,Agent 很自然地用了double,因为这是大多数教程的默认写法。代码合并上线后,出现了浮点精度问题,对账对不上,排查了两天才定位到。
这个案例的教训很直接:你以为“大家都知道”的约定,AI 不知道,新员工也不知道。把它写进上下文文件,成本是五分钟,收益是避免一次线上事故。
4. Plan Mode:把“让 AI 直接写”改成“先让 AI 想清楚”
4.1 为什么直接让 Agent 写代码是最容易翻车的用法
大多数人对 AI 编程的用法是:打开对话框,输入“帮我实现一个订单导出功能”,然后等它吐代码。这个用法在简单任务上还行,一旦任务稍微复杂一点,翻车率极高。原因很简单:Agent 在没有规划的情况下,会基于局部信息做决策,而这些决策往往和项目整体约定冲突。
比如你让它实现订单导出,它可能直接写一个 Controller,把查询逻辑、导出逻辑、格式化逻辑全塞在一起。代码能跑,但完全违反了你项目里“Controller 不写业务逻辑”的约定。你评审时发现了,让它改,它改完又可能引入新问题。来回几轮,你花的时间比自己写还多。
Plan Mode 的核心思想就是:先让 Agent 输出一份执行计划,人审核通过后再执行。这样把“决策”和“执行”分开,人在决策环节把关,Agent 在执行环节发力。
4.2 Plan Mode 的完整执行链路:从任务描述到可执行计划
一个完整的 Plan Mode 流程,我实测下来是这样的:
第一步:任务描述结构化。不要给 Agent 一句模糊的话,而是给它一个结构化的任务描述,包含:目标、范围、约束、验收标准。比如“实现订单导出功能,范围仅限订单模块,导出格式为 CSV,必须复用现有的查询接口,验收标准是导出 10 万条数据不 OOM”。
第二步:Agent 生成计划草案。Agent 基于任务描述和上下文文件,输出一份计划,通常包含:涉及哪些文件、每个文件改什么、新增哪些文件、执行顺序、潜在风险。
第三步:人审核计划。这一步是关键。你要检查:计划是否符合项目约定、是否遗漏了边界情况、执行顺序是否合理、有没有引入不必要的依赖。
第四步:Agent 按计划执行。审核通过后,Agent 逐步执行,每完成一步可以让你确认,也可以连续执行。
第五步:执行结果验证。执行完后,对照验收标准验证,不通过就回到计划环节调整。
这个流程看起来比“直接写”慢,但实际总耗时往往更短,因为返工少了。
4.3 计划审核时最该盯的三个点
审核 Agent 的计划时,不要逐字看,抓三个重点:
- 边界是否清晰:计划里有没有明确“不做什么”。一个没有边界的计划,Agent 很容易越界改动无关模块。
- 约定是否遵守:计划里的技术选型、代码组织方式,是否符合上下文文件里的约定。不符合就当场打回。
- 风险是否识别:计划里有没有提到潜在风险,比如“这个改动可能影响现有接口的兼容性”。没有风险识别的计划,说明 Agent 没想清楚。
提示:如果 Agent 的计划里出现了你没听说过的库或工具,一定要问清楚为什么用它。很多时候 Agent 会引入一些“看起来很方便”但团队根本没维护的依赖,这是长期维护的隐患。
4.4 Plan Mode 和直接执行的适用边界
Plan Mode 不是万能的,有些任务直接执行更高效。我的经验是:
| 任务类型 | 推荐模式 | 原因 |
|---|---|---|
| 单文件小改动 | 直接执行 | 计划成本高于执行成本 |
| 跨模块功能开发 | Plan Mode | 涉及决策多,需要人把关 |
| 重构 | Plan Mode | 影响面大,必须先规划 |
| 修 bug | 视情况 | 简单 bug 直接修,复杂 bug 先定位再规划 |
| 写测试 | 直接执行 | 测试用例相对独立,风险低 |
| 架构调整 | Plan Mode | 决策密集,必须人主导 |
这个边界不是死的,你可以根据团队实际情况调整。核心原则是:决策越密集、影响面越大的任务,越需要 Plan Mode。
5. Agent 编排与并发:从“单个助手”到“一支队伍”
5.1 单 Agent 的能力天花板在哪里
单个 Agent 再强,也有天花板。我实测下来,单 Agent 的主要瓶颈有三个:
- 上下文窗口限制:项目一大,Agent 读不完所有相关代码,只能基于局部信息决策。
- 任务复杂度限制:一个任务涉及太多步骤时,Agent 容易在中途“忘记”前面的决策。
- 并发能力限制:单 Agent 是串行执行的,多个独立任务无法并行。
这三个瓶颈决定了:当任务规模和复杂度超过一定阈值,就必须引入多 Agent 编排。
5.2 多 Agent 编排的三种常见模式
多 Agent 编排不是简单地把任务分给多个 Agent,而是要有明确的协作模式。我常用的有三种:
模式一:主管-执行者模式。一个主管 Agent 负责拆解任务、分配子任务、汇总结果,多个执行者 Agent 各自负责一个子任务。适合任务可以清晰拆分的场景,比如“一个 Agent 写后端接口,一个 Agent 写前端页面,一个 Agent 写测试”。
模式二:流水线模式。多个 Agent 按顺序协作,前一个的输出是后一个的输入。适合有明确阶段划分的任务,比如“需求分析 Agent → 设计 Agent → 编码 Agent → 测试 Agent”。
模式三:评审模式。一个 Agent 负责生成,另一个 Agent 负责评审,评审不通过就打回重做。适合对质量要求高的场景,比如核心模块的代码生成。
这三种模式可以组合使用。比如一个复杂功能开发,可以用主管-执行者模式拆分,每个执行者内部用流水线模式,关键产出用评审模式把关。
5.3 Agent 怎么扛并发:任务隔离与资源竞争
“AI Agent 怎么扛并发”是最近被问得很多的问题。我的理解是:Agent 的并发不是指单个 Agent 同时处理多个请求,而是指多个 Agent 实例同时工作时的协调问题。
并发场景下最容易出问题的是资源竞争。比如两个 Agent 同时改同一个文件,后写的覆盖先写的。解决办法是任务隔离:
- 文件级隔离:不同 Agent 负责不同文件,避免同时改同一个文件。
- 模块级隔离:不同 Agent 负责不同模块,模块间通过接口约定交互。
- 阶段级隔离:不同 Agent 负责不同阶段,阶段间通过产物传递。
注意:并发不是越多越好。Agent 数量超过一定阈值后,协调成本会急剧上升,整体效率反而下降。我实测下来,一个任务同时跑 3 到 5 个 Agent 是比较舒服的区间,超过 8 个就开始混乱。
5.4 编排中的失败处理:Agent 卡住了怎么办
Agent 执行失败是常态,关键是怎么处理。常见的失败类型和处理方式:
| 失败类型 | 表现 | 处理方式 |
|---|---|---|
| 上下文不足 | Agent 反复问同样的问题 | 补充上下文文件,重新执行 |
| 任务过大 | Agent 执行到一半卡住 | 拆解任务,分步执行 |
| 依赖缺失 | Agent 报错找不到某个模块 | 检查依赖,补充或调整计划 |
| 决策冲突 | 多个 Agent 产出互相矛盾 | 由主管 Agent 或人仲裁 |
| 无限循环 | Agent 反复改同一处代码 | 强制中断,人工介入 |
我踩过最坑的一次是:一个 Agent 在重构时陷入了“改 A 导致 B 报错,改 B 导致 A 报错”的循环,跑了半小时都没出来。后来加了“同一文件改动超过三次就中断”的规则,才避免类似问题。
6. Agent 安全与边界:别让“能干”变成“乱干”
6.1 Agent 安全的核心不是防黑客,是防“好心办坏事”
很多人一听到 Agent 安全,第一反应是“防止被攻击”。但在实际团队场景里,最大的安全风险不是外部攻击,而是 Agent 自己“好心办坏事”。比如:
- Agent 为了“优化”代码,删掉了一段它认为没用的逻辑,结果那段逻辑是处理边界情况的。
- Agent 为了“修复”一个测试失败,直接改了测试用例而不是改代码。
- Agent 为了“清理”项目,删掉了一些它认为没用的文件,结果那些是配置文件。
这些都不是恶意行为,但造成的损失可能比恶意攻击还大。所以 Agent 安全的第一原则是:给 Agent 划清边界,明确哪些能做、哪些不能做、哪些必须人确认。
6.2 权限分级:哪些操作 Agent 可以自主,哪些必须人确认
我建议把 Agent 的操作权限分成三级:
- 自主级:读代码、写新文件、跑测试、格式化。这些操作风险低,Agent 可以自主执行。
- 确认级:改现有文件、删文件、改配置、装依赖。这些操作有影响面,需要人确认。
- 禁止级:改 CI/CD 配置、改权限相关文件、执行部署命令、访问生产环境。这些操作风险极高,Agent 一律禁止。
这个分级不是死的,你可以根据团队成熟度调整。但核心原则是:影响面越大、越难回滚的操作,越需要人确认。
6.3 沙盒与隔离:让 Agent 在“安全区”里干活
Agent 执行任务时,最好在一个隔离的环境里,而不是直接在主工作区操作。常见的隔离方式:
- 独立分支:每个 Agent 任务在独立分支上执行,完成后合并。
- 独立工作目录:Agent 在临时目录里操作,验证通过后再同步到主目录。
- 容器隔离:Agent 在容器里执行,限制它对宿主机的访问。
我实测下来,独立分支 + 独立工作目录是最实用的组合。成本低,隔离效果好,出问题直接丢弃分支就行。
6.4 Agent 执行日志:出问题时怎么追溯
Agent 执行过程必须留日志,否则出问题无法追溯。日志至少要包含:
- 任务描述和计划
- 每一步执行的操作和结果
- 关键决策的理由
- 遇到的错误和处理方式
这些日志不仅是排障依据,也是优化上下文文件的素材。我习惯每周过一遍 Agent 执行日志,看看哪些错误是重复出现的,然后针对性补充上下文。
7. 完整落地闭环:从需求到上线的 AI Native 实操流程
7.1 需求阶段:怎么把模糊需求变成 Agent 能执行的任务
需求阶段最容易出问题的地方是:需求描述太模糊,Agent 无法执行。我的做法是用一个结构化的需求模板:
- 目标:这个需求要解决什么问题
- 范围:涉及哪些模块,不涉及哪些模块
- 约束:技术约束、时间约束、兼容性约束
- 验收标准:怎么判断做完了、做对了
- 参考:相关的历史需求、设计文档、类似实现
这个模板看起来简单,但能极大提升 Agent 的理解准确率。我实测下来,用模板描述的需求,Agent 首次执行成功率比模糊描述高出一大截。
7.2 设计阶段:人定约束,Agent 出方案
设计阶段的分工是:人定约束,Agent 出方案,人审核方案。人不需要自己画所有图、写所有文档,但必须把关键约束定清楚,比如“必须复用现有接口”“不能引入新依赖”“性能不能低于现有实现”。
Agent 基于约束出方案,人审核。审核通过后,方案作为后续编码阶段的输入。
7.3 编码阶段:Plan Mode + 多 Agent 协作的实操配置
编码阶段是 AI Native 团队的主战场。我的实操配置是:
- 用 Plan Mode 生成执行计划,人审核。
- 按计划拆解任务,分配给多个 Agent。
- 每个 Agent 在独立分支上执行。
- 关键产出用评审 Agent 把关。
- 全部完成后,人做最终审核。
这个配置不是一次就能调好的,需要根据团队实际情况反复调整。我建议先从单 Agent + Plan Mode 开始,跑顺了再引入多 Agent。
7.4 测试与上线:Agent 能帮到什么程度
测试阶段,Agent 可以帮你生成用例、跑测试、分析失败原因。但验收标准必须由人定义,不能让 Agent 自己定标准自己验收。
上线阶段,Agent 可以帮你生成发布说明、检查配置、准备回滚方案。但执行上线操作必须由人来做,这是红线。
7.5 复盘:每次迭代后怎么优化上下文和流程
每次迭代后,花半小时做复盘:
- 这次哪些环节 Agent 表现好,哪些表现差
- 差的地方是上下文缺失还是流程问题
- 上下文文件需要补什么
- 流程需要调整什么
这个复盘习惯坚持下来,团队的 AI Native 成熟度会肉眼可见地提升。
8. 我踩过的坑和几条不写在文档里的经验
最后分享几条实操中总结的经验,都是文档里不会写的:
第一条:不要追求“全自动”。我见过一些团队想做到“需求进去,代码出来,全程无人”,结果做出来的东西质量极差。AI Native 的正确姿势是“人机协作”,人负责决策和把关,Agent 负责执行和重复劳动。追求全自动的团队,最后往往要花更多时间擦屁股。
第二条:Agent 数量不是越多越好。前面提过,3 到 5 个是比较舒服的区间。我试过同时跑 10 个 Agent,协调成本高到离谱,整体效率还不如 3 个。
第三条:上下文文件的维护比写代码还重要。很多团队舍得花时间写代码,不舍得花时间维护上下文文件。结果就是 Agent 反复犯同样的错,团队反复擦屁股。把上下文维护当成一等公民,收益是长期的。
第四条:Plan Mode 的计划要存档。每次 Plan Mode 生成的计划,我都建议存档。一是方便追溯,二是后续类似任务可以参考,三是复盘时有据可查。
第五条:给 Agent 设“熔断机制”。同一文件改动超过三次、同一任务执行超过预期时间两倍、连续报错超过五次,都应该自动中断,转人工处理。没有熔断机制的 Agent 编排,很容易陷入死循环。
第六条:安全边界要写进上下文文件。不要指望 Agent“自觉”遵守边界,要把边界明确写进上下文文件,让它每次执行前都读到。我习惯在项目级上下文文件里专门开一节“禁止操作”,列出所有 Agent 不能做的事。
这套骨架搭起来不容易,但一旦跑顺,团队的交付效率会有质的变化。我自己的体会是:AI Native 的难点从来不是技术,而是愿不愿意把旧流程推倒重来。工具就在那里,模型也在快速迭代,真正拉开差距的,是团队有没有决心围绕 AI 重新设计协作方式。