ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI Native团队开发落地实战:CLAUDE.md与多Agent编排SDLC重构

AI Native团队开发落地实战:CLAUDE.md与多Agent编排SDLC重构 1. 从“用AI写代码”到“AI Native 团队”的认知跃迁这两年我参与过几个号称“AI Native”的团队搭建也帮不少朋友做过研发流程改造的咨询。说实话大部分团队对“AI Native”的理解还停留在“给每个人配个 AI 编程助手”的阶段——写代码的时候让 AI 补全几行遇到报错丢给 AI 问一下然后继续按老一套的 SDLC 走。这种玩法效率提升有但极其有限本质上只是把 AI 当成了一个更聪明的自动补全工具。真正的 AI Native 团队核心变化不在于“用了什么 AI 工具”而在于整个软件开发生命周期SDLC被重新设计了。从需求拆解、方案设计、编码实现、测试验证到部署运维每个环节的输入输出、角色分工、质量门禁都因为 Agent 的介入而发生了结构性变化。我见过做得好的团队一个三人小组两周能交付过去十人团队两个月才能完成的功能模块也见过做得差的AI 生成了一堆代码没人看得懂维护成本反而更高。这篇内容我想把 AI Native 团队完整开发落地这件事拆开讲透。不管你是技术负责人想推动团队转型还是个人开发者想按 AI Native 的方式重新组织自己的工作流下面这些从实战中沉淀下来的框架、配置、踩坑记录应该都能直接拿来用。我会重点讲清楚几个关键问题CLAUDE.md 这类上下文文件到底该怎么写才有用、Plan Mode 和 Agent 的配合逻辑是什么、多 Agent 编排在什么场景下值得上、以及那些只有真正跑过一轮完整 SDLC 的人才会知道的坑。2. AI Native SDLC 的整体设计与核心思路拆解2.1 为什么传统 SDLC 在 AI 时代必须重构传统 SDLC 的底层假设是人是唯一的执行主体工具是辅助。所以流程设计围绕“人如何高效协作”展开——需求评审会、技术方案评审、Code Review、测试用例评审每个环节都是人在做决策、人在执行、人在验证。AI Native 的底层假设变了Agent 成为执行主体之一人退到“定义问题、设定约束、验收结果”的位置上。这个变化带来的连锁反应是巨大的。举个例子传统流程里 Code Review 是资深工程师逐行看代码一个 500 行的 PR 可能要花半小时。但在 AI Native 流程里Agent 可以在代码生成的瞬间就完成静态检查、单元测试生成、边界条件验证人只需要 Review Agent 的决策逻辑和关键架构选择。Review 的粒度和关注点完全不一样了。我自己的体会是如果不在流程层面做重构只是把 AI 工具塞进旧流程会出现一个很尴尬的局面AI 生成代码的速度远超人能 Review 的速度结果就是瓶颈从“写代码”转移到了“看代码”整体效率反而可能下降。这就是为什么必须重新设计 SDLC。2.2 AI Native SDLC 的四个核心支柱经过几个项目的迭代我总结出 AI Native SDLC 的四个核心支柱缺一不可第一上下文工程Context Engineering。这是最容易被低估的一环。Agent 不是人它没有“团队默契”和“历史记忆”。你需要通过 CLAUDE.md、项目结构说明、架构决策记录ADR等文件把团队的隐性知识显性化。我见过最夸张的案例是一个团队花了三周时间专门写上下文文件结果 Agent 的代码采纳率从 40% 提升到了 85%。第二Plan Mode 先行。不要让 Agent 直接写代码。先让它进入 Plan Mode输出实现方案、影响范围、依赖关系、风险点人确认后再进入执行。这个“先规划后执行”的节奏能避免大量返工。我实测下来多花 5 分钟做 Plan能省掉至少 30 分钟的调试和修正。第三Agent 分层与编排。不是所有任务都适合用一个通用 Agent 搞定。复杂项目需要分层规划 Agent 负责拆解任务执行 Agent 负责具体编码验证 Agent 负责测试和检查。层与层之间通过结构化的输入输出衔接。第四质量门禁自动化。AI 生成的内容必须经过自动化验证才能进入下一环节。这包括代码规范检查、单元测试、集成测试、安全扫描等。门禁不通过Agent 自动修复或回退不需要人介入。2.3 方案选型为什么是 CLAUDE.md Plan Mode Agent 这套组合市面上 Agent 框架很多LangChain、Dify、CrewAI 各有拥趸。但在实际项目落地中我发现最稳的组合反而是最“朴素”的以 CLAUDE.md 作为上下文锚点以 Plan Mode 作为流程控制以 Agent 作为执行单元。原因很简单复杂度要匹配团队成熟度。LangChain 这类框架功能强大但抽象层多调试成本高。一个中小团队如果连基础的上下文工程都没做好直接上复杂框架大概率会陷入“框架本身比业务还难维护”的困境。而 CLAUDE.md Plan Mode Agent 这套组合学习曲线平缓每一步的输入输出都清晰可见出问题容易定位。当然这不是说复杂框架没用。当你的 Agent 数量超过 10 个、需要跨项目复用、需要复杂的条件分支和循环时引入编排框架是合理的。但那是第二阶段的事。第一阶段先把基础工作流跑通。3. 核心细节解析与实操要点3.1 CLAUDE.md 到底该怎么写才有用CLAUDE.md 是放在项目根目录的上下文文件Agent 每次启动时会自动读取。很多人把它写成了 README 的翻版这是最大的误区。README 是给人看的CLAUDE.md 是给 Agent 看的两者的信息组织方式完全不同。我总结了一个有效的 CLAUDE.md 应该包含以下模块# 项目上下文 ## 项目概述 一句话说明项目做什么技术栈是什么。 ## 目录结构约定 - src/ 源码目录按功能模块划分 - tests/ 测试目录与 src 结构镜像 - docs/ 文档目录ADR 放在 docs/adr/ ## 编码规范 - 使用 TypeScript strict 模式 - 组件文件使用 PascalCase工具函数使用 camelCase - 所有导出函数必须有 JSDoc 注释 ## 架构决策记录 - 状态管理使用 Zustand不用 Redux原因见 docs/adr/001 - API 层统一走 src/api/client.ts不直接调用 fetch ## 常用命令 - 开发npm run dev - 测试npm run test - 构建npm run build ## 禁止事项 - 不要修改 package.json 中的依赖版本 - 不要删除任何测试文件 - 不要使用 any 类型关键点在于约束要具体原因要可追溯。不要写“代码要规范”这种废话要写“组件文件使用 PascalCase”。不要只写“用 Zustand”要写“用 Zustand原因见 ADR-001”。Agent 在遇到边界情况时能通过 ADR 理解背后的权衡逻辑做出更合理的判断。我踩过的一个坑是早期 CLAUDE.md 写得太简略Agent 经常自作主张引入新依赖。后来我在“禁止事项”里明确写了“不要修改 package.json 中的依赖版本”这个问题就消失了。另一个坑是没写目录结构约定Agent 把测试文件到处乱放。补上结构约定后文件组织立刻规范了。注意CLAUDE.md 不是一次写完就完事的。每次发现 Agent 做出不符合预期的行为就应该回来补充一条约束。它应该是活的文档随着项目演进不断迭代。3.2 Plan Mode 的正确打开方式Plan Mode 的核心价值是把“想”和“做”分开。Agent 在 Plan Mode 下只输出方案不执行任何写操作。人确认方案后再切换到执行模式。我见过很多人跳过 Plan Mode 直接让 Agent 写代码结果就是反复返工。Agent 理解错了需求写了一堆代码人发现不对让它改它又理解偏了来回几轮时间全浪费了。而如果先花几分钟做 Plan把需求理解、实现路径、影响范围都对齐了执行阶段基本一次过。一个有效的 Plan Mode 输出应该包含需求理解Agent 用自己的话复述它理解的需求人确认是否准确实现方案分步骤说明打算怎么做每步涉及哪些文件影响范围会修改哪些现有文件是否影响其他模块风险点有哪些不确定的地方需要人确认测试计划打算怎么验证实现是否正确我通常会在 Plan Mode 的输出模板里加一条“如果你对需求有任何不确定的地方现在提出来不要猜测。”这一条能挡掉大量因为理解偏差导致的返工。3.3 Agent 分层规划、执行、验证各司其职单一 Agent 处理复杂任务时容易出现“上下文过载”——它既要理解需求又要设计方案还要写代码还要测试每个环节的注意力都被稀释了。分层的好处是每个 Agent 只关注自己的职责范围上下文更聚焦。我的分层实践是这样的规划 Agent接收需求描述输出任务拆解和实现方案。它的上下文里只有需求文档、架构说明和 CLAUDE.md不包含具体代码。这样它能从更高层面思考不会被实现细节干扰。执行 Agent接收规划 Agent 输出的单个任务完成编码。它的上下文里包含 CLAUDE.md、相关模块的现有代码、以及规划 Agent 给出的方案。它不需要知道整个项目的全貌只需要把当前任务做好。验证 Agent接收执行 Agent 的产出运行测试、检查规范、验证边界条件。它的上下文里包含测试规范、质量标准和被验证的代码。它不关心代码是怎么写出来的只关心结果对不对。层与层之间通过结构化数据衔接。规划 Agent 输出 JSON 格式的任务列表执行 Agent 逐个消费验证 Agent 对每个产出给出通过/不通过的结论。这样整个流程是可追踪、可回放的。3.4 上下文窗口管理别让 Agent “失忆”Agent 的上下文窗口是有限的。当对话轮次多了早期的重要信息会被挤出窗口Agent 就开始“失忆”做出前后矛盾的决策。这是实际使用中最常见的问题之一。我的应对策略有三条第一关键信息外置。不要把重要约束放在对话里要放在 CLAUDE.md 或独立的上下文文件里。这些文件每次都会被重新读取不受对话轮次影响。第二定期总结压缩。当对话进行到一定轮次让 Agent 把当前进展、已做决策、待办事项总结成一段结构化文本然后开新对话把总结作为初始上下文传入。这样既保留了关键信息又释放了窗口空间。第三任务粒度控制。一个 Agent 会话只处理一个相对独立的任务。不要试图在一个会话里完成整个功能模块的开发。任务拆得越细上下文越干净Agent 的表现越稳定。4. 实操过程与核心环节实现4.1 环境准备与项目初始化假设我们要从零搭建一个 AI Native 的开发工作流。第一步是环境准备。基础工具链包括一个支持 Agent 模式的 AI 编程环境如 Claude Code、Cursor 等、Git 版本控制、以及项目本身的技术栈工具Node.js、Python 等。这里不展开具体安装步骤重点讲 AI Native 特有的配置。项目初始化时除了常规的npm init或git init需要额外创建以下文件# 创建上下文文件 touch CLAUDE.md # 创建架构决策记录目录 mkdir -p docs/adr # 创建 Agent 配置目录 mkdir -p .agent/configsCLAUDE.md 的内容按 3.1 节的模板填写。ADR 目录用来存放架构决策记录每条决策一个文件命名格式为001-决策标题.md。Agent 配置目录存放不同 Agent 角色的配置比如planner.yaml、executor.yaml、verifier.yaml。4.2 第一个完整任务从需求到合并我拿一个真实场景来演示给一个已有的 React 项目添加“用户头像上传”功能。第一步规划 Agent 介入。我把需求描述丢给规划 Agent“在用户设置页面添加头像上传功能支持 JPG/PNG 格式最大 2MB上传后显示预览确认后保存到后端。”规划 Agent 在 Plan Mode 下输出需求理解用户可以在设置页上传头像格式限制 JPG/PNG大小限制 2MB 上传后本地预览确认后调用后端接口保存。 实现方案 1. 创建 AvatarUploader 组件包含文件选择、格式校验、大小校验、预览 2. 在 SettingsPage 中引入该组件 3. 添加 uploadAvatar API 方法到 src/api/user.ts 4. 编写单元测试覆盖格式校验和大小校验逻辑 影响范围 - 新增 src/components/AvatarUploader.tsx - 修改 src/pages/SettingsPage.tsx - 修改 src/api/user.ts - 新增 src/components/__tests__/AvatarUploader.test.tsx 风险点 - 后端接口的请求格式需要确认multipart/form-data 还是 base64 - 预览是否需要支持裁剪功能需求未明确 测试计划 - 单元测试格式校验、大小校验、预览生成 - 集成测试上传流程端到端我确认方案后特别回复了风险点“后端接口用 multipart/form-data不需要裁剪功能。”然后切换到执行模式。第二步执行 Agent 逐个完成任务。执行 Agent 接收任务列表依次完成组件创建、页面修改、API 方法添加、测试编写。每个任务完成后输出变更摘要。第三步验证 Agent 检查。验证 Agent 运行测试套件检查代码规范验证边界条件。它发现了一个问题大小校验用的是file.size 2 * 1024 * 1024但需求说的是“最大 2MB”边界值 2MB 本身应该被允许所以应该是。执行 Agent 收到反馈后修正。第四步人工 Review。我检查了最终产出确认架构合理、测试覆盖到位合并 PR。整个流程从需求到合并大约花了 40 分钟。如果按传统方式光是写组件、写测试、调试边界条件至少需要半天。4.3 多 Agent 编排的配置示例当任务复杂度上升需要多个 Agent 协作时可以用配置文件定义编排逻辑。以下是一个简化的 YAML 配置示例# .agent/configs/workflow.yaml name: feature-development steps: - agent: planner input: requirement.md output: task-list.json - agent: executor input: task-list.json output: changes/ loop: true - agent: verifier input: changes/ output: verification-report.json - agent: executor condition: verification-report.json.status failed input: verification-report.json output: changes/这个配置定义了规划 Agent 读取需求输出任务列表执行 Agent 循环消费任务列表验证 Agent 检查产出如果验证失败则执行 Agent 再次修复。实际使用时编排层会负责传递上下文、处理错误、记录日志。4.4 质量门禁的自动化配置质量门禁是保证 AI 生成代码质量的最后一道防线。我的配置通常包含以下几层门禁层级检查内容工具不通过处理格式层代码风格、命名规范ESLint/PrettierAgent 自动修复类型层类型检查TypeScript tscAgent 自动修复单元测试函数级正确性Jest/VitestAgent 分析失败原因并修复集成测试模块间交互Playwright/Cypress人工介入安全扫描依赖漏洞、敏感信息Snyk/gitleaks人工介入前两层和单元测试可以完全自动化Agent 能自己修复。集成测试和安全扫描建议保留人工确认环节因为这两类问题的修复可能涉及架构调整Agent 容易改出更大的问题。5. 常见问题与排查技巧实录5.1 Agent 反复犯同样的错误怎么办这是最常见的问题。Agent 改了一个地方下次又改回去来回拉锯。根本原因通常是约束没有落到上下文文件里。Agent 的“记忆”只存在于当前会话会话结束就忘了。解决办法是把约束写进 CLAUDE.md 的“禁止事项”或“编码规范”里让它每次启动都能读到。如果约束已经写了但 Agent 还是犯检查约束的表述是否足够具体。“不要使用 any 类型”比“注意类型安全”有效得多。Agent 对具体指令的遵循度远高于抽象原则。5.2 Plan Mode 输出的方案太粗糙有时候 Agent 在 Plan Mode 下只输出两三行根本没有可操作性。这通常是因为需求描述太简略或者没有给 Agent 足够的上下文。解决办法是在 Plan Mode 的提示词里明确要求输出结构比如“请按需求理解、实现方案、影响范围、风险点、测试计划五个部分输出每部分至少三句话”。结构化的要求能倒逼 Agent 做更深入的思考。5.3 多 Agent 协作时上下文丢失Agent A 的输出传给 Agent B 时如果只传了结果没传背景B 可能会做出错误判断。解决办法是在 Agent 间的消息格式里强制包含“背景信息”字段。比如执行 Agent 给验证 Agent 的产出里除了代码变更还要包含“这个变更解决了什么问题”“涉及哪些约束”“有哪些已知限制”。验证 Agent 有了这些背景才能做出准确判断。5.4 常见问题速查表问题现象可能原因排查方向解决方案Agent 生成的代码不符合项目规范CLAUDE.md 缺少规范约束检查 CLAUDE.md 编码规范部分补充具体规范条目Agent 反复修改同一处代码约束未持久化检查约束是否在上下文文件中将约束写入 CLAUDE.mdPlan Mode 输出过于简略提示词缺少结构要求检查 Plan Mode 提示词增加结构化输出要求多 Agent 协作结果不一致上下文传递不完整检查 Agent 间消息格式强制包含背景信息字段Agent 引入未授权依赖禁止事项未明确检查 CLAUDE.md 禁止事项明确列出禁止修改的文件长会话后期 Agent 表现下降上下文窗口溢出检查对话轮次和 token 数定期总结压缩开新会话测试通过但功能不对测试用例覆盖不足检查测试计划是否覆盖边界让验证 Agent 补充边界测试Agent 修改了不该改的文件影响范围未约束检查 Plan Mode 影响范围在执行前明确文件白名单5.5 几个只有踩过才知道的坑坑一CLAUDE.md 写得太长。我一开始恨不得把所有信息都塞进去结果 Agent 读取后反而抓不住重点。后来控制在 200 行以内只保留最关键的约束和约定效果反而更好。上下文文件的质量在于精准不在于篇幅。坑二让 Agent 做架构决策。Agent 擅长在给定框架下执行不擅长做架构层面的权衡。我试过让 Agent 决定“用 Redux 还是 Zustand”它给出的理由很表面没有考虑团队熟悉度、项目规模、长期维护成本。架构决策必须人来做Agent 只负责执行。坑三忽略 Agent 的“幻觉”问题。Agent 有时会引用不存在的 API、编造不存在的依赖、假设不存在的配置。验证 Agent 的第一项检查就应该是“所有引用的外部资源是否真实存在”。这个检查能挡掉大量低级错误。坑四没有版本控制 Agent 的产出。Agent 的每次修改都应该有 Git 记录方便回滚和对比。我习惯让 Agent 每完成一个任务就 commit 一次commit message 由 Agent 生成但人确认。这样出问题时能快速定位是哪个任务引入的。坑五过度依赖 Agent 的测试。Agent 写的测试往往只覆盖它自己想到的场景容易遗漏边界条件。我的做法是让验证 Agent 专门做“对抗性测试”——故意输入异常值、极端值、非法值看代码是否健壮。这个环节能发现大量执行 Agent 忽略的问题。6. 从单点工具到团队工作流的演进路径6.1 三个阶段个人提效、小团队协作、组织级落地AI Native 的落地不是一蹴而就的我观察到的演进路径通常分三个阶段。第一阶段个人提效。单个开发者开始用 Agent 辅助编码建立自己的 CLAUDE.md摸索 Plan Mode 的使用节奏。这个阶段的目标是让个人效率提升 30% 以上同时积累上下文工程的经验。第二阶段小团队协作。三到五人的小组开始共享 CLAUDE.md 和 ADR统一 Agent 配置建立质量门禁。这个阶段的关键是标准化——把个人的最佳实践固化成团队规范。我见过做得好的团队会每周开一次“Agent 复盘会”讨论这周 Agent 犯了哪些错、哪些约束需要补充。第三阶段组织级落地。多个团队共用一套 Agent 基础设施有专门的平台团队维护编排框架、上下文模板、质量门禁。这个阶段需要投入工程资源做平台化但收益也是最大的——新项目启动时可以直接复用整套工作流不需要从零摸索。6.2 衡量 AI Native 落地效果的几个指标不要只看“AI 生成了多少代码”这个指标没有意义。我关注的指标是首次通过率Agent 生成的代码第一次提交就通过所有门禁的比例。这个指标反映上下文工程的质量。返工率Agent 产出需要人工修改的比例。这个指标反映 Plan Mode 和验证环节的有效性。需求到合并周期从需求确认到代码合并的平均时间。这个指标反映整体流程效率。人工介入次数每个任务平均需要人介入的次数。这个指标反映自动化程度。我自己的项目在优化后首次通过率从 45% 提升到了 78%需求到合并周期从平均 2 天缩短到了 4 小时。这些数字比“AI 写了多少行代码”有意义得多。6.3 团队角色和能力要求的变化AI Native 团队对成员的能力要求发生了明显变化。纯执行型的开发者价值在下降因为 Agent 能做得更快更好。价值在上升的是这几类能力问题定义能力。能把模糊的业务需求拆解成 Agent 可执行的明确任务。这需要深入理解业务和技术是 Agent 替代不了的。上下文工程能力。能写出高质量的 CLAUDE.md 和 ADR让 Agent 准确理解项目约束。这需要很强的抽象和表达能力。质量判断能力。能快速判断 Agent 的产出是否合理哪些地方需要深入检查。这需要扎实的技术功底和丰富的经验。编排设计能力。能设计多 Agent 协作流程定义清晰的输入输出和错误处理。这需要系统思维和工程经验。我在带团队时会刻意让成员在这些能力上投入时间而不是纠结于“AI 会不会取代我”。会用 Agent 的人取代不会用的人这个趋势已经很明显了。6.4 后续可以扩展的方向这套工作流跑通之后有几个方向可以继续深化。一是把 Agent 接入 CI/CD 流水线实现从需求到部署的全自动化。二是建立 Agent 产出的质量数据库用历史数据训练更精准的验证规则。三是探索跨项目的上下文复用让 Agent 在不同项目间迁移时能快速适应。每个方向都值得单独展开但前提是基础工作流已经稳定运行。我个人在实际操作中的体会是AI Native 落地最大的障碍不是技术而是习惯。人习惯了“自己写代码自己负责”突然要把执行权交给 Agent心理上会有抵触。但一旦跨过这个坎看到 Agent 在 Plan Mode 下输出的方案比自己想的还周全看到验证 Agent 发现的边界问题自己都没考虑到这种信任就会慢慢建立起来。关键是从小任务开始从低风险场景开始让团队在成功经验中逐步扩大 Agent 的使用范围。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进