AI Agent · Procedural Memory · Self-Evolution

Procedural Graphs:让 Agent 的执行结构自演化

论文将“下一步该做什么”从模型参数和长对话日志中剥离出来,表示成可查询、可解释、可编辑的过程图;在线提供局部情境指导,离线依据成败轨迹修改图结构。

Yuxing Lu 等 Google / Georgia Tech / PKU 36 页 · v1 7 个 Benchmark 4 个 LLM
00

结论先行:这项工作的真正价值

一句话结论 Procedural Graph(PG)把 Agent 的过程知识表示为带属性的有向图,并用“局部子图 + 最近轨迹”生成下一步建议;它不是替代 Solver 的硬工作流,而是在保留推理自由度的同时,为动作顺序和条件提供结构化软约束。
21 / 24主实验第一或并列第一六个任务 × 四个模型配置
19–2–3对最强基线:胜–平–负单侧精确二项检验 p = 4.3×10⁻⁴
0% → 85%自演化后的测试生存率EnterpriseArena,返回图而非测试集最优轮次
+33%~55%相对无图的 Token 开销GDPval / ALFWorld 的局部生成式指导

可以直接带走的三点

  • 长轨迹问题的关键不只是“记住更多”,而是明确当前处于哪个过程节点。
  • 图的价值来自连通关系与局部上下文,不是把全部规则原样塞进 Prompt。
  • 图的生成不能只看训练轨迹;结构校验、独立验证门控与回滚缺一不可。

最适合的任务

  • 工具调用顺序、前置条件、禁止动作清晰。
  • 任务跨多轮、反馈延迟、容易陷入重复查询。
  • 过程规则会随经验变化,且需要审计和版本化。
01

问题定义:长轨迹 Agent 为什么会失控

典型 ReAct Agent 把用户请求、历史 Thought、Action 和 Observation 顺序追加到上下文,由 LLM 每一步重新推断目标、剩余步骤和动作依赖。轨迹越长,这种“从扁平日志重建过程”的成本越高。

目标漂移

模型被最近观察牵引,逐步偏离原始任务或遗漏尚未完成的子目标。

顺序错误

跳过检查、验证或准备步骤,过早调用提交类、状态推进类工具。

低效循环

反复查询同一状态、重复失败调用,进一步污染上下文并增加成本。

现有方案各自缺了一块

方案保存什么主要优点主要缺口
轨迹 / 摘要记忆历史经验或完整轨迹保留真实执行证据Solver 仍要自行重建步骤依赖
状态条件指南“状态 X 时做 Y”规则比全文记忆更聚焦相邻步骤之间缺少显式连接
线性 Workflow固定动作序列顺序明确、易执行分支、回退与动态条件表达较弱
硬状态机允许的状态转移约束强、行为可控依赖人工设计,可能压缩模型推理空间
Procedural Graph带属性的过程转移图结构可查、局部引导、可演化每步增加指导调用,仍需可靠定位和验证
核心转变知识图回答 what is:(entity, relation, entity);过程图回答 what to do next:(procedure, relation, procedure)。
02

形式化表示:节点、边、关系与属性

G = (V, R, E, Φ)
E ⊆ V × R × V,边 e = (u, r, v) 表示:在关系 r 下,过程 v 可以接在过程 u 之后。
Φ(e) = { condition, guidance, pitfalls }

V(节点)可抽象工具函数、技能、内部推理步骤或任务状态;R(关系词表)在实验中包含 LEADS_TO、TRIGGERS、PROVIDES_INPUT_FOR、CONVERGES_TO;Φ(边属性)说明何时转移、怎样执行、要避免什么。

cash_flow_forecast预测未来现金跑道
LEADS_TO
fund_raising_request提交融资请求
condition预计跑道低于安全缓冲时触发
guidance考虑 1–6 个月到账延迟,提前申请
pitfalls已有待处理融资时,不要重复提交

图为什么比规则列表更有信息量

