GoalAct 论文解读:全局规划 + 分层执行,LLM Agent 的 SOTA 框架

April 28, 2026

GoalAct 论文解读:全局规划 + 分层执行,LLM Agent 的 SOTA 框架

今天来聊一篇来自清华大学的最新工作 —— GoalAct,一个通过全局规划分层执行来增强 LLM Agent 的框架。论文在 LegalAgentBench 上取得了 SOTA,平均成功率提升 12.22%,并获得了 NCIIP 2025 Best Paper。

一、现有 Agent 框架的两大痛点

当前 LLM-based Agent 在规划和执行层面都存在明显短板:

1. 规划层面:缺乏全局视野

  • ReAct 采用增量式推理(Thought → Action → Observation),没有全局目标指引,容易在多分支任务中陷入局部死胡同
  • Plan-and-Execute 虽然生成全局计划,但计划往往不可执行(超出 Agent 的动作空间)

2. 执行层面:复杂度与稳定性难以平衡

  • 纯文本/JSON 执行(如 ReAct):简单稳定,但表达能力有限,无法处理循环、分支等复杂逻辑
  • 代码执行(如 CodeAct):动作空间大,能处理复杂逻辑,但在不可预测环境中更容易出错,且不适用于法律写作等生成任务

二、GoalAct 的核心设计

GoalAct 引入了两个关键创新:

创新 1:持续更新的全局规划

GoalAct 维护一个动态演化的全局计划 G_t = (P₁A₁, P₂A₂, ..., PₙAₙ),其中 Pᵢ 是计划步骤,Aᵢ 是对应的高层级技能(而非底层细节)。最终步骤永远是 Finish

关键特性:

  • 计划基于实时执行反馈动态调整
  • 同时保证战略连贯性和可执行性
  • 避免静态计划的僵化和 ReAct 的局部最优

创新 2:分层执行策略

GoalAct 将任务执行分解为高层级技能,模拟人类工作方式:先识别技能类型,再选择工具,最后配置参数。

技能执行格式优势局限
查询 (Searching)Text/JSON 工具调用简单稳定,适合不可预测环境,便于错误分析表达能力有限,无法处理循环/分支
编程 (Coding)Python 代码支持复杂逻辑(分支、循环、排序、聚合),大幅扩展动作空间复杂度高,在不可预测环境中更易出错
写作 (Writing)领域专用推理 + 内容生成解决法律文档起草等代码/查询无法完成的任务需要领域知识,多阶段处理(信息收集→起草→润色)

技能集是可扩展的(如推理、创意、研究等技能),可根据任务动态选择。

三、实验验证:LegalAgentBench

基准测试

  • LegalAgentBench:300 个任务,无法律数据泄露风险
  • 6 种任务类型:1-hop 到 5-hop 逻辑推理(解决方案路径长度递增)+ 写作(答辩书生成)
  • 任务需要法律知识和外部工具调用

实验设置

  • 测试模型:GPT-4o-mini、Qwen-max、GLM-4-Plus(temperature=0)
  • 基线方法:Plan-and-Solve、Plan-and-Execute、ReAct、CodeAct
  • 评估指标:Success Rate(关键词匹配率)

核心结果

模型GoalAct最佳基线提升幅度
GPT-4o-mini0.77200.6275 (CodeAct)+14.45%
Qwen-max0.86030.7594 (CodeAct)+10.09%
GLM-4-Plus0.87100.7499 (ReAct)+12.11%

平均提升:12.22%

关键发现

  • 任务难度越高,GoalAct 优势越明显:1-hop 提升 3.26%,3-hop 提升 20%,5-hop 提升 15.5%
  • 写作任务相对提升 12.74%,证明分层执行对生成任务同样有效
  • CodeAct 在写作任务上表现极差(无法生成法律文档),而 GoalAct 通过专用 Writing 技能完美解决

四、代码实现解析

GoalAct 的代码实现非常简洁(约 4,500 行 Python),核心架构清晰:

文件结构

文件职责行数
GoalAct.py项目入口,问题预处理 + 并行执行~230
act.py核心执行循环:全局规划 + 行动路由~153
action.py三大技能实现:查询 / 编程 / 写作~108
prompt.py所有 Prompt 模板(全局规划、技能分类、示例)~528
LLM.pyLLM 接口封装~50
memory.py记忆管理(few-shot 示例检索)~80
api.py工具集定义(法律数据库 API)~200
eval.py评估脚本(关键词匹配)~93

