dsh-webview-mode:为官方 Sidebar Browser 提供 Agent 操作桥接

前言

在 DSH 里让 Agent 操作网页,常见做法是单独开浏览器标签或依赖扩展去抓 DOM,与聊天侧栏里「官方浏览器」往往是两套界面、两套状态。会话切换后,Agent 操作的 iframe 和你在侧栏里看到的页面也容易对不上。

dsh-webview-mode(维护者 vb2250158)把 Agent 接到官方 Sidebar Browser 上:标签、地址栏、前进后退、刷新和布局仍由官方 UI 管理,插件提供 conversation_browser,让 Agent 操作与侧栏当前可见 iframe 同一套浏览器实例。当前版本为 0.3.6(package.json 与 README 一致)。

这是什么

一句话:dsh-webview-mode 是 DSH 浏览器操作桥接 插件(description: Agent bridge for the official DSH Sidebar Browser),MIT 许可证,作者 vb2250158。

它解决的是:在启用官方 Sidebar Browser 的前提下,让 Host 侧 Agent 通过统一远程接口管理会话内浏览器标签,并对当前可见的官方 iframe 做快照与 DOM 级操作(Web 端经 Chrome 扩展校验;Desktop 端能力有明确边界,见下文)。

核心功能

自 0.3.4 起,插件复用官方包 @deepseek-ai/dsh-client-ui-sidebar-browser。bundle 会自动启用 ui-sidebar-browser;补丁不替换官方 UI。标签生命周期与本地存储遵循官方 Sidebar 规则,刷新后按官方显式恢复规则处理,不恢复表单、滚动或页面内存。

conversation_browser 远程能力

README 列出的操作保留为:

类别 方法
状态与标签 status、new、navigate、select、close、reload
页面理解与交互 snapshot、click、text、choose、scroll

推荐流程:先 status,再对可见当前标签 snapshot,用最新 snapshotId 与元素 ref 执行动作,之后重新读取验证。导航信息不能当作页面加载成功的证明。

约束(均来自 README):

  • DOM 操作只接受屏幕中所属会话的当前可见官方 iframe;后台标签须先 select。
  • Web 扩展按 Chrome 的 tabId / frameId / documentId 校验身份。
  • 快照最多 200 个元素、24000 字符;密码框、文件控件排除;不读 Cookie、浏览器存储或文件;不提供任意 JavaScript。
  • DOM 动作为合成事件;不支持 Canvas、嵌套框架、关闭的 Shadow DOM 或可信物理键鼠;取消与超时可能发生在动作之后,不自动重试。

旧标签迁移(0.3.6)

首次打开会话时,按旧标签 ID 逐项复制到官方侧栏;成功后写入迁移记录,写入失败则关闭刚创建的标签并保留原存档。重复访问不再次导入,已关闭标签不自动重建。旧 tabId 经迁移记录映射到官方 ID;不同浏览器分别迁移。

0.3.6 起,浏览器桥接跟随官方侧栏显示的会话,并修复全局面板中的迁移报错;读取期间离开会话时保留迁移进度,实际存储失败仍会报告。

迁移与操作轮询由官方侧栏的会话挂载状态驱动:会话显示前等待;离开会话后停止领取新操作并释放挂载订阅。旧 ArchiveStore 文件保留在原目录作迁移源;读取旧存档支持尚未加载的会话且不唤醒 Agent;操作队列与旧存档写入仍要求已加载会话。

Desktop 与 Web 差异(0.3.5)

Desktop 使用官方 Sidebar Browser 的标签创建、选择、关闭、导航与刷新接口。status 返回 carrier: desktop、dom.state: unsupported、extension.state: not-applicable,不探测 Chrome 扩展。

Desktop 上网页快照、点击、输入、选择与滚动仍需官方受控 guest DOM 接口,目前明确拒绝这些操作;Web 扩展流程不变。Desktop 可继续手动浏览;DOM 桥接只支持 Web iframe。

安装与启用

已抓取 README 未给出 dsh plugin add … 一类一键安装命令;以下均为资料原文中的条件与步骤,请勿凭仓库名自行拼接安装命令。

环境要求

  1. DSH 版本需满足插件 peer 与 README 要求(README 写明需要 DSH 0.2.1-alpha.1)。
  2. 启用官方 Sidebar Browser,且运行时存在 ctx.sidebarBrowser 接口。资料说明:当前公开发行的官方 Client 尚未包含该接口;从源码运行环境须应用包内补丁并重建 Client:
patches/sidebar-browser-bridge.patch

应用补丁后重建 Client 包;bundle 会自动启用 ui-sidebar-browser。

  1. Chrome 扩展版本仍为 0.2.3。在插件详情页查看安装目录,加载扩展并对当前 DSH 来源授权。此次仅修改插件时扩展无需重新加载;Host 更新后刷新 DSH 页面。

插件以当前 DSH 进程权限运行;安装前应自行查看源码与 MIT 许可证,确认补丁范围与信任边界。

典型用法(Agent 侧)

资料未提供完整 JSON 请求示例,但给出了可复现的操作顺序,Host 集成 conversation_browser 后 Agent 可按下列步骤调用:

  1. 调用 status,确认载体(Web / Desktop)与 DOM 是否可用。
  2. 若需操作非当前标签,先 select 再 snapshot。
  3. 对当前可见标签 snapshot,从结果中取 snapshotId 与各元素 ref。
  4. 使用 click、text、choose、scroll 等完成交互;必要时 navigate、reload、new、close 管理标签。
  5. 动作完成后再次 snapshot 或读页面状态做验证。

Web 端 DOM 桥接依赖已授权扩展;Desktop 端仅保证官方侧栏级标签与导航,DOM 自动化按上文拒绝策略处理。

适用场景与注意

适合:

  • 已在或计划使用官方 Sidebar Browser,希望 Agent 与用户在同一可见 iframe 上协作的 DSH 开发者。
  • 需要从旧 ArchiveStore 标签平滑迁移到官方侧栏存储的升级场景。
  • 愿意按文档应用 sidebar-browser-bridge.patch 并从固定 Git 提交同步环境的团队(验证流程见 README「验证与发布」)。

注意:

  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;插件为社区维护,非官方应用商店内置能力。
  • 网站嵌入、第三方登录等限制遵循官方浏览器及 Chrome 策略;普通表单值可能在任务需要时进入会话日志。
  • 开发验证:pnpm test;可选环境变量 DSH_DOM_TEST_RESOLVE_FROM、DSH_EXTENSION_BROWSER_EXECUTABLE 指向已有 jsdom/Playwright 工作区与 Chromium(不自动下载)。

结尾

dsh-webview-mode 把 Agent 浏览器能力锚定在官方 Sidebar Browser 上,用 conversation_browser 统一标签与(Web 端)DOM 操作,并处理旧标签迁移与会话可见性。若你的 Harness 需要「侧栏即 Agent 所见」,可从目录页与 GitHub 查看版本 0.3.6 说明与 docs/sidebar-consolidation.md 中的整合设计。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye