[{"data":1,"prerenderedAt":374},["ShallowReactive",2],{"article:column:/column/llm-to-agent-learning/33":3},{"id":4,"title":5,"body":6,"description":366,"extension":367,"meta":368,"navigation":369,"path":370,"seo":371,"stem":372,"__hash__":373},"column/column/llm-to-agent-learning/33.md","33｜计划、搜索与多Agent：多做几步为何也会更脆弱",{"type":7,"value":8,"toc":347},"minimark",[9,13,16,21,24,27,30,33,37,40,43,46,49,56,59,62,65,69,72,75,78,81,84,87,91,94,97,100,103,109,112,115,119,122,125,128,131,135,138,141,144,154,162,165,168,172,175,178,181,189,192,195,201,204,207,210,213,217,225,228,231,234,238,244,247,252,255,260,263,268,271,274,279,282,287,290,295,298,303,306,309,314,317,322,325,330,333,338,341,344],[10,11,12],"p",{},"一个助手检查海报时遗漏了报名截止时间。于是我们加一位计划者、一位搜索者、一位复核者，期待三者相互补漏。结果也可能是：计划者没把截止时间列进目标，搜索者依计划跳过，复核者只检查计划上的项目，三个人一致宣布完成。",[10,14,15],{},"增加步骤和角色，确实能带来更宽的探索与更细的检查，也会增加信息丢失、等待和错误传播。本章沿着任务依赖拆解这些收益与代价。核心问题不是“用几个Agent”，而是新增的一步究竟提供了什么独立价值。",[17,18,20],"h2",{"id":19},"_1计划是对未来动作的假设","1．计划是对未来动作的假设",[10,22,23],{},"计划可以是一列步骤，也可以是一张依赖图。核对活动海报时，提取海报字段与查主办方最新公告可以同时进行；比较差异必须等两者完成；生成结论又依赖比较结果。箭头表达“后一步需要前一步的产物”，不是装饰性的顺序。",[10,25,26],{},"这种表示能暴露缺口。假如计划中有“输出一致”，却没有任何节点负责取得官方证据，问题在执行前就已经存在。把目标细化到可检验的中间产物，比写“认真、全面、深入地检查”更有用。",[10,28,29],{},"但计划不是事实。它基于开始时有限的信息：也许官网只有图片，也许活动名称变化，也许报名页跳转到了新域名。执行后的观察应更新计划。遇到新障碍还机械地照旧推进，只会把漂亮的计划变成过时的假设。",[10,31,32],{},"计划还不能越过目标与权限。发现海报错误，可以增加核查步骤；未经授权，不能把计划扩成“联系主办方并公开更正”。合理重规划改变完成路径，不擅自扩大可以采取的行动。",[17,34,36],{"id":35},"_2串行与并行怎样改变等待","2．串行与并行怎样改变等待",[10,38,39],{},"构造一个教学流程：读取海报需2个时间单位，查官方公告需5个单位，比较需3个单位，最终整理需1个单位。单位没有具体秒数，不是模型实测。",[10,41,42],{},"如果四步完全串行，总时间为2＋5＋3＋1＝11。若前两步独立并行，它们一起开始，需要等较慢的公告查询完成，即max(2，5)＝5；之后再比较和整理，理想总时间为5＋3＋1＝9。",[10,44,45],{},"max表示取较大值。它提醒我们，并行不是把2和5的平均值作为等待。两份资料都必需时，后续只能等最后一份到达。9也只是忽略启动、传输、排队与通信成本的理想值。",[10,47,48],{},"假设协调多花2个时间单位，总等待又回到11。即使墙上时钟时间没有缩短，总体工作量还包括额外协调。对很小的任务，拆给多位协作者可能没有收益；对耗时且独立的资料研究，并行则可能很值得。",[10,50,51],{},[52,53],"img",{"alt":54,"src":55},"33｜计划、搜索与多Agent：多做几步为何也会更脆弱：图1","/collections-assets/llm-to-agent-learning/46e964efedc60c5887034c81db4b228237d3cff226330bc4c708e10f5817a097.png",[10,57,58],{},"图1｜条段长度按相同的时间比例绘制，均为教学单位。依赖箭头要求两份资料到齐才比较；关键路径5＋3＋1＝9。下方列串行11与额外协调2的账，不把协调当作免费。",[10,60,61],{},"还应看到“关键路径”：决定总时长的最长依赖链。本例是查公告5、比较3、整理1，总计9。把海报读取从2优化到1，整体仍是9；若把公告查询从5降到4，整体才会降到8。优化一个不在关键路径上的小步骤，可能对用户等待没有可见影响。",[10,63,64],{},"这里的“独立”还隐含了资源条件：两步可以同时运行，不争抢唯一的工具名额，也不会相互改写对方要读的数据。任务图中没有数据依赖，只说明不必等待对方的产物；它不自动证明外部操作没有冲突。若同时只允许一个读取请求运行，两步仍要排队，9就不再是可达到的时间。",[17,66,68],{"id":67},"_3多agent不是moe也不必是多种模型","3．多Agent不是MoE，也不必是多种模型",[10,70,71],{},"第12章的MoE在模型内部选择前馈专家，处理的是隐藏向量。这里的多Agent发生在系统层：每个角色拥有一定任务、上下文和工具，交接的是消息、证据或文件。它们可以使用同一种底层模型，也可以使用不同模型。",[10,73,74],{},"给同一个模型分别贴上“研究员”和“审核员”的标签，可以改变提示与关注范围，却不自动创造独立知识来源。两者可能共享训练偏差，也可能被同一错误资料误导。角色名不能替代实际职责与证据差异。",[10,76,77],{},"一种组织方式是中心协调者分派任务，再汇总结果；另一种是角色之间移交控制权；还可以让一个主Agent把另一个Agent当作工具调用。谁有权决定下一步、谁维护全局状态、谁负责最终验证，必须明确，不能以为“大家都会负责”。",[10,79,80],{},"多Agent可能通过专业上下文减少干扰，例如一位只核实日期，一位只检查图中文字；也可能通过独立搜索找到不同证据。收益来自信息和检查方式的互补，不是对话人数本身。",[10,82,83],{},"把职责写成输入与产物，可以检查这种互补是否存在。仍用虚构海报任务：资料核验者拿到活动名和主办方范围，交回当前公告的原文片段、适用日期、页面版本及缺证项；字段核对者拿到海报和这份证据，交回逐字段差异，并标明哪些判断依赖哪个来源。协调者负责把两份产物合并成最终状态。",[10,85,86],{},"这相当于模块的输入输出契约：后一步需要的不是一句“我查好了”，而是一份能支持比较的证据。如果两位角色都只读同一旧公告，改角色名没有增加信息；如果第二位只检查第一位的措辞，版本错误也可能原样通过。分工是否有价值，要看新增了哪份观察或哪种能发现具体错误的检查。",[17,88,90],{"id":89},"_4为什么一致意见仍然可能全错","4．为什么一致意见仍然可能全错",[10,92,93],{},"设三位评审各有80%的概率判断正确。先作非常强的教学假设：对同一道二选一问题，各自判断独立，错误不会相互影响。多数投票正确有两类情况：三人全对，或恰好两人对。",[10,95,96],{},"三人全对的概率是0.8×0.8×0.8＝0.512。恰好两人对，有三种“谁错了”的位置，每种概率0.8×0.8×0.2＝0.128，合计0.384。两类相加为0.896，即89.6%。",[10,98,99],{},"这个数字很漂亮，却高度依赖假设。如果三个人总是依据同一份过时公告，且在相同题目上一起对、一起错，多数投票仍只有80%，没有上述提升。若后两人先看到第一人的答案，他们还可能被带偏，连原本的差异都消失了。",[10,101,102],{},"我们因此要区分独立角色与独立证据。更换提示词但使用同一来源，可能只获得表达差异；使用最新原始公告、实际报名页面和独立时间核对，才可能补充不同信息。即使来源不同，也要追溯是否都抄自同一份旧稿。",[10,104,105],{},[52,106],{"alt":107,"src":108},"33｜计划、搜索与多Agent：多做几步为何也会更脆弱：图2","/collections-assets/llm-to-agent-learning/b7fa2b179577f921850f904c667ba17343b140d3bbb82859cc1a83a6d755ecc8.png",[10,110,111],{},"图2｜二元判断、各人正确率80%且相互独立时，多数正确由“全对”和三个“恰有两人对”的互斥事件组成，合计89.6%。下方的共同失败对照中三人总是同对同错，准确率仍为80%。不同角色或不同模型不自动满足独立条件。",[10,113,114],{},"此外，多数票主要适用于可聚合的判断。三份互不相同的文章不能靠逐字投票变成好文章；三个合法排班也不必选最常出现的一个。聚合方式应符合任务结构，而不是把“投票”当成统一答案。",[17,116,118],{"id":117},"_5把检查放到真正会失败的地方","5．把检查放到真正会失败的地方",[10,120,121],{},"用一个更具体的例子比较三种复核。海报写14:00，旧公告也写14:00，最新公告改为15:00。第一种方法让原模型重新阅读已有材料，它可能发现内部矛盾，但如果输入里根本没有新公告，就没有凭空知道更改的可靠依据。",[10,123,124],{},"第二种方法请另一模型评价原答案。若它得到同样的旧材料，也可能赞同14:00；若任务提示明确要求检查来源日期，它至少可能指出证据不足。差别在检查标准是否覆盖失败模式。",[10,126,127],{},"第三种方法直接读取最新官方公告，加入新的可核查观察。它能纠正过时问题，但也要确认活动身份、公告日期和时区，避免拿到同名活动的更新。外部证据不是天然无误，只是提供了与原答案不同的检验路径。",[10,129,130],{},"一个好的复核任务应说明输入、检查标准和期望输出。例如“核对结论中的每个时间是否有当前主办方来源；报告冲突和缺证项”，就比“请确认这份答案很好”更容易发现问题。若复核者只能给通过或不通过，没有列出依据，协调者也难以定位应修哪一步。",[17,132,134],{"id":133},"_6搜索与重规划怎样接在一起","6．搜索与重规划怎样接在一起",[10,136,137],{},"第21章已经展示了搜索树：保留多个候选状态、扩展、评分、剪枝。放进Agent系统后，分支可以是不同资料路线或不同任务分解，不只是不同文本答案。",[10,139,140],{},"例如查不到活动地点，可以尝试主办方公告、场馆活动页或报名页。三条路线未必都要走到尽头；如果一条提供了明确且足够新的证据，其他路线可能用于交叉确认，也可能因价值很低而停止。",[10,142,143],{},"这里要区分“候选路线没有信息”和“目标事实不存在”。搜索结果为空，可能是关键词不对或资料未被索引，不等于活动没有地点。把检索失败写成事实结论，是状态更新中常见的错误。",[10,145,146,147],{},"ReAct原始研究把语言推理与环境动作交替组织，让模型利用观察继续行动。它展示了一种连接推理和行动的研究方法；并不是任何写上“ReAct”的提示都会获得可靠计划与正确工具结果。",[148,149,153],"a",{"href":150,"rel":151},"https://arxiv.org/abs/2210.03629",[152],"nofollow","ReAct原论文",[10,155,156,157],{},"Tree of Thoughts研究则把中间思考片段当作可以探索、评价和回退的状态。在读这类研究时，要看任务、搜索宽度、评价方法和预算，不能只从名称推断适用于所有开放世界任务。",[148,158,161],{"href":159,"rel":160},"https://arxiv.org/abs/2305.10601",[152],"Tree of Thoughts原论文",[10,163,164],{},"评价分支的标准也会影响搜索结果。如果只奖励回答自信或篇幅完整，搜索可能反复挑中最像正确答案的错误分支；增加候选越多，还可能越容易碰到评分者偏爱的漏洞。可以先用可核查事实排除不成立的路线，再比较覆盖范围和资源消耗；有争议的判断保留为未确认，不因它得分高就提升为事实。",[10,166,167],{},"搜索同样需要停止条件。新分支是否有希望补上一个具体缺证项，比“还能再想一轮”更有判断价值。已有证据满足任务时应结束；剩余路线无法在预算与权限内解决时，应报告缺口。开放探索并不要求无限扩展，每个新增分支都应说明它要消除哪一种不确定性。",[17,169,171],{"id":170},"_7通信是信息处理也是一种损失来源","7．通信是信息处理，也是一种损失来源",[10,173,174],{},"把一份长报告交给协调者时，子任务常只返回摘要。摘要能节省上下文，却可能删掉关键限定：“仅适用于线上报名”“地点待最终确认”“此页是历史存档”。如果这些条件在传递时消失，汇总者会得到看似确定但实际过强的事实。",[10,176,177],{},"因此交接内容应包含结论、来源、时间、适用条件、未解决的问题，以及实际完成了什么。不要只交“全部正常”。对于高影响结果，协调者还需能回到原始证据，而不是把子任务回答当成不可质疑的事实。",[10,179,180],{},"共享状态也会引入冲突。两位协作者同时修改同一结论，一位依据新公告写南厅，另一位依据旧公告改回北厅，最后保存的内容不一定最新。版本检查、单一写入负责人和明确合并规则，都是协作系统的一部分。",[10,182,183,184],{},"还要区分内部共享记录与外部共享对象。假设另一个任务已获准修订海报，甲负责地点、乙负责时间：两者都读取同一旧版，甲保存“南厅＋14:00”，乙随后整页保存“北厅＋15:00”，甲的地点修改就丢失了。职责字段不同，仍可能写到同一外部对象。可以先让工作者只交差异，由一个执行者合并后提交；提交时还要由服务检查预期版本，避免覆盖其他人的新修改。内部只有一个合并者，并不能独自锁住外部世界。HTTP的条件请求提供了这类防覆盖机制：服务在写入前检查目标是否仍符合指定条件，而不是只在客户端先看一眼。",[148,185,188],{"href":186,"rel":187},"https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.1",[152],"RFC 9110条件请求",[10,190,191],{},"看一条实际交接怎样变弱。教学原文是“线上报名入口L可用；现场报名未核实”，若摘要只剩“报名已核实”，就删掉了适用范围，把未知变成确定。完整交接可以很短：“L已打开；仅线上；现场未知；来源报名页v2”。短消息仍要携带限制，不是越长越安全。",[10,193,194],{},"图3再把并发冲突接到这条消息后：两位工作者提交证据提议，只有协调者合并当前状态。新旧公告不按消息到达先后决定胜负，而按同一活动、适用时间、明确修订关系判断；无法判定时保留冲突。版本标记用于发现“我根据旧状态做了修改”，不代替证据本身的适用性检查。",[10,196,197],{},[52,198],{"alt":199,"src":200},"33｜计划、搜索与多Agent：多做几步为何也会更脆弱：图3","/collections-assets/llm-to-agent-learning/7bb564f3f54b45d72fd79b7941cffcc23016e5e0341cd66ab13d12d24ea01f8f.png",[10,202,203],{},"图3｜上半部用短消息展示摘要丢失“仅线上、现场未知”的后果；下半部让新旧证据进入一个合并点，保留v2南厅与v1被替代的记录。v1/v2是已确认前后修订关系的教学标识，不是只比较任意页面编号。",[10,205,206],{},"重复劳动是另一笔成本。如果两个Agent不知道对方已经查过同一个页面，可能反复访问并反复总结。合理分工需要明确边界，同时保留少量有目的的重复核验。完全不重叠未必安全，毫无目的地重叠又浪费资源。",[10,208,209],{},"通信规模也会随组织方式改变。若有四位协作者，两两之间各建立一条无方向沟通通道，需要4×3÷2＝6条；若所有人只经一位协调者交换，四位工作者与协调者之间是4条。前者便于直接讨论，后者便于保持统一状态，却可能让协调者成为瓶颈。这里数的是潜在通道，不是实际消息数；前者共有4个节点，后者是4位工作者加1位协调者，共5个节点。这是两种拓扑的计数例子，不是总人数、成本相同的受控性能比较。若固定总人数为5，全互联才是5×4÷2＝10条，与5节点星型的4条处于同一人数口径。",[10,211,212],{},"更多通道不一定带来更多有用信息。如果每条消息都重复同一结论，读写成本上升，证据覆盖却没变化。设计协作时，可以先列出谁必须知道哪一项结果，再只传递必要内容；同时保留原始来源，避免精简消息时丢失限定条件。",[17,214,216],{"id":215},"_8公开多agent案例怎样解释","8．公开多Agent案例怎样解释",[10,218,219,220],{},"Anthropic公开介绍过面向研究任务的多Agent系统，由主导Agent分派并行研究，并总结协调、工具设计与评测经验。这个案例说明分散信息收集可以适合并行组织，也强调更高token消耗和协调需求。",[148,221,224],{"href":222,"rel":223},"https://www.anthropic.com/engineering/multi-agent-research-system",[152],"多Agent研究系统工程说明",[10,226,227],{},"我们不把其特定系统结果转换成“任意任务多Agent必胜”的规律。研究型问题通常允许拆成相对独立的线索；需要紧密共享状态的任务，则可能花大量时间同步。不同系统的模型、提示、工具与预算也不同，不能只把Agent数量当成实验变量。",[10,229,230],{},"最稳妥的做法是保留简单基线。比较一个Agent加外部核验、多个Agent并行研究与固定工作流，记录成功率、延迟、总成本和失败类型。若复杂方案主要让输出更长，而没有减少关键错误，就没有充分理由继续扩展。",[17,232,233],{"id":233},"本章练习",[235,236,237],"h3",{"id":237},"题目",[10,239,240],{},[241,242,243],"strong",{},"问题1｜找到关键路径",[10,245,246],{},"读取海报2单位、查公告5单位，两者独立；比较3单位依赖两者，整理1单位依赖比较。忽略协调，算并行总时间；分别把海报读取缩至1、把公告查询缩至4，总时间各变成多少？",[10,248,249],{},[241,250,251],{},"问题2｜多数票的前提",[10,253,254],{},"三位评审判断同一道二选一问题，每位正确率80%。在相互独立时，列出多数正确的两类事件并算总概率；若三人永远同对同错，又是多少？",[10,256,257],{},[241,258,259],{},"问题3｜交一份能核验的记录",[10,261,262],{},"工作者只读了历史存档v1，没有找到更新公告，回复“没有改期，报名正常”。请改写为最小交接记录，保留已做的事、来源、限制与未知，并说明协调者是否能据此判整个任务通过。",[10,264,265],{},[241,266,267],{},"问题4｜分工独立，写入也独立吗",[10,269,270],{},"甲乙获准分别修订同一海报的地点与时间，都先读到“北厅＋14:00”。甲整页保存“南厅＋14:00”，乙随后整页保存“北厅＋15:00”。最后丢了哪项修改？为什么分工不同仍有冲突？给出一种保留两项修改、并检查外部新变化的提交方式。",[235,272,273],{"id":273},"思考提示",[10,275,276],{},[241,277,278],{},"提示1｜对应问题1",[10,280,281],{},"先列后续必须等待的产物，再找最长依赖链。",[10,283,284],{},[241,285,286],{},"提示2｜对应问题2",[10,288,289],{},"“恰有两位正确”有三种人选，不能只数一种。",[10,291,292],{},[241,293,294],{},"提示3｜对应问题3",[10,296,297],{},"“没找到更新”是搜索过程的结果。把这个结果和活动有没有更新分开。",[10,299,300],{},[241,301,302],{},"提示4｜对应问题4",[10,304,305],{},"区分任务负责的字段、工具实际写入的范围，以及读取后可能改变的目标版本。",[235,307,308],{"id":308},"参考答案与解析",[10,310,311],{},[241,312,313],{},"答案1｜对应问题1",[10,315,316],{},"原并行时间max(2,5)＋3＋1＝9。只把海报缩至1，仍为9；只把公告缩至4，则为8。比较要等两份资料都到齐，海报读取不是当前关键路径。",[10,318,319],{},[241,320,321],{},"答案2｜对应问题2",[10,323,324],{},"全对概率为0.8³＝0.512；恰有两位对的概率为3×0.8²×0.2＝0.384，总计0.896，即89.6%。若三人永远同对同错，多数票与任何一位结果相同，仍为80%。各自80%的边际正确率，不能单独证明89.6%。",[10,326,327],{},[241,328,329],{},"答案3｜对应问题3",[10,331,332],{},"可写：“已读主办方历史存档v1；只确认该版本所载时间，未找到当前更新公告；报名页尚未打开，链接状态未知；需要继续核实现行版本与报名入口。”协调者不能据此判整个任务通过：旧档案与检索未命中都不能证明没有改期，报名可用也缺少实际读取证据。等义、明确保留这些限制的答案均可。",[10,334,335],{},[241,336,337],{},"答案4｜对应问题4",[10,339,340],{},"甲的“南厅”丢失，最后为“北厅＋15:00”。乙虽只负责时间，整页写入仍携带旧地点，所以两个动作共享写入目标。可以由甲乙提交各自字段差异，再由一个执行者合并成“南厅＋15:00”，提交时要求服务验证目标仍是预期版本；若版本已变，重新读取并核对冲突，不能直接覆盖。等义的条件更新方案也可；仅在内部设协调者、却不检查外部版本，仍不足以防止其他写入者的变化。",[17,342,343],{"id":343},"下一章",[10,345,346],{},"搜索和协作会把更多外部文字送进系统。若网页里的文字不再只是事实，而是偷偷要求模型改变目标或泄露资料，原来的循环会发生什么？第34章追踪提示注入怎样跨越信任边界，以及系统应在哪些位置挡住它。",{"title":348,"searchDepth":349,"depth":349,"links":350},"",3,[351,353,354,355,356,357,358,359,360,365],{"id":19,"depth":352,"text":20},2,{"id":35,"depth":352,"text":36},{"id":67,"depth":352,"text":68},{"id":89,"depth":352,"text":90},{"id":117,"depth":352,"text":118},{"id":133,"depth":352,"text":134},{"id":170,"depth":352,"text":171},{"id":215,"depth":352,"text":216},{"id":233,"depth":352,"text":233,"children":361},[362,363,364],{"id":237,"depth":349,"text":237},{"id":273,"depth":349,"text":273},{"id":308,"depth":349,"text":308},{"id":343,"depth":352,"text":343},"从信息表示和学习出发，用可核算的例子与白板图逐步理解大模型、后训练、推理和Agent系统。","md",{},true,"/column/llm-to-agent-learning/33",{"title":5,"description":366},"column/llm-to-agent-learning/33","5A4QqGzguoRK-YpAsr8L3w-Ke28s5YYhc6wfdHGGjmI",1791935828930]