原文标题: Procedural Graphs: Self-Evolving Execution Structures for LM Agents
首次公开: 2026年9月8日(arXiv v1)
署名单位: 谷歌、佐治亚理工学院、北京大学
研究领域: 大语言模型智能体、工具调用、长程规划、程序性记忆
原论文: https://arxiv.org/abs/2609.09153
龙哥导读
大语言模型智能体最尴尬的失败,往往不是“不会做”,而是做着做着忘了顺序:答案还没核验就提交,融资快见底才申请,工具调了一圈又回到原点。谷歌等单位提出的程序图,不把过去经验压成一段松散笔记,而是把“当前走到哪、下一步能去哪、什么条件下该去、哪些坑别再踩”组织成可编辑的有向图。论文在多类基准与四种模型上给出系统实验,并让图从成功和失败轨迹中自我修正。
一个智能体如果只需要回答一道题,临场发挥也许够用。可一旦任务拉长到几十步,问题就变了:搜索之后要提取证据,提取之后要核验,核验失败要回退,多个工具还有依赖顺序。模型每一步都“看起来合理”,整条链却可能悄悄偏离目标。
这篇论文问了一个非常具体的问题:能不能把智能体的做事方法放到模型参数之外,变成一张可查询、可修改、还能从失败中进化的执行地图? 作者给出的答案叫“程序图”。它不是替智能体写死一条工作流,也不是再塞一大段经验总结,而是在自由推理与严格流程之间加一层结构化引导。

图1|知识图谱回答“它是什么”,程序图回答“下一步做什么”。图中节点、连线与文字依据论文 Figure 1 的核心思想重新绘制,并非论文原图。
一、智能体缺的不是更多记忆,而是顺序感
现在常见的智能体大多采用“思考—行动—观察”的循环。模型读任务和历史记录,选择一个工具,得到结果,再决定下一步。这种方式很灵活,但它把程序一致性的压力全部留给了生成模型:模型不仅要理解问题,还要从越来越长的记录里重建步骤依赖、判断哪些动作已经完成、哪些动作现在还不能做。
文本记忆能保存经验,却经常只告诉智能体“以前发生过什么”。例如,一条经验写着“提交前检查答案”,但当前任务究竟走到搜索、计算还是核验阶段,模型仍要自己判断。相似度检索还可能只捞出“提交”相关提示,漏掉前面的“检查答案”,结果就是建议本身没错,出现的时机却错了。
手工工作流解决顺序问题,却容易太硬。真实任务经常要重试、跳转和临时补证据,一条预先写死的流水线无法覆盖所有状态;如果每个领域都靠工程师维护状态机,成本又会迅速膨胀。论文的关键取舍是:把“允许怎样转移”写清楚,但不替求解器决定每一句推理和每一个答案。
程序图因此更像一张地铁图。节点不是城市知识,而是搜索、分析、测试、核验、提交等抽象步骤;有向边表示某一步之后允许进入哪一步。每条边还带三类文字属性:适用条件、执行指导和常见误区。地图告诉智能体哪些线路相连、在哪换乘、哪站容易坐反,但车厢里怎么思考,仍由模型完成。
二、一张程序图,具体存了什么
论文把程序图写成一个带属性的有向图。节点集合表示工具函数、技能、内部推理步骤或任务状态;边由“源节点—关系—目标节点”组成;属性映射再给每条边补上条件、指导和误区。这个形式看似学术,真正有价值的地方却很朴素:它把过去埋在提示词里的执行契约拆成了可定位的零件。
论文举了一个财务规划例子。假设边从“现金流预测”指向“融资申请”,条件可以写成“预计可用现金低于安全缓冲”;指导可以写“尽早提交,因为资金到账有延迟”;误区则提醒“已有申请未处理时不要重复申请”。同样一句融资建议,如果没有条件和顺序,只会变成泛泛而谈;放进图里,它才知道什么时候该出现。
这里还隐藏着一个工程优势。知识放在模型权重之外,团队可以查看它、审计它、回滚它,也能只修改一条边,而不用重新训练整个模型。对于企业流程、合规工具调用和长周期任务,这比“希望模型在海量上下文里自己悟出来”更容易管理。
但程序图也不是越大越好。把整张图原样塞给模型,信息可能比原来的历史记录还杂。论文真正有效的设计,不只是建图,而是让智能体先定位自己当前所在的节点,再只读取附近的局部结构。
三、在线推理:先定位,再看两跳邻域
在线执行时,程序图保持冻结。系统先查看智能体最近一次动作,把它与图中的节点做精确匹配。第一次执行从“开始”节点出发;匹配成功后,以当前节点为中心展开两跳邻域;如果匹配失败,才退回读取完整图。两跳的意义是既能看到直接下一步,也能看到再往后一层的依赖。
接着,一个指导模型读取局部子图、用户任务和最近三步轨迹,把静态边属性翻译成当前场景下的短指导。它可能提醒“先核验结果,再输出”,也可能提示“不要重复搜索同一个来源”。最后,求解器把任务、历史和这段指导放在一起,仍由自己生成下一步动作。
这是一种软约束:图负责缩小合理动作空间,模型保留处理例外和生成具体内容的自由。 相比状态机,它没有把智能体锁死;相比纯提示,它又明确保留了步骤之间的拓扑关系。