单独检索“提交答案”相关规则,可能遗漏前置的“检查答案”;局部连通子图同时暴露动作、前置条件和后续可能路径。过程知识的最小有用单元因此不是一条孤立规则,而是处于拓扑上下文中的转移。

论文中的图规模并不大

HotpotQA9 / 9
MultiChallenge7 / 7
GDPval15 / 22
ALFWorld11 / 27
τ-bench17 / 18
BFCL v3131 / 265
EnterpriseArena11 / 13

数字格式为“节点数 / 三元组数”。BFCL 的 131 个节点主要对应较大的函数目录。

03

在线阶段:Locate → Extract → Generate → Act

1定位 Locate

用上一步过程 / 工具调用精确匹配节点 uₜ;首步固定为 Start。

2提取 Extract

匹配成功取 h=2 的有向出边邻域;失败则回退到整张图。

3生成 Generate

指导模型结合子图、用户问题和最近 w=3 步轨迹,生成情境建议。

4行动 Act

Solver 将建议加入 Prompt,自主输出下一步 Thought 与 Action。

uₜ = Match(aₜ₋₁, V)
Gₜ = Nₕ(uₜ),若匹配失败则 Gₜ = G
gₜ = Ψ(Gₜ, q, Tₜ₋w:ₜ)
aₜ ~ P_solver( · | q, Tₜ, gₜ )

为什么称为“生成式指导”

图中存的是静态条件与建议,指导模型 Ψ 会根据当前任务和最近失败,将其翻译成当下可执行的提醒,例如“先验证结果,再调用输出工具;不要重复搜索已经确认的实体”。Solver 没有被强制锁死在一条边上,所以 PG 是软控制面,不是硬执行引擎。

带来的能力

  • 根据当前进度选择相关规则,而非全量注入。
  • 同时看见下一步与两跳内的后续依赖。
  • 允许 Solver 基于新观察偏离图中建议。

关键脆弱点

  • 论文默认“最近过程与节点 ID 精确匹配”,命名漂移会触发全图回退。
  • 每一个 Solver 步骤前多一次 LLM 指导调用。
  • 错误图不会直接阻止动作,但会系统性偏置 Solver。

在线执行伪代码

active = START
while not done:
    active = exactMatch(lastProcedure, graph.nodes)
    contextGraph = active != null
        ? graph.outgoingNeighborhood(active, hops = 2)
        : graph.fullGraph()

    recent = trajectory.tail(3)
    guidance = guidanceLLM.generate(contextGraph, query, recent)
    action = solver.nextAction(query, trajectory, guidance)
    observation = environment.execute(action)
    trajectory.append(action, observation)
04

离线阶段:用执行反馈演化图,而不更新模型权重

图在单个任务执行期间冻结。每一轮只在批量 Rollout 结束后改图,避免在线执行中的结构漂移。候选图必须先通过结构检查,再通过独立验证集门控。

STEP 1 · DIAGNOSE诊断 Rollout

用当前保留图在训练批次上执行,收集查询、完整轨迹与最终任务得分,并对比高分和低分轨迹。

STEP 2 · MUTATE反馈驱动变异

Refiner 输出结构化 ΔG:增加缺失验证节点 / 边,删除诱发失败或阻碍前进的节点 / 边;属性更新通过“删旧边 + 加新边”完成。

STEP 3 · VALIDATE结构校验与验证门控

检查类型、端点、终点可达性与循环策略;候选图只有在验证均值不低于当前缓存分数时才提交。

STEP 4 · REMEMBER拒绝记忆

失败候选、对应变更、训练轨迹与验证结果写入拒绝记忆,作为下一轮 Refiner 的负证据。

Gₖᶜᵃⁿᵈ = Gₖ₋₁ ⊕ ΔGₖ
S_val(G) = mean score over D_val
若 S_val(Gₖᶜᵃⁿᵈ) ≥ S_val(Gₖ₋₁),提交;否则回滚并记入 H_rejected。

候选图的结构检查

