Skip to content

feat(browser): 增加托管 Browser MCP 运行时与内置会话浏览器 - #549

Open
lj64212585 wants to merge 9 commits into
xintaofei:mainfrom
lj64212585:feat/browser-in
Open

feat(browser): 增加托管 Browser MCP 运行时与内置会话浏览器#549
lj64212585 wants to merge 9 commits into
xintaofei:mainfrom
lj64212585:feat/browser-in

Conversation

@lj64212585

Copy link
Copy Markdown

概述

本 PR 为 Windows Desktop 增加托管 Browser MCP 运行时与会话内置浏览器,并通过现有 ACP/MCP 汇合点接入 Agent,不替换现有 Agent、Session、Delegation 或用户 MCP 配置模型。

原生模式使用 Rust 管理的 child WebView2 作为用户可见页面,并通过私有认证 bridge 让 Browser sidecar 操作同一 controller;同时保留 External Chromium/CDP 作为显式回退方案。

主要改动

  • 新增独立的 @codeg/browser-mcp sidecar,提供 20 个严格校验的 runtime、tab、page、action 和 download 工具。
  • 新增 BrowserRuntimeManager,统一管理 sidecar、每次启动生成的 loopback bearer、managed profile、下载目录、健康状态、恢复和退出清理。
  • 仅在 Agent 支持 MCP、wire 能实际传递 MCP、Browser 已启用且 runtime Ready 时注入 Browser provider;其他情况保持 fail closed,不阻断普通 Agent session。
  • 新增 Rust NativeBrowserRuntime 与 Windows WebView2 controller registry,按 (connection_id, tab_id, generation) 管理页面所有权、生命周期和 stale-session 校验。
  • 新增 AuxPanel Browser surface,支持多标签、导航、前进/后退、刷新、关闭、尺寸同步和 host overlay 避让。
  • Embedded 模式渲染原生 WebView2;External 模式继续使用兼容的 frame/input surface。
  • 新增“自动操作”设置页,支持总开关、Embedded/External backend 切换、运行状态、诊断与恢复;启用状态只影响之后创建的逻辑 Agent session。
  • 新增 Browser Tool Card,使截图结果保留在 Browser 调用上下文中。
  • 补齐 10 种现有语言的 Browser UI 文案。
  • 接入 sidecar 构建、Tauri bundle、release workflow、NSIS companion 清理、依赖来源和第三方声明。
  • 隔离 Pi trusted-folder 测试夹具,并修复 server credential 测试对 CODEG_DATA_DIR 的并发环境变量竞争。

安全与兼容性

  • 导航只允许受控的 HTTP(S) URL,并防护 local/private/special 地址、SSRF 和 DNS rebinding。
  • redirect 跨 origin 时移除 Authorization、Cookie、Proxy-Authorization 和 API key 等敏感 header。
  • popup、permission、HTTP auth、证书错误、脚本 dialog 和 file chooser 均采用显式 deny/cancel 或 fail-closed 策略。
  • 下载仅写入 session-scoped managed root,并在完成时重新验证 canonical containment。
  • Browser endpoint 仅监听 loopback并要求每次启动生成的 bearer;token、URL query、页面正文和敏感 payload 不进入公开状态或普通日志。
  • 不读取或复用用户默认 Chrome profile/cookie。
  • 公开工具合同不提供任意 JavaScript evaluate、上传、系统文件对话框或任意路径保存。
  • Windows Desktop 是当前正式支持范围;其他平台使用 fail-closed bundle stub。
  • 旧的 embedded 设置值会迁移到原生 WebView2 backend,不清除已有 profile 或 download 数据;原生启动失败时可显式切换到 External。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant