🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

共享浏览器 wqty123/dsh-browser

DeepSeek Harnessv0.4.15
wqty1232 天前有提交已提供中文文档扫描:高危

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

61.4/100
综合分
153
GitHub 星标
9,941
npm 周下载
—/5
用户评分

数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-builtin-browser
npm 源 · dsh-builtin-browser 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-builtin-browser @ 0.4.15
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 17:40:14

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

安装时即执行脚本可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-tools@deepseek-ai/dsh-system-prompt@deepseek-ai/schemastery@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 共享真实浏览器
  • 人机同页

DeepSeek Harness 共享真实浏览器插件

v0.5.22026-11-01
· 侧栏页面不再需要人先把侧栏打开、或先切到那个会话 browser.channel = "sidebar" 在桌面上曾有两种稳定复现的失败,两种都以"用户去点一下"收场。现在都不需要了。 根因一:外壳只渲染「展开状态下、激活标签」的 body。 折叠(或从未打开)的列仍保留 tab strip,所以读侧一直报 panel: true,而承载页面的 从未被创建:guestId 恒为 null,等满 20 秒后报"面板不可用",再把载体换成自带窗口——用户看到的是"浏览器开在了另一个窗口里"。 · 客户端 openPanel 放置标签后新增"让页面出现"这一步:isExpanded() 为 false 时 toggleExpanded(),再 focus() 把刚放的标签设为激活。两者都是外壳自己的布局命令,不派发按键、不点元素。 · 旧外壳缺 isExpanded/focus 时退化为"只放置",不抛错。 根因二:判"该不该动列"不能用 DOM。 "本会话在前台、右侧栏从未打开"和"别的会话在前台"都没有面板 DOM,动作却相反:前者要展开,后者绝不能碰。改判据为外壳自己的 screen()(当前显示的会话 id)——这也修掉了一个真实现象:刚启动的外壳右侧栏根本没被打开过,旧判据把这种前台状态当成"不在前台",于是刚重启的机器上修复不可达。 根因三:不在前台的会话。 标签能放进它的 surface store,却永远长不出 webview。客户端现在调外壳自己的 uiWorkspace.openSession(sessionId) 请求显示该会话(与会话列表的跳转同一条路),并在裁决里回报 switched。 · host 侧把"未显示"当作可重试的显示状态:400 ms × 4 次(≈1.6 s),因为 React 在下一趟渲染里就把它变成可用;耗尽后才报错,文案是"外壳已被请求显示该会话、面板仍未渲染"。 · 重试判据同时认旧 bridge 的措辞(can only attach,无 code)。本机实测:resources\app\lib\plugin-browser-bridge.js 曾是 issue #37 之前的版本(42,256 B,全文没有 panel-not-displayed),只按 code 归类会让"没重装过 bridge"的机器吃满失败。重装 bridge 后两者一致,但不重装也能工作。 · uiWorkspace 与 sidebarRight 用两个独立 inject:老组合缺 workspace 服务时,面板本身不受影响。 · 不可能渲染的情况(iframe 外壳 / produced no page)行为不变:仍然降级,不被重试掩盖。 实测(桌面 rc.5,两次重启各验一发):① 全新窗口首开 weibo.com → 侧栏出现 webview(frame: webview,无独立 electron 窗口);② 切到另一个会话后开 example.com → 侧栏出现新 webview,shell 窗口标题回到该会话,工具调用不报错。 · 新增 dsh_browser_click_sequence:批量坐标点击 · provider.clickSequence():只 present() 一次;每点走 mouseMoved/mousePressed/mouseReleased;间隔默认 40 ms(低于此值页面会把两次按下读成双击或直接丢弃);首点失败即停并返回 failedAt。 · 为什么要它:canvas 页面只认 isTrusted 的真实输入,页面里的 MouseEvent/PointerEvent/element.click() 全部无效;原来每格两次工具调用,一盘 86 次。 · 实测:sudoku.com 一盘(38 给定 / 43 空,求解器唯一解校验)用 2 点探针 + 84 点一次批量完成,全部命中并通关(连胜计数 0→1,弹出通关页)。 测试 417 → 427(新增 10 条,覆盖展开/聚焦、已展开不折叠、后台会话请求显示、缺 workspace 服务、宿主重试到成功、旧 bridge 无 code 拒绝),tsc 干净。
v0.5.12026-10-31
· 0.5.1 把「浏览器自己打开的页面」接回来。两个缺陷,同一种性质:载体的页面能被列出、能被关闭,却够不着。 · switch_tab 接管载体页面 dsh_browser_list_tabs 会把你自己打开的页面列在 page: 前缀下,dsh_browser_close_tab 也能关掉它, 但 dsh_browser_switch_tab 回答「not open in this session」。屏幕上的那一页看得见、关得掉、读不到。 现在载体对那个已存在的 target attach 一个 CDP 会话。不移动、不重载、不聚焦,登录态和滚动位置原样保留。 · open 复用已经在那个 URL 上的页面 以前它直接在自己的 tab 里导航,不看载体手里有什么 —— 于是你手动打开的页面被绕过:工具报告成功, 却对屏幕上的那一页只字不提,读起来就是「这页坏了」;再 open 同一个 URL 会建出第二个 tab。 比对 scheme / host / path / query。hash 是文档内的位置,结尾斜杠是拼写,两者都不构成另一页。 显式 newTab 跳过复用。 · 另外两处 · canvas 检测不再要求元素列表为空。sudoku.com 会采到 60 个链接,同时把棋盘画在 canvas 上; 旧的门控让这个标志在它本该服务的场景里从不触发。 · 空白页改由页面自身的 location.href 判定,而不是一个可能落后于浏览器自身跳转的记账副本。 · 安装 dsh plugin --profile desktop add dsh-builtin-browser@0.5.1 dsh plugin --profile web add dsh-builtin-browser@0.5.1 · 已知未验证 以下只有源码级测试,没有端到端证据。欢迎实测反馈: · adoptPage(接管载体页面)—— 需要真实桌面外壳或本机 Chrome/Edge · capturePassive(远程观看的被动采集)—— 需要真机确认不抢焦点 · install.mjs --restart —— 会关闭桌面端,不适合自动化 升级后必须重启 DSH。 Node 在 require 时把模块读进内存,改磁盘不影响已加载的实例。
v0.4.142026-10-20
在没有显示的环境里自动改用 headless 启动。systemd 服务、容器、只有 SSH 的服务器都能用了。 · 问题 以 dsh web 作为 systemd 服务常驻时,进程里没有 DISPLAY 也没有 WAYLAND_DISPLAY。Chromium 在这种情况下打印 could not connect to display 后立即退出,于是每次 dsh_browser_* 都报 exited immediately after launch (exit code 1),DevToolsActivePort 从不出现,整组工具不可用——而那恰恰是"用截图把结果回传"的主流部署形态。 · 改法 新增 browser.headless 设置,默认 auto: | 值 | 行为 | | --- | --- | | auto(默认) | 有显示 → 开窗口;无显示 → headless | | headless | 强制 headless(服务器 / CI / 截图专用) | | windowed | 强制窗口;显示不可用时明确报错,不悄悄退化 | 手写 true / false 也接受,等价于 headless / windowed。不认识的值会被报告并回落到 auto ——被丢弃的值和生效的值必须看起来不一样。 环境变量优先于设置项:DSH_BROWSER_HEADLESS=1 强制 headless,=0 强制窗口。运维改一个运行中的部署不该需要编辑文件;判断顺序上环境变量在模式之前,否则存下来的设置会压过应急开关。 headless 启动会带上 --headless=new(新模式的行为更接近有窗口的浏览器,而本插件所有命令都是对着有窗口的浏览器写并实测的,包括 CDP 输入)、--disable-gpu、--disable-dev-shm-usage。 --no-sandbox 只在必要时加:以 root 运行或在容器内(/.dockerenv 或 container 环境变量)。默认仍走沙箱,而且每次降级都在 stderr 明确写出——降低进程隔离这件事必须让人能看见并反对。 · 验证 5 条新断言,把源码回退到修复前跑同一组:4 条失败(其中启动参数那条等了 30 秒超时,那正是没有 --headless 时浏览器起不来的表现),修复后 5 条全过。 未验证的部分:这次没有在真实的 systemd / 无显示环境里跑过。报告者已用等价补丁做过端到端验证(页面打开、PNG 产出 780×437),本实现在同一处用同样的开关,但仍需真实无显示环境复测。 测试 290 → 295。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
中文 · English 为 DeepSeek Harness 生态打造的共享真实浏览器插件(装好即用,人机同页) 智能体驱动一个真实、可见、可随时人工接管的浏览器——人与智能体操作的是同一个页面。 这是什么 dsh-builtin-browser 给 DeepSeek Harness 提供浏览器能力: - 真实页面,而非转播:页面由真实的浏览器承载 —— 桌面端在外壳与 bridge 支持时使用官方侧栏,否则使用插件拉起的窗口;也可以在设置里改用你本机的 Chrome / Edge。用户直接看到智能体在做什么,随时可以上手接管; - 人机同页(桌面端):智能体操作的页面与人看到的是同一个页面 —— 不再是一个你看不见的窗口; - 自动选择载体:桌面侧栏可用时优先侧栏,否则自托管;宿主允许安装脚本且下载可用时,插件会在安装阶段准备 Electron 二进制; - 一插件即一套工具:安装后智能体自动获得 34 个 dsh_browser_ 工具(打开、查看、无障碍树、等待、语义/坐标操作、滚动、回退、批量/单控件填表、按键、结构化提取、截图、下载、登录态管理……)。 一句话:安装插件 = 获得一个与用户共享、可被智能体驱动的真实浏览器。 快速开始 先确认你在哪一端 —— 两端是两份独立安装,更新其中一端不会带上另一端,浏览器的承载方式也不同。
展开完整文档(README 剩余 1 节)
中文 · English

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

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

