前言¶
在 DSH 里让 Agent 操作网页,常见做法是单独开浏览器标签或依赖扩展去抓 DOM,与聊天侧栏里「官方浏览器」往往是两套界面、两套状态。会话切换后,Agent 操作的 iframe 和你在侧栏里看到的页面也容易对不上。
dsh-webview-mode(维护者 vb2250158)把 Agent 接到官方 Sidebar Browser 上:标签、地址栏、前进后退、刷新和布局仍由官方 UI 管理,插件提供 conversation_browser,让 Agent 操作与侧栏当前可见 iframe 同一套浏览器实例。当前版本为 0.3.6(package.json 与 README 一致)。
- 目录页:https://www.skillhub.cn/plugins/vb2250158/dsh-webview-mode
- 源码:https://github.com/vb2250158/dsh-webview-mode
这是什么¶
一句话:dsh-webview-mode 是 DSH 浏览器操作桥接 插件(description: Agent bridge for the official DSH Sidebar Browser),MIT 许可证,作者 vb2250158。
它解决的是:在启用官方 Sidebar Browser 的前提下,让 Host 侧 Agent 通过统一远程接口管理会话内浏览器标签,并对当前可见的官方 iframe 做快照与 DOM 级操作(Web 端经 Chrome 扩展校验;Desktop 端能力有明确边界,见下文)。
核心功能¶
与官方 Sidebar Browser 整合¶
自 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 … 一类一键安装命令;以下均为资料原文中的条件与步骤,请勿凭仓库名自行拼接安装命令。
环境要求¶
- DSH 版本需满足插件 peer 与 README 要求(README 写明需要 DSH 0.2.1-alpha.1)。
- 启用官方 Sidebar Browser,且运行时存在
ctx.sidebarBrowser接口。资料说明:当前公开发行的官方 Client 尚未包含该接口;从源码运行环境须应用包内补丁并重建 Client:
patches/sidebar-browser-bridge.patch
应用补丁后重建 Client 包;bundle 会自动启用 ui-sidebar-browser。
- Chrome 扩展版本仍为 0.2.3。在插件详情页查看安装目录,加载扩展并对当前 DSH 来源授权。此次仅修改插件时扩展无需重新加载;Host 更新后刷新 DSH 页面。
插件以当前 DSH 进程权限运行;安装前应自行查看源码与 MIT 许可证,确认补丁范围与信任边界。
典型用法(Agent 侧)¶
资料未提供完整 JSON 请求示例,但给出了可复现的操作顺序,Host 集成 conversation_browser 后 Agent 可按下列步骤调用:
- 调用
status,确认载体(Web / Desktop)与 DOM 是否可用。 - 若需操作非当前标签,先
select再snapshot。 - 对当前可见标签
snapshot,从结果中取snapshotId与各元素ref。 - 使用
click、text、choose、scroll等完成交互;必要时navigate、reload、new、close管理标签。 - 动作完成后再次
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 中的整合设计。