北大等提出自进化程序图PG:越用越聪明

新智元 · 经八阕原文

当Agent已经能够调用工具、使用技能并保存记忆,一个更进一步的问题是:这些能力怎样在任务中配合,又怎样从过去的执行中积累可复用的经验?

能查到机票价格,不代表知道查询后该停下来;能保存笔记,也不意味着会在下一次决策前读回。Agent需要处理的,还有操作之间的顺序、条件和衔接。

来自谷歌(Google)、美国佐治亚理工学院(Georgia Institute of Technology)和北京大学(Peking University)的研究者,围绕这一问题提出了Procedural Graphs(PG,程序图),将工具调用、技能步骤、内部推理与任务状态组织成有条件的连接,为Agent提供「接下来如何行动」的依据。

论文:https://arxiv.org/pdf/2609.09153

从Agent harness——模型周围的执行支持系统——来看,PG提供了一种把tools、skills、memory等组件连成网的方式,描述这些能力在什么条件下使用、怎样衔接,以及哪些错误需要避免。

执行任务时,Agent读取当前步骤附近的子图,生成针对当前情境的指导;离线阶段,系统根据执行轨迹提出改图方案,经独立验证后决定是否保留。

经验由此成为可以读取、检查和修订的程序关系,图的更新也无需重新训练模型权重。

从独立组件到程序关系

一张图连接什么?

Tools、Skills和Memory各有作用。工具提供查询、计算或提交等具体操作,技能封装可复用的做法,记忆保留任务信息与历史经验。在执行过程中,Agent还需要判断:什么时候读取记忆,哪项技能需要调用哪个工具,得到结果后又该保存什么。

PG将这些衔接关系显式写成「过程—关系—过程」三元组。

节点可以是一项技能、一个工具函数、一次内部推理,也可以是一个任务状态。连接两个节点的有向边,描述从当前步骤转向后续步骤的关系,并包含三个字段:适用条件(condition)、执行建议(guidance)和需要避免的问题(pitfalls)。

例如,「预测现金流」可以连接到「申请融资」。这条边的条件是预计现金支撑时间低于安全缓冲;建议是提前申请,为资金到账留出时间;需要避免的问题,则是在已有申请尚未完成时重复发起。

同一个工具动作,由此获得了更完整的使用上下文:为什么现在调用,调用前需要满足什么条件,以及什么情况下应当等待。

知识图谱通常用「实体—关系—实体」组织事实,帮助系统回答「是什么」「在哪里」。程序图关注的是另一类知识:做什么、按什么顺序做,以及在什么条件下做。

图1|知识图谱组织事实,程序图连接做事的步骤、条件与执行建议。来源:论文图1。

记忆的使用也可以进入这套结构。论文附录中的财务Agent提供了一个具体例子:演化出的图先连接现金检查、现金流预测、保存笔记(save_note)和市场数据检查;随后,又把回读笔记(recall_notes)接到每月开始的位置,让上个月保存的关键信息能在新一轮决策前被取回。

在这里,工具负责查询与计算,笔记保存跨月信息,PG则描述何时写入、何时读取,以及读写操作怎样接上后续决策。工具调用和记忆读写因此成为同一张程序网中的步骤。

图2|财务Agent程序图的结构演化。图中逐步加入现金检查、现金流预测与保存笔记等步骤,并在每月开始时接入回读笔记;后续轮次继续调整行动分支。绿色表示新增节点或连接,红色虚线表示删除。来源:论文图5。

PG本身也承载着程序性记忆:经过任务验证的行动方式,被保存在模型权重之外的图结构中。需要修改一条条件或补充一个检查步骤时,研究者可以直接改图,再检验它对执行结果的影响。

根据执行位置读取局部子图

把程序关系组织成图之后,还需要决定每一步读取哪些内容。

整张图包含完整信息,也可能带入大量与当前任务无关的分支。独立检索几条语义相似的建议,则可能遗漏步骤之间的联系。例如,只取回「提交」的指导,却没有取回前面的「检查答案」,Agent就可能缺少判断何时可以提交的依据。

PG将在线指导组织为三个连续操作。

定位当前步骤。 系统根据最近执行的动作匹配图中的节点,确定Agent当前所处的位置。

提取相连的局部结构。 默认读取沿出边两跳以内的子图,即从当前位置出发、最多经过两次连接可到达的步骤。匹配不到节点时,回退到整张图。

生成当前情境下的指导。 指导模型结合局部子图、用户任务和近期执行记录,生成下一步建议,加入执行模型的提示词。最终动作仍由执行模型选择。

在论文实验中,指导模型与执行模型采用同一种基础LLM。执行单个任务时,图保持固定。

图3|执行时定位当前节点,读取局部子图并生成指导;离线阶段根据轨迹修改图,通过结构检查且验证分数不下降时保留修改(包括持平)。来源:论文图2。

一次机票查询展示了这类指导如何影响任务的结束时机。在BFCL工具调用测试中,用户只想了解经济舱票价。无图基线查到了220美元的报价,却继续认证身份、操作银行卡并尝试订票;失败后,它还修改预算限制,再次完成预订。

同样使用Gemini 3.5 Flash,PG指导下的Agent在报出220美元后结束当前回合,等待用户的新指令。这个案例体现了程序知识的一项作用:帮助Agent判断,已有操作是否已经满足当前请求。

来源:新智元(经八阕转载) · 查看原文
Scroll for more