Agent-E 认知框架:DOM 蒸馏与层次化编排实现可靠网页导航

基于 AG2 多智能体框架的浏览器自动化系统。DOM 蒸馏技术按任务类型过滤内容,层次化组聊编排执行规划,MutationObserver 验证防幻觉。

亿牛云技术团队2026年5月30日5 分钟阅读

引言:认知层面而非控制层面

前六篇文章介绍的工具解决的是同一个问题:如何让 AI 控制浏览器。Nanobrowser 通过扩展,Steel 通过云端 API,agent-browser 通过 CLI,Camoufox 通过引擎级修改——各自在不同层面解决了"物理控制"的问题。

Agent-E 关注的是另一个层面:AI 如何理解它看到的内容,以及如何决定下一步做什么

即使一个智能体拥有完全无限制的浏览器控制权,如果它无法从 HTML 海洋中找到正确的信息、无法可靠地定位目标元素、无法从错误中恢复,所有这些控制能力都没有意义。

Agent-E 建立在 AG2(原 AutoGen)多智能体框架之上,引入了三项核心技术来提升智能体的认知可靠性:DOM 蒸馏mmid 注入层次化执行编排

架构概览

┌──────────────────────────────────────────────┐
│               Agent-E 系统                     │
│                                               │
│  ┌────────────────────────────────────────┐   │
│  │          AG2 多智能体框架              │   │
│  │                                        │   │
│  │  ┌──────────────────┐                  │   │
│  │  │ 高层次规划者      │ ← 分析任务目标   │   │
│  │  │ (High-Level      │   拆解为子任务    │   │
│  │  │  Planner Agent)  │   编排执行顺序    │   │
│  │  └────────┬─────────┘                  │   │
│  │           │                            │   │
│  │  ┌────────▼─────────┐                  │   │
│  │  │ 浏览器导航智能体  │ ← 执行浏览器交互  │   │
│  │  │ (Browser Nav     │   读取页面状态    │   │
│  │  │  Agent)          │   反馈执行结果    │   │
│  │  └────────┬─────────┘                  │   │
│  │           │                            │   │
│  │  ┌────────▼─────────┐                  │   │
│  │  │ 技能注册表        │ ← click, type,   │   │
│  │  │ (Skill Registry)  │   get_dom, 等    │   │
│  │  └──────────────────┘                  │   │
│  └────────────────────────────────────────┘   │
│                                               │
│  ┌────────────────────────────────────────┐   │
│  │  预处理管道(DOM 蒸馏)                │   │
│  │  ┌──────────┐ ┌──────────┐ ┌────────┐ │   │
│  │  │ Text     │ │ Input    │ │ All    │ │   │
│  │  │ only     │ │ fields   │ │ content│ │   │
│  │  └──────────┘ └──────────┘ └────────┘ │   │
│  └────────────────────────────────────────┘   │
│                                               │
│  ┌────────────────────────────────────────┐   │
│  │  验证层(MutationObserver)             │   │
│  │  监控 DOM 变化 → 确认操作是否生效       │   │
│  └────────────────────────────────────────┘   │
└──────────────────────────────────────────────┘

DOM 蒸馏:按需过滤,精准提取

Agent-E 最核心的创新是 DOM 蒸馏(DOM Distillation)。它不像其他工具那样将原始 DOM 或固定的 A11y 树传递给 LLM,而是根据当前任务目标,动态清洗和过滤 DOM 内容。

三种蒸馏内容类型

类型保留的内容过滤掉的内容适用场景
Text Only纯文本内容按钮、输入框、链接等交互元素阅读文章、提取信息
Input Fields表单元素(输入框、按钮、选择框)文本内容、图片、装饰表单填写、登录
All Content所有可见元素隐藏元素、脚本、样式需要全面理解的场景

蒸馏示例