核心执行流程(act.py)

执行循环采用经典的 ReAct 结构,但增加了全局规划层技能路由层

  1. 全局规划生成:每步通过 LLM 生成「思考 + 行动」,行动必须是四种类型之一(查询/编程/写作/结束)
  2. 行动去重:维护 action_list 避免重复执行相同行动,若重复则通过 LLM 重新规划
  3. 技能路由:根据行动类型路由到对应执行器
    • 「查询」→ Retrive():Text/JSON 工具调用
    • 「编程」→ Code():Python 代码生成 + 子进程执行
    • 「写作」→ Write():检索法条/类案/知识后生成文档
  4. 观察反馈:执行结果写入 scratchpad,作为下一步规划的历史上下文

编程技能的巧妙设计

Code 技能不是简单的代码生成,而是包含完整的错误恢复机制

  • 代码通过 subprocess.run 在独立进程中执行,避免污染主进程
  • 执行失败时自动捕获 stderr,将错误信息反馈给 LLM 要求重新编程(最多 5 次重试)
  • 临时文件使用秒级时间戳 + 随机数命名,避免冲突

Prompt 工程亮点

  • 问题改写:预处理阶段对查询进行去噪、标准化(如案号格式统一、公司名称补全省份)
  • 表格筛选:通过 LLM 判断问题涉及哪些数据表,减少上下文噪音
  • Few-shot 记忆:从 memory.json 中检索相似问题的解决方案作为示例,提升规划质量
  • 编程示例:Prompt 中包含 3 个详细的 Python 代码示例,覆盖筛选、排序、统计等常见操作

五、论文 vs 代码:一致性评估

论文声明代码验证状态
全局规划机制act.py 每步调用 LLM 生成规划,scratchpad 维护历史✅ 已实现
分层执行(查询/编程/写作)action.py 中三个独立函数实现✅ 已实现
LegalAgentBench 评估eval.py 关键词匹配 + BERTScore 双指标✅ 已实现
12.22% 平均提升可复现(代码完整,数据集需申请)✅ 可验证
技能可扩展Prompt 中硬编码 3 种技能,扩展需修改 act.py 路由逻辑⚠️ 需手动扩展

六、实用洞察与集成建议

GoalAct 适合什么场景?

  • 多步推理任务:需要跨多个数据源查询、筛选、聚合的复杂工作流
  • 混合任务类型:同时包含信息检索、数据处理和内容生成的场景
  • 领域专用 Agent:法律、医疗、金融等有明确工具集和输出格式的领域

集成到 Hermes 的潜在路径

  1. MCP Server 化:将 GoalAct 的查询/编程/写作技能封装为 MCP Tools,Hermes 通过 MCP 协议调用
  2. Prompt 层借鉴:将 GoalAct 的全局规划 Prompt 和技能路由逻辑融入 Hermes 的 agent 配置
  3. 法律领域扩展:GoalAct 的法律工具集(LegalDoc、CourtInfo、CompanyInfo 等)可作为垂直领域 MCP Server 参考

局限性

  • 领域耦合:当前实现深度绑定中国法律数据库,通用化需要重构 api.py 和 schema
  • 单 Agent 架构:没有多 Agent 协作,复杂任务完全依赖单实例的 10 步循环
  • 硬编码技能:新增技能需要修改 act.py 的路由逻辑和 prompt.py 的模板
  • 中文特化:问题改写、法条检索等模块对中文法律文本有强依赖

七、总结

GoalAct 的核心价值在于证明了「全局规划 + 分层执行」这一设计范式在复杂 Agent 任务中的有效性。它不是通过更复杂的架构取胜,而是通过更合理的任务分解和更灵活的执行策略,在已有 LLM 能力基础上榨取更多性能。

对于构建垂直领域 Agent 的开发者来说,GoalAct 提供了一个极具参考价值的实现模板:如何用不到 5,000 行代码,在特定领域实现 SOTA 性能。

论文: arXiv:2504.16563
代码: github.com/cjj826/GoalAct
作者: Junjie Chen, Haitao Li, Jingli Yang, Yiqun Liu, Qingyao Ai (清华大学)
奖项: NCIIP 2025 Best Paper