wqty123/dsh-browser

wqty123/dsh-browser

共享真实浏览器:用户可观看并随时接管的原生 Electron 窗口,agent 通过 CDP 驱动,内置 20 个 browser_* 工具(打开/快照/执行/填表/截图/下载/登录态);任务级会话隔离、登录态持久化、人机验证识别,纯 `dsh web` 无需桌面外壳即可自托管。

浏览器与网页browserdeepseek-harness

为 DeepSeek Harness 生态打造的共享真实浏览器插件(装好即用,人机同页)

agent 驱动一个真实、可见、可随时人工接管的浏览器——人与 agent 操作的是同一个页面。

这是什么

dsh-builtin-browser 给 DeepSeek Harness 提供浏览器能力:

  • 真实页面,而非转播:页面由真实的浏览器承载 —— 桌面端就是官方侧栏里那一个,Web 端是插件拉起的窗口,也可以在设置里改用你本机的 Chrome / Edge。用户直接看到 agent 在做什么,随时可以上手接管;
  • 人机同页(桌面端):agent 操作的页面与人看到的是同一个页面 —— 不再是一个你看不见的窗口;
  • 装好即用:载体自动选择(桌面端侧重侧栏 → 否则自托管),纯 dsh web 不需要任何额外配置;
  • 一插件即一套工具:安装后 agent 自动获得 34 个 dsh_browser_* 工具(打开、查看、无障碍树、等待、语义/坐标操作、滚动、回退、批量/单控件填表、按键、结构化提取、截图、下载、登录态管理……)。

一句话:安装插件 = 获得一个与用户共享、可被 agent 驱动的真实浏览器。

快速开始

先确认你在哪一端 —— 两端是两份独立安装,更新其中一端不会带上另一端,浏览器的承载方式也不同。

更新已安装的插件是两步(DSH 0.2.1-alpha.2 起,对已装包再装会直接报 already-installed):先 dsh plugin --profile remove dsh-builtin-browser,再 add 目标版本。详见用户指南。

DSH Desktop(桌面端)

dsh plugin --profile desktop add dsh-builtin-browser

桌面端默认驱动官方侧栏里那个浏览器面板 —— 不额外开窗口,也不依赖 Electron,agent 操作的就是你在界面上看到的那一个页面。

要让插件驱动侧栏,还需要一条 bridge(它装在桌面端自己的安装目录里,不在 profile 中):

node desktop-bridge/install.mjs            # 幂等;首次会备份 main.js.before-bridge
node desktop-bridge/install.mjs --revert   # 回滚
这不是必做项:不装 bridge,插件自动退回自托管 —— 功能完全一样,只是会多出一个独立窗口。桌面端升级后要重跑一次,因为升级会替换 resources/app/,bridge 随之消失。

Web 端(dsh web)

dsh plugin --profile web add dsh-builtin-browser

Web 端没有侧栏,也没有 bridge:共享浏览器由插件自托管拉起一个独立窗口(标题 dsh-browser),自带完整工具栏(地址栏 / 后退前进刷新 / 标签条),你可以像用普通浏览器一样直接用它。

首次安装若缺少 Electron 二进制(44+ 不再随安装下载),按报错提示执行一次 npx install-electron,需要网络。

两端通用

装完不需要其它配置,直接让 agent 用它:

帮我打开 https://example.com,把页面上的主要内容用中文总结一下。

浏览器窗口会随第一次调用出现;你可以随时在那个窗口里自己操作,agent 会接着往下走。两端都可以在设置里改用你本机已安装的 Chrome / Edge,那是行为完全一致的选项。

文档

目标 · 入口 了解插件为什么存在、与无头方案的区别 · 为什么做共享真实浏览器 安装、配置、日常使用与常见问题 · 用户指南 全部 34 个工具的参数、输出与示例 · 工具参考 了解 seam / provider / 工具三层与自托管实现 · 架构说明 知道哪些事做不到、以及为什么 · 已知限制 构建、测试、复验宿主兼容性 · 开发 查看全部文档与 README 分工 · 文档索引

环境要求、四种载体的取舍、配置项、操作纪律、故障排查与更新方式都在上面这几篇里 —— README 只做入口,细节不在这里重复。

工具名空间

本插件占用全局 **dsh_browser_*** 名空间(34 个工具)。

**0.4.8 之前是 browser_*。 那个名字是无前缀通用词,与腾讯 BrowserSkill 的 DSH 插件(`@wxg-prc-cpg/browser-skill-dsh-plugin` @0.3.2 的 `browser_session`)直接相撞 —— 而 DSH 的工具注册是全局且不允许重名**的,后注册的一方直接抛错。对方六个工具因此全部注册失败,表现成"装了但没反应"。

为什么是我们改: browser_* 这种无前缀的名字不属于任何一方,而一次冲撞的代价不是"两个插件各用一个",是后注册者整套消失。把通用名让出来,比让每个用户去改自己的 node_modules 合理。腾讯上游也已把它们的六个工具改为 bsk_*。

如果你日志里出现 `could not register dsh_browser_xxx`:说明有另一个插件占了同一个名字。0.4.8 起每个工具独立注册,所以碰撞只影响那一个名字,其余工具照常可用 —— 这条检查就是为了让下次撞名一眼可见,而不是从"插件坏了"开始排查。

谁需要更新 0.4.8:只有名字变了,功能一字未改。只装这一个浏览器插件的人不必更新;装了其它浏览器插件(尤其腾讯 BrowserSkill)的人建议更新。详见用户指南的升级说明。

更新记录

完整明细(按轮次,含每处修复的原因与证据)见 CHANGELOG.md。0.1.16 起随版本发布(tag v0.1.16)。

版本 · 日期 · 主题 0.4.8 · 2026-10-14 · 工具名空间:34 个工具移入 dsh_browser_*,一个名字被占不再毁掉整套工具 0.4.7 · 2026-10-12 · 三个"同形"缺陷:载体被写死、宿主死了不换、设置读了不生效;收 #26 的四条建议 0.4.6 · 2026-10-08 · 跨会话读错侧栏、等待期间误建空白页、升级把浏览器登出 0.4.5 · 2026-10-06 · 会话串扰的真正根因:面板放置改按会话 id,而非"外壳当前显示谁" 0.4.0–0.4.4 · 2026-10-02 · 把"限制"分成真限制与实现限制:dsh_browser_auth 三种载体全可用、本机 Chrome/Edge 支持 JPEG、降采样全载体可用;修掉会崩宿主、会静默做错事、会永久挂住的缺陷

特别感谢

特别感谢 DeepSeek Harness 原始仓库 与 DeepSeek AI 团队:本插件的 seam、工具运行时与插件体系都构建在这个项目之上。

同时感谢 Cordis 提供的插件化基础,以及所有参与讨论、测试、反馈和插件开发的社区成员 —— 包括带着完整复现与本地补丁来的报告者,他们让这些修复不必靠猜。

作者的话

对插件本身有意见或者有想要制作的其他插件,欢迎加我微信来讨论:

wx:`hui13866591135`(请在申请好友时注明)

License

本项目遵循 MIT License。

本项目是 DeepSeek Harness 的社区插件,并非 DeepSeek 官方产品。