OpenProgram · Web Use

Web Use:只控制内置浏览器 Page

Agent 可以直接调用 web_use,也可以让 GUI Agent Harness 用同一接口连续执行。Runtime 绑定一个 exact Page,并在三个 browser backend 中固定一个执行。

TARGET NAME: WEB_USE · PUBLIC NAME: WEB_USE · BROWSER-ONLY RUNTIME IMPLEMENTED

名称与边界

能力负责什么当前状态
Web Use内置浏览器的 BrowserContext、Page、tab、popup、分屏、跨窗口发现,以及 DOM/ARIA/viewport 操作。当前能力;公开名称为 web_use
Computer Use未来的桌面应用、整屏或应用窗口截图、OS 级鼠标键盘;需要操作网页时可以调用 Web Use。保留名称,当前不实现,也不预建配置或后台进程

系统结构

Agent、Web Use 与三个可选浏览器 backend 的分层关系Agent 可以直接调用 web_use,也可以通过 GUI Agent Harness 调用相同工具。Runtime 为当前 WebSession 固定 Playwright MCP、Chrome DevTools MCP 或 Open Claude in Chrome-compatible backend,并由选中的一个 backend 操作绑定的精确 Page。 AGENT / CONTROL AI Any Agent选择 direct 或 harness CALLERSDirect Tool · GUI Harness DIRECTHARNESSMCP web_use OpenProgram MCP RUNTIMEBind once. Execute exactly. Page bindingpermissionverification WebSession 创建后冻结 backend EXECUTION / CHOOSE ONE ONE BACKEND PER WEBSESSION DOM Playwright MCPDOM · ARIA · element refs默认:结构化页面操作 CDP Chrome DevTools MCPCDP · snapshot · diagnostics通过 MCP adapter 接入 Runtime VIS Open Claude in Chrometool contract · visual actionsOpenProgram Electron / CDP adapter BOUND PAGE exact PageBOUND 同一个 Page · 分屏在任意方向 · 无需窗口置前

三个 backend 都是可选执行路径;Runtime 在 WebSession 创建时固定其中一个,并把所有动作限制到同一个 Page。

四个网页在一个窗口里怎样表示

三个顶部标签项包含四个可控制 Page同一个 BrowserContext 和 OpenProgram window 中,前两个顶部标签项各包含一个 Page,第三个顶部标签项是分屏组,包含左右两个 Page。list_pages 同时返回 tab_entries 布局和 pages 控制目标;Agent 最终只用某个 Page 的 token 建立 WebSession。 BROWSERCONTEXT ctx_1 · WINDOW win_1 Google · p1 GitHub · p2 Bilibili · p3YouTube · p4 tab_entry_1 · single · backgroundtab_entry_2 · single · backgroundtab_entry_3 · split · active PANE LEFTPANE RIGHT · FOCUSED p3p4 BilibiliYouTube visible = truevisible = true · focused = true list_pages GROUP-AWARE INVENTORY · IMPLEMENTED tab_entries3 UI entries singlep1 singlep2 splitp3 + p4 pages4 exact targets p1background p2background p3split / left p4split / right p4 token → exact WebSession 顶部标签结构用于理解窗口;Page token 用于观察和操作。分屏不增加另一套 Agent command。

当前 list_pages 同时返回 tab_entries + pages:前者描述 single/split 与 pane 顺序,后者提供可独立控制的 exact Page token。跨窗口目标保持相同结构,在外层增加 windows[],每个 Page 继续携带原 window_id。完整字段见多 Page 数据模型

Claude Code 的视觉坐标点击分支

Claude Code 浏览器插件视觉坐标点击流程本机 Claude Code 2.1.227 与 Chrome 扩展 1.0.85 的视觉分支先取得截图,再把模型选择的坐标经 MCP、Native Messaging 和 Chrome 扩展发送到目标 Tab;扩展绘制视觉光标,并以 CDP 鼠标事件完成实际点击。 Claude Codeclaude-in-chromeMCP toolsNative MessaginghostChrome extensionservice worker视觉光标content script目标 TabCDP ① computer(screenshot, tabId)② tool request③ JSON / stdio④ Page.captureScreenshot⑤ 同一路径返回 PNG + viewport metadata⑥ computer(left_click, [x,y], tabId)⑦ click request⑧ 校验 tab、权限与坐标映射⑨ UPDATE_PHANTOM_CURSOR⑩ Input.dispatchMouseEvent: moved → pressed → released 需要时在这里暂停并请求用户授权 页面上的光标只是视觉提示;真正的点击由 CDP 发给指定 Tab,不移动系统鼠标。

本图来自本机 Claude Code 2.1.227 与 Chrome 扩展 1.0.85 的安装包观察,只描述视觉坐标分支,不是官方稳定内部接口。computer 也支持使用页面 ref 点击;该分支不要求先截图。

Chat 渲染稳定性

存在 live normal assistant reply 或对应 runtime card 已存在时,Web Use 的 tree update 不得触发 transcript reload。standalone run 缺少 persisted runtime card 时允许首次单次 hydrate。该约束确保已有历史 message element identity 保持不变,避免流式回复、滚动位置和消息操作状态被重置。

可以复用到什么程度

结论组件OpenProgram 处理
直接使用Microsoft Playwright MCP、Playwright、MCP SDK开源依赖;固定版本后接入。
直接调用接口CDP、Electron webContents.debugger、Chrome debugger / Native Messaging不需要复制 Claude 代码;内置浏览器直接使用 Electron/CDP,不需要另装 Chrome 扩展。
可选 backendChrome DevTools MCP通过 MCP adapter 接入统一 Runtime,并绑定 exact Page。
可选 backendOpen Claude in Chrome-compatible采用其工具契约与视觉操作方式;由 OpenProgram Electron/CDP adapter 绑定 exact Page。
OpenProgram 层exact Page adapter、统一权限、verification 与 backend selector三个 backend 共用;单个 WebSession 只允许一个 backend 执行动作。