论文实际执行的硬检查

  • 编辑 JSON 可解析,节点与关系类型有效。
  • 每条边的源节点和目标节点都存在。
  • 每个节点都能到达某个出度为 0 的终止节点。
  • 禁环任务中移除形成环路的边,并检查无环。

需要特别注意

  • 终止节点不要求一定名为 End。
  • Action 节点必须属于工具目录只写在 Refiner Prompt 中,通用验证器没有硬校验。
  • 验证接受相同分数的候选,噪声环境中可能产生无收益漂移。

离线演化伪代码

bestGraph = initialGraph
bestScore = evaluate(bestGraph, validationSet)
rejections = []

for round in 1..K:
    traces = rollout(bestGraph, nextTrainingBatch())
    tailContext = keepLastTokens(concat(traces), L_max)
    delta = refiner.propose(bestGraph, tailContext, rejections)
    candidate, diagnostics = prepareCandidate(bestGraph, delta, cyclePolicy)

    if diagnostics.notEmpty():
        rejections.add(delta, traces, diagnostics)
        continue

    candidateScore = evaluate(candidate, validationSet)
    if candidateScore >= bestScore:
        bestGraph, bestScore = candidate, candidateScore
    else:
        rejections.add(delta, traces, candidateScore)

return bestGraph
05

五种构建模式:从专家先验到空白自演化

模式初始图训练方式验证门控适用判断
1 · Expert人工完整图不训练无规则成熟、变化少
2 · Expert + One-time人工完整图全训练集一次更新无低成本试验,但风险较高
3 · Expert + Evolution人工完整图分批增量更新有已有流程,需要持续纠偏
4 · Scratch + One-timeStart → End全训练集一次构建无快速原型,不宜直接生产
5 · Scratch + EvolutionStart → End分批增量演化有缺少专家图、轨迹充足
最重要的反例:专家图可能比没有图更差 MultiChallenge 上,无图基线为 87.50%,手工专家图降到 58.93%,一次静态更新继续降到 53.57%;加入分批反馈、验证门控与回滚的 Mode 3 最终恢复到 92.86%。结论不是“专家知识无用”,而是未经验证的流程先验可能形成稳定的错误偏置。
构建模式HotpotQA F1MultiChallenge 成功率观察
无 PG71.2187.50%参照基线
Mode 176.6158.93%专家图跨任务不稳定
Mode 277.1653.57%无门控更新可能恶化
Mode 376.3492.86%可修复错误专家先验
Mode 469.4989.29%一次构建仍会不稳
Mode 578.7991.07%从最小骨架学习出有效图
06

实验设计:如何判断结果是否可信

实验覆盖七类任务,其中六类进入主结果表,EnterpriseArena 单独用于长周期决策。所有方法共享同一个 ReAct Solver、工具接口和解码设置;学习型基线与 PG 使用相同训练轨迹,主要变量是“过程经验如何保存和在推理时使用”。

Benchmark能力Train / Test主要指标
HotpotQA多跳检索问答1,000 / 1,000LLM 判定准确率;构建实验另报 EM / F1
MultiChallenge多轮约束保持100 / 166Gemini 3.1 Pro Judge 的总体成功率
GDPval专业交付物88 / 44任务 Rubric 均分
ALFWorld具身动作顺序238 / 134成功率
τ-bench政策约束工具调用500 / 115Pass@1
BFCL v3多轮函数调用100 / 100官方多轮准确率
EnterpriseArena延迟反馈财务决策50 / 50132 月存活率、寿命、企业分数、融资额

四个 Solver

  • Claude Sonnet 4.6
  • Gemini 3.1 Pro
  • Gemini 3.5 Flash
  • Grok 4.1 Fast

指导模型与离线 Refiner 始终使用与 Solver 相同的底层 LLM;温度为 0。

七个对比基线

Vanilla ReAct、MemoryBank、RAP、ExpeL、AutoGuide、AWM、KnowAgent,依次覆盖无记忆、摘要记忆、轨迹检索、经验洞察、状态指南、线性工作流和文本转移规则。

这让对比更聚焦于过程知识的“表示与使用方式”,但不等于完全消除了实现细节差异。

