1. 技术背景:为什么网页自动化需要新范式?

网页自动化领域长期被 Selenium、Playwright、Puppeteer 等工具主导。这些工具的核心思路是服务端控制——启动一个无头浏览器(Headless Browser),通过 WebDriver 协议或 DevTools Protocol 从外部操控页面。这种架构在爬虫和测试场景中表现良好,但在 AI Agent 时代暴露了三个致命缺陷:

第一,架构臃肿。 服务端方案需要 Python 运行时、浏览器二进制、WebDriver 驱动,部署成本高昂。一个需要嵌入网页的 AI 助手,不可能要求用户先装一套 Python 环境。

第二,多模态依赖。 以 Browser Use 为代表的新一代 Web Agent 依赖截图 + 视觉模型理解页面,每次操作都需要调用多模态 LLM(如 GPT-4o),Token 消耗巨大、延迟高、成本难以控制。

第三,集成困难。 传统方案是"外部操控者"视角,无法深度嵌入现有 Web 应用。想给 SaaS 产品加一个 AI Copilot?传统方案需要搭建完整的后端代理服务。

2025 年 6 月,阿里巴巴开源了 Page-Agent,提出了一种全新的范式:纯前端、基于文本的 DOM 操作、无需截图、无需后端。项目发布后迅速走红,截至 2026 年 10 月已在 GitHub 获得 18.7K+ Star,成为网页 AI Agent 领域最受关注的开源项目之一。

如果你对 AI Agent 生态感兴趣,推荐阅读我们之前的深度解析:Unlimited-OCR 百度开源长文档 OCR 神器 和 REA 逆向工程 AI 助手。

2. 核心创新:纯前端 JavaScript 实现的 GUI Agent

Page-Agent 的核心设计理念可以用一句话概括:把 AI Agent 直接嵌入网页本身。

2.1 一行代码集成

整个 Agent 的核心只需要一行 HTML:

HTML
<script
    src="https://cdn.jsdelivr.net/npm/page-agent@1.12.4/dist/iife/page-agent.demo.js"
    crossorigin="anonymous"
></script>

加载后,页面右下角会出现一个聊天面板,用户可以直接用自然语言指挥 Agent 操作页面——点击按钮、填写表单、滚动页面、执行 JavaScript,一切都在浏览器内完成。

2.2 与同类方案的本质区别

特性 Page-Agent Selenium/Playwright Browser Use
运行位置 浏览器内(纯 JS) 服务端(Python/Node) 服务端(Python)
页面理解 文本化 DOM DOM + 截图 截图 + 多模态 LLM
是否需要后端 ❌ 不需要 ✅ 需要 ✅ 需要
是否需要截图 ❌ 不需要 ❌ 不需要 ✅ 需要
集成复杂度 一行 <script> 完整后端服务 完整后端服务
延迟 极低(页内通信) 中(跨进程) 高(截图+视觉模型)
Token 消耗 低(文本 DOM) N/A 高(图像 Token)
适用场景 嵌入式 AI Copilot 自动化测试/爬虫 通用 Web Agent

Page-Agent 的独特定位是客户端增强(Client-side Web Enhancement),而非服务端自动化。它不是要替代 Selenium 做爬虫,而是要让任何网页变成一个 AI 原生应用。

3. 架构原理:从 DOM 到自然语言的完整管线

Page-Agent 的架构分为四个核心层,每层职责清晰、解耦良好。理解这套架构,是深度使用它的前提。

3.1 Monorepo 模块结构

packages/
├── page-controller/   # DOM 操作与视觉反馈(SimulatorMask)
├── llms/              # LLM 客户端,支持 OpenAI 兼容 API
├── core/              # PageAgentCore —— 无 UI 的核心 Agent 逻辑
├── ui/                # 聊天面板 UI(i18n 支持)
├── page-agent/        # 主入口,整合 Core + UI + Controller
├── extension/         # Chrome 扩展(跨页面 Agent)
├── mcp/               # MCP Server(外部 Agent 控制浏览器)
└── website/           # 文档站点

关键设计原则:PageController 不依赖 LLM,LLMs 不依赖 PageController。Core 层是桥梁,负责将两者粘合。

3.2 DOM 处理管线:从 Live DOM 到简化文本

Page-Agent 最核心的技术创新在于 DOM 文本化管线。它不截图,而是把页面的 DOM 树转化为 LLM 可理解的简化文本表示。整个流程分三步:

Step 1:DOM 提取(Live DOM → FlatDomTree)

