用 dsh-browser 把 DeepSeek Harness 接到正在用的 Chrome 标签页

前言

DeepSeek Harness(dsh)是 DeepSeek AI 开源的智能体运行时,官方仓库把设计概括成一句话:一切皆插件。它目前仍处于开发者预览阶段,升级时可能出现不兼容变更。社区里已经有一份独立的插件目录(https://deepseek-harness-plugin.com/zh-CN/plugins/ ),用来检索、安装各类第三方插件;该站点与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

智能体要操作网页时,常见做法是另起一个无头浏览器,再靠截图做视觉定位。登录态、Cookie、已经打开的后台页,往往都接不上。dsh-browser 走的是另一条路:把 dsh 接到你正在用的 Chrome 标签页上,页面变成带编号的结构化文本,模型按编号点控件、填表单、滚动和导航,面向模型的流水线里不传入截图。

下面按目录页和 GitHub 仓库已经公开的资料,介绍它是什么、能做什么、怎么装、怎么用。

这是什么

dsh-browser 是一款界面增强类插件,由 GitHub 用户 Lum1104 维护,许可证为 MIT(版权页署名为 Yuxiang Lin,2026)。仓库地址:https://github.com/Lum1104/dsh-browser 。社区目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-browser/ 。截至 2026 年 8 月 17 日,GitHub 上约有 210 星,主要语言是 TypeScript。

它不是单独一个 npm 包,而是一个独立的 pnpm workspace,里面同时放了两样东西:

  • packages/browser/bridge-browser/:给 dsh 用的浏览器桥插件(含 cordis.patch.yml),安装脚本里注册的包名是 @deepseek-ai/dsh-bridge-browser
  • extensions/dsh-browser/:Chrome Manifest V3 扩展,加载后名称是「dsh 浏览器助手」

README 写得很明确:把 DeepSeek Harness 连接到你正在使用的 Chrome 标签页。模型可以读取页面内容、点击控件、填写表单、滚动与导航,同时保留登录态、会话和 Cookie;侧边栏提供对话界面。整个集成是纯文本设计:页面会转成结构化文本和带编号的交互元素清单,模型通过编号定位元素。

有一个容易踩的坑:npm 上未加 scope 的 dsh-browser 包属于另一个项目,与本仓库无关。本项目目前没有发布 npm 包,不要用 npm install dsh-browser 来装它。

核心功能

仓库 README 列出的工具如下。

1、读取页面:browser_snapshot。返回标题、URL、正文、编号交互清单和表单字段;敏感值会做掩码。参数 delta: true 时只返回变化。

2、点击元素:browser_click。按编号点击链接、按钮、复选框等。

3、填写表单:browser_type。写入文本,兼容 React / Vue 受控组件;replace 会先清空再填。

4、按键:browser_press。发送 Enter、Tab、Escape、方向键等键盘事件。

5、滚动:browser_scroll。视口滚动,方向包括 up、down、top、bottom。

6、页面导航:browser_navigatebrowser_backbrowser_forwardbrowser_reload。在受控标签页内跳转,登录态保留。

7、读取区域:browser_get_text。用于懒加载内容或只取局部文本。

8、等待稳定:browser_wait。检测页面加载与渲染是否稳定。

设计上有几条边界,README 写在「为什么这样设计」里:

  • 操作的是真实浏览器,不是无头副本,登录态、会话和 Cookie 都会留下来。
  • 纯文本模型接口:编号控件、跨快照稳定 ID、delta 更新、敏感值掩码,因此不需要视觉能力。
  • 密码和支付卡字段始终显示为 ••••,字段值不会离开页面。
  • 远程连接使用认证握手;特权网关方法拒绝非回环调用方;扩展把工具绑定到一个由用户控制的标签页。

安装与启用

社区目录页给出的安装命令是:

dsh plugin add github:Lum1104/dsh-browser

如需可复现安装,目录页建议固定 commit 哈希:

dsh plugin add github:Lum1104/dsh-browser#commit

commit 换成实际的提交哈希即可。目录页同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码;安装前应检查源代码仓库和许可证。

这个仓库同时包含桥插件和 Chrome 扩展。README 推荐的完整安装方式是运行官方 scripts/install.sh,它会构建桥插件、注册到本机 web profile、再构建并落盘 Chrome 扩展。前提是 Node.js ^22.19>=24、Corepack / pnpm,以及 Google Chrome。所需的 @deepseek-ai 包都在公共 npm 注册表上,安装不需要 npm token。

推荐命令无需预先 clone:

curl -fsSL https://raw.githubusercontent.com/Lum1104/dsh-browser/refs/heads/main/scripts/install.sh | bash

远程安装器会把 main 下载到 ~/.dsh/dsh-browser,按锁文件安装固定版本依赖,构建桥插件并注册到本机 web profile,再把扩展复制到 ~/.dsh/browser-extension,然后尝试打开 chrome://extensions。在扩展管理页开启开发者模式,加载的是 ~/.dsh/browser-extension,不要加载仓库里的源码目录 extensions/dsh-browser/

从网上下载脚本再直接执行前,建议先打开同一地址查看脚本内容。安装器会调用 curltarrsyncpnpm;若本机缺少这些命令,脚本会报错退出。

开发者也可以先 clone,再在仓库里跑同一个安装器。该模式使用当前分支,不会下载或覆盖源码:

git clone https://github.com/Lum1104/dsh-browser.git
cd dsh-browser
./scripts/install.sh

安装器把桥接 bundle 写进本机 web profile,而 dsh 只在启动时加载 profile。如果安装前 dsh 已经在跑,装完必须重启,否则侧边栏会一直显示「未连接」,即使扩展已经加载成功。

典型用法

托管安装完成后,可以用仓库里固定的 dsh 版本启动:

cd ~/.dsh/dsh-browser && pnpm start

如果是 clone 安装,改为在仓库根目录执行 pnpm start。也可以直接跑 npm 上的公开版本:

npx @deepseek-ai/dsh web

两种启动方式都会从本机 web profile 加载同一个浏览器 bundle。默认端口是 3080;被占用时可以改端口,例如:

npx @deepseek-ai/dsh web --port 3081

工具栏出现 DeepSeek 鲸鱼图标后,点击打开侧边栏。本机使用时扩展会请求 /ext/bridge-config 自动发现 dsh,回环连接不需要桥接 token。只有用 --host 0.0.0.0 做远程部署时,才需要在侧边栏设置里填写地址和桥接 token。这个 token 是运行时安全凭证,和 npm 登录无关。

开始使用时按 README 的第三步即可:

1、打开任意普通的 http://https:// 页面。
2、点击工具栏的鲸鱼图标,等到侧边栏显示「已连接」。
3、直接对话,或先点「读取页面」。模型拿到的是结构化文本和编号控件清单,后续点击、输入都按编号进行。
4、页面即使在扩展安装或重载之前就已经打开,第一次操作时也会自动补加载内容脚本,不必先刷新。

chrome://、Chrome 网上应用店等浏览器内置或受保护页面不能注入扩展脚本,因此不能读取、也不能操作。

后续日常使用不用重装扩展,启动 dsh 即可。更新托管安装时,再跑一次上面的 curl 命令;更新 clone 时,拉取或切换到目标版本后再执行 ./scripts/install.sh。然后在 chrome://extensions 里对「dsh 浏览器助手」点一次重新加载,并重新打开侧边栏。若 dsh web 正在运行,也要重启,让它重新加载更新后的 web profile。

侧边栏一直显示「未连接」时,README 给了三条检查路径:

  • 确认本机 dsh web 正在运行,默认地址是 http://127.0.0.1:3080
  • 浏览器打开 http://127.0.0.1:3080/ext/bridge-config,应返回类似 {"wsUrl":"ws://127.0.0.1:3080/ext/bridge"} 的 JSON。如果返回的是网页而不是 JSON,说明当前进程还没有加载桥接,重启 dsh 后再刷新即可。
  • 扩展会自动探测 3080、3081、3090。若 dsh 跑在其它端口,或使用了 --host 0.0.0.0,到侧边栏设置里填写地址和桥接 token。

适用场景与注意事项

适合已经在用 DeepSeek Harness Web UI、并且希望智能体操作「当前这一个已登录页面」的人。典型需求包括:在已登录的后台里点按钮、填表、跟页面跳转,同时不想把会话迁到另一套无头浏览器里。它不替代通用的无头浏览器自动化框架,也不处理需要截图或视觉定位的页面。

使用前有几件事需要知道。

插件以当前 dsh 进程的权限运行。目录页写明安装时可能执行代码,安装前应阅读 https://github.com/Lum1104/dsh-browser 的源码和 MIT 许可证。DeepSeek Harness 仍是开发者预览,README 说明升级时可能要同步调整依赖与 API。

安全模型以仓库「安全」一节为准,这里只摘已经写明的几点:桥路径在 /api 信任栅栏之外,自带 bearer token 认证;settings.*credentials.*host.open* 等特权网关方法对非回环来源一律拒绝;面向模型的管线是纯文本,不传截图,密码和卡号值不回传。助手开始工作时会绑定当时的活动标签页;用户手动切页后,后续浏览器操作会暂停,侧栏会询问继续原页面还是跟随新页面,扩展不会静默改绑或切换你正在看的页。网页文字会标记为不可信输入。读取模式默认是「自动共享」,也可以改成每次询问,或完全关闭读取;读到的页面文字会发给当前选择的模型。点击、输入、按键、导航、历史跳转和刷新默认失败关闭,必须由用户批准;显式跨域 browser_navigate 和未知目标的历史跳转会再次询问。

不要把 npm 上的 dsh-browser 包当成这个项目。Chrome 扩展应加载 ~/.dsh/browser-extension,不要加载源码目录。

小结

dsh-browser 把 DeepSeek Harness 接到真实的 Chrome 标签页上:页面变成编号清单,模型按编号操作,不依赖视觉,也不另起一套无头浏览器。目录页上的安装入口是 dsh plugin add github:Lum1104/dsh-browser;要把桥插件和 Chrome 扩展一起装好,按仓库 README 跑 scripts/install.sh 更完整。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-browser/

GitHub:https://github.com/Lum1104/dsh-browser

DeepSeek Harness 官方仓库:https://github.com/deepseek-ai/deepseek-harness

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

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

小夜