图2|在线阶段依次定位当前节点、提取两跳邻域、生成情境指导并执行动作;离线阶段才根据轨迹修改图。流程依据论文 Figure 2 与公式(2)—(6)重新绘制。
根据论文方法整理的伪代码
输入:任务 q、历史轨迹 T、冻结的程序图 G
当前节点 u ← 匹配最近一次动作
如果匹配成功:子图 ← u 的两跳邻域
否则:子图 ← 完整程序图
指导 g ← 结合子图、任务和最近轨迹生成情境建议
下一动作 a ← 求解器根据 q、T、g 选择
执行 a,并把观察结果追加到轨迹
重复,直到任务结束
伪代码里最重要的不是“再调用一次模型”,而是局部化。完整图可能包含几十种步骤,当前节点附近的两跳结构却只保留此刻相关的前后关系。论文后面的消融实验也显示,直接注入完整图并不稳定,完整图经过生成式指导甚至会让部分任务明显变差。
四、离线进化:失败不是一句反思,而是一组可编辑结构
图的更新发生在离线阶段。每一轮先用当前保留的图跑一批训练任务,记录完整轨迹和最终得分。改图模型比较高分与低分轨迹:失败路径里是否反复绕圈?成功路径里是否出现稳定的多步捷径?然后它提出结构化编辑,包括增加节点或边、删除把智能体引向失败的分支,以及通过“删掉再重加”修改边属性。
候选图先经过结构检查,再在独立验证集上执行。只有平均验证分不低于当前图,修改才会提交;否则回滚。这个“不降分即可接受”的规则并不等于每次都能发现真正更优的图,但至少避免训练批次里看起来漂亮的修改直接进入线上。
被拒绝的修改也没有白费。系统把候选图、编辑操作、训练轨迹和验证结果写入拒绝记忆,下一轮改图时作为负面证据。于是“自我改进”不再只是反复问模型“请再优化一次”,而是明确告诉它:这条路试过,验证集掉分,不要换个说法又来一遍。
这套机制与把所有经验微调进模型有明显区别。它学习的是程序知识的外部结构,没有更新底层模型权重;接受、拒绝和回滚都有对象。对需要频繁纠错的智能体系统来说,“哪一条程序知识被改了”往往比“模型整体好像更聪明了”更重要。
五、主实验:24个组合里,21个第一或并列第一
论文用同一个“思考—行动—观察”求解器比较八种方案,区别只在经验如何存储和复用。基线包括不带记忆的普通求解器、经验摘要、历史轨迹检索、自然语言洞察、状态条件指南、线性工作流和文字动作转移规则。这样做比“换了模型又换了提示词”的比较更干净,因为核心变量就是程序图。
主表覆盖六类基准:多跳问答、多轮指令保持、专业任务评分、具身家庭任务、合规工具使用和多轮函数调用;模型包括 Claude Sonnet 4.6、Gemini 3.1 Pro、Gemini 3.5 Flash 与 Grok 4.1 Fast。程序图在24个模型—基准组合中有21个第一或并列第一;相对每个设置里的最强基线,它取得19胜、2平、3负。