page-controller 模块遍历当前页面的 Live DOM,构建一棵 FlatDomTree。这棵树会过滤掉不可见元素、装饰性节点,保留所有可交互元素(按钮、输入框、链接、下拉菜单等),并为每个交互元素分配一个数字索引(index)。

TYPESCRIPT
// PageController 核心接口(简化)
class PageController {
    // 获取简化后的 DOM 文本表示
    async getSimplifiedHTML(): Promise<string>

    // 通过索引点击元素
    async clickElement(index: number): Promise<ActionResult>

    // 通过索引输入文本
    async inputText(index: number, text: string): Promise<ActionResult>

    // 滚动页面
    async scroll(options: ScrollOptions): Promise<ActionResult>

    // 选择下拉选项
    async selectOption(index: number, text: string): Promise<ActionResult>
}

Step 2:脱水(Dehydration)

将 FlatDomTree 序列化为紧凑的文本格式,类似这样:

[1] button "登录"
[2] input "用户名" 
[3] input "密码"
[4] link "忘记密码?"
[5] checkbox "记住我"

每个可交互元素都有唯一的索引号和可读的文本描述。LLM 不需要"看"页面,只需要"读"这份文本清单就能理解页面结构。

Step 3:LLM 决策

简化文本被送入 LLM,LLM 返回结构化的操作指令(通过 Tool Calling 机制),例如:

JSON
{
    "tool": "click_element_by_index",
    "args": { "index": 1 }
}

PageAgent 根据索引在真实 DOM 上执行操作。整个过程零截图、零 OCR、零多模态模型。

3.3 Re-act 循环:观察-思考-行动

Page-Agent 的 Agent 循环遵循经典的 Re-act(Reasoning + Acting) 模式,在 PageAgentCore 中实现:

┌─────────────────────────────────────────┐
│              Agent Step                 │
│                                         │
│  1. Observe(观察)                      │
│     → 获取当前页面的简化 DOM 文本          │
│     → 收集历史事件(已完成的操作、错误等)   │
│                                         │
│  2. Think(思考)                        │
│     → Reflection:评估当前状态            │
│     → 短期规划:下一步应该做什么           │
│     → LLM 调用:决定具体动作              │
│                                         │
│  3. Act(行动)                          │
│     → 执行 LLM 选择的 Tool               │
│     → 更新历史记录                        │
│     → 检查任务是否完成                    │
│                                         │
│  4. Loop or Done                        │
│     → 未完成 → 回到 Step 1               │
│     → 完成 → 调用 done tool 返回结果      │
└─────────────────────────────────────────┘

每个 Step 最多调用一次 LLM,默认最大步数 maxSteps = 40。这意味着一个复杂任务最多进行 40 次 LLM 调用,Token 消耗可控。

3.4 内置工具集

Page-Agent 为 Agent 提供了一组精心设计的内置工具:

工具名 功能 参数
done 完成任务,返回最终结果 text, success
click_element_by_index 点击指定索引的元素 index
input_text 在输入框中输入文本 index, text
select_dropdown_option 选择下拉菜单选项 index, text
scroll 垂直滚动页面 down, num_pages, pixels
scroll_horizontally 水平滚动 right, pixels
wait 等待页面加载 seconds
ask_user 向用户提问 question
execute_javascript 执行自定义 JS script

所有工具都通过 Zod Schema 定义参数类型,确保 LLM 输出的参数经过严格校验。

4. 快速上手:从 Demo 到生产集成

4.1 零配置体验(Demo 模式)

最快的体验方式——使用官方提供的免费 Demo LLM:

HTML
<!DOCTYPE html>
<html>
<head>
    <title>Page-Agent Demo</title>
</head>
<body>
    <!-- 你的网页内容 -->
    <form>
        <input type="text" placeholder="用户名">
        <input type="password" placeholder="密码">
        <button type="submit">登录</button>
    </form>

    <!-- 一行引入 Page-Agent -->
    <script
        src="https://cdn.jsdelivr.net/npm/page-agent@1.12.4/dist/iife/page-agent.demo.js"
        crossorigin="anonymous"
    ></script>
</body>
</html>

打开页面后,右下角会出现聊天面板。试着输入"帮我填写用户名 admin 并点击登录",Agent 会自动识别表单元素并执行操作。

⚠️ Demo 模式使用免费的测试 LLM API,仅用于技术评估,不适合生产环境。

4.2 NPM 集成(推荐生产使用)

BASH
npm install page-agent
JAVASCRIPT
import { PageAgent } from 'page-agent'