这是什么

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

- 真实页面,而非转播:页面由真实的浏览器承载 —— 桌面端在外壳与 bridge 支持时使用官方侧栏,否则使用插件拉起的窗口;也可以在设置里改用你本机的 Chrome / Edge。用户直接看到智能体在做什么,随时可以上手接管;
- 人机同页(桌面端):智能体操作的页面与人看到的是同一个页面 —— 不再是一个你看不见的窗口;
- 自动选择载体:桌面侧栏可用时优先侧栏,否则自托管;宿主允许安装脚本且下载可用时,插件会在安装阶段准备 Electron 二进制;
- 一插件即一套工具:安装后智能体自动获得 34 个 dsh_browser_ 工具(打开、查看、无障碍树、等待、语义/坐标操作、滚动、回退、批量/单控件填表、按键、结构化提取、截图、下载、登录态管理……)。

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

快速开始

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

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

0.4.16 正在准备发布,包含安全、稳定性与桌面 rc.5 侧栏适配修复;现有用户建议在版本发布后更新。插件更新不会更新 DSH 桌面外壳,也不会自动刷新外壳内的 bridge 或已有 ELECTRON_PATH 覆盖。先备份,再按0.4.16 升级说明处理。

DSH Desktop(桌面端)

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

桌面端在外壳支持可驱动的 <webview> 且已安装 bridge 时,驱动官方侧栏里那个浏览器面板,智能体操作的就是你在界面上看到的同一页面。侧栏不可驱动时自动使用插件自己的 Electron 窗口。