图3|三项最大代表性增益。多轮函数调用准确率从58.00%升至67.00%;专业任务评分从71.37升至78.78;合规工具使用通过率从73.04%升至80.00%。数值据论文主结果表重绘。
最大差距出现在 Gemini 3.5 Flash 的函数调用基准,准确率比最强基线高9个百分点;Gemini 3.1 Pro 在专业任务评分上高7.41分,在合规工具使用上高6.96个百分点。单个数字并不能代表所有智能体,但19胜3负说明,这不是只在一个数据集上碰巧有效。
更值得注意的是,没有任何一个传统基线能稳定拿第二。某种记忆方式可能适合问答,却不适合具身行动;线性工作流在规则明确时有效,任务出现回退和分支时又容易吃亏。程序图的优势并不是某个神奇提示词,而是同时保留了条件、顺序、局部结构和可编辑性。
六、长程任务:会不会提前融资,比少调几次工具更重要
论文的长期企业经营模拟器把智能体放进一家公司。它要管理现金、用户、运营成本、贷款损失与融资,还要经历三次事先不告诉智能体的宏观冲击。这里最难的不是某个月算对一张表,而是提前做决定:融资需要一到六个月才能到账,等现金见底再申请,逻辑上正确,时间上已经来不及。
实验出现了一个很有启发的现象。程序图并不总是减少工具调用。对 Gemini 3.5 Flash,它把每月工具调用从18.94次降到12.53次,并改善企业得分;但在 Claude Sonnet 4.6 和 Gemini 3.1 Pro 上,调用数反而增加。因为这两个模型原本检查得太少,图会提醒它们在融资前查看预测和市场状态。
所以,真正与四种模型存活表现一致相关的,并不是“工具越少越好”,而是提前融资。未引导的 Gemini 3.5 Flash 没有足够早地申请资金,平均融资额为0;程序图引导后,它会在稳定月份就启动融资,平均筹得939万美元。Grok 4.1 Fast 的程序图版本平均筹得3011万美元。
好程序不是一味省步骤,而是在关键步骤上让智能体更早行动。 这比单纯比较调用次数更接近真实工程:少一次无效搜索有价值,多一次必要核验也有价值,指标必须服从任务结果。
七、从零长图,也能修复一张错误的专家图
作者比较了五种建图方式:手工专家图、专家图加一次静态更新、专家图持续进化、从最小骨架一次性构建,以及从最小骨架持续进化。结果没有把“专家先验”神化。在多跳问答基准上,从零开始持续进化的模式拿到最高的78.79综合匹配分和66.30精确匹配分,分别比无图基线高7.58和7.50分。
多轮指令保持任务更有戏剧性。手工专家图把总体成功率从无图基线的87.50%拉低到58.93%;只做一次静态更新又降到53.57%。但持续进化版本最终恢复到92.86%,比最初专家图高33.93个百分点。专家写出的结构可以有价值,也可以把错误顺序包装得很专业;真正关键的是,系统有没有独立验证和回滚。
这组结果也提醒团队:不要把流程图本身当成真理。图只是可以被检验的假设。一个看起来完整的流程,如果真实执行持续掉分,就应该被修复,而不是因为“这是专家设计的”继续强推。
八、十轮自进化,为什么中间四轮没有更新
在企业经营任务的十轮进化里,验证集基线的完整周期存活率为0,平均寿命34.8个月。第一轮发现“先审计现金、再预测可用周期、最后决定融资”的主干顺序,验证存活率一下升到45%;第二轮增加读取历史笔记的步骤,存活率升到80%,每月工具调用还从17.23次降到3.08次。
第三到第六轮没有任何修改被提交,其中一轮甚至在结构检查阶段就被挡住。第七轮删除容易让智能体空等的分支,第八轮加入一个行政处理旁路,验证存活率到90%。第十轮候选图掉分,被验证门拒绝,循环停止。