// 初始化 Agent,接入你自己的 LLM
const agent = new PageAgent({
    model: 'qwen3.5-plus',
    baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
    apiKey: 'your-api-key',
    language: 'zh-CN',
})

// 用自然语言执行操作
await agent.execute('点击导航栏中的"产品"链接')

// 监听状态变化
agent.addEventListener('statuschange', (e) => {
    console.log('Agent 状态:', e.detail.status)
    // idle → running → completed / error / stopped
})

// 监听执行活动(实时反馈,适合 UI 展示)
agent.addEventListener('activity', (e) => {
    console.log('活动:', e.detail.type)
    // thinking → executing → executed → ...
})

4.3 自定义工具扩展

Page-Agent 支持注册自定义工具,让 Agent 能执行你的业务逻辑:

JAVASCRIPT
import { PageAgent, tool } from 'page-agent'
import * as z from 'zod/v4'

const agent = new PageAgent({
    model: 'gpt-4o-mini',
    baseURL: 'https://api.openai.com/v1',
    apiKey: '***',
    // 注册自定义工具
    customTools: {
        search_products: tool({
            description: '搜索商品并返回结果列表',
            inputSchema: z.object({
                keyword: z.string().describe('搜索关键词'),
                maxResults: z.number().default(10),
            }),
            execute: async (args) => {
                const res = await fetch(`/api/products?q=${args.keyword}`)
                const data = await res.json()
                return JSON.stringify(data.products.slice(0, args.maxResults))
            },
        }),
    },
})

// 现在 Agent 可以调用 search_products 工具
await agent.execute('帮我搜索蓝牙耳机,只看前 5 个结果')

4.4 Chrome 扩展模式(跨页面任务)

对于需要跨多个标签页工作的复杂任务,Page-Agent 提供了 Chrome 扩展:

packages/extension/
├── MultiPageAgent.ts          # 跨页面 Agent 协调器
├── RemotePageController.ts    # 远程页面控制器
└── TabsController.ts          # 标签页管理

扩展模式下,Agent 可以在 Tab A 读取数据,切换到 Tab B 填写表单,再回到 Tab A 验证结果——这是纯页面内模式做不到的。

扩展还提供了 MCP Server(Beta),允许外部 Agent(如 Claude Desktop、Hermes Agent)通过 MCP 协议控制浏览器。

5. 实战应用场景

5.1 SaaS 产品 AI Copilot

这是 Page-Agent 最核心的应用场景。假设你有一个 ERP 系统,用户需要在"采购订单"页面完成一系列操作。传统方式需要用户手动点击多个按钮、填写多个字段。集成 Page-Agent 后:

JAVASCRIPT
// 在你的 ERP 页面中嵌入
const agent = new PageAgent({
    model: 'qwen3.5-plus',
    baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
    apiKey: '***',
    language: 'zh-CN',
    // 限制 Agent 的操作范围(安全沙箱)
    allowedOrigins: ['https://your-erp.com'],
})

用户只需说"帮我创建一个采购订单,供应商选华为,物料选 A 类电阻 1000 个",Agent 自动完成所有表单填写和按钮点击。

5.2 智能表单自动填充

对于 CRM、OA 等需要频繁填写复杂表单的系统,Page-Agent 可以将 20 次点击操作压缩为一句自然语言指令。特别适合:

  • 批量数据录入:从文本描述中提取结构化数据并填入表单
  • 跨系统数据同步:从邮件/文档中提取信息填入业务系统
  • 新手引导:AI Copilot 指导用户完成复杂操作流程

5.3 无障碍增强

Page-Agent 的文本化 DOM 天然适合无障碍场景:

  • 语音控制:结合 Web Speech API,用户可以用语音指令操作网页
  • 屏幕阅读器:Agent 可以用自然语言描述页面内容
  • 运动障碍辅助:减少精确点击的需求,用自然语言替代

5.4 自动化测试与数据采集

虽然 Page-Agent 的设计初衷是客户端增强,但它的 execute_javascript 工具和 DOM 理解能力也可以用于:

  • 页面内容提取:用自然语言描述要提取的数据,Agent 自动定位并返回
  • 表单自动化测试:用自然语言描述测试步骤,Agent 自动执行

6. 支持的 LLM 模型

Page-Agent 采用 OpenAI 兼容 API 协议,理论上支持所有主流 LLM:

