MIT EnCompass:用搜索算法将AI代理准确率提升40%

MIT EnCompass:用搜索算法将AI代理准确率提升40%

分析MIT CSAIL开发的EnCompass框架如何将搜索策略应用于AI代理执行路径,从实务角度大幅提升可靠性与准确率。

概述

2026年,AI代理在生产环境中承担越来越多的任务,但可靠性这一根本性问题仍然没有得到解决。基于LLM的代理本质上是概率性的,因此即使执行相同的任务,每次也可能产生不同的结果,而且一个阶段的错误会级联影响所有后续工作。

由MIT CSAIL和Asari AI开发的EnCompass框架为这个问题提出了一种根本上不同的解决方案。它将搜索算法(波束搜索、蒙特卡洛树搜索等)集成到代理程序的执行路径中,使代理在出错时能够自动回溯并探索更好的路径。因此实现了15〜40%的准确率提升,而所需的代码实现反而减少了82%。

本文分析了EnCompass的核心概念、运作原理,以及从工程管理角度的实际应用策略。

AI代理可靠性问题的本质

代理为什么会失败

基于LLM的AI代理在生产中失败的核心原因是错误的级联传播

graph TD
    A["用户请求"] --> B["Step 1: 问题分析"]
    B --> C["Step 2: 代码生成"]
    C --> D["Step 3: 测试执行"]
    D --> E["Step 4: 结果验证"]
    B -->|"LLM出错"| F["错误的分析"]
    F --> G["错误的代码"]
    G --> H["测试失败"]
    H --> I["整体任务失败"]
    style F fill:#FF6B6B
    style G fill:#FF6B6B
    style H fill:#FF6B6B
    style I fill:#FF6B6B

传统的代理系统只遵循单一执行路径。如果Step 1中的LLM做出错误判断,之后的所有步骤都会建立在这个错误判断之上。即使加入重试逻辑,也经常会在相同的上下文中重复相同的错误。

现有方法的局限性

当前业界使用的代理可靠性策略:

策略优势局限
简单重试实现简单可能重复同一错误
思维链提升推理质量无法纠正错误的推理链
自我验证能够检测错误无法探索替代路径
多代理多视角考虑协调成本高

所有这些方法的共同限制是无法脱离已选择的路径

EnCompass:基于搜索的代理执行

核心理念——“选择你自己的冒险”

EnCompass的核心理念惊人地直观。如果将代理程序的执行比作”故事”

  • 传统方式:遵循单一情节的小说
  • EnCompass方式:在每个分支点都有选择的”游戏书(选择你自己的冒险)”

开发者在代理代码的特定位置添加”分支点(branchpoint)“注解。EnCompass会在这些分支点探索多个可能的LLM输出,并自动选择产生最佳结果的路径。

graph TD
    Start["代理启动"] --> BP1{"分支点 1"}
    BP1 -->|"路径 A"| S1A["Step 1: 分析 A"]
    BP1 -->|"路径 B"| S1B["Step 1: 分析 B"]
    BP1 -->|"路径 C"| S1C["Step 1: 分析 C"]
    S1A --> BP2A{"分支点 2"}
    S1B --> BP2B{"分支点 2"}
    BP2A -->|"最优路径"| S2["Step 2: 代码生成"]
    BP2B -->|"回溯"| BP1
    S1C -->|"评分低"| BP1
    S2 --> Result["最终结果"]
    style S2 fill:#00E5FF
    style Result fill:#00E5FF

运作原理

EnCompass的运作分为3个阶段。

阶段1:定义分支点

开发者在代理代码中LLM调用发生的位置标记分支点。这是在声明”LLM的输出在此可能会有所不同,这种差异会影响最终结果”。

阶段2:定义评估函数

定义一个函数来评估每个阶段的结果有多好。例如,对于编码代理,“测试通过率”可能成为评估函数。

阶段3:选择搜索策略

EnCompass支持多种搜索策略:

  • 波束搜索:在每个分支点仅保留前N个路径继续进行
  • 蒙特卡洛树搜索 (MCTS):结合随机探索和经验驱动探索
  • 自定义策略:可以实现适合特定领域的定制搜索策略

代码级实现模式

使用EnCompass的代理代码的概念结构:

# 传统代理代码(单一路径)
def coding_agent(task):
    analysis = llm.analyze(task)       # LLM调用 1
    code = llm.generate_code(analysis) # LLM调用 2
    result = run_tests(code)           # 评估
    return result

# 应用EnCompass的代码(基于搜索)
def coding_agent_with_search(task):
    @branchpoint                        # 分支点注解
    analysis = llm.analyze(task)

    @branchpoint
    code = llm.generate_code(analysis)

    @evaluate                           # 评估函数
    score = run_tests(code)

    return code, score

