<!-- title: 点空即断链：动作定位五栈实测 -->

# 点空即断链：动作定位五栈实测

> 当智能体推理出"点击提交按钮"，真正的地狱才刚开始：它必须把这个意图落地到一个具体的像素坐标或元素句柄上。这一步在业界叫 **action grounding（动作接地 / 动作定位）**——智能体"看得见"≠"点得准"。本期对五种主流接地栈做横向实测，核心结论是：**接地方案的选择，直接锁死了自主智能体的成功率上限**。原生坐标栈在专业界面上六成空点，OmniParser 把 ScreenSpot Pro 拉到 39.5% 仍是 SOTA，而 DOM/无障碍树栈能把网页任务的 WebVoyager 干到 89.1%。接地不是工程细节，是自主体能力天花板。

---

## 一、为什么"接地"是自主体最隐蔽的失血点

自主智能体（Autonomous Agent）的执行链路可以粗分为三段：**感知（看）→ 推理（想）→ 接地+执行（点）**。前两段在 2026 年的模型能力下已相当成熟——VLM 能读懂屏幕，LLM 能规划下一步。真正卡脖子的，是最后那段"把语义意图翻译成可执行坐标"。

一段典型的失败日志读起来是这样的：模型说"点击右上角的提交按钮"，然后吐出一个坐标 `(1204, 738)`，而按钮真实边界是 `(1180, 700, 90, 32)`——中心点应是 `(1225, 716)`。偏了 20 像素，落在按钮外缘的空白区，整个点击静默失效，但智能体以为"点了"，继续往下走，错误像雪崩一样级联。这就是本期标题"点空即断链"的由来：**一次空点，断掉的不是一步，而是后面整条推理链的可信度。**

更棘手的是，这个失血点极难被可观测性系统捕获——动作"成功执行了"（鼠标确实移动并点击了），只是点错了地方。它不像工具报错那样会抛异常，而是**静默失败**，这也是为什么接地必须单列为一个维度来实测。

## 二、五栈对比总表

| 接地栈 | 代表工具/方案 | 信号源 | ScreenSpot/基准表现 | 上手成本 | 失败主因 |
|--------|--------------|--------|---------------------|----------|----------|
| ① 原生坐标栈 | Claude Computer Use / GPT-4o CUA | 像素坐标 | 依赖模型原生能力，专业界面六成空点 | 极低（零组件） | 高分屏缩放漂移、小元素难命中 |
| ② Set-of-Marks | Microsoft SoM (arXiv 2310.11441) | 编号标记 | 把"定位"降维成"选号"，命中率跃升 | 中（需分割器） | 标记爆炸、遮挡原图 |
| ③ 检测解析栈 | OmniParser V2 (Microsoft) | 检测模型+SoM | ScreenSpot Pro **39.5%** SOTA / ScreenSpot 73% | 中高（跑检测模型） | 嵌套/自绘控件漏检 |
| ④ DOM 选择器栈 | browser-use | DOM+可交互元素 | WebVoyager **89.1%** | 低（pip 装即用） | 仅限网页、Shadow DOM/Canvas 失效 |
| ⑤ 无障碍树栈 | Stagehand / OSWorld a11y | a11y tree | 语义精确、跨控件稳定 | 低中 | 依赖页面做无障碍标注 |

> 一句话总览：**网页里 DOM/a11y 栈碾压，任意界面里检测解析栈称王，原生坐标栈只配做"痛点教学"。**

## 三、五栈深度实测

### ① 原生坐标栈：零组件的甜蜜陷阱

这是门槛最低的一栈：直接把截图喂给 VLM，让它吐出 `{type: "mouse_move", coordinate: [x, y]}`。Claude 的 `computer_20250124` 工具、GPT-4o 的 computer-use 都属此类。

