前言¶
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-browserextensions/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_navigate、browser_back、browser_forward、browser_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/。
从网上下载脚本再直接执行前,建议先打开同一地址查看脚本内容。安装器会调用 curl、tar、rsync 和 pnpm;若本机缺少这些命令,脚本会报错退出。
开发者也可以先 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