上周给一个技术团队做研发效能的现场诊断,对方负责人提了一个让我印象很深的问题:“我们已经上了全套的研发管理平台、CI/CD流水线、自动测试平台,为什么一个需求平均还是要两周才能上线?”
我当时的回答是:这些工具帮你自动化了“执行”,但“接下来该做什么”这件事,仍然全部靠人。每一次交接、每一个决策点、每一次“三个人在群聊里对齐一下”,都是流程里最昂贵的时间黑洞。而这几年被反复讨论的Agentic Workflow(智能体驱动的工作流),真正的价值恰恰不在于把某个环节“做得更快”,而是把软件开发这条流水线上的“认知工作”也接了过去——让意图理解、任务拆解、方案选择、质量判断这些原本只能由人来完成的事,第一次可以被软件代理连续地承担起来。这篇文章我想从一个做过多轮落地尝试的从业者角度,聊聊Agentic Workflow到底重塑了什么、怎么运转、以及最容易翻车的那些地方。
1. 人肉接力棒模式:传统软件开发流程真正的卡点
1.1 一个需求从提报到上线的真实旅程
我们先把场景还原一下。假设要做一个“个人中心里的订单导出功能”,在传统流程里它大致要经历这样一段路程:
产品经理写需求文档,组织评审,会后把结论发到群里;后端开发读文档,开始设计表结构,中途发现“导出字段到底以订单列表页展示为准还是以订单详情页为准”这个问题文档没写清,于是私聊产品经理;前端开发接到接口文档后开始写页面,又发现后端接口的分页参数命名风格和项目里其他地方不一致,两边在群里讨论了半天谁改;测试同学等前后端联调完成后开始设计用例,测到一半发现一个边界情况不知道该算作成功还是异常,又去找产品确认;最后发布上线时运维看了一眼,说“导出接口没做超时控制,数据量一大肯定挂”,又回炉改了一版。
这条链路上的每个环节本身都不算特别难,但注意看:从头到尾,几乎每一步都夹着一个“等待决策”的暂停点。后端等产品答复的时候,后端手上的活停了;前端等后端定接口的时候,前端的活停了。真实项目里大量时间不是花在“做”上,而是花在“等人告诉我该怎么做”上。这是“人肉接力棒”模式最本质的特征——人是离散的资源,只要某个人在忙别的事,整条链路就堵住了。
1.2 流程损耗的三座大山:信息失真、等待瓶颈、知识孤岛
我观察下来,传统软件流程的损耗基本可以归到三个桶里:
第一是信息失真。需求从产品经理的大脑到开发的大脑,中间经过了文档、评审会、群聊记录、走廊对话等多轮转述。这个传递过程很像“传话游戏”,每一轮都会损失一些细节、增加一些误解。最典型的例子是“状态”这个词——“订单状态”到底包含未支付、已支付、已发货、已完成、已取消中的哪几个,文档写“订单状态”,开发可能理解成“只包括支付和未支付”,于是做出来的东西总是差一点。
第二是等待瓶颈。流水线上的人在物理上是串行协作的:后道工序必须等前道工序的产出。这是一种结构性浪费。一个人一天只有8小时,而这条链路上的每一个环节一旦被人为因素卡住,都会等比放大到最终交付时间上。
第三是知识孤岛。每个人只掌握自己负责的那一块知识。产品懂业务但不懂技术约束,开发懂技术但不太清楚用户的使用场景,测试最清楚系统行为但提建议时往往缺话语权。一旦链条里那个“最懂上下文的人”休假或离职,流程就停摆——很多团队都有“某模块只有某某能改”的状况,这本质上就是知识孤岛的直接体现。
1.3 “流程再造”喊了很多年,为什么依然卡壳
过去这些年,软件工程一直在做“流程再造”:敏捷迭代、看板管理、DevOps、CI/CD……这些都是有价值的,但它们解决的是“如何把接力棒传递得更快”,而不是“如何减少接力棒传递的次数”。工具自动化的都是“搬运”和“通知”——需求从A系统同步到B看板,代码提交后自动触发构建,构建成功后自动推送测试消息。这些动作不需要判断,所以规则、脚本、触发器就能搞定。
但真正的判断工作——理解需求动机、评估技术方案、权衡取舍——全部还是要靠人。只要判断工作由人来完成,流程就需要人在每一个关键节点“停一下、动脑想、然后做决定”。快速失败、快速反馈这套方法论在自动化执行层面有效,但在认知与决策层面,始终绕不开人的带宽限制。这也是为什么工作流重塑的真正撬点,在于能不能把“判断和决策”这件事自动化——Agentic Workflow正是在这个位置上切入了软件开发。
2. Agentic Workflow的内核:从“规则脚本”到“意图驱动”
2.1 它到底是什么:不是又一个自动化工具
先说结论:Agentic Workflow不是一个单一产品,也不是“ChatGPT帮你写代码”那种输入输出式的辅助工具。它是一套以智能体(Agent)为核心参与者、能够自主理解意图、规划步骤、调用工具、评估结果并自我修正的工作流体系。
打个比方,传统自动化就像“傻瓜相机”:你按下快门,相机按固定算法处理光线和焦点,拍出来就完事。而Agentic Workflow更像“摄影师助理”:你告诉他“给客户拍一组偏商务的秋景照片”,他先自己琢磨你这句话背后的意图,再选地点、调参数、拍一组给你看,你觉得不满意,他会调整再拍。关键在于,他做的不是简单的指令执行,而是目标驱动下的连续判断。
在软件开发场景里,这意味着工作流中的角色不再只有“代码仓库”“流水线”“工单系统”这些被动工具,还会出现“需求分析Agent”“编码Agent”“测试Agent”“审查Agent”这类主动参与并承担认知任务的角色。它们不是帮人完成某个局部操作,而是在整体流程中被赋予了一部分原本由人负责的工作。
2.2 和传统自动化的本质区别:判断权从哪里来
传统自动化体系可以精确总结为“事件-脚本”模式:如果提交了代码(事件),那就执行编译测试(脚本);如果测试通过,那就发布到预发环境(脚本)。这套模式的前提是——所有路径都被预先设计好了。一旦出现设计之外的异常,比如编译失败的原因是一个从未见过的第三方依赖问题,流水线只会“红掉”,然后等待人去处理。
Agentic Workflow则截然不同。它的决策核心是大模型驱动的推理能力。当编译失败时,编码Agent可以主动查看日志、定位问题模块、修改代码、重新提交,然后重新触发测试。遇到不明确的需求时,需求分析Agent会生成澄清问题列表并同步给相关负责人确认,而不是像传统看板那样默默挂起等待。这背后的逻辑是用“模型推理”替代部分的“人工路径规划”。
我把它们的区别总结成一张表:
| 维度 | 传统自动化 | Agentic Workflow |
|---|---|---|
| 决策依据 | 预定义规则和条件 | 大模型推理 + 上下文理解 |
| 异常处理 | 中断、告警、等人处理 | Agent自行分析、尝试修正 |
| 上下文范围 | 固定的参数和模板 | 可积累的项目知识库与会话记忆 |
| 参与对象 | 脚本、触发器、管道 | 多个具备专业分工的Agent |
| 人的定位 | 全程监控与介入 | 设定目标、设置闸门、关键决策 |
注意最后一行很重要:Agentic Workflow不是无人化,而是把人的参与从“每走一步都要人推一把”变成“在正确的节点做决策”。
2.3 支撑这套体系运转的五大模块
真正跑一个Agentic Workflow,底子上要有五个模块稳定协作:
意图解析层。负责把自然语言描述的需求(比如用户的随口一句“最好能导出Excel”)转成结构化的任务目标、约束条件和验收标准。这一层直接决定了后续所有工作是否跑在正确的方向上,是整套体系里最不能省的一环。
规划器。把目标拆解成可执行的任务序列,并标注依赖关系、优先级和改动范围。好的规划器会权衡“先该做什么、哪些可以并行”,而不是简单地把所有任务一股脑铺开。
执行器。负责调用外部工具,如命令行终端、代码仓库、构建系统、测试框架、接口调试工具等。执行器的关键是打通权限链路和操作边界,让Agent“有手可用”且“不该碰的碰不到”。
记忆系统。包含两层:短期记忆用于承载当前任务的上下文(这段需求是什么、已经改到了哪一步),长期记忆用于沉淀项目知识(代码规范、历史决策、常见雷区)。没有记忆的Agent,每执行一步都是“失忆状态”,工作流必崩。
质量闸门。由测试Agent、审查Agent和人工审批点共同构成。它的职责是确保Agent产出的任何结果在进入下一步之前,通过了质量校验,否则就得回流修改。
这套模块化架构的价值在于:它把“一个人的大脑”拆分成了“多个可以彼此协作的专业单元”,每个单元职责单一、边界清晰,也就更容易被独立设计、评估和治理。
3. 一次功能迭代的“无人驾驶”实验:从需求到上线的全流程拆解
3.1 需求拆解Agent:把一句话变成一张开发蓝图
我实际搭建的模拟环境里,整个流程的起点是“需求拆解Agent”。我们通常会往它那边扔一句半毛坯需求,比如“用户需要能导出已支付订单”。这个Agent做的第一件事不是列任务,而是先输出一份清单,内容包括:导出字段的候选范围(订单号、时间、支付方式、金额、商品明细)、数据规模预估(需要考虑几千条还是几十万条)、导出格式(CSV还是Excel)、权限限制(管理员还是所有用户)。如果这些内容需求方没明确,它会生成一组“澄清问题”推给指定的人。
等到信息补全之后,需求拆解Agent会输出一份结构化开发蓝图:表结构变更、导出服务模块、接口层、前端入口、权限控制、测试计划、性能指标。然后按依赖关系排出一个任务序列,标注哪些可以并行(比如数据库表变更和前端页面设计可以同时进行),哪些必须在特定环节之后(比如接口联调必须在接口逻辑完成之后)。这一步做到位,后续的“并行开发”才有了依据。
3.2 编码Agent:不是从零写代码,而是基于存量做增量修改
在真实的项目仓库里,编码Agent的绝大多数工作不是“从零写一个新类”,而是“在现有代码风格和架构约束下做增量修改”。所以我的设计里,它必须先读“当前分支的代码结构”“团队的编码规范文档”“依赖组件的版本清单”。它要能回答“这个项目用什么模式写服务层”“数据库访问走的是什么框架”“日志和异常处理的约定是什么”,然后才能动笔。
它完成任务的方式也值得一提:不是一次性生成一个巨大的代码文件,而是把一个改动拆成多个小提交(commit),每个小提交都是一次可验证的增量。比如先改数据库脚本,再实现导出服务,然后接接口,最后跑一把编译。每一步之间,它都会检查编译状态,确保没有把仓库改坏再往前推进。这种粒度控制,在传统团队里通常要项目经理反复叮嘱,但通过Agent流程可以把它固化成默认行为。
3.3 测试Agent与审查Agent之间的循环:迭代的上限必须锁死
测试Agent在这一轮工作里的任务是“为导出功能生成并执行测试”,但真正有意思的部分在后面:测试Agent和审查Agent之间会形成一个“复审循环”。
测试Agent根据需求蓝图中设定的验收断言,生成单元测试和集成测试,测试数据里会刻意构造一批一万条订单的压测样本,确保导出接口在数据量大的场景下不会超时。审查Agent则站在另一个视角:检查编码Agent是否遵守了团队规范,有没有把事务边界写得太宽,有没有在循环里做数据库查询,异常是否被合理捕获。
这两个Agent会互相“挑刺”:测试Agent发现某条用例跑不过,会把失败信息反馈给编码Agent;审查Agent发现代码风格或架构问题,会把修改建议推回去。但这个循环不能无限进行下去——我在流程定义里设置了一个迭代上限(通常会限定为两到三轮)。超过上限还没有收敛,就自动升级到“负责人面前”进行人工裁决,而不是让两个Agent在不可调和的方案上互相空转。这个设计是血的教训换来的,后面会展开讲。
3.4 发布Agent与人工审批闸门:最后的动作要交给人
所有开发测试工作完成后,发布Agent负责准备发布计划:包括编译产物的校验、灰度批次设置、回滚预案、监控指标页面。但在我的流程里,它绝不能在没有任何人工授权的条件下直接推送生产环境。
原因不复杂:生产环境的风险属性不同于开发环境,而且合规上也要求有“人对发布行为负责”。所以这个节点一定要设人工审批闸门——发布Agent会把“将要执行的动作、影响范围、回滚策略、风险描述”整理成一份申请单,推给负责人。负责人点“通过”之后发布Agent才会执行;如果审批超时,还会自动提醒,但不会自作主张。这个设计原则是:风险等级越高的节点,人的参与应越深;自动化是为了减少低风险环节的人工消耗,而不是去承担高风险决策。
3.5 检查点的价值:Agent之间信任的地基
在整个流程里,最容易被人忽视但又最致命的细节,是“检查点”的设计。所谓检查点,是Agent在从一个状态转向下一个状态之前必须完成的确认动作,比如“确认编译通过”“确认需求蓝图的验收断言全部覆盖”“确认测试报告文件存在且路径可访问”。
没有检查点,Agent之间就开始“互相猜”:测试Agent可能以为编码Agent已经处理过某条边界逻辑,编码Agent可能以为测试Agent是基于最新代码跑的用例。检查点就像家里的路由器重启后的自检阶段,它强制流程里的每一环都先把“上一环的产出确实符合标准”这件事确认清楚,才能进入下一步。从工程实践看,Agent工作流的崩溃和产出质量滑坡,绝大多数不是因为单个Agent能力不行,而是因为Agent之间的交接纪律松散。检查点就是那套制动系统,不参与产出却支撑着整个协作链路的可靠性。
4. 多Agent协同:团队职能边界正在被重划
4.1 从职能型接力团队到“功能小队+Agent集群”
传统软件团队的组织形态是职能型的:产品、后端、前端、测试、运维,按部门或小组归属,跨职能协作要通过“接口人”来完成。这种结构在流程上容易形成“部门墙”,即便一个需求横跨五个职能,实际真正干活的也往往就是各职能小组里的几个人。
Agentic Workflow让我看到一种新的形态:一个需求由一个“功能小队”承接,队伍里有少量核心成员(可能就两三个人),然后配置一组覆盖不同技能的Agent集群——需求分析Agent、后端Agent、前端Agent、测试Agent、发布Agent。人不再是单一职能的载体,而是针对需求目标统筹调度多个Agent的“能力管理者”。我曾经在一个模拟项目里,让一个由两名工程师+五个Agent组成的“超小团队”,完成了一个原本需要七八个人的迭代周期才能交付的功能。他们核心的做法就是:把人从机械操作里解放出来,全部精力投放到目标判断和结果验收上。
4.2 Agent之间的通信和记忆共享:事件驱动加项目黑板
多Agent协作最容易踩的坑是“无秩序沟通”——两个Agent通过反复聊天来同步信息,上下文越来越长,事实被逐渐扭曲。我在自己的项目里用的是“事件驱动+共享黑板”的模式:
每个Agent在完成一件事之后,会向事件总线发布一条结构化消息,例如“订单导出接口代码已完成,路径为xx,影响范围是xx,待测试验证”。其他Agent订阅自己关心的事件,拿到消息之后从“项目黑板”(一个共享知识库)里读取最新的产品需求基线、技术方案文档、接口约定说明,再开始自己的下一步动作。
这套机制显著减少了Agent之间的直接对话量,也顺便解决了一个重要问题——上下文精简。每个Agent只用关心自己的任务上下文,而不是把整个项目的所有信息都塞进上下文里。这就像公司里通知不是靠“挨个传话”,而是靠“大家看邮箱+白板公告”,信息损耗就会小很多。事件的最终去向是记忆系统,长期沉淀下来还能形成“项目知识库”,新加入的Agent可以快速初始化自己对项目的认知。
4.3 冲突裁决与社会化协作:Agent也会吵架
多Agent协作里一定会出现分歧的。举个我们实际遇到的例子:后端Agent在订单列表查询上采用索引A方案,审查Agent认为应该用覆盖索引B方案,理由是更适合当前的大数据量场景。看起来两边都有理,但到底听谁的?
我的做法是设置两类裁决机制。一类是“架构评审Agent”,它站在全局视角对双方方案给出折中建议,类似一个技术委员会的角色;另一类是“向上升级”,如果评审Agent也无法形成清晰判断(通常意味着这个决定里包含了业务权衡,而不只是技术问题),它会整理一份两方案利弊摘要,推给负责人做最终拍板。
这套“Agent吵架→Agent初审→人员终审”的链路,看起来多了两道环节,实际上比原来“两个同事在群里争论然后拉更多人开会”的效率高得多,因为它把“论据”和“决策信息”都结构化了,人拿到手的是已经整理好的决策材料,而不是一堆聊天记录。
4.4 治理边界:用权限体系防止Agent越界
多Agent协作还有一个非常容易被忽略的治理问题——权限。如果所有Agent都有修改代码、合并分支、部署服务器的权限,它们协作时确实能干活,但一旦某个Agent理解偏差,它可能向仓库里推入有问题的变更。一个成熟的Agent工作流,权限体系要跟人的岗位设置并行存在:
比如编码Agent有分支写权限但没有主干合并权限,测试Agent只有运行测试与上报结果权限而没有修改代码权限,审查Agent有建议和打回权限但无推送权限。这种权限约束不是多此一举——它在架构层面约束了每一个Agent的活动半径,让它们的失误无法被放大到不可收拾。我见过一些项目之所以Agent一多就乱,不是模型不行,而是权限没有先设计好。
5. 落地经验贴:我踩过的坑与补救方案
5.1 不要一上来就追求全流程“无人化”
如果你问我Agentic Workflow落地最重要的经验是哪条,我会说:从单点切入,先把一个环节跑熟,再逐步扩大边界。很多团队刚接触这个概念时容易热血上头,想一步到位把整个研发流程全交给Agent,结果往往几周后就因为不可控的失败而放弃整个方案。
我建议的渐进路线是:先选一个“判断密度高但风险较低的环节”做试点,比如代码审查或测试用例生成。让Agent先在这里积累经验、沉淀流程模板,也让团队建立对Agent产出的信任感和评估习惯。等这个环节稳定之后,再考虑把需求拆解、编码、发布这些环节逐步接进来。全流程重构是极其消耗组织能量的战略决策,不是一上来就可以轻易押注的赌注。
5.2 翻车现场一:Agent之间的“失忆接力”
我做过一次多人实验,当时让编码Agent改完订单导出模块之后,直接把最终代码路径发给测试Agent。结果测试Agent拿到的信息只有代码路径,完全不知道这次改动的背景是“并发场景下有超时风险”,以及“应该重点验证大数据量情况”。于是它设计了一套基于旧理解的测试用例,测出了一个“系统正常”的结论,但这个结论对这次改动的目标毫无意义。
那次的修复方案是:给Agent间的消息补上“结构化摘要”——每次移交都强制包含变更目的、改动范围、影响面评估、重点验证建议。这个字段一开始被人觉得是形式主义,但后来证明这是保障Agent“不失忆”的地基设定。没有结构化摘要,Agent协作链条越长,事实扭曲越严重。
5.3 翻车现场二:测试Agent的自欺欺人
另一个让我印象深刻的坑,是测试Agent“自己出题自己考自己还会及格”。它的行为方式是:读了一遍实现代码,然后生成一套完全契合当前实现的测试用例,运行一下,全绿,宣布通过。本质上这等于学生自己给自己划考试范围——隐患一目了然。
后来我把测试Agent的工作方式改了:它必须先收到需求Agent生成的“验收断言”(每个需求点对应的可验证标准),比如“订单导出接口在并发请求下无脏数据”“数据量一万条时接口响应时间低于三秒”。它只能围绕这些断言来设计测试用例,并且被禁止从实现代码中反推测试内容。需求断言没有覆盖到的边界场景,它要明确标记为“未验证”,而不是自行脑补一个“通过”。这个改动直接把“质量保障”从一句口号变成了可审计的流程动作。
5.4 翻车现场三:两个Agent互不认账,流程空转到崩溃
还有过一次堪称灾难的体验:审查Agent和编码Agent在一处事务边界的写法上产生了分歧,编码Agent改了,审查Agent觉得改得不对,打回,编码Agent又改,审查Agent又打回……双方来回折腾了二十多轮,费用持续膨胀,产出毫无进展。整个过程的根源在于流程缺少“熔断机制”。
后来我给Agent工作流统一加了三个防守规则:第一,任何Agent之间的迭代循环都设置硬上限(通常是三轮),到达上限直接升级给人处理;第二,低级跑偏(比如格式问题)用价格较低的小模型处理,高级规划步骤(如需求理解、方案设计)才调用大模型,控制成本;第三,每次循环结束都输出一份“当前分歧点摘要”,即使升级给人,人也能在不用翻阅完整聊天记录的前提下快速进入决策状态。这三个规则让Agent工作流从“耗钱的电子宠物”变成了“可控的团队成员”。
5.5 适合Agent化的环节,和不适合硬上Agent的环节
经历了这些坑,我整理了一份判断清单,不是所有环节都适合Agent化:
适合Agent化的典型场景有:按固定规范执行的代码审查;测试用例的生成与执行;重复性较高的接口变更、依赖升级;变更日志和发布说明的自动撰写;跨模块影响面的静态分析扫描。这些共同点是“有一定判断复杂度、但判断规则可以标准化、并且允许试错成本”。
相反,这些环节我建议一定要人留在里面:与客户直接进行的交付范围协商;需要平衡多方政治诉求的产品优先级决策;以及对安全性和合规性要求极高、出一点差错就造成重大损失的发布操作。Agent可以准备材料、提供分析,但最终决策权必须留在人的手里。
6. 开发者角色的重塑:从“写代码的人”到“问题定义者”
6.1 我自己的体感:最花时间的已经是“把问题讲清楚”
在这个方向摸索了大半年之后,我最大的体感是:我的日常从“把时间花在写代码上”变成了“把时间花在把问题定义清楚上”。以前开发者的核心能力是“把模糊需求翻译成严谨代码”,现在有了Agent之后,代码翻译的很大一部分可以交给Agent——前提是你给出的输入足够精确。
举个例子,过去说“帮我把导出功能加个权限控制”,这句话就可以开工了,现在的做法是必须把这句话拆成:谁可以导出(管理员还是普通用户)、哪些数据不能导出(涉及敏感字段的订单要排除)、导出动作是否需要审计留痕。这些边界不定义清楚,Agent产出的代码就非常容易“跑偏”。换句话说,需求表达的质量直接决定Agent产出质量。这背后其实是个数学逻辑:大模型在模糊输入下具有高随机性,只有在约束清晰、验收明确、边界可见的条件下,它的输出才会趋于稳定。
6.2 新的能力组合:流程建模、验收设计与Agent治理
作为一个适应了Agentic Workflow的开发者,我认为未来个人的核心竞争力会组合成三项新能力:
一是流程建模能力,也就是能把一个业务目标拆成Agent可以执行的“工作流拓扑”——哪些节点交给Agent,哪些节点必须留给人,节点之间的消息契约和检查点怎么定义。这有点像过去架构师画系统交互图,只是对象从服务变成了Agent。
二是验收设计能力,定义什么算“完成”、什么算“通过”,设计需求断言和测试断言,让Agent既清楚方向又知道边界。这项能力直接决定投入产出的上下限。
三是Agent治理能力,包括权限分配、成本控制、异常升级、风险熔断。未来每个团队都需要有一个人专门负责“看住Agent不出乱子”,这个角色定位类似传统团队里的发布经理与运维安全负责人的结合。
6.3 给正在考虑引入Agentic Workflow的团队建设者的建议
如果你是一个团队的负责人,正在评估要不要引入Agentic Workflow,我会给三条建议:
第一条,从小切口开始,不要全流程重构。找一个你团队里最痛且判断规则最清晰的环节,把Agent先用起来,让团队在实战中长出“指挥Agent”的手感,再决定是否扩大边界。
第二条,先设计好治理边界,再谈效率提升。权限清单、审批节点、成本上限、日志审计这些内容在第一天就应当定好,否则后期返工成本极高。等你运行一个月后再去补治理体系,流程里已经积累了大量“历史遗留”习惯,其间带来的混乱会让你心力交瘁。
第三条,重新定义团队里的“开发者”这个角色。招聘和培养的时候,除了考察编码能力,也要重视“表达能力、结构化思维和判断能力”。因为未来开发者最稀缺的能力,是能从模糊现实中提炼出精确问题边界的能力——这恰好是Agent做不到,而人最该牢牢守住的部分。
我自己在这个方向上摸索这么久,一个很深的感触是:Agentic Workflow带来的并不是某个环节单纯的“速度提升”,而是一次分工逻辑的变革。代码生产这件事,正在从“人的手艺”变成“人定义标准、Agent执行生产、人验收结果”的协作模式。这种模式下,开发者不会失业,但的确需要换一套操作系统来运转自己的职业能力。最后分享一个我们团队内部的小规矩:每次有新的Agent要上线协作之前,负责人在评审检查点时必须回答清楚三个问题——它要做什么,它能做什么,它不能做什么。想不清楚这三个问题的Agent,一律不放进主流程。这个小规矩虽然简单,却替我们避掉了大半的坑,值得你在开始之前也认真想一遍。