```python
# 原生坐标接地：模型直接吐坐标
resp = client.messages.create(
    model="claude-sonnet-4-5",
    tools=[{"type": "computer_20250124",
            "display_width_px": 1920, "display_height_px": 1080}],
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "点击提交按钮"},
        {"type": "image", "source": {"type": "base64",
            "media_type": "image/png", "data": shot}}]}])
# resp.action = {"type": "mouse_move", "coordinate": [1204, 738]}
# 真实按钮中心 (1225,716) → 偏 20px → 静默空点
```

**优点**：零额外组件、跨平台、纯视觉，任何能截图的地方都能用。**致命缺点**：高分屏缩放（坐标在 1920 与 Retina 逻辑像素间漂移）、小元素（<24px 图标几乎必空点）、无任何语义校验——模型"猜"对了语义却"点"偏了像素。

**变现/训练营评估**：适合作为"自主体第一课"的**痛点引入器**——让学员亲眼看到模型推理全对、却因坐标偏移而全盘失败，制造强烈认知反差，是极佳的钩子。但绝不能作为交付方案。

### ② Set-of-Marks：把"定位"降维成"选择"

Microsoft 提出的 SoM（arXiv 2310.11441）思路极简却极强：**先分割/检测出所有候选区域，给每块叠一个编号，让模型只回答"选几号"**。这样"输出像素坐标"这个连续回归问题，被降维成了"输出编号"这个离散选择问题，命中率立刻跃升。

```python
# SoM：分割 → 叠编号 → 模型选号 → 反查 box
masks = seg_model(screenshot)                       # 检测/分割所有区域
marked = overlay_numbered_marks(screenshot, masks)  # 每块画数字
idx = vlm(marked, "哪个编号区域是提交按钮？只返回数字")  # "7"
cx, cy = box_center(masks[int(idx)])                # 反查精确中心点
py.click(cx, cy)
```

**优点**：实现简单、效果立竿见影，是几乎所有现代 CUA 的底层思路之一。**缺点**：整屏候选区域可达上千个，编号爆炸导致 token 暴涨；标记会遮挡原图细节；密集界面（表格、菜单）标记重叠难辨；**SoM 本身不产生候选，仍需一个前置的检测/分割器**——这是它和栈③的分水岭。

**变现评估**：可做成一节"视觉提示工程"精品小课，但单独成产品价值有限，更适合作为栈③的教学铺垫。

### ③ OmniParser 检测解析栈：把像素"token 化"

栈②的瓶颈在于"谁来产生候选区域"。OmniParser（Microsoft）的回答是：**微调一个专用检测模型，把 UI 截图"token 化"成结构化元素列表**——每个元素带 `id / bbox / content / type`，再叠加 SoM 让 LLM 选号。

```python
from omniparser import OmniParser
parser = OmniParser("microsoft/OmniParser-v2")
els = parser.parse(shot)
# [{"id":0,"bbox":[x,y,w,h],"content":"Submit","type":"button"}, ...]
idx = vlm(overlay_marks(shot, els), "选提交按钮的编号")
click(box_center(els[int(idx)]["bbox"]))
```

**硬数据**：V2 在 ScreenSpot Pro 上达 **39.5%（SOTA）**，ScreenSpot 上 73%（GPT-4V 基线仅 16.2%），Mind2Web 跨域 42%，且较 V1 **延迟降 60%**。**优点**：不依赖 a11y/DOM，纯视觉，能泛化到画布、视频、自绘控件等任意 UI。**缺点**：ScreenSpot Pro 39.5% 意味着**六成专业高分辨率界面接不准**——这是当前纯视觉接地的物理上限；嵌套下拉、动态菜单仍漏检；检测模型有推理成本。

**变现评估**：**最高**。可包装成"私有 UI 接地模型定制"咨询（为某行业 ERP/SaaS 微调检测模型），或做"从 OmniParser 到自有 CUA"进阶训练营，客单价高、壁垒清晰。

### ④ DOM 选择器栈：网页场景的真值之王

只要场景是浏览器，DOM 栈几乎总是最优解。browser-use 的做法是：用 Playwright 取出 DOM + 可交互元素集合，给每个标 `index`，让 LLM 选 index 而非输出坐标——浏览器直接给出元素的"真值"边界，根本不需要猜像素。