模型 提供商 推荐度 说明
Qwen3.5-Plus 阿里云 DashScope ⭐⭐⭐⭐⭐ 官方推荐,中文效果最佳
GPT-4o-mini OpenAI ⭐⭐⭐⭐ 性价比高,英文效果好
DeepSeek-V3 DeepSeek ⭐⭐⭐⭐ 开源模型,成本低
GLM-4 智谱 AI ⭐⭐⭐ 中文能力不错
Llama 3.1 Meta ⭐⭐⭐ 本地部署首选
Claude 3.5 Sonnet Anthropic ⭐⭐⭐⭐ 推理能力强

关键要求:模型必须支持 Function Calling / Tool Use。纯文本补全模型无法使用。

JAVASCRIPT
// 接入本地部署的 Ollama
const agent = new PageAgent({
    model: 'llama3.1',
    baseURL: 'http://localhost:11434/v1',
    apiKey: 'ollama', // Ollama 不需要真实 key
    language: 'zh-CN',
})

7. 局限性与未来方向

7.1 当前局限

1. 仅限同源页面。 纯页面内模式只能操作当前页面的 DOM,无法跨域操作。跨页面需要 Chrome 扩展。

2. 复杂页面性能。 对于 DOM 节点超过 5000 个的超复杂页面(如大型数据表格),DOM 文本化后的 Token 消耗会显著增加。

3. 动态内容延迟。 SPA 框架(React/Vue)的异步渲染可能导致 Agent 在 DOM 尚未就绪时执行操作。需要合理使用 wait 工具。

4. LLM 准确性。 Agent 的操作准确性高度依赖 LLM 的 Tool Calling 能力。较弱的模型可能在复杂页面中迷路。

5. 安全考量。 execute_javascript 工具允许 Agent 执行任意 JS 代码,在生产环境中需要谨慎配置权限。

7.2 未来发展方向

根据项目维护者的说明,未来重点方向包括:

  • 更智能的 DOM 压缩:减少 Token 消耗,支持更复杂的页面
  • 多步骤任务规划:增强 Agent 的长期规划能力
  • 更好的错误恢复:操作失败后的自动重试和替代方案
  • MCP 生态集成:与更多 AI Agent 框架互通
  • 企业级安全特性:操作审计、权限控制、沙箱隔离

常见问题 (FAQ)

问:Page-Agent 需要后端服务吗?
答:完全不需要。Page-Agent 是纯前端 JavaScript 库,所有处理都在浏览器内完成,无需任何后端服务或代理。这使得它可以轻松嵌入任何现有网页。

问:它是否像 Selenium 那样需要浏览器驱动?
答:不需要。Page-Agent 不依赖 WebDriver 或任何浏览器自动化驱动,它通过原生 DOM API 直接操作页面元素。

问:Page-Agent 支持哪些浏览器?
答:支持所有现代浏览器:Chrome、Edge、Firefox 和 Safari。由于它使用标准的 Web API,没有特殊依赖。

问:它与 Browser Use 等方案有什么区别?
答:核心区别在于页面理解方式。Page-Agent 使用文本化 DOM(不截图),而 Browser Use 和类似方案依赖截图 + 多模态 LLM 理解页面。这使得 Page-Agent Token 消耗更低、延迟更小、成本更可控。

问:是否需要编程经验才能使用?
答:基础使用只需要会添加一行 <script> 标签。对于高级定制(如自定义工具),需要一些 JavaScript/TypeScript 基础,但官方文档提供了完整示例。

问:Page-Agent 能处理 React/Vue/Angular 等 SPA 框架吗?
答:可以。它操作的是实际渲染后的 DOM,因此与前端框架无关。不过需要注意异步渲染的时机,可能需要使用 wait 工具确保元素已就绪。

问:商业使用需要付费吗?
答:完全免费。Page-Agent 采用 MIT 许可证,允许自由使用、修改和分发,包括商业用途。

8. 总结

Page-Agent 代表了网页自动化的一种全新范式——把 AI Agent 从服务端拉回浏览器,用文本替代截图,用一行代码替代一套基础设施。

它不是 Selenium 的替代品,而是网页 AI 化的新基座。如果你想给现有 Web 产品加上 AI Copilot 能力,Page-Agent 是目前集成成本最低、架构最轻量的方案。

关键数据一览:

指标 数值
GitHub Star 18.7K+
npm 版本 1.12.4
许可证 MIT
语言 TypeScript
包体积 ~50KB (min+gzip)
支持浏览器 Chrome/Edge/Firefox/Safari
核心依赖 Zod(Schema 校验)

📎 项目地址:github.com/alibaba/page-agent 📎 在线 Demo:alibaba.github.io/page-agent 📎 官方文档:alibaba.github.io/page-agent/docs