
过去一年我在好几个团队里陪着大家折腾 AI 辅助研发从最早的“拿聊天框写函数”到后来把 Claude 直接接进代码仓库一个很明显的感受是真正的分水岭从来不是模型聪明了多少而是研发流程本身有没有被重做。Anthropic 在 Claude Code 以及围绕它的整套工作方式里做的正是这件事——不是给旧流程加一个 AI 外挂而是把“需求 → 设计 → 开发 → 测试”这条流水线重新设计成以 Agent 为中心的循环。这篇文章不打算讲论文也不打算复读官方文档。我想从一线工程师的视角拆一下 Anthropic 重做 AI 时代研发流程的几个关键思路为什么旧流程会崩、规格驱动开发怎么在 Claude Code 里落地、多 Agent 协作怎么组织、质量门禁怎么设计以及一批我在实操里真实遇到的高频故障和排障链路。如果你正在把 AI 接进团队的日常研发或者准备用 Claude Code 这类工具重做自己的开发闭环这篇应该能帮你少踩不少坑。1. 旧研发流水线为什么卡在“AI 辅助”这一步1.1 传统流程的三个隐含假设传统软件研发流程无论是瀑布还是敏捷迭代其实都建立在几个隐含假设上面。第一个假设是人独占生产活动代码只能由工程师写测试只能由测试工程师跑。第二个假设是任务可以被线性拆解需求分析、详细设计、编码、测试、发布每个阶段边界清晰上游产出物能完整传给下游。第三个假设是上下文可以无损传递PRD、设计文档、接口文档、代码注释靠这些文本把人的理解从一个环节搬运到另一个环节。这三个假设在纯人工作业时代是合理的因为人的记忆容量和上下文窗口就那么大必须靠文档和流程来补。但 AI 加入之后它们全都变成了限制。我记得很清楚刚开始团队引入 AI 编程助手时我们的做法是让每个开发者开一个聊天窗口把需求粘进去让模型“帮我看下这个函数怎么改”。这是典型的旧流程套新工具——模型被当成一个速度更快、但依然只能干“编码”这一个环节的虚拟员工。结果就是上下文在人和模型之间反复搬运需求没说清、代码改歪了、测试没人跑最后人还得给 AI 擦屁股。1.2 引入 AI 后的典型错位把模型塞进旧流程最常见的错位有三种。第一种是任务拆解错位人把大的功能拆成一个个小任务再逐条丢给模型但模型每次都只能看到局部拼不出整体架构改 A 模块时破坏了 B 模块的约定。第二种是上下文管理错位人以为粘一段代码就够了模型却需要了解项目规范、依赖关系、测试基线于是反复追问效率比人工还低。第三种是验证环节错位传统流程里“写代码”和“验证代码”是分开的阶段模型生成完代码就算交差但代码能不能跑、有没有破坏既有行为完全没人管等于把风险全部推回给人类工程师。Anthropic 的重做核心就是把模型从“编码环节的加速器”升级成“整个研发循环的参与者”。模型不再只看到你丢给它的那一段代码而是直接读代码仓库、读 Issue、读测试、读 CLAUDE.md 里的项目规则然后自己去规划、执行、验证、修正。这不是换了一个更强的代码补全器而是把研发流程的中心从“人写代码”变成了“人定义目标Agent 负责循环逼近目标”。1.3 Anthropic 重构流程的起点让模型读代码库而不是读任务单我在几个项目里对比过两种用法。第一种把需求写成任务单分给不同开发者开发者把相关代码复制给 Claude 问“怎么改”。第二种直接把 Claude Code 放进仓库让它自己探索代码结构、读测试、读 README然后基于仓库的真实状态动手改。同样是做一个“加个导出按钮”的小需求第二种方式的效率几乎是第一种的三到五倍而且改出来的代码风格和现有代码更统一。原因不复杂。代码仓库本身是最大的上下文源它包含了比任何文档都准确的架构决策、命名习惯、边界条件。Anthropic 的 Claude Code 之所以值得当成流程重构的起点就是因为它把“代码库探索能力”做成了基础设施模型可以 grep、可以读文件、可以看目录结构、可以运行测试。人不需要把上下文嚼碎了喂给它它自己会去翻。这一步看起来只是工具能力差异但带来的流程变化是深远的——研发流程的第一个环节从“人梳理上下文”变成了“Agent 探索上下文”。2. Claude Code 里的研发闭环规划、执行、验证、修正2.1 从 init 到 spec把需求写进仓库如果你第一次打开 Claude Code会发现它在项目根目录生成一个CLAUDE.md里面记录项目技术栈、常用命令、代码风格约束。这很像给 Agent 写“入职手册”。但真正把流程重做起来光有CLAUDE.md不够还需要一个显式的规格层。我在团队里推行的是specs/目录每个需求一个 Markdown 文件写清楚三件事背景与目标、输入输出边界、验收标准。验收标准尽量写成可以自动验证的形式比如“调用GET /api/exports返回 200 且 body 包含task_id”“导出成功后数据库新增一条类型为export的记录”。这些 spec 不是给人看的文档而是给 Agent 看的“任务契约”。有了契约模型在动手前就能自己判断“什么叫做完”而不是写完代码就交差。2.2 计划先行与显式任务分解Claude Code 在比较大的任务上会先输出一份计划然后按计划逐步执行。这个行为值得在团队层面固化下来而不是靠模型自觉。我的做法是在CLAUDE.md里写明“任何改动必须先输出执行计划拆成不超过 5 个步骤的列表每一步必须有对应验证方式”。这样做的价值不在于“让模型看起来更严谨”而在于给人类评审留出介入点。一旦计划被拆成显式步骤人就可以在 Agent 动手之前纠正方向。比如模型打算单元测试覆盖 3 个函数人看到后可以及时说“第 2 个函数已经不需要了换成集成测试”。这在传统流程里相当于人肉跑了一遍设计评审但因为评审对象是一份精炼的计划而不是几百行代码负担小很多。我实测下来计划评审投入的十几分钟往往能省掉后面一两个小时的返工。2.3 验证优先测试不是终点而是执行的起点Anthropic 重做的流程里一个很反直觉的点是测试被提到了执行之前。传统流程是“先写代码再补测试”Agent 原生流程是“先明确测试怎么写再让代码通过测试”。在 Claude Code 里你可以先把验收测试写成失败状态然后让模型去实现功能直到测试转绿。这等于把验证从“事后关卡”变成了“导航目的地”。这个转变特别重要因为模型生成代码时的“随机性”必须靠确定性信号来约束。没有测试当锚点模型很容易在正确的道路上越走越偏。有了测试模型每完成一步都能自我检查失败了就根据报错信息继续改。我在实际项目中一个典型的闭环是这样在specs/2025-xx-export.md里写清验收标准。先写一个失败的集成测试test_export.py只跑通“导出接口返回任务 ID”的最小场景。让 Claude Code 执行“实现导出功能并使该测试通过”。模型读代码、改代码、跑测试报错就继续改直到测试通过。人只负责 review 模型的改动和最终测试结果。这一步做完很多团队会惊讶地发现模型写完的代码质量远高于“聊天窗补全”原因不是模型变聪明了而是验证信号一直在约束它的每一步操作。2.4 一个闭环示例修复回归 Bug 的完整会话举一个真实的例子。有个服务最近总在深夜报 502日志里指向redis connection pool exhausted。我直接在仓库里运行claude -p 修复 Redis 连接池耗尽导致的 502先定位 bug 根因再输出修复计划最后实现并运行相关测试Claude Code 的会话过程大致是先 grep 出所有 Redis 客户端初始化的位置发现连接池默认最大连接数是 10而某个异步任务在并发高峰时没有正确归还连接然后它定位到get_redis_client()在异常分支没有调用release()接着它给出修复计划打算用contextlib.closing包裹连接最后它改了代码运行了现有的test_redis.py通过后又补了一个并发场景测试。整个过程中我做的事情只有三件在它输出计划后确认方向在它改完后 review diff在测试通过后批准合并。这在旧流程里至少得一个人花半天而那天我只花了四十分钟。更关键的是这个流程是可以稳定的、可预期的——这也是我后来愿意在团队里大规模推的原因。3. 多智能体协作Anthropic 如何拆解 Team of Agents3.1 为什么要从单 Agent 走向多 Agent单个 Claude Code 会话干完一个完整需求确实比人肉编码快但到大型项目里会遇到两个瓶颈。第一个是上下文预算。Claude 的上下文窗口再大也扛不住一个大型仓库的全部历史会话中期经常出现“前面改了什么已经记不清”的退化。第二个是认知角色冲突。让同一个 Agent 既写代码又做 Code Review就像让同一个开发既写代码又审核自己的代码容易出现盲区。Anthropic 的解法是往多 Agent 方向走把一个研发任务拆给多个各司其职的子代理子代理之间只交换结论和产物不共享全部上下文。我在项目里尝试的方案是三类角色明确分开一个Spec Agent负责读需求和写验收标准一个Builder Agent负责照着验收标准实现一个QA Agent负责跑测试、构造反例、把失败信息结构化返回给 Builder。三个 Agent 之间用文件系统和命令输出传递信息而不是在一个上下文里互相对话。3.2 子代理与任务委派把上下文隔离做对多 Agent 协作的关键不是“让多个模型聊天”而是上下文隔离。我在 Claude Code 里用/agents创建了一些专用子代理每个子代理只被授予一个小范围的工具和项目知识。比如 QA Agent 只能运行测试命令和读测试相关目录Builder Agent 可以写代码但不能直接推送分支。这样做的直接好处是每个 Agent 的上下文占用可控不会随着项目变大而摊薄责任边界清晰出了问题知道找哪个环节。另外子代理之间的“接口协议”要尽可能简单。我在团队里定的规则是Builder 完成一阶段任务后必须在artifacts/下输出一个状态文件包含“改了哪些文件”“测试结果如何”“遗留风险是什么”。QA Agent 读取这个状态文件决定是继续测还是把问题打回。这个设计很像微服务之间的 API 契约只不过服务方是模型。3.3 流程中的“路由”与网关心智多 Agent 跑起来之后遇到的一个典型问题是怎么决定“这个任务该交给谁”。我见过不少团队把任务胡乱一丢结果 Builder 跑去读测试报告QA 跑去改代码一片混乱。这里需要引入一个路由心智任务进来后先判断它是需求澄清、代码实现、验证调试还是评审决策然后路由给对应的 Agent。关于路由有个很有意思的坑。很多人用网关转发 Anthropic API 时会遇到类似 “expected a gateway model route” 的报错。这个错误听起来像模型问题实际上是你请求里带的模型标识不在你网关配置的可用路由表里。比如你网关只放行了claude-sonnet-4-5但客户端还在请求claude-opus-4-1网关就会拒掉。这个教训延伸出去就是不管是 API 网关还是 Agent 路由规则要显式化。我在团队里做了一个很简单的路由表任务类型、负责 Agent、可用工具、验收出口都列成表格Agent 启动时先读这个表再决定行动路由问题一下子少了很多。3.4 协作模式与人为介入点多 Agent 不是“无人驾驶”。我们保留了三个人类介入点第一计划评审Spec Agent 产出执行计划后人确认计划是否贴合业务意图第二高风险操作确认凡是涉及删除数据、改权限、合并主干的命令必须经过人确认第三最终验收QA Agent 给“通过”不代表人可以直接合代码关键模块依然要人去看一眼关键 diff。这三点介入看起来是“拖慢流程”实际上是把人放在了对的位置。AI 时代研发流程重做不是把人赶出流程而是把人的精力从“写代码、跑测试、查日志”里解放出来集中到“定义目标、判断取舍、守住风险”这些模型暂时做不好的事情上。我观察到做得好的团队人对流程的介入次数反而变多了但每次介入都更短、更有价值。4. 把质量门禁写进 Agent 工作流4.1 用 Hooks 守住仓库边界Agent 能自由读改代码之后第一反应自然是“它会不会乱改文件、乱执行命令”。Anthropic 在 Claude Code 里提供了 Hooks 机制这是在 Agent 工作流里插质量门禁的最直接手段。Hooks 本质上就是在 Agent 执行某些动作前后强制触发一段自定义脚本脚本返回的结果可以拦截、放行或修改执行内容。我自己在团队里部署的 Hook 策略是PreToolUse拦掉危险命令比如rm -rf、直接连接生产数据库的客户端命令、向main分支强制推送的 Git 命令。PostToolUse在 Agent 改完文件后自动跑一次git diff --check和基础 lint发现问题立即把错误信息回传给 Agent。UserPromptSubmit在做大范围改动前检查当前分支是否落后主干太多提醒 Agent 先 rebase。4.2 一个最小可用的 Hooks 配置参考下面这个配置是我在一个内部服务里实际用过的去掉敏感信息后长这样{ hooks: [ { matcher: PreToolUse, hooks: [ { type: command, command: node .claude/guard.cjs, timeout: 10 } ] }, { matcher: PostToolUse, hooks: [ { type: command, command: bash .claude/post_use_check.sh, timeout: 30 } ] } ] }guard.cjs的逻辑比较简单读到要执行的命令和工具名如果命中了黑名单规则就以非零退出码让调用失败。post_use_check.sh里我放了几个固定的检查项有没有引入硬编码密钥、有没有留下调试打印、是否修改了锁文件但没修改对应依赖声明。这些检查在传统流程里都是人工 Code Review 的活儿现在前置到 Agent 执行瞬间人只处理真正异常的 case。4.3 度量指标变化从代码行到任务完成率流程重做之后研发团队的度量指标也得跟着变。以前团队看代码行数、提交数、测试覆盖率这些指标在 Agent 时代几乎全部失真——模型一小时能生成几千行代码覆盖率高也不代表业务风险低。我现在更关注四个指标指标计算方式说明任务完成率通过的验收测试 / 计划内验收测试总数反映规格是否清晰、Agent 是否真正理解任务缺陷逃逸率上线后发现的功能缺陷 / 总功能缺陷反映 QA Agent 和门禁是否兜住了问题人工介入次数每个任务需要人干预的会话轮次太高说明规格或工具链有问题太低说明需要关注风险上下文健康度会话中上下文压缩/重置的频率频率过高说明任务拆解得太大Agent 记不住这套指标不需要额外开发复杂的平台基于 Claude Code 的会话日志和 CI 上的测试结果就能统计。我的经验是任务完成率是最值得盯的领先指标它上升通常意味着 spec 写得越来越清楚它突然下降往往是需求边界发生了没人注意到的变化。4.4 我踩过的门禁坑过度拦截与 Agent 循环Hooks 不是越严越好我在这上面吃过亏。第一次部署时我在PreToolUse里把curl也拦了理由是外部请求不可控结果 Agent 需要调本地 mock 服务跑集成测试时被反复拦截它在日志里转圈圈试了好几条路都过不去。后来我把规则改成了“外网请求拦截、本地和测试环境放行生产环境高危命令一律确认”流程才恢复正常。还有一个坑是PostToolUse 脚本如果输出不友好会让 Agent 陷入死循环。比如脚本只打印Error: check failedAgent 不知道具体哪一项失败了就会反复尝试各种无意义的修改。后来我把脚本改成结构化输出明确告诉它“检查项是no_debug_log失败文件是src/utils/redis.ts失败原因是出现console.log”Agent 下一轮就能精准修复。所以门禁脚本除了拦得准还得让模型能看懂怎么改。5. 实操中的高频失败与排障实录5.1 unable to connect to anthropic services先分清是网络还是配置跑 Claude Code 最常撞到的报错就是unable to connect to anthropic services或failed to connect to api.anthropic.com。我第一次遇到时以为是 Claude Code 本身坏了重启、重装都试过折腾了半天才发现是环境变量丢了。按这个顺序排基本能覆盖九成情况先确认 API Key 是否有效用claude的账号状态命令或者直接查环境变量里ANTHROPIC_API_KEY是否为空。检查是否设置了非默认的 API 地址比如团队网关地址、测试环境地址很多人之前为了实验设置过ANTHROPIC_BASE_URL忘了清掉结果请求打到了一个已经不存在的服务上。确认网络出口策略是否放行了api.anthropic.com的 443 端口企业内网常有防火墙白名单策略新接入的机器很容易漏配。最后再怀疑服务端问题此时去官网状态页看一眼是否有大面积故障公告。这个排查顺序背后的逻辑是先找本机配置问题再找网络可达性问题最后才找服务端问题。配置问题最快网络问题次之服务端问题只能等。5.2 “expected a gateway model route”网关路由与模型标识不匹配这个报错在直连 Claude 官方 API 的情况下很少见基本都发生在通过网关转发请求的场景。报错原文通常是claude doesnt look like an anthropic model: expected a gateway model route意思是网关收到了一个模型名但这个模型名不在网关的路由表里。网关心智前面提过一次这里展开排障步骤查看网关配置里允许的模型路由列表确认你现在请求的模型 ID 是否在列表中。检查客户端比如 Claude Code 的settings.json或ANTHROPIC_MODEL环境变量里指定的模型名是否和网关路由表的大小写、版本号完全一致。如果你把网关的默认路由指向了一个别名确认别名背后的真实模型是否可用别名的好处是切换模型时不用改客户端坏处是排查时多一层。我见过一个案例团队把网关默认路由从claude-sonnet-4-5切到claude-opus-4-1但网关配置里只改了默认路由没把老的模型 ID 从允许列表里去掉结果客户端用老 ID 请求直接报错。最后把客户端模型 ID 显式改成新 ID问题消失。这件事给我一个习惯所有跨环境的模型配置都必须把“请求端期望的模型”和“网关允许的模型”作为两份清单做校验不能只改一头。5.3 上下文超限与输出截断长时间跑一个复杂需求经常遇到上下文不足或者模型输出中途截断。我的处理经验是不要硬扛及时让会话“分段”。Claude Code 里可以主动压缩上下文或者把当前进度固化为文件再开启一个新会话继续。我在流程层面做的对策有两个。第一每个子任务控制在 30 分钟以内超过就停下来把成果写入artifacts/再开新会话第二关键状态显式落盘比如“已完成 Redis 连接池修复测试 test_redis.py 已通过剩余任务是补充并发场景用例”下一会话从这个文件继续。这样输出截断、上下文丢失都不会让整个任务推倒重来。5.4 Agent 进入死循环时怎么办Agent 最让人头疼的行为是“错误地重复尝试同一种失败的修复”。常见触发条件是测试崩溃信息不清晰、日志被截断、或者 Hook 返回了模型无法理解的错误。我在团队里定了两条规则一是任何修复尝试连续失败三次Agent 必须停下来输出一个debug_summary.md记录已尝试过的方案和失败原因请人来裁决二是我会在CLAUDE.md里写明“禁止连续运行超过 5 个测试命令”防止 Agent 用重复跑测试的方式盲目试探。这个限制看起来粗暴但很有效。人介入后通常几秒钟就能发现模型没注意到的问题比如测试数据库没有 mock、环境变量没设置、错误日志里真正的根因被淹没在堆栈下面。死循环的根因不在于模型笨而在于流程缺少“强制止损”的闸门。5.5 权限与安全给 Agent 最小可用权限最后一条排障经验来自一次事故Agent 在一个共享开发环境里执行了docker compose down -v把别人本地数据库的数据清了。从那以后我给 Agent 的权限定了三条底线只能访问当前项目目录不能读取家目录和其他项目。只能把改动提交到当前分支不能切主干、不能推远端。凡是对外部系统有副作用的命令发消息、删库、调生产接口必须经过人工确认。这三条通过 Hook 和 Claude Code 的权限配置组合实现。给 Agent 权限就像给新人开账号一开始给最少的实际跑不动再逐步放反过来先给一堆权限出事之后再收信任感基本就没了。6. 把研发流程真正“重做”的落地顺序与组织建议6.1 先用一个服务做实验田很多团队听说 Claude Code 好用第二天就让全组人上线结果五花八门的用法互相冲突最后得出结论“AI 研发不靠谱”。我的建议恰恰相反先选一个结构清晰、测试覆盖尚可、风险不高的内部服务做实验田让两三个人用新流程跑两三个迭代把团队自己的规则、Hook、模板打磨好再逐步推广。实验田阶段重点回答三个问题我们的规格文件应该长什么样哪些 Hook 是必须的开发者在哪个环节介入最舒服这些问题答案不在一开始就能得到得跑完一个真实迭代才有感觉。6.2 从文档驱动到规格驱动传统研发里的“文档驱动”文档是给人看的写给人的文档有时候一句话可以含糊带过因为人有常识和上下文。但 Agent 没有默认常识它严格按字面理解需求所以 AI 时代的规格文件必须像契约一样精确。我们团队规格模板目前固定五段背景、范围、验收标准、风险与禁忌、关联测试。验收标准必须能被自动验证比如“测试test_export_download通过”而不是“用户体验良好”。这个转变对产品经理和研发负责人的要求更高了但对整体效率的提升是巨大的。规格清晰后Agent 一次做对的概率明显上升人工返工自然变少。从某种程度上说AI 时代研发流程重做第一步是重做需求的表达方式。6.3 让规则可版本化rules 文件与团队共识CLAUDE.md和specs都是文本文件这就意味着规则本身可以像代码一样做版本管理。我在团队里把.claude/整个目录纳入 Code Review规则文件变更也要走 MR。这样做的价值在于Agent 的行为规则从“某个人的使用习惯”变成了“团队的可追溯资产”新人加入时不需要靠老员工口口相传只需要读一遍仓库里的规则文件。还有一点特别推荐规则文件里记录失败案例。我们有一个CLAUDE.md小节叫“已知反模式”里面写下曾经让 Agent 犯错的指令写法比如“不要让模型直接连接生产 Redis”“不要使用--force参数”。这比任何培训都有效因为模型每次启动都能看到相当于团队集体经验直接注入到了每个 Agent 会话里。6.4 人的精力重新分配从写样板到做评审与复盘流程重做后团队里每个人的日常职责会发生肉眼可见的变化。初级工程师大量“搬砖型编码”被 Agent 替代他们更多的时间花在写规格、拆任务、做测试复盘上高级工程师从逐行 review 别人代码转向评审 Agent 的计划、处置高风险操作、优化规则文件。有几个同事一开始不太适应觉得自己“不写代码就不是开发了”跑了一个迭代后反而回不去了因为新流程下他们的精力能真正花在业务难点和架构决策上。预算分配上我建议一个迭代里把 30% 的时间留给人做“流程改进”包括完善 Hook、补充失败案例、优化提示词模板。这 30% 不是浪费时间它决定了剩下的 70% 能不能持续提效。6.5 一个适合起步的最小工作流如果你下周一就要开始试点我建议直接跑这个最小工作流在仓库根目录放一个精简的CLAUDE.md只写技术栈、测试命令、禁用命令。新建specs/目录本周要做的需求先各写一份两页以内的规格文件。配置一个PreToolUseHook拦掉删除命令和生产环境操作。选一个需求让 Claude Code 按“读规格 → 出计划 → 实现 → 跑测试”的顺序跑一轮人在计划阶段和最终验收阶段介入。这一套流程一天内可以落地不依赖任何复杂平台却已经能让你明显感觉到“AI 时代的研发流程”和“旧流程套 AI”的区别。从我自己几个团队的实践来看最难的不是技术配置而是说服团队接受一个事实流程的主角变了人要做的不再是盯住每一步而是定义好边界、目标和验收标准。我个人的体会是Anthropic 这次对研发流程的重做本质上是在回答一个问题当写代码的成本趋近于零研发团队的稀缺资源变成了什么答案很清晰——稀缺的是对问题的定义能力、对方案的判断能力以及一套能约束 AI 不跑偏的流程基础设施。把这三件事打磨好AI 时代的研发流程才会真正跑起来。