1. 从"人写代码"到"人管意图":AI Native 团队到底在变什么
这两年"AI Native"这个词被喊得太多,多到有点贬值。很多团队嘴上说着 AI Native,实际干的事还是老一套:产品经理写 PRD,开发照着文档敲代码,测试等提测,运维等上线。唯一的区别是中间多了个 Copilot 帮你补全几行函数。这不叫 AI Native,这叫"给旧流程贴了张 AI 贴纸"。
我真正开始理解 AI Native 团队,是在一次内部项目复盘上。当时我们一个六人小组,用三周时间交付了一个原本预估要两个月的内部工具。复盘时大家发现,真正省时间的不是"AI 帮我们写代码",而是整个 SDLC(软件开发生命周期)的输入输出形态变了。以前我们的核心资产是代码,现在核心资产变成了意图描述、上下文约束和验证规则。代码反而成了这些资产的"编译产物"。
这个认知转变很关键。AI Native 团队的本质,是把研发流程从"以代码为中心"迁移到"以意图和上下文为中心"。你写的不再是函数,而是告诉 Agent 要达成什么目标、在什么边界内行动、用什么标准验收。这背后对应的是几个具体的东西:CLAUDE.md 这类上下文契约文件、Plan Mode 这类先规划后执行的交互模式、以及围绕 Agent 构建的验证与安全护栏。
这篇手册我想讲清楚三件事:一个 AI Native 团队日常到底怎么运转、Agent 在其中扮演什么角色、以及那些真正会踩坑的地方(比如并发、沙盒、记忆管理)该怎么处理。适合已经用过 AI 编码工具、但还没把整个团队流程改造过来的工程师和技术负责人。如果你还在纠结"要不要用 AI 写代码",那这篇可能超前了;但如果你已经在想"怎么让整个团队都跑在 AI Native 范式上",那正好。
2. 拆解 AI Native SDLC:每个阶段到底谁在干活
2.1 传统 SDLC 和 AI Native SDLC 的输入输出对照
先把最核心的差异摆出来。传统 SDLC 里,每个阶段的产物是文档和代码;AI Native SDLC 里,每个阶段的产物是可被 Agent 消费的上下文。这个区别决定了你团队里所有工具链的重构方向。
| 阶段 | 传统 SDLC 产物 | AI Native SDLC 产物 | 主要执行者 |
|---|---|---|---|
| 需求 | PRD 文档 | 结构化意图描述 + 验收标准 | 人 + Agent 辅助澄清 |
| 设计 | 架构图、接口文档 | 约束文件(CLAUDE.md)+ 任务分解 | 人主导,Agent 生成草案 |
| 编码 | 手写代码 | Plan Mode 规划 + Agent 执行 | Agent 主导,人审查 |
| 测试 | 手写用例 | 自动生成用例 + 人定义边界 | Agent 主导,人定标准 |
| 评审 | 人工 Code Review | 人审意图符合度 + Agent 审规范 | 人 + Agent 双轨 |
| 运维 | 人工排障 | Agent 监控 + 人处理异常 | Agent 主导,人兜底 |
看这张表你会发现一个规律:人的角色从"执行者"变成了"标准制定者和异常处理者"。这不是说人变轻松了,恰恰相反,定义清晰的验收标准比写代码更难。写代码是确定性的,定义"什么叫做对了"需要你对业务有极深的理解。
2.2 为什么 CLAUDE.md 成了团队的核心契约
很多人第一次接触 CLAUDE.md 会以为它就是个配置文件,随便写写就行。我一开始也这么想,结果吃了大亏。当时我们团队五个人各自用自己的方式跟 Agent 对话,同一个代码库,Agent 给出的实现风格五花八门,有的用 class,有的用函数式,有的把错误处理写在最外层,有的写在最里层。合并代码的时候简直灾难。
后来我们才明白,CLAUDE.md 的本质是团队和 Agent 之间的契约。它规定了 Agent 在这个项目里"应该怎么做事",而不是"做什么事"。做什么事是每次任务动态给的,怎么做事是稳定的、需要沉淀的。
一份能用的 CLAUDE.md 至少包含这几块:
- 项目结构说明:目录怎么组织,每个目录放什么,新文件该放哪
- 编码规范:命名风格、错误处理模式、日志规范、注释要求
- 技术栈约束:用什么框架、什么版本、哪些库禁止引入
- 测试要求:单测覆盖率底线、测试文件命名、mock 策略
- 提交规范:commit message 格式、分支命名、PR 描述模板
- 禁区清单:哪些文件不能动、哪些操作需要人工确认
我实测下来,一份好的 CLAUDE.md 能把 Agent 的"返工率"降低一半以上。因为它省掉了每次都要重新解释"我们项目是怎么做的"这个环节。这就像新员工入职,你给他一份详细的团队手册,他上手就快;你什么都不给,他只能靠猜,猜错了就得返工。
2.3 Plan Mode:为什么"先想后做"是刚需
Plan Mode 是我认为 AI Native 流程里最被低估的一个功能。它的逻辑很简单:让 Agent 先输出一份执行计划,人确认后再动手。听起来很朴素,但效果惊人。
我做过一个对比实验。同一个重构任务,一次直接让 Agent 执行,一次先走 Plan Mode。直接执行那次,Agent 改了 12 个文件,其中 3 个改错了方向,需要回滚重来,总耗时约 40 分钟。走 Plan Mode 那次,Agent 先输出了 8 步计划,我看了之后砍掉 2 步、调整了 1 步的顺序,然后执行,改了 9 个文件,一次通过,总耗时约 25 分钟。
为什么 Plan Mode 这么有效?因为Agent 执行时的错误成本远高于规划时的错误成本。规划阶段改一行字,执行阶段可能要改十个文件。而且人在看计划的时候,能快速发现"这个方向不对",但看代码 diff 的时候,往往要读半天才能判断对错。
提示:Plan Mode 不是万能的。对于特别简单的任务(改个文案、加个日志),直接执行更快。判断标准是:如果这个任务涉及 3 个以上文件,或者涉及架构调整,就走 Plan Mode。
3. Agent 在团队里的真实定位:不是工具,是"数字同事"
3.1 Agent 和普通 AI 编码助手的本质区别
很多人分不清 Agent 和普通的代码补全工具。我用一个类比说明:普通 AI 助手像计算器,你按一下它算一下;Agent 像实习生,你给个任务它自己想办法完成。
具体差异体现在三个维度:
- 自主性:普通助手等你给下一步指令,Agent 会自己拆解任务、自己决定下一步
- 工具使用:普通助手只能读写当前文件,Agent 能调用终端、跑测试、查文档、操作文件系统
- 记忆与上下文:普通助手只有当前对话窗口,Agent 有持久化的记忆和项目级上下文
这个区别决定了 Agent 能承担的任务复杂度完全不同。普通助手适合"帮我写个函数",Agent 适合"帮我把这个模块从回调风格重构成 async/await,并保证测试通过"。
3.2 Agent 架构里最容易被忽视的三层
一个能扛事的 Agent 系统,架构上至少有三层,而且这三层经常被新手忽略:
第一层是执行层(Harness)。这是 Agent 和外部世界交互的接口,包括文件读写、命令执行、网络请求等。Harness 和 Agent 的区别经常被搞混——Harness 是"手脚",Agent 是"大脑"。Harness 负责安全地执行动作,Agent 负责决定做什么动作。很多团队一上来就自己写 Harness,其实没必要,成熟的框架已经提供了。
第二层是记忆层。Agent 需要记住项目的历史决策、之前的对话、踩过的坑。没有记忆层的 Agent,每次对话都是"失忆"状态,你得反复解释同样的背景。记忆层通常分短期(当前会话)和长期(跨会话持久化)两种。
第三层是编排层。当任务复杂到单个 Agent 搞不定时,就需要多 Agent 协作。编排层负责把大任务拆成子任务、分派给不同的 Agent、汇总结果。这一层是最难的,也是目前各家框架差异最大的地方。
3.3 多 Agent 协作:什么时候该用,什么时候是过度设计
多 Agent 是个很诱人的概念,但我要泼盆冷水:大部分场景下,单 Agent 加好的工具链,比多 Agent 更稳。
我见过太多团队一上来就搞多 Agent 架构,结果调试成本爆炸。多 Agent 的问题在于:Agent 之间的通信会引入不确定性,A Agent 的输出 B Agent 理解错了,整个链路就崩了,而且很难定位是哪一环出的问题。
那什么时候真的需要多 Agent?我的经验是满足以下条件之一:
- 任务天然可并行:比如同时给 10 个模块写测试,每个模块独立
- 需要不同专长的 Agent:比如一个负责写代码,一个专门负责安全审查
- 需要对抗性验证:一个 Agent 写,另一个 Agent 挑刺,提高质量
如果只是"任务复杂",那应该做的是把任务拆细,而不是上多 Agent。拆细后的子任务交给同一个 Agent 顺序执行,往往比多 Agent 并行更可控。
4. 并发、沙盒、记忆:Agent 落地的三个硬骨头
4.1 Agent 怎么扛并发:从"排队"到"隔离"
Agent 扛并发是个真问题。当团队十个人同时用 Agent,或者一个 CI 流程里同时跑多个 Agent 任务时,冲突就来了。最常见的冲突是文件系统冲突:两个 Agent 同时改同一个文件,后写的覆盖先写的。
解决思路有三层,从简单到复杂:
第一层:任务排队。最简单,所有 Agent 任务进一个队列,串行执行。缺点是慢,但绝对不会冲突。适合任务量不大的团队。
第二层:工作区隔离。每个 Agent 任务分配一个独立的工作目录(比如用 git worktree),各自改各自的,最后合并。这要求任务之间没有文件依赖。适合任务可并行的场景。
第三层:资源锁 + 依赖图。给每个文件或资源加锁,Agent 执行前先申请锁;同时构建任务依赖图,有依赖的任务串行,无依赖的并行。这是最复杂的方案,但吞吐量最高。
我实测下来,大部分团队用第二层就够了。git worktree 天然支持这个模式,每个 Agent 在自己的 worktree 里干活,干完提交,人来做合并。冲突概率大幅降低。
注意:并发不只是文件冲突。还有 API 速率限制、数据库连接数、CI 资源等。上并发前先确认这些资源能不能扛住。
4.2 沙盒:Agent 安全的第一道防线
Agent 能执行命令,这既是它的能力,也是它的风险。一个没有沙盒的 Agent,理论上可以删掉你整个项目。这不是危言耸听,我见过真实案例:Agent 在执行"清理临时文件"任务时,因为路径判断错误,删掉了一个重要目录。
沙盒的核心是限制 Agent 能碰什么。具体做法:
- 文件系统隔离:Agent 只能访问指定目录,不能碰系统目录和敏感文件
- 命令白名单:只允许执行预定义的命令,禁止 rm -rf、curl 到外部等危险操作
- 网络限制:默认禁止网络访问,需要时显式开启
- 资源限额:限制 CPU、内存、执行时间,防止 Agent 跑飞
很多 Agent 框架自带沙盒能力,但默认配置往往偏宽松。上线前一定要收紧。我的原则是:默认拒绝,按需开放。Agent 需要什么权限,你显式给,而不是一开始就给全部。
4.3 Agent 记忆:别让它变成"金鱼"
Agent 记忆这块,新手最容易走两个极端:要么完全不给记忆,每次对话从零开始;要么什么都记,结果上下文爆炸,Agent 被无关信息淹没。
我的经验是分层记忆:
- 会话记忆:当前对话的上下文,任务结束就清掉
- 项目记忆:项目的长期约定、架构决策、踩坑记录,持久化保存
- 任务记忆:当前任务的中间状态,任务结束归档
项目记忆是最有价值的,也是最需要维护的。我建议用一个结构化的文件(比如PROJECT_MEMORY.md)来存,内容包括:架构决策记录(为什么选这个方案)、已知问题清单、常用命令速查、历史踩坑。每次 Agent 开始新任务时,先读这个文件。
这里有个坑:记忆不是越多越好。我一开始把所有的会议纪要、讨论记录都塞进项目记忆,结果 Agent 每次读半天,还经常被过时信息误导。后来我改成只记"结论"和"原因",不记过程,效果好很多。
5. 从零搭一个 AI Native 团队工作流:我的实操路径
5.1 第一步:把 CLAUDE.md 写扎实
别急着上工具,先把契约文件写好。我建议按这个顺序写:
- 项目概览:一句话说清项目是干什么的,技术栈是什么
- 目录结构:每个目录的职责,新文件放哪
- 编码规范:命名、错误处理、日志、注释的具体要求
- 测试规范:测试文件位置、命名、覆盖率要求、mock 策略
- 提交规范:commit 格式、分支命名、PR 模板
- 禁区清单:不能动的文件、需要人工确认的操作
写的时候有个技巧:用 Agent 能理解的具体例子,而不是抽象描述。比如不要写"错误处理要规范",而要写"所有异步操作必须用 try/catch 包裹,catch 里必须记录 error 对象和上下文信息,参考src/utils/errorHandler.ts的写法"。
5.2 第二步:定义任务模板
AI Native 团队的任务描述和传统任务不一样。传统任务描述"做什么",AI Native 任务要描述"做什么 + 验收标准 + 边界"。
我常用的任务模板:
## 任务目标 [一句话说清要达成什么] ## 验收标准 - [ ] 标准1 - [ ] 标准2 ## 边界约束 - 不能修改 [某文件] - 必须使用 [某库] - 性能要求 [某指标] ## 参考 - 类似实现:[某文件路径] - 相关文档:[链接]这个模板的好处是,Agent 拿到任务后不需要猜,验收标准清晰,边界明确。我实测下来,用模板的任务,Agent 一次通过率比不用模板高 40% 左右。
5.3 第三步:建立验证闭环
Agent 干完活,怎么知道干对了?必须有自动验证。我的验证闭环分三层:
- 第一层:静态检查。lint、类型检查、格式检查,这些 Agent 自己就能跑
- 第二层:单元测试。Agent 写完代码必须跑测试,测试不过不许提交
- 第三层:人工审查。人看意图符合度,Agent 看规范符合度
关键是第一二层必须自动化,不能靠人。人只做第三层。如果第一二层都要人来做,那 AI Native 就白搭了。
5.4 第四步:沉淀和迭代
AI Native 团队最值钱的资产是沉淀下来的上下文。每次任务结束后,花五分钟做两件事:
- 把这次踩的坑记到项目记忆里
- 如果发现 CLAUDE.md 有遗漏,补上
这个习惯坚持三个月,你会发现 Agent 的"聪明程度"肉眼可见地提升。不是模型变强了,是你的上下文喂得越来越好了。
6. 那些没人告诉你但一定会踩的坑
6.1 坑一:Agent 的"自信错误"
Agent 最危险的地方不是它不会,而是它不会的时候也表现得很自信。它会用非常确定的语气给你一段完全错误的代码,而且注释写得头头是道。新手很容易被这种自信骗到,直接复制粘贴。
我的应对方法是:永远验证,永远怀疑。Agent 给的代码,不管看起来多合理,都要跑一遍。特别是涉及边界条件、错误处理、并发的地方,Agent 出错率最高。
6.2 坑二:上下文窗口的"中间遗忘"
长对话里,Agent 会"忘记"中间的内容。这不是 bug,是当前模型的通病——上下文窗口中间部分的信息,模型注意力最弱。表现就是:你在对话开头说的约束,聊到后面 Agent 就忘了。
应对方法:关键约束反复强调。重要的边界条件,不要只说一次,在任务描述里、在 Plan Mode 的计划里、在执行前的确认里,都提一遍。或者干脆把约束写进 CLAUDE.md,让它每次都读。
6.3 坑三:过度依赖导致的技能退化
这个坑最隐蔽。团队用 AI Native 流程半年后,我发现新来的工程师不会调试了。遇到 bug 第一反应是问 Agent,而不是自己看日志、加断点。Agent 能解决 80% 的问题,但剩下 20% 的硬骨头,还是得靠人的基本功。
我的建议是:刻意保留一部分"手工作业"。比如复杂的性能问题、诡异的并发 bug,强制要求人先自己排查,Agent 只做辅助。这不是反 AI,是保持团队的"肌肉记忆"。
6.4 坑四:安全边界的模糊
Agent 能执行命令,就意味着它能造成真实破坏。我见过最惊险的一次:Agent 在执行数据库迁移任务时,因为对环境的判断错误,差点在生产库上跑了迁移脚本。幸好沙盒拦住了。
安全这块,我的原则是三层防护:
- 环境隔离:Agent 默认只能碰开发环境,生产环境需要显式授权
- 操作确认:危险操作(删文件、改数据库、部署)必须人工确认
- 审计日志:Agent 的所有操作都记录,出问题能追溯
7. 关于 Agent 学习路线和框架选型的一点个人看法
经常有人问我 Agent 开发该学什么、用什么框架。我的看法可能有点反主流:先别急着学框架,先把一个真实场景跑通。
框架这东西,更新太快了。你今天学的 API,半年后可能就变了。但底层的东西是稳定的:怎么定义任务、怎么管理上下文、怎么验证结果、怎么处理异常。这些想清楚了,用什么框架都是换皮。
学习路线我建议这样:
- 先用手:用现成的 Agent 工具(比如各种 AI 编码助手)完成真实任务,感受它的能力和边界
- 再拆解:研究一个开源 Agent 框架的源码,理解它的架构
- 后搭建:自己从零搭一个最小可用的 Agent,哪怕只有 100 行代码
- 最后优化:针对自己的场景,优化记忆、并发、安全
框架选型上,我的建议是看生态不看功能。功能都差不多,但生态好的框架,遇到问题有人帮你,插件多,集成方便。另外,如果团队是 JVM 技术栈,可以看看 Spring AI 这类;如果是 Python 栈,选择就更多了。关键是选一个团队能维护的,而不是功能最全的。
至于 Agent 面试题里常问的"Agent 和 Harness 的区别""多 Agent 怎么编排"这类问题,我的回答永远是:先讲清楚你的场景,再讲方案。脱离场景谈架构,都是耍流氓。
最后分享一个我自己的体会:AI Native 不是让 AI 替你做所有事,而是让你把精力从"怎么做"转移到"做什么"和"什么叫做对了"。这两件事,恰恰是过去被繁重编码工作挤占、最没时间做好的事。把这两件事做好,团队的产出质量和速度,都会有质的变化。