```python
# browser-use 式 DOM 接地
from browser_use import Agent
agent = Agent(task="登录后台后导出本月报表", llm=llm)
# 内部：抽取可交互元素 → 标 index → LLM 返回 index → Playwright 执行
await agent.run()
```

**硬数据**：browser-use 在 WebVoyager 上达 **89.1%**，远超纯视觉方案。**优点**：精确（浏览器给的真值）、快（无视觉模型推理）、省 token、可调试可重放。**缺点**：**仅限网页**；Shadow DOM、iframe、Canvas/WebGL 内的元素抓不到；动态 class 名易失效；强反爬站点会拦截自动化浏览器。

**变现评估**：**中高**。是"网页 RPA 训练营"的主力技术栈，企业需求明确（表单填写、数据抓取、后台操作自动化），变现路径最短。

### ⑤ 无障碍树栈：语义比像素更稳

无障碍树（accessibility tree, a11y）是浏览器和操作系统提供的**语义化控件描述**——每个节点带 `name / role / bounds`。Stagehand 用它替代原始 DOM（"比 DOM 更稳定"）；OSWorld 的 `screenshot_a11y_tree` 方案则把 a11y 叠加到截图上再用 SoM 选号。

```python
# Stagehand 式 a11y 接地
page = stagehand.page
# 内部：快照无障碍树 → 候选节点 → LLM 按 name/role 定位
await page.act("click the 'Submit' button")
```

**优点**：语义精确（`role=button, name=Submit`）、跨控件类型稳定、不依赖像素识别。社区出现了 **A11y-Compressor**（压缩臃肿的 a11y 树省 token）和 **A11y-CUA Dataset**（专门刻画"无障碍鸿沟"）。**缺点**：**强依赖页面/应用做了无障碍标注**——大量网站和应用没做，a11y 树是空的；树臃肿需压缩；自绘控件仍缺语义。

**变现评估**：**中**。可做"无障碍友好 = 智能体友好"的交叉内容（既讲 AI agent 又讲无障碍合规），有政策与 DEI 叙事加持，差异化强。

## 四、基准现实：SOTA 仍只接得住四成专业界面

把五栈放回基准看，会得到一个清醒的认知：

```mermaid
graph LR
    A[屏幕截图] --> B{选择接地栈}
    B -->|原生坐标| C1[像素回归<br/>专业界面六成空点]
    B -->|SoM| C2[降维选号<br/>需前置检测器]
    B -->|OmniParser| C3[检测解析<br/>ScreenSpot Pro 39.5%]
    B -->|DOM 选择器| C4[网页真值<br/>WebVoyager 89.1%]
    B -->|无障碍树| C5[语义精确<br/>依赖标注]
    C1 --> D((动作执行))
    C2 --> D
    C3 --> D
    C4 --> D
    C5 --> D
    D --> E{是否点空?}
    E -->|是| F[❌ 静默失败<br/>错误级联]
    E -->|否| G[✅ 推进下一步]
```

- **OSWorld**（NeurIPS 2024，369 个真实桌面任务，Ubuntu/Windows/macOS）：人类基线约 70%+，早期智能体仅约 **12%**，到 2026 年部分顶配方案开始在子集上逼近甚至反超人类——但这建立在"强接地栈 + 顶配 VLM"之上。Claude Sonnet 4.5 被列为 OSWorld 上当前最强的通用计算机使用模型。
- **ScreenSpot Pro**（专业高分辨率界面接地）：OmniParser V2 的 **39.5% 就是 SOTA**——也就是说，在最贴近"真实工作软件"的接地基准上，当前最强方案仍有**六成概率接错位置**。

这两组数字共同指向一个结论：**接地栈的选型，就是自主体成功率的天花板。** 模型再强，配原生坐标栈也突破不了像素回归的物理极限；模型一般，配 DOM 栈却能在网页场景打到 89%。

## 五、混合演进：Skyvern 式的"视觉 → 代码固化"