原始页面 DOM(约 5000 Token):
  <html><head>...大量的脚本、样式、meta...</head>
  <body>
    <nav class="header-navigation">
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/products">Products</a></li>
        ...
      </ul>
    </nav>
    <main class="content">
      <article>
        <h1>Article Title</h1>
        <p>Long article content...</p>
        ...
      </article>
    </main>
    <footer>...</footer>
    <script>analytics code...</script>
  </body>
 
DOM 蒸馏后(Text Only,约 800 Token):
  <h1>Article Title</h1>
  <p>Long article content...</p>
  <!-- 所有导航、页脚、脚本、样式被过滤 -->

mmid 定位机制

许多网页作者没有为 HTML 元素分配唯一的 id 属性,这给智能体定位目标元素带来了困难。Agent-E 在蒸馏阶段主动向每个 DOM 元素注入自定义的 mmid 属性:

<!-- 原始元素 -->
<button class="btn-primary btn-lg">Submit Order</button>
 
<!-- 蒸馏后(mmid 注入) -->
<button class="btn-primary btn-lg" mmid="ae-127">Submit Order</button>

mmid 是确定性的——相同的页面结构会生成相同的 mmid,这使得智能体可以可靠地引用元素。

层次化执行编排

Agent-E 没有采用简单的"观察-思考-行动"线性循环,而是实现了嵌套的组聊(Nested Group Chats)机制。

执行规划器(Execution Planner)

执行规划器是不同于 Planner 和 Navigator 的第三个认知层。它观察蒸馏后的 DOM,不仅决定当前步骤,还预测并批处理后续的多个步骤:

传统线性循环(每个步骤一次 LLM 调用):
  观察 → 思考 → 点击 #1 → 观察 → 思考 → 输入 → 观察 → 思考 → 点击 #2
 
