过去一年,我在好几个团队里陪着大家折腾 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 Agents
3.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 failed,Agent 不知道具体哪一项失败了,就会反复尝试各种无意义的修改。后来我把脚本改成结构化输出,明确告诉它“检查项是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 doesn't 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 时代的研发流程才会真正跑起来。