图4|验证集存活率的关键节点。第3—6轮没有提交更新,第10轮被拒绝;最终返回图在测试集达到85%存活率,而无图基线为0%。数值据论文 Figure 4 与正文重绘。
作者还特意区分“搜索过程中见过的最好测试结果”和“最终返回图”。某个中间轮次曾达到95%测试存活率,但最终报告的是返回图的85%,因为拿测试集挑最高点会构成选择偏差。这个处理很重要:自进化系统最容易把反复试验产生的幸运峰值写成能力,论文没有这么做。
不过,每个数据划分只有20次模拟,接受或拒绝可能由一两次结果决定。论文也承认,这些轮次更适合读作搜索轨迹,而不是每一轮都有统计显著性的独立结论。验证门降低了明显退化的风险,却没有消除小样本噪声。
九、局部图赢了,但代价并不便宜
消融实验比较了四种设置:不使用图、完整图直接注入、完整图先生成指导、局部子图生成指导。局部方案在多轮指令、专业任务和具身行动三个基准上都最好,分数分别为89.31、63.99和81.53。完整图生成指导在具身任务上只有54.48,反而远低于无图基线的72.58。
局部化相对完整图生成指导,在具身任务上减少70.9%的总令牌,在专业任务上减少18.1%,在多轮指令上减少14.8%。这证明“只看附近路线”确实能控制上下文膨胀。但与完全不用图相比,局部指导仍然更贵:专业任务和具身任务虽然步骤变少,总令牌却分别高33.4%和55.4%。
原因不难理解。每一步多了一个指导模型调用,而且指导本身也要占上下文。程序图解决的是执行质量,不是免费午餐。要把它用于高频产品,团队还需要考虑指导缓存、只在高风险节点触发、用更小模型生成指导,或者把稳定边编译成确定性规则。
此外,论文让指导模型、改图模型和求解器使用同一底层大模型,便于控制变量,却没有回答跨模型迁移。如果一张图由昂贵模型学出,换成小模型执行是否仍有效?工具名称变化、接口参数变化后,节点匹配能否稳定?这些决定了程序图是可复用资产,还是绑定某套代理框架的配置文件。
十、和相似路线相比,它补上了哪一环
一篇相关工作关注大规模应用程序接口调用,把工具组织成层级结构,并通过自我反思选择合适工具。它回答的是“面对海量工具,怎样找到要用的那一个”。另一篇工作进一步利用工具依赖图做检索,重点仍是让模型在大工具库中找到相关工具和依赖关系。
程序图的重心不同。它的节点可以是工具,也可以是核验、推理、等待、状态判断等抽象步骤;边不仅表示工具依赖,还写明转移条件、执行指导和常见误区。更关键的是,它把图拓扑和属性一起纳入成功/失败轨迹驱动的离线修改,并用独立验证集决定是否提交。
因此,这三条路线可以理解为逐层扩展:先从大量工具中找到候选,再理解工具依赖,最后把工具与非工具步骤组织成一套可进化程序。当前论文并没有证明它能替代所有工具检索系统;更现实的组合是,前端检索负责缩小工具集合,程序图负责约束长链执行顺序。
十一、落地时最值得先试的三个场景
第一,步骤依赖明确、错误代价高的代理。 例如数据分析要先检查字段再建模,代码修改要先复现再打补丁,研究代理要先核验来源再形成结论。这些任务不是没有答案,而是顺序错一次就会让后面全部建立在错误基础上。
第二,有大量执行轨迹、又难以直接微调模型的企业流程。 程序图可以把流程经验留在外部,明确记录哪条规则来自哪些成败案例。业务规则变化时,修改图比重新训练更快,也更容易审核。
第三,需要长期计划而非单步准确率的任务。 企业经营实验说明,真正有效的指导可能不是让每一步更少,而是让关键动作更早。凡是存在延迟反馈、资源耗尽和不可逆窗口的任务,都值得尝试把“什么时候行动”写进结构。
不适合的场景也很清楚。任务只有两三步、工具关系简单时,多一次指导调用可能得不偿失;节点无法稳定匹配、动作命名经常变化时,图会频繁回退到完整结构;没有可靠验证集时,所谓自进化容易把偶然成功固化成坏流程。
第四,验证标准要覆盖真正昂贵的失败。 如果验证只看任务是否完成,却不看重复调用、延迟动作、错误提交和资源耗尽,进化过程就可能学会用更高成本换分数。企业落地时,应把质量、时延、调用费用、合规步骤与不可逆风险一起写进接受标准。
程序图还会把原来散落在资深员工经验里的“先做什么、什么时候停、出错后退到哪”显性化。这既方便新人和智能体复用,也会暴露团队流程本身的矛盾。两个专家给出相反转移时,不能简单让模型投票,而要回到真实任务结果、责任边界和业务目标做取舍。
从这个角度看,部署程序图不是单纯加一个算法模块,而是在建设一套可执行流程知识库。图的质量取决于轨迹日志是否完整、评估器是否可信、节点命名是否稳定,以及团队是否愿意删掉已经失效的规则。技术可以提出候选修改,最终的生产治理仍不能省略。
一个务实的起点,是先挑一条经常失败、步骤不超过十个、结果可以自动评分的流程。把真实轨迹画成小图,观察局部指导是否减少同类错误,再决定是否扩大。不要一上来就为整个公司画“万能程序图”;图越大,节点匹配、维护责任和验证成本越容易失控。
十二、龙哥点评
这篇工作最值得肯定的,不是又给智能体加了一个“记忆模块”,而是把程序性知识变成了可编辑、可验证、可回滚的外部对象。行业里很多代理问题最后都会被归咎于模型不够强,程序图提醒大家:一部分失败其实来自系统没有保存顺序、条件和反例,只能让模型每次临场重建流程。
实验设计也比较扎实。它跨多类任务和四种模型,控制了共同求解器,既报告主结果,也报告完整图失败、令牌开销、小样本验证噪声和三次落后。特别是没有拿95%的搜索峰值冒充最终测试结果,这种克制比再多一个漂亮数字更能增加可信度。
龙哥认为,程序图真正的工程价值在“外部契约”四个字:哪些步骤允许连接、什么时候触发、错误修改如何回滚,都不必藏在模型权重里。它特别适合高风险长链任务,但目前还不是一套便宜的通用插件。每步指导增加令牌,精确节点匹配依赖稳定接口,图在不同模型和不同工具命名之间能否迁移,也需要更多实验。
还有一点很现实:外部结构只有在评估器可靠时才值得信任。若评分器偏爱表面完成、忽略隐藏风险,验证门会稳定地接受“更会讨好评分器”的图。团队不能只设计怎么改图,还要持续检查评分目标是否对应真实业务结果,并保留人工复核高风险修改的入口。程序图把知识从黑箱里拿出来了,但不会自动替人定义什么才是好结果。
如果把大模型看成擅长临场判断的司机,程序图不是替司机握方向盘,而是提供一张能从事故记录中持续修订的路线图。 真正成熟的智能体系统,大概率既不会只靠司机记忆,也不会只靠一条写死的轨道,而会在自由推理、结构约束和可验证更新之间找到平衡。
龙迷三问
第一问:程序图是不是另一种工作流? 它包含工作流的顺序信息,但更柔软。图提供可行转移和情境指导,求解器仍能自由推理;图的结构还能从轨迹中修改,而不是只能靠人工重写整条流程。
第二问:自进化会不会越改越坏? 会,所以论文设置了结构检查、独立验证集、回滚和拒绝记忆。它降低了风险,却不能消除小样本波动和验证集过拟合。生产系统还需要更长时间窗口、人工审计和版本化发布。
第三问:它会让智能体更省钱吗? 不一定。局部图比完整图省,但相对无图基线仍可能增加总令牌。它首先提升的是执行质量和顺序稳定性。只有减少错误重试、缩短任务步骤带来的收益超过指导调用成本时,系统总成本才真正下降。
主要参考资料
原论文:可自进化的智能体程序图
https://arxiv.org/abs/2609.09153
相关论文:面向大规模工具调用的层级智能体
https://arxiv.org/abs/2402.04253
相关论文:基于工具依赖图的检索方法
https://arxiv.org/abs/2508.05152
本文基于龙哥读论文 PaperDaily 数据库及 PaperMiner 的 MCP 进行汇总整理。本文为论文解读与个人学习笔记,不构成任何论文审核意见,及对产品能力、安全性或商业可用性的保证。