Agent-E 批处理模式(一次调用处理多步):
  观察 → 思考 → [点击 #1, 输入文本, 点击 #2](批量执行)

这种批处理设计显著降低了 API 延迟——在复杂表单填写场景中,可以减少 40-60% 的 LLM 调用次数。

通信流

用户请求


高层次规划者(Planner)
    │  分析任务 → 拆解为子任务序列
    │  分配资源给浏览器导航智能体

浏览器导航智能体(Browser Nav Agent)
    │  读取蒸馏后的 DOM
    │  调用执行规划器批量生成操作

执行规划器(Execution Planner)
    │  生成操作序列:[click, type, click]
    │  调用技能注册表中的具体技能

技能执行(Skills)
    │  click_using_selector()
    │  enter_text_using_selector()
    │  get_dom_with_content_type()

验证层(MutationObserver)
    │  监听 DOM 变化
    │  确认操作是否生效

反馈 → 高层次规划者
    │  成功 → 下一步
    │  失败 → 调整策略

MutationObserver 验证:对抗模型幻觉

AI 智能体的一个常见问题是幻觉——模型认为它点击了一个按钮,但实际上点击并未生效(元素被遮挡、页面尚未加载、点击事件未绑定)。

Agent-E 通过 JavaScript 的 MutationObserver 事件来监控操作执行后的 DOM 变化,为 LLM 提供确定性的反馈:

# Agent-E 内部的 MutationObserver 逻辑(简化)
observer_code = """
const observer = new MutationObserver((mutations) => {
  // 记录 DOM 变化
  mutations.forEach(m => {
    console.log('DOM changed:', m.type, m.target);
  });
  // 标记操作结果
  window.__agent_e_last_action_effect = 'observed';
});
observer.observe(document.body, {
  childList: true,
  subtree: true,
  attributes: true
});
"""

如果点击后 DOM 没有发生变化,智能体可以判断操作失败并触发重试或策略调整,而不是继续基于幻觉执行后续操作。

安装与使用

安装

# 克隆仓库
git clone <repository-url>
cd Agent-E
 
# 使用 uv 管理 Python 环境
uv venv --python 3.11
source .venv/bin/activate
uv pip install -r requirements.txt
 
# 配置环境变量
cp .env-example .env
# 编辑 .env,填入 LLM API Key 和模型名称

配置

# .env 配置
AUTOGEN_MODEL_NAME=gpt-4-turbo
AUTOGEN_MODEL_API_KEY=your-api-key
BROWSER_STORAGE_DIR=/path/to/chrome/profile  # 可选,使用本地 Chrome

运行

python -m ae.main

启动后,Agent-E 会在浏览器中显示一个图标。点击后打开聊天界面,可以输入自然语言指令。

实战示例

表单填写

在 example.16yun.cn/checkout 帮我填写收货地址:
姓名:张三
电话:13800138000
地址:北京市海淀区中关村大街 1 号

Agent-E 的处理流程:

1. 高层次规划者分析任务 → "这是一个表单填写任务"
2. 浏览器导航智能体打开目标页面
3. DOM 蒸馏 → 选择 "Input Fields" 模式
4. 执行规划器识别表单字段(姓名、电话、地址)
5. 批量执行:
   → 在姓名字段填入 "张三"
   → 在电话字段填入 "13800138000"  
   → 在地址字段填入 "北京市海淀区中关村大街 1 号"
6. MutationObserver 验证每个字段是否填写成功
7. 提交表单

商品搜索与排序

在 example.16yun.cn 上搜索 "wireless headphones",按价格从低到高排序
1. 规划者分析 → "搜索 + 排序任务"
2. 导航智能体打开 example.16yun.cn
3. 蒸馏 → "Input Fields" 模式
4. 定位搜索框,输入关键词
5. 等待搜索结果加载
6. 蒸馏 → "All Content" 模式(需要看到所有元素)
7. 定位排序下拉菜单,选择 "Price: Low to High"
8. 验证排序是否生效
9. 提取结果列表

与同领域工具对比

维度Agent-Eagent-browserNanobrowser
核心方法DOM 蒸馏 + 层次化编排A11y 树 + Ref 映射多智能体协作
DOM 处理按任务类型动态过滤固定的 A11y 快照原始 DOM + 元素分类
元素定位mmid 属性 + 语义查询@e1, @e2 稳定引用DOM 路径 + 文本匹配
验证机制MutationObserver无内置验证Validator 智能体
批处理执行规划器批量执行CLI 批量命令单步执行
LLM 框架AG2(原 AutoGen)无(直接 CDP)自定义多智能体系统
部署复杂度高(Python 环境 + AG2)低(Rust 二进制)低(Chrome 扩展)

局限性与适用场景

Agent-E 最适合

  • 需要高可靠性表单填写的场景(电商下单、注册)
  • 需要多步骤推理的复杂任务(比价、跨站数据整合)
  • 对 LLM 调用次数敏感的预算场景

不适合

  • 高并发数据采集(Agent-E 的单实例设计,无并发能力)
  • 需要对抗高级 WAF 的场景(无隐身/反检测设计)
  • 简单的一次性任务(设置成本过高)

总结

Agent-E 的代表性意义在于,它展示了 AI 浏览器代理发展的下一个阶段:从"怎么控制浏览器"到"怎么理解网页"

DOM 蒸馏技术按需过滤内容,mmid 注入解决元素定位难题,层次化编排降低 LLM 调用次数,MutationObserver 验证对抗幻觉——这些认知层面的设计让智能体在面对复杂、动态网页时更加可靠。

与 Camoufox 关注底层引擎反检测、agent-browser 关注执行速度和 Token 效率不同,Agent-E 关注的是智能体本身的"智力"——它能否正确理解页面,能否从错误中恢复,能否高效运用有限的 LLM 上下文窗口。

下一篇文章将介绍 AWS Agentic Form Filling——一个来自亚马逊云生态的企业级认知编排方案,它通过情景记忆(Episodic Memory)让智能体在连续运行中不断学习和优化导航策略。

需要企业代理方案?

我们可根据目标站点、并发规模与稳定性目标提供定制方案。