1. 为什么“AI Native 团队”不是把 Copilot 装进 IDE 就完事
先把结论摆在前面:AI Native 团队和“用 AI 的团队”是两码事。前者是把 AI 当成研发流程里的一等公民,后者只是把 AI 当成一个更聪明的自动补全。这两者之间的差距,不是工具差距,是流程重构的差距。
我见过太多团队,买了企业版账号、开了 Agent 模式、每个人桌面上都挂着聊天窗口,结果三个月后复盘,交付周期没变、缺陷率没降、代码评审还是卡在同一个地方。问题出在哪?出在他们只换了工具,没换 SDLC(软件开发生命周期)。
AI Native 的核心变化,是把传统 SDLC 里“人写代码、人评审、人测试”的串行链条,改造成“人定义意图、Agent 执行、人做关键决策”的并行结构。这里面有几个关键角色必须重新定义:
- CLAUDE.md 这类项目级上下文文件,本质上是给 Agent 的“入职手册”。新来的工程师要读 onboarding 文档,Agent 也一样。没有这个文件,Agent 每次都要从零理解你的代码库,token 烧得飞快,产出还不稳定。
- Plan Mode解决的是“Agent 一上来就乱改代码”的问题。先让它出方案、你确认、再执行,这个顺序不能反。我踩过的坑就是让 Agent 直接改,结果它把三个不相关的模块一起重构了,回滚花了两个小时。
- Agent 编排决定了多个 Agent 之间怎么分工。单 Agent 干所有事,上下文会爆炸;多 Agent 各管一摊,又容易出现接口对不上的问题。这个平衡点需要根据项目规模来调。
适合读这篇的人:正在推动团队 AI 化转型的技术负责人、想把自己工作流 Agent 化的独立开发者、以及被“AI 提效”口号忽悠过一轮想搞清楚到底怎么落地的一线工程师。下面我按实际落地顺序,把每个环节拆开讲。
2. 团队级 AI Native 研发范式整体设计
2.1 从 SDLC 到 AI Native SDLC 的映射关系
传统 SDLC 是需求、设计、开发、测试、部署、运维六个阶段串行推进。AI Native 不是把这六个阶段各塞一个 AI 工具,而是重新划分“人”和“Agent”的职责边界。
我的做法是把每个阶段拆成“意图层”和“执行层”:
| 阶段 | 意图层(人负责) | 执行层(Agent 负责) | 关键产物 |
|---|---|---|---|
| 需求 | 定义验收标准、边界条件 | 拆解为可执行任务清单 | 任务卡片 + 验收用例 |
| 设计 | 确定架构方向、技术选型 | 生成接口定义、数据模型 | 设计文档 + 接口契约 |
| 开发 | 审核关键逻辑、处理歧义 | 编码、补测试、跑 lint | 可运行代码 + 测试报告 |
| 测试 | 定义测试策略、判断优先级 | 生成用例、执行回归 | 覆盖率报告 + 缺陷清单 |
| 部署 | 审批发布、处理异常 | 生成配置、执行流水线 | 部署记录 + 回滚方案 |
| 运维 | 判断告警等级、决策 | 日志分析、初步定位 | 根因报告 + 修复建议 |
这张表的关键在于:人永远在意图层,Agent 永远在执行层。一旦人跑到执行层去跟 Agent 抢活干,效率反而下降;一旦 Agent 跑到意图层替你做决策,风险就失控了。
2.2 为什么选 CLAUDE.md 作为上下文锚点
项目级上下文文件有好几种做法:有人用.cursorrules,有人用AGENTS.md,有人干脆把说明塞进系统提示词。我最终选CLAUDE.md作为主锚点,理由有三条。
第一,它是纯文本、可版本控制、可评审的。上下文文件如果只存在于某个工具的配置里,新人入职看不到、代码评审覆盖不到、出问题追溯不了。放进仓库根目录,它就变成了团队资产。
第二,它的加载时机可控。Agent 在每次会话开始时读取这个文件,相当于每次都给 Agent 做一次“项目背景刷新”。这比把上下文硬编码在提示词里灵活得多——改文件比改提示词快,而且改动能被 git 记录。
第三,它天然支持分层。根目录放全局约定,子目录放模块约定,Agent 按需加载。这个机制后面讲 Agent 编排时会用到。
一个能用的CLAUDE.md至少包含这几块:
# 项目上下文 ## 技术栈 - 语言:TypeScript 5.x / Python 3.12 - 框架:Next.js 14 / FastAPI - 数据库:PostgreSQL 16 + Redis 7 - 测试:Vitest + Playwright ## 代码规范 - 禁止 any,禁止 @ts-ignore - 组件文件用 PascalCase,工具函数用 camelCase - 所有 API 必须有 zod schema 校验 ## 目录约定 - src/app 路由层,不写业务逻辑 - src/domain 领域逻辑,纯函数优先 - src/infra 外部依赖适配层 ## 禁止事项 - 不要动 migrations 目录下的历史文件 - 不要引入新的状态管理库 - 不要修改 CI 配置文件注意:
CLAUDE.md不是越详细越好。我试过写两千行的版本,结果 Agent 反而抓不住重点。控制在 200 行以内,只写“Agent 猜不到、但必须知道”的信息。
2.3 Plan Mode 的定位:先对齐再动手
Plan Mode 是我认为整个 AI Native 流程里最被低估的功能。很多人嫌它慢,直接跳过,结果就是反复返工。
它的价值在于把“意图对齐”这个动作显性化。传统开发里,你给同事派活,同事会先跟你确认理解对不对,然后才动手。Agent 不会主动确认,你不开 Plan Mode,它就默认自己理解对了,直接开干。
我的实操规则是:任何涉及三个以上文件改动的任务,必须先走 Plan Mode。具体流程:
- 用自然语言描述任务,越具体越好,包含验收标准
- Agent 输出执行计划,包含要改的文件、改动内容、验证方式
- 我逐条审核,重点看它有没有理解错边界
- 确认后切到执行模式,Agent 按计划推进
- 执行完对照计划逐项验收
这个流程看起来多了两步,但省下的返工时间远超这两步的开销。实测下来,复杂任务的一次通过率从 40% 左右提升到 75% 以上。
2.4 Agent 编排的三种典型拓扑
Agent 编排不是越多越好。我总结下来,团队规模不同,适合的拓扑也不同。
单 Agent 模式适合个人项目或小模块。一个 Agent 负责从需求到测试的全流程,上下文集中,不会出现接口对不上的问题。缺点是上下文窗口容易爆,任务一复杂就开始丢信息。
主从模式适合中等规模团队。一个主 Agent 负责拆解任务和协调,多个子 Agent 各负责一个模块。主 Agent 持有全局上下文,子 Agent 只持有自己模块的上下文。这个模式的关键是主 Agent 要维护一份“接口契约”,子 Agent 之间不直接通信。
流水线模式适合大型项目。需求 Agent、设计 Agent、编码 Agent、测试 Agent 各司其职,产物通过标准化格式传递。这个模式对产物格式要求极高,格式一乱整条流水线就断。
我目前用的是主从模式,主 Agent 用 Claude,子 Agent 按模块分。下面这张表是三种模式的对比:
| 模式 | 适用规模 | 上下文压力 | 协调成本 | 典型问题 |
|---|---|---|---|---|
| 单 Agent | 1-3 人 | 高 | 低 | 上下文溢出 |
| 主从 | 3-10 人 | 中 | 中 | 接口不一致 |
| 流水线 | 10 人以上 | 低 | 高 | 格式断裂 |
3. 核心环节的实操细节与避坑要点
3.1 上下文文件的编写与维护
写CLAUDE.md有个反直觉的点:不要写“怎么做”,要写“为什么这么做”和“不能怎么做”。
Agent 不缺“怎么做”的知识,它缺的是你项目的特殊约定。比如“用 zod 做校验”这种通用最佳实践,Agent 本来就知道,写进去是浪费 token。但“所有 API 必须用 zod 校验,因为我们的网关依赖 schema 做限流”这种带原因的约定,Agent 不知道,必须写。
维护节奏上,我的做法是每次代码评审发现 Agent 犯同类错误两次以上,就往CLAUDE.md里加一条。这样文件是渐进生长的,不会一开始就臃肿。
还有一个技巧:用注释标记优先级。比如:
## 代码规范 <!-- P0: 违反会导致 CI 失败 --> - 禁止 any - 禁止 @ts-ignore <!-- P1: 违反会被评审打回 --> - 组件文件用 PascalCaseAgent 对标记的敏感度比纯文本高,P0 的遵守率明显高于未标记项。
3.2 Plan Mode 的提示词模板
Plan Mode 的效果高度依赖你怎么描述任务。我整理了一个模板,实测比随意描述的效果好很多:
任务:[一句话描述目标] 背景: - 相关文件:[列出涉及的文件] - 当前行为:[描述现状] - 期望行为:[描述目标] 约束: - 不能改动的部分:[列出] - 必须保持的接口:[列出] 验收标准: 1. [可验证的标准] 2. [可验证的标准] 请先输出执行计划,不要直接改代码。这个模板的关键是验收标准必须可验证。“代码要优雅”这种标准 Agent 没法执行,“所有新增函数必须有单元测试且覆盖率 100%”才能执行。
3.3 Agent 执行阶段的监控要点
Agent 开始执行后,不是就撒手不管了。我盯三个东西:
第一,文件改动范围。Agent 经常“顺手”改一些不相关的文件。我的规则是:计划外的文件改动一律回滚,重新走 Plan Mode。这个规则执行几次后,Agent 的“手贱”行为明显减少。
第二,token 消耗曲线。正常任务的 token 消耗是平稳上升的,如果突然陡增,通常意味着 Agent 陷入了循环或者上下文爆炸。这时候要主动打断,检查是不是任务描述有歧义。
第三,中间产物质量。Agent 每完成一个子任务,我会快速扫一眼产物。如果第一个子任务就有问题,后面的不用看了,直接回滚重来。这个“早停”机制省了我大量时间。
3.4 多 Agent 协作的接口契约设计
主从模式下,主 Agent 和子 Agent 之间的接口契约是成败关键。我的做法是用 JSON Schema 定义契约:
{ "task_id": "string", "module": "string", "inputs": { "files": ["string"], "context": "string" }, "outputs": { "files": ["string"], "tests": ["string"], "report": "string" }, "constraints": { "max_files_changed": 5, "forbidden_paths": ["migrations/", "ci/"] } }子 Agent 收到契约后,只能在这个范围内操作。超出范围要回报主 Agent,由主 Agent 决定是否扩大范围。这个机制防止了子 Agent 各自为政、互相踩脚。
实操心得:契约里的
max_files_changed一定要设。我一开始没设,结果一个子 Agent 改了 23 个文件,评审根本没法看。设成 5 之后,Agent 会主动拆分任务,产物反而更清晰。
4. 完整实操流程:从零搭建一个 AI Native 工作流
4.1 环境准备与工具选型
工具选型上,我的原则是优先选支持项目级上下文文件和 Plan Mode 的工具。这两个功能是 AI Native 流程的地基,缺一个整个流程就跑不起来。
具体到工具,我目前的主力是 Claude Code 做编码 Agent,配合 Obsidian 做知识库管理。Obsidian 这块可能有人觉得奇怪,但它的价值在于:把团队的知识沉淀和 Agent 的上下文打通。项目决策、踩坑记录、架构演进都写在 Obsidian 里,Agent 通过 MCP 协议读取,这样 Agent 的上下文就不只是代码,还有团队的思考过程。
环境准备清单:
- 代码仓库:git 管理,根目录放
CLAUDE.md - Agent 工具:支持 Plan Mode 和项目级上下文
- 知识库:Obsidian 或类似工具,通过 MCP 接入
- CI:Agent 提交的代码必须过 CI,不能绕过
- 监控:token 消耗、任务成功率、返工率三个指标
4.2 第一个任务的完整走查
假设任务是“给用户模块加一个邮箱验证功能”。我按下面的流程走:
第一步,写任务描述。用 3.2 的模板,明确验收标准:邮箱格式校验、验证码 5 分钟过期、验证失败返回明确错误码。
第二步,开 Plan Mode。Agent 输出计划:改user.service.ts加验证逻辑、改user.controller.ts加接口、加email.spec.ts测试。我审核后发现它漏了“验证码存储”,补上后确认。
第三步,执行。Agent 按计划改文件,我在旁边盯文件改动范围。它改了 4 个文件,在预期内。
第四步,验收。跑测试,覆盖率 100%,接口返回符合预期。但发现一个边界问题:验证码过期后重复请求没有限流。这个不在原计划里,我记下来,作为下一个任务。
第五步,沉淀。把“验证码接口必须限流”这条加进CLAUDE.md,下次 Agent 就会自动考虑。
这个流程走下来,一个中等复杂度的功能,从描述到验收大概 40 分钟,比我手写快一倍多,而且测试覆盖更全。
4.3 关键参数的计算与选择
Agent 工作流里有几个参数需要根据项目调,不能照搬。
上下文窗口分配。假设模型上下文是 200K token,我的分配是:CLAUDE.md占 5K,当前任务相关文件占 50K,对话历史占 30K,预留 115K 给 Agent 的思考和输出。如果任务涉及文件超过 50K,就拆成子任务。
并发 Agent 数量。不是越多越好。我的经验公式是:并发数 = min(模块数, CPU 核心数 / 2)。比如 8 核机器,最多开 4 个并发 Agent。超过这个数,上下文切换开销会吃掉并行收益。
重试次数。Agent 任务失败后重试,我设的是最多 2 次。第一次失败通常是任务描述有歧义,补充描述后重试;第二次失败通常是任务本身有问题,需要人工介入。第三次重试基本是浪费 token。
4.4 与 CI/CD 的集成方式
Agent 提交的代码必须走完整 CI,这一点不能妥协。我的集成方式是:
- Agent 在独立分支工作,不直接推 main
- 提交前自动跑 lint 和单元测试
- 推送后触发 CI,跑完整测试套件
- CI 失败时,Agent 自动读取失败日志并尝试修复,最多 2 次
- 2 次修复失败,转人工处理
这个流程的关键是Agent 能读 CI 日志。很多团队 CI 失败后要人工把日志贴给 Agent,这一步自动化后,修复效率提升明显。
5. 常见问题与排查技巧实录
5.1 Agent 产出不稳定的排查思路
Agent 产出不稳定,九成是上下文问题。排查顺序:
- 检查
CLAUDE.md是否被正确加载。有些工具需要显式配置加载路径,配错了 Agent 就看不到。 - 检查任务描述是否有歧义。把任务描述给另一个工程师看,如果他理解有偏差,Agent 也会有偏差。
- 检查上下文是否溢出。看 token 消耗,如果接近窗口上限,Agent 会开始丢信息。
- 检查是否有冲突的约定。
CLAUDE.md里如果有互相矛盾的规则,Agent 会随机选一个执行。
5.2 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| Agent 改了不相关的文件 | 任务边界不清 | 看改动文件列表 | 补充 forbidden_paths |
| 产出代码风格不一致 | 上下文未加载 | 检查 CLAUDE.md 加载 | 显式配置加载路径 |
| 任务中途卡住 | 上下文溢出 | 看 token 消耗曲线 | 拆分子任务 |
| 反复犯同一个错 | 约定未沉淀 | 查 CLAUDE.md | 把约定写进去 |
| 多 Agent 接口对不上 | 契约不明确 | 对比各 Agent 产物 | 用 JSON Schema 定义契约 |
| CI 反复失败 | Agent 读不到日志 | 检查日志接入 | 配置日志自动读取 |
5.3 独家避坑技巧
技巧一:给 Agent 设“冷静期”。复杂任务执行前,强制 Agent 先输出一份“我理解的任务是什么”,你确认后再执行。这一步能拦下大部分理解偏差。
技巧二:用 git 做 Agent 的“撤销键”。Agent 每次执行前自动 commit 一个 checkpoint,出问题直接 reset。比手动回滚快得多。
技巧三:token 消耗设预算。给每个任务设 token 上限,超了就中断。这个机制逼着你和 Agent 都更精准地描述任务。
技巧四:定期“清理”上下文。CLAUDE.md每季度 review 一次,删掉过时的约定。文件越长,Agent 抓重点的能力越弱。
技巧五:保留人工评审的“最后一道门”。无论 Agent 多可靠,合并到 main 之前必须有人工评审。这不是不信任 Agent,是流程上的保险。
6. 团队落地时的组织与协作调整
6.1 角色重新定义
AI Native 团队里,传统角色会发生变化。我的团队目前是这么分的:
- 意图工程师:负责把需求翻译成 Agent 能执行的任务描述,核心能力是精准表达和边界定义。
- Agent 运维:负责维护
CLAUDE.md、契约模板、CI 集成,核心能力是流程设计和工具链。 - 评审工程师:负责审核 Agent 产物,核心能力是快速识别问题,而不是从头写代码。
这三个角色不是固定的,小团队里一个人可以兼。但职责边界要清楚,否则容易出现“都以为别人在管”的情况。
6.2 协作节奏的调整
传统开发是“日站会 + 周迭代”。AI Native 之后,节奏会变快,因为 Agent 的执行速度远快于人。我的做法是:
- 任务粒度变小:从“一周一个功能”变成“半天一个子任务”
- 评审频率变高:从“迭代末评审”变成“每个子任务评审”
- 沉淀频率变高:从“项目结束复盘”变成“每次踩坑就沉淀”
这个节奏下,团队的“记忆”变得很重要。CLAUDE.md和 Obsidian 知识库就是团队的记忆载体,不沉淀就等于每次都在从零开始。
6.3 度量指标的设计
AI Native 团队的度量不能只看“写了多少代码”。我盯这几个指标:
- 任务一次通过率:Agent 任务无需返工的比例,目标 70% 以上
- token 效率:每个任务的 token 消耗,目标逐月下降
- 沉淀密度:每周新增的
CLAUDE.md条目数,目标稳定在 3-5 条 - 人工介入率:需要人工接管的任务比例,目标逐月下降但不要归零
最后一个指标特别说明:人工介入率不要追求归零。保留一定比例的人工介入,是质量保险,也是团队学习的机会。
7. 后续扩展方向
这套流程跑顺之后,可以往几个方向扩展。
方向一:Agent 评测集构建。把历史任务整理成评测集,每次改CLAUDE.md或换模型后跑一遍,看通过率变化。这个机制能让流程优化有数据支撑,而不是凭感觉。
方向二:跨项目复用。把CLAUDE.md的通用部分抽出来做成模板,新项目直接继承。我目前抽了三个模板:Web 应用、数据管道、CLI 工具。
方向三:Agent 安全边界。随着 Agent 权限扩大,安全边界要同步收紧。我的做法是给 Agent 设“白名单目录”,只能改白名单内的文件,白名单外的改动需要人工审批。
方向四:与知识库深度集成。目前 Obsidian 只是作为上下文来源,下一步是让 Agent 主动往知识库写沉淀。比如每次任务完成后,Agent 自动生成一份“本次任务的经验总结”存进 Obsidian,人工审核后生效。
这套流程我跑了大概半年,最大的体会是:AI Native 不是让 AI 替人干活,是让人干更值钱的活。人从“写代码”转向“定义问题、审核结果、沉淀经验”,这三件事的价值密度远高于写代码本身。Agent 干得越多,人的判断力越值钱。