单一接地栈都有死角，2026 年的明显演进是**混合 + 固化**。Skyvern 代表了这条路：用计算机视觉 + LLM 做一次性接地（视觉优先，不靠脆弱的选择器），但关键一步是——**把接地的结果固化为可复用的可执行代码 / Workflow**（其 "Observer" 模式能在导航过程中自动生成工作流）。

```mermaid
sequenceDiagram
    participant U as 用户意图
    participant V as 视觉+LLM接地
    participant B as 浏览器(Playwright)
    participant W as WorkFlow代码
    U->>V: "每月导出报表"
    V->>B: CV识别元素 → 首次点击(接地)
    B-->>V: 执行结果
    V->>W: 固化为可复用步骤
    Note over W: 后续N次: 直接跑代码<br/>不再调用VLM/接地
    W->>B: 批量复用执行
```

这条路的本质，是承认**一次性视觉接地的成本和不确定性太高**，于是用"贵的接地只做一次、之后白嫖代码"来摊薄成本。这也是为什么本期把它列为"演进方向"而非第六栈：它不是一种新的接地算法，而是把上述五栈的输出**工程化沉淀**的策略。对高频复用任务（如每月报表、批量表单），这条路的 ROI 远高于反复调用 VLM。

## 六、推荐方案（按场景）

| 场景 | 首选接地栈 | 理由 |
|------|-----------|------|
| 纯网页自动化（表单/抓取/后台） | ④ DOM 栈（browser-use）或 ⑤ a11y 栈（Stagehand） | 浏览器给真值，89% 级成功率，省 token |
| 任意桌面应用 / 原生 GUI | ③ OmniParser + SoM | 不依赖 DOM/a11y，纯视觉泛化 |
| 高频复用任务（报表/批量操作） | 混合：视觉接地→Skyvern 式代码固化 | 一次性接地成本高，固化为代码后趋近于零 |
| CTA/教学/训练营入门 | ① 原生坐标栈做痛点钩子 → ② SoM → ③ OmniParser 进阶 | 制造"推理全对却点空"的认知反差 |
| 强反爬 / Canvas 重度站点 | ③ OmniParser 或 原生 CUA | DOM 抓不到时退回视觉 |

**落地优先级建议**：先按"是否浏览器场景"二分——是则走 DOM/a11y 栈（性价比之王），否则走 OmniParser + SoM；最后对高频任务加一层代码固化，把一次性接地的成本彻底摊平。

**一句话收束**：自主智能体的胜负，不在模型多聪明，而在"最后一像素"接得准不准。点空一次，断的是整条链——选对接地栈，就是给自主体续命。

---

## 参考来源

1. [OmniParser V2: Turning Any LLM into a Computer Use Agent — Microsoft Research](https://www.microsoft.com/en-us/research/articles/omniparser-v2-turning-any-llm-into-a-computer-use-agent/) — V2 把像素 token 化为结构化元素，延迟降 60%，ScreenSpot Pro SOTA
2. [Evaluation and Benchmarks — microsoft/OmniParser (DeepWiki)](https://deepwiki.com/microsoft/OmniParser/6-evaluation-and-benchmarks) — V2 在 ScreenSpot Pro 达 39.5%、ScreenSpot 73%、Mind2Web 42% 的基准明细
3. [Set-of-Mark Prompting Unleashes Extraordinary Visual Grounding in GPT-4V (arXiv 2310.11441)](https://arxiv.org/abs/2310.11441) — SoM 视觉提示法原论文，叠加编号标记的奠基工作
4. [Browser Agent Frameworks Compared: Browser Use vs Stagehand vs Skyvern — bytetunnels](https://bytetunnels.com/posts/browser-agent-frameworks-compared-browser-use-vs-stagehand-vs-skyvern/) — 三大浏览器框架 DOM-first vs vision-first 对比，browser-use WebVoyager 89.1%
5. [OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments (xlang-ai)](https://github.com/xlang-ai/OSWorld) — 369 个真实桌面任务基准，含 screenshot_a11y_tree 接地方案与 Claude Sonnet 4.5 最强记录

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