07

核心结果:性能提升来自“什么时候做什么”

主结果

+9.00BFCL v3Gemini 3.5 Flash:67.00% vs 58.00%
+7.41GDPvalGemini 3.1 Pro:78.78 vs 71.37
+6.96τ-benchGemini 3.1 Pro:80.00% vs 73.04%

PG 在 GDPval 与 BFCL v3 的四个模型上都超过全部基线,在 MultiChallenge 的四个模型上均为第一或并列第一。HotpotQA 的优势较小:相对最强基线的差值在 -0.90 到 +1.30 个百分点之间,说明结构化过程指导并非对所有任务同等有效。

长周期财务决策:四个模型的基线与 PG

模型完整存活率平均寿命(月)Tools / 月收到融资
Claude 4.644% → 58%89.80 → 98.580.13 → 0.36$152.12M → $130.44M
Gemini 3.1 Pro6% → 34%50.28 → 79.220.89 → 3.18$21.82M → $38.20M
Gemini 3.5 Flash0% → 0%33.58 → 40.6218.94 → 12.53$0.00M → $9.39M
Grok 4.1 Fast26% → 40%63.76 → 75.140.47 → 0.40$27.24M → $30.11M
机制证据:不是简单减少工具调用 有些模型的工具调用下降,有些反而上升,但存活率仍提高。跨模型一致的行为变化是提前融资:资本需要 1–6 个月到账,PG 让 Agent 在流动性耗尽前预测跑道、检查市场并提交申请,同时遵守“仅允许一个待处理融资”的约束。

十轮自演化发生了什么

Round 0 · Start → End
Round 1 · 建立月度决策骨架
check_cash → forecast → save_note → market → decide
Round 2 · 加入 recall_notes 跨月复用工作记忆
验证存活率 45% → 80%;Tools/月 17.23 → 3.08
Round 3–6 · 候选被回滚或未通过结构校验
Round 7 · 删除 pass_action 分支
Round 8 · 融资后直接结束当月流程,避免重复推进月份
验证存活率达到 90%
Round 9 · 验证存活率持平,候选被接受
Round 10 · 验证下降到 85%,回滚
最终返回图:测试存活率 85%;不选择测试集上曾出现的 95% 单轮峰值
08

消融实验:局部子图是关键,不是“有图就行”

图使用方式MultiChallengeGDPvalALFWorld主要代价
无图基线80.2754.8072.58无额外指导调用
完整图 · 原始注入86.6057.1770.34上下文变长
完整图 · 生成式指导87.3556.7554.48Token 最高,ALFWorld 明显下降
局部子图 · 生成式指导89.3163.9981.53仍高于无图 Token 成本

相对完整图生成式指导

  • ALFWorld Token 减少 70.9%
  • GDPval Token 减少 18.1%
  • MultiChallenge Token 减少 14.8%

相对无图基线

  • GDPval 总 Token 仍高 33.4%
  • ALFWorld 总 Token 仍高 55.4%
  • MultiChallenge 的局部指导平均步骤略增:3.87 → 4.22

这组实验揭示了 PG 的有效单元:不是把整张图“喂给模型”,而是定位后只暴露局部连通结构,再做情境翻译。完整图生成式指导在 ALFWorld 同时更贵、更差,说明不相关过程会稀释指导质量。

09

局限与边界:哪些结论不能过度外推

论文证据直接支持

  • 在所测模型与任务中,PG 通常优于多种记忆基线。
  • 局部生成式指导明显优于完整图生成式指导。
  • 带验证门控的迭代演化能从空白构建图,也能修复错误先验。
  • 结构指导可减少无效步骤,但不保证降低总 Token。

仍未充分证明

  • 学习到的图能否跨 Solver、跨工具命名、跨 API 版本直接迁移。
  • 在更大图、更开放动作空间中的定位准确率和延迟。
  • 不同 LLM 分别担任 Solver、Guide、Refiner 是否更优。
  • 长时间反复访问同一验证集是否会产生验证集过拟合。