要让插件驱动侧栏,还需要一条 bridge(它装在桌面端自己的安装目录里,不在配置档中)。0.5.0 起可以一步完成:

Windows:双击即用,或 desktop-bridge/install-and-start.cmd

任意平台:脚本自己关闭 DSH、安装、再启动
node desktop-bridge/install.mjs "<DSH Desktop 安装目录>" --restart

--restart 由脚本自己关闭桌面端 —— 不要在运行中手工安装:归档被运行中的 Electron 占用,rename 会以 EBUSY 失败,而"等它退出再装"的守护进程会被一起带走(实测两种拉起方式都如此)。--restart 会提示确认,--yes 跳过。不带 --restart 时脚本仍要求你先关闭桌面端。

bridge 是可选项:不装时自动退回自托管,多出一个独立窗口。插件或桌面外壳升级后,重跑同一条命令即可修复 —— 桌面端升级会恢复 app.asar,桥随之失效,此时 bridge-status 报 stale。设置在面板顶部可见。载体差异见已知限制。

Web 端(dsh web)

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

Web 端没有侧栏,也没有 bridge:共享浏览器由插件自托管拉起一个独立窗口(标题 dsh-browser),自带完整工具栏(地址栏 / 后退前进刷新 / 标签条),你可以像用普通浏览器一样直接用它。
0.4.16 通常会通过安装脚本准备 Electron 二进制。DSH rc.5 的 pnpm 11.7 使用 strict-dep-builds,首次安装可能需在宿主原生插件管理器中批准本插件的构建脚本;插件不会自行修改 allowBuilds。使用 --ignore-scripts 或明确跳过下载后,可在正确的 profile 目录执行 npx --no dsh-browser-install-electron 手动准备(需网络)。若设置了 ELECTRON_SKIP_BINARY_DOWNLOAD,该命令也会遵守跳过选择。详见用户指南。