# 应用搜索策略
result = encompass.search(
    agent=coding_agent_with_search,
    strategy=BeamSearch(beam_width=4),
    budget=16  # 最多16倍的LLM调用
)

关键在于基本上不需要修改现有代理逻辑,只需添加注解即可。根据MIT研究团队的说法,与手动实现搜索相比,可以节省348行代码(约82%)

性能分析

量化结果

EnCompass论文报告的主要成果:

指标数值
准确率提升15〜40% (基于5个代码库)
代码减少82% (减少348行)
搜索预算相比基础代理16倍的LLM调用
最优策略2层波束搜索

值得注意的是”2层波束搜索”被证实为最优策略。这意味着结构化搜索策略比简单随机尝试更有效

成本效益分析

搜索预算是16倍意味着LLM API调用成本也是16倍。让我们判断这在实际中是否合理:

基础代理执行成本:  $0.50/任务 (示例)
EnCompass应用成本: $8.00/任务 (16x)

基础代理成功率:   60%
EnCompass成功率:  85% (+25%p)

单位成功成本:
  基础:     $0.50 / 0.60 = $0.83/成功
  EnCompass: $8.00 / 0.85 = $9.41/成功

单纯从成本看,EnCompass更贵,但如果计入失败任务的后处理成本(人工修复、重做、质量问题),情况就不同了。特别是对于高价值任务(代码审查、安全分析等),准确率提升的价值足以抵消额外成本。

实际应用策略

工程经理视角的部署指南

在实际应用EnCompass的概念时需要考虑的事项总结如下。

1. 应用目标选择

并非所有代理任务都需要应用搜索。按以下标准进行筛选:

graph TD
    Q1{"任务价值<br/>是否高?"}
    Q1 -->|"是"| Q2{"失败时<br/>后处理成本<br/>是否大?"}
    Q1 -->|"否"| Skip["简单重试<br/>已足够"]
    Q2 -->|"是"| Q3{"LLM输出<br/>方差<br/>是否大?"}
    Q2 -->|"否"| Skip
    Q3 -->|"是"| Apply["建议应用<br/>EnCompass<br/>搜索"]
    Q3 -->|"否"| Skip
    style Apply fill:#00E5FF
    style Skip fill:#E8E8E8

2. 逐步部署路线图

阶段时间目标搜索预算
概念验证2周在单个任务上应用,测量效果4x
试点1个月在团队内应用2〜3个工作流8x
扩展3个月在关键生产工作流中应用16x
优化持续成本优化,开发定制策略动态调整

3. 评估函数设计是关键

EnCompass的效果在很大程度上取决于评估函数的质量。好的评估函数的条件:

  • 必须能自动化(无需人工介入即可得出分数)
  • 执行速度快(在搜索循环中被调用数千次)
  • 与最终质量的相关性高

示例:

  • 编码代理:测试通过率、棉绒警告数
  • 文档生成代理:结构完整度、关键词覆盖率
  • 数据分析代理:结果一致性、统计显著性

2026年代理可靠性生态系统

除了EnCompass,还有其他多个提升代理可靠性的举措:

  • Agent Definition Language (ADL):Moca开源的代理定义标准。以声明方式定义代理的权限、工具和安全边界,确保治理
  • OpenAI Open Responses:通过标准化代理AI工作流来简化模型间的切换
  • GitHub代理工作流:用Markdown描述自动化目标,AI生成GitHub Actions工作流

这些举措的共同方向是”使代理更具可预测性和可控性”

结论

MIT EnCompass为AI代理可靠性问题提供了根本性且实用的解决方案。核心见解总结如下:

  1. 搜索是代理的”安全网”:即使LLM出错,也可以通过回溯和替代探索来恢复
  2. 结构化搜索比随机重试更有效:2层波束搜索是最优策略
  3. 代码减少82%:相比直接实现搜索逻辑,极其便捷
  4. 成本与价值权衡:对于高价值任务,16倍成本也是合理的

作为工程经理,最重要的启示是”AI代理的性能不仅是模型本身的问题,更是系统框架(harness)的问题”。即使使用相同的LLM,根据采用的执行策略不同,结果也会大幅不同。

如果正在运营生产AI代理,与其等待更好的模型出现,不如直接改进执行策略本身,这样可以更快、更确定地取得成果。

参考资料

阅读其他语言版本

这篇文章有帮助吗?

您的支持能帮助我创作更好的内容。请我喝杯咖啡吧!☕

关于作者

JK

Kim Jangwook

AI/LLM专业全栈开发者

凭借10年以上的Web开发经验,构建AI代理系统、LLM应用程序和自动化解决方案。分享Claude Code、MCP和RAG系统的实践经验。