风险论文机制生产环境建议
节点定位脆弱最近过程与节点 ID 精确匹配;失败回退全图优先强制规范化 Tool ID;再用置信度受控的语义匹配,低置信度停止而非全图泛化
验证噪声候选分数 ≥ 当前分数即接受要求提升超过 ε;多 seed 重复;用置信区间或序贯检验
工具越权工具目录约束主要依赖 Prompt结构验证器硬校验 Action allowlist、参数 Schema 与权限
成本膨胀每步调用 Guidance LLM缓存相同节点 + 状态摘要;只在分支点、失败或高风险动作前生成
单指标优化按平均验证任务分数门控加入成本、延迟、失败严重度、合规性等多目标约束
错误先验依靠后续演化修复新图先影子运行;保留版本、可解释 Diff 与一键回滚
统计解释EnterpriseArena 自演化实验每个 Train / Validation / Test 只有 20 个 episode,作者也说明一次接受或拒绝可能由 1–2 个 episode 决定,因此逐轮曲线应视为搜索轨迹,不应逐轮当作显著性结论。
10

Java Agent 工程落地:最小可行架构

如果要接入现有自研 Java Agent,不需要先改造 Solver。最稳妥的做法是把 PG 作为 Solver 前方的独立“过程指导层”,先实现只读运行,再逐步加入离线演化。

Agent Runtime
ExecutionOrchestrator
NodeMatcher · 从标准化 ToolCall 找 activeNode
SubgraphRetriever · 取 h-hop 有向邻域
GuidanceGenerator · 子图 + query + trajectory → guidance
SolverAdapter · 原有 ReAct / Tool Calling Solver
Graph Control Plane
GraphRepository · JSON / PostgreSQL / 图数据库
GraphValidator · Schema、端点、可达性、环、工具白名单
GraphVersionService · Diff、版本、灰度、回滚
Evolution Pipeline
TrajectoryStore · 动作、观察、得分、错误标签
GraphRefiner · 生成结构化 ΔG
EvaluationGate · 独立验证集 + 成本 / 合规门槛

建议的数据契约

{
  "version": "pg-cfo-2026-09-10.3",
  "cyclePolicy": "ALLOW_DECLARED_ONLY",
  "nodes": [
    {"id": "cash_flow_forecast", "type": "ACTION",
     "description": "Forecast cash runway"}
  ],
  "edges": [
    {"source": "cash_flow_forecast", "target": "fund_raising_request",
     "relation": "LEADS_TO",
     "condition": "Projected runway is below the safety buffer",
     "guidance": "Request capital before the expected delivery delay",
     "pitfalls": "Do not submit while another request is pending"}
  ]
}

上面是与论文表示一致的工程化示例。生产环境还应附加租户、工具版本、创建来源、评测摘要与签名字段。

Java 侧的核心接口

interface NodeMatcher {
    MatchResult locate(ToolCall lastCall, ProceduralGraph graph);
}

interface GuidanceGenerator {
    Guidance generate(GraphContext graph,
                      UserQuery query,
                      List<TraceStep> recentSteps);
}

interface GraphValidator {
    ValidationReport validate(GraphDelta delta,
                              ToolCatalog allowlist,
                              CyclePolicy cyclePolicy);
}

interface EvaluationGate {
    GateDecision compare(GraphVersion current,
                         GraphVersion candidate,
                         ValidationSuite suite);
}

请求链路

1标准化动作

ToolCall 先映射到稳定 Tool ID,隔离模型输出别名和 API 版本差异。

2生成图上下文

从 activeNode 做 2-hop BFS,按 hop 和边属性序列化。

3指导与执行

生成短 Guidance,作为独立 Prompt 段传给现有 Solver。

4全链路记录

记录图版本、命中节点、子图、指导、动作、结果与成本。

建议先做“只读 PG”第一阶段由人构建 7–15 个节点的小图,只验证局部指导是否减少错误;当轨迹评分、离线评测与回滚机制稳定后,再开放 Refiner 自动提议变更。自动提议和自动上线应分成两个权限域。
11

实施路线:从验证思想到可演化系统

PHASE 1 · BASELINE建立可比较的无图基线

固定 Solver、Prompt、工具接口、温度和评测集;记录成功率、步骤、Token、延迟、格式失败与危险动作。

PHASE 2 · READ-ONLY PG手工小图 + 局部指导

选择高频失败流程,只建 7–15 个节点;验证 activeNode 命中率与 2-hop 子图质量。

PHASE 3 · OFFLINE PROPOSALRefiner 只生成 ΔG,不自动提交

离线展示图 Diff、对应失败轨迹与预期修复点,由人工批准后进入验证。

PHASE 4 · VALIDATION GATE自动评测与回滚

设置收益阈值 ε、成本上限、合规零容忍项和多 seed 重复;只有全门槛通过才创建候选版本。

PHASE 5 · SHADOW & CANARY影子流量与小比例灰度

线上先只记录建议不影响动作,再灰度启用;异常按图版本一键回退。

推荐优先选择的第一个场景

适合先做

  • 部署发布 / 故障排查 Agent
  • 采购审批 / 支付对账 Agent
  • 多步搜索与证据核验 Agent
  • 有严格顺序的工具调用 Agent

暂时不适合

  • 单轮、一步即可完成的任务
  • 动作空间完全开放且难以评分
  • 没有稳定回放环境和验证集
  • 错误成本极高但没有人工批准链
12

验收清单:判断 PG 是否真的有效

在线质量

  • activeNode 精确命中率与回退率可观测。
  • 子图不包含无关分支,关键前置步骤不丢失。
  • Guidance 明确、短、可行动,不泄露最终答案。
  • 危险工具在执行层仍有独立权限校验。
  • 图版本与每次 Agent 轨迹完整关联。

离线演化

  • Train / Validation / Test 严格隔离。
  • 所有 ΔG 均有结构化 Diff 与失败证据。
  • 结构验证硬检查工具白名单和参数 Schema。
  • 验收同时覆盖质量、成本、延迟与合规。
  • 拒绝候选可去重,保留原因且不污染当前图。

最小实验矩阵

配置目的必须记录
A · 无图 Solver建立真实基线质量、步骤、Token、延迟、失败类型
B · 完整图原始注入验证“仅增加规则文本”是否有效上下文长度、规则冲突、注意力稀释
C · 局部图原始注入隔离局部检索贡献定位准确率、子图覆盖率
D · 局部图生成式指导验证论文完整在线机制指导成本、动作改善、错误放大
E · D + 演化验证自动改图的净收益接受率、回滚率、验证差异、版本稳定性
13

术语、学习顺序与资料

术语准确理解
Procedural Knowledge关于“如何做、先做什么、在什么条件下做”的过程知识。
Procedural Graph以过程为节点、以可允许转移为边,并为边附加条件、指导和陷阱的有向图。
Generative Guidance由 LLM 把局部静态图转换成当前步骤的动态建议。
Localization根据最近过程确定 Agent 当前位于哪个图节点。
Validation Gating候选图只有不降低独立验证集分数时才成为新保留图。
Rejection Memory记录失败变更与其证据,抑制 Refiner 重复提出无效候选。

建议阅读顺序

  1. 先读第 3.1–3.3 节,掌握图表示、在线指导和离线演化。
  2. 再读表 3 的消融实验,理解为什么必须局部化。
  3. 读附录 B.5–B.6,查看 Prompt 模板、编辑 JSON 与完整算法。
  4. 读附录 E.2–E.3,观察候选回滚和图拓扑如何逐轮变化。
  5. 最后读附录 C.3 的同一 Seed 轨迹对比,把指标与具体行为连起来。

来源

版本说明文档依据用户提供的 arXiv v1 PDF(36 页)整理。工程建议均与论文机制分开表述;PDF 中未给出公开代码仓库链接,因此接口与数据契约属于可落地的参考设计,不代表作者官方实现。
← 返回内容索引