两端通用

完成安装与所需的构建脚本批准后,直接让智能体用它:

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

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

远程观看浏览器(0.5.0 新增)

通过 LAN 或隧道从另一台设备操作 DSH 时,浏览器窗口在主机显示器上,远程看不到智能体在做什么。0.5.0 补上了只读画面:

默认关闭。 主机在设置里打开 remoteView.enabled 之后,页面才会提供画面;关闭状态下端点不返回图像、不透露目标信息。不需要安装或改动其他插件 —— LAN 场景走宿主自己的 web server。

面板是一个悬浮入口(右下角「观看浏览器」),显示当前任务的画面、只读标记、状态与停止按钮。拉帧是一帧一请求:显示完上一帧才请求下一帧,慢网络自然降速而不堆积。

| 项目 | 默认值 |
| 帧率 | 2 fps(每 500 ms 一帧,上一帧绘制完成才请求) |
| 编码 | JPEG,质量 70,等比缩放到 1280×720 内 |
| 采集 | 被动:不抢焦点、不切标签、不展开窗口、不自动恢复载体 |
| 存储 | 不落盘、不进入聊天或模型上下文 |

第一版只读:不转发点击、键盘、滚轮,不提供地址栏或远程切换原生标签。

三个端点,都在 /dsh-builtin-browser/browser-view/ 下,仅同源可访问:

| 端点 | 用途 |
| GET sessions | 面板用来取得可观看的会话 id(只有 id,无 URL/标题) |
| GET frame?session=… | 一张 JPEG |
| GET …/bridge-status | 桌面 bridge 的安装状态 |

画面可能包含验证码、账户信息或登录后内容 —— 打开前请确认这是你要看的页面。

文档

| 目标 | 入口 |
| 了解插件为什么存在、与无头方案的区别 | 为什么做共享真实浏览器 |
| 安装、配置、日常使用与常见问题 | 用户指南 |
| 全部 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.7 或更早版本升级时,还需把自定义提示词里的 browser_ 改为 dsh_browser_。当前升级建议以 0.4.16 升级说明为准。

更新记录

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

| 版本 | 日期 | 主题 |
| 0.5.1 | 2026-10-31 | 接管浏览器自己打开的页面:switch_tab 与 open 都能落到你正在看的那一页,不再另开一个;canvas 检测不再要求元素列表为空;空白页改由页面自身 URL 判定 |
| 0.5.0 | 2026-10-31 | 远程观看浏览器(#34)与主动采集;桌面 bridge 一键安装/修复(#36);侧栏「面板只是没显示」不再被判为载体损失(#37);canvas 页面与图片链接可见;CDP 会话自动重连 |
| 0.4.16 | 2026-10-31 | 安全与稳定性:并发选页隔离、下载/截图禁止覆盖、bridge 与设置门控加固、载体切换恢复、桌面 rc.5 侧栏适配;Electron ^44.10.0 与安装阶段二进制准备 |
| 0.4.9–0.4.15 | 2026-10-15–19 | 侧栏能力探测与回退、宿主契约对齐、本机 Chrome/Edge 无显示启动与启动移交修复;详见 CHANGELOG |
| 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 官方产品。
预览分享卡片长什么样 ↓wqty123/dsh-browser
分享 · DeepSeek Harness Hub
wqty123/dsh-browser

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

回到顶部