← Silent Star
X-Ray · Claude Desktop

Claude Desktop 的内置浏览器是怎样接起来的

检查 Claude.app 时,我先找内置网页区域由谁创建。主进程里的 WebContentsView 和 CDPTools 连到了 Electron 标签页:界面显示网页,客户端通过调试协议取得截图、页面结构并执行操作。它和 Chrome 扩展、Cowork 的 Linux 桌面是几条不同路径。

下面几个标记怎么读 Observed 本机文件里直接看到 Corroborated 官方说明对得上 Inferred 我根据证据推断 Unknown 还没钉死
容易搅在一起的三件事

桌面端能碰网页,但不是一条路

这次对照了 1.26832.0 与后来安装的 1.37937.3。新包设置中出现 Built-in browser 和 Preferred browser,通用 PreviewContext 中也有 pane、tab 与 CDP 逻辑。这些材料支持 Code 与 Cowork 复用浏览器组件的判断;具体入口仍要分别看,不能把内置标签页、虚拟机和扩展混为一谈。

内置浏览器(默认)Electron 隔离标签 + CDP。不碰你的书签和密码。
需要你自己的登录时 ↓
Claude in Chrome扩展进你的真 Chrome,走 native host 或 websocket 桥。
网页工具不够、要操作整个桌面时 ↓
Computer use / VM这是点屏幕,不是内置浏览器。
一次点击

客户端用 CDP 操作,模型接收结果

Electron 将 WebContentsView 嵌入主窗口,客户端再把无障碍树、截图、控制台或网络信息提供给模型。执行点击时,主进程向对应 tab 的 webContents.debugger 发送 Input.dispatchMouseEvent。检查的截图路径在窗口未显示时会报错,要求先把 tab 放到前台。

内置 Browser pane

  1. 任务需要一个网址。提示词要求默认用内置浏览器,别用 Bash 起服务器,也别去开真 Chrome。
  2. preview_start {url} 或 tabs_create 在当前会话的 pane 里造一个 tab。
  3. 主进程用 session.fromPartition("persist:launch-preview-…") 拿出隔离 cookie 罐,再 new WebContentsView。
  4. 页面 load 之后 CDPTools.attach(webContents),打开 Network / DOM / Accessibility。
  5. 外站还要过域名名单、源权限卡、带账号密码的 URL 拦截。组织策略可以把范围锁成只准 localhost。
  6. read_page 走 Accessibility.getFullAXTree。点击走 CDP 鼠标事件。截图优先 Page.captureScreenshot。
它怎么跟你的 Chrome 隔开

登录状态与外站访问怎样隔离

Observed

配置目录跟你的 Chrome 不是同一份

这些标签使用 persist:launch-preview-static、persist:launch-preview-session- 等 Electron session;用户数据中也能找到对应 Partitions 目录。它们默认与真实 Chrome 的配置目录分开。是否经用户授权导入登录状态,是后文另行说明的问题。

Observed

外站会先问服务器这页能不能碰

主进程请求 /api/web/domain_info/browser_extension 并进行 URL hash 检查;category1/2、组织 block 和源权限参与访问控制。带有 user:password@ 的 URL 会被拒绝。这里描述的是已检查的客户端判断路径。

Observed

每个 tab 自己也被沙箱住

标签配置为 sandbox: true、关闭 Node 并开启 contextIsolation,普通页面禁用对话框。代码还包含 --js-flags=--jitless 配置;同一 pane 超过 8 个 tab 时会拒绝弹窗。

官方把这套防护和 Claude in Chrome 归成同一类 prompt injection 缓解。分类器看的是动作还符不符合你最初那句话。它减风险,消灭不了。

我拆到了什么

本机后来升过一版,内核还是那套标签页

第一次拆的是 /Applications/Claude.app 1.26832.0,签名 2026-08-06,Electron 42.7.0,内嵌 Chrome/148.0.7778.280。引擎当时已经在。后来这台机器升到 1.37937.3(8 月 26 日),Cowork 开关才写进设置文案:coworkBrowserToolsEnabled、coworkPreferredBrowser(built_in 或 chrome,默认前者)。关掉 Built-in browser,只从 Cowork 拿掉 pane 和那套浏览器工具。Claude in Chrome 还在。Code 里的浏览器也还在。

每个 tab 挂着一个 CDPTools

主进程 chunk 是 .vite/build/index.chunk-DIBPwUV0.js。tab 一侧是 WebContentsView,一侧是 CDPTools。挂上会打 [CDPTools] Attached to webContents。

协议命令包括 Accessibility.getFullAXTree、Input.dispatchMouseEvent、Input.dispatchKeyEvent、Input.insertText、Page.captureScreenshot、Runtime.evaluate、Network.getResponseBody、Emulation.setDeviceMetricsOverride。方法名是 clickAt、fill、takeSnapshot、typeText、pressKey。

模型手上的工具名

清单在 index.chunk-CEp6GoCO.js。preview_start、read_page、computer、javascript_tool、form_input、tabs_context。旧别名 preview_click、preview_snapshot 还留着。

MCP 前缀是拼出来的。代码里 T = "Claude Browser",空格换成下划线,就是 mcp__Claude_Browser__*。系统提示块 <browser_surfaces> 把这条标成默认,把 mcp__claude-in-chrome__* 写成只有需要你已有登录时才用。

真要进你的 Chrome,走的是另一座桥

扩展生产 ID:fcoeoabgfenejglbffodgkkbkcdhcgfn。还有两个备用。桌面会把 native messaging 清单写进 Chrome / Edge 的 NativeMessagingHosts。host 名 com.anthropic.claude_browser_extension,二进制在 Contents/Helpers/chrome-native-host,stdio。

这个 Rust 程序还会在本机开 Unix socket,前缀 claude-mcp-browser-bridge-。过不了本机通道时,还有 wss://bridge.claudeusercontent.com。帮助文档把整条路叫 Claude in Chrome。

那台 10GB 虚拟机别算进来

用户目录里有 vm_bundles/claudevm.bundle:ARM64 Linux 内核、10GB rootfs、gVisor MAC、.cowork-adopted。那是 Cowork 给 computer use 用的沙箱桌面。内置浏览器的 tab 活在 Electron 的 partition 里,路径不一样。

我在检查位置看到 playwright-core 相关的下载域名白名单,没有找到 chromium.launch。内置 pane 的已定位路径使用 Electron 标签页;仅靠字符串搜索,不排除安装包其他位置存在不同实现。

什么时候走哪条

按登录状态和操作入口选择路径

文中引用的产品说明把内置浏览器、Chrome 扩展和桌面操作分开。需要沿用个人浏览器已有登录时,要检查扩展或授权导入;无需个人登录的任务,可以先看内置入口。具体能否访问,还受站点与组织策略影响。

内置浏览器 Claude in Chrome Computer use
页面在哪 桌面应用自己的 Chromium 标签 你的 Google Chrome 你的屏幕,或 Cowork Linux VM
登录从哪来 自己的 partition。官方说可按站点导入。1.37937.3 有导入提示状态 launchChromeImportPrompt,导入器我没往下拆完 你现成的 Cookie 和已打开的页 屏幕上碰巧是什么就是什么
模型怎么动手 CDP 快照、点击、填表、执行 JS 扩展工具,经 native host 或 websocket 截屏加辅助功能点击
我没做的事

登录导入还有哪些未验证的部分

Inferred

Cowork 与通用 pane 的连接

Code 与 Cowork 相关入口都能追到 PreviewContext 中的 pane、tab、CDP 和外站策略。1.37937.3 还出现 isCoworkBrowserEnabled,以及 coworkPreferredBrowser === "chrome" 的分支。这支持组件复用的判断,不代表本次测试过两种入口的全部行为。

Unknown

从 Chrome 带登录过来,我没看流量

官方说明提到按站点从 Chrome、Edge、Firefox 导入,并排除银行和 SSO。新包中的 launchChromeImportPrompt 有 pending、dismissed、done 状态,设置文案也包含导入过的站点。实际如何取得和迁移 cookie,本次没有运行授权导入或抓取流量,不能从界面文案继续推断。

从哪核对

链接和路径

  1. Claude Cowork gets a built-in browser。2026-08-26,侧栏、和真浏览器隔离、Preferred browser。
  2. Use the built-in browser in Claude Cowork。桌面在线时,web / mobile 也能驱这只浏览器。
  3. Claude Code Week 28。2026-07,桌面 in-app browser 第一次写进 changelog。
  4. 本机先拆 1.26832.0,app.asar SHA-256 964e709746e9d40cd68b2ade85bdd8dca12b8da034dc8153fc14838285148b79,签名 Anthropic PBC (Q6L2SF6YDW)。后来升到 1.37937.3。
  5. 主进程 .vite/build/index.chunk-DIBPwUV0.js(CDPTools / WebContentsView / partition)、index.chunk-CEp6GoCO.js(工具和 browser_surfaces)、index2.chunk-DaCwJ8Hk.js(域名名单和源权限)、index.js(native host 安装)、Contents/Helpers/chrome-native-host。
文章目录7
Silent Star约 5 分钟