用 dsh-better-browser 让 DeepSeek Harness 操作已登录的浏览器

前言

DeepSeek Harness(dsh)把模型、工具、会话和界面都做成可替换插件。智能体要处理「已经登录过的网站」时,常见做法是再起一个无头浏览器:Cookie 得重新注入,登录页要再走一遍,已经打开的标签页也用不上。把 Cookie 抄进配置,既麻烦,也容易把会话状态写进模型上下文。

dsh-better-browser 走另一条路:不自己驱动浏览器,而是把本机上的 Kimi WebBridge 适配成 13 个 webbridge_* 工具,让 Agent 使用你正在用的、已经登录的 Chrome 或 Edge。

本文根据社区插件目录页和 GitHub 仓库 README、package.json、许可证交叉核对后整理,说明它是什么、怎么装、工具边界在哪里。社区插件目录 deepseek-harness-plugin.com 是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。

这是什么

dsh-better-browser 是一款界面增强类插件,由 titanwings 维护,npm 包名为 @dsh-external/dsh-better-browser,当前版本 0.3.6,许可证 BSD-3-Clause,主要语言 TypeScript,要求 Node.js 22.19+ 或 24 及以上。GitHub 仓库在 2026-08-13 创建,本文核对时星标为 9。

它解决的问题可以收成一句话:让 DSH 里的 Agent 操作用户自己的浏览器,而不是再开一套没有登录态的无头环境。

真正的页面跳转、点击、截图由 Kimi WebBridge 的本地守护进程和浏览器扩展完成。本插件不含浏览器驱动代码,只把本地协议注册成 Cordis bundle,行 id 为 webbridge。Kimi WebBridge 是月之暗面的独立产品,需要按 Kimi 自己的条款另行安装。

仓库 README 把无头浏览器和本插件的差异写成了对照表,核心差别有四点:

  1. 登录态:无头方案通常要重新登录或注入凭据;本插件复用用户浏览器里已有的状态。
  2. 标签页:无头方案由工具自己维护;本插件使用真实标签页和标签组。
  3. 浏览器状态:无头方案容易把状态写进工具输出或模型上下文;本插件把状态留在浏览器和本地守护进程。
  4. 适用场景:无头更适合隔离测试和抓取;本插件更适合登录后的工作流和真实页面检查。

核心功能

操作用户真实浏览器

插件把导航、无障碍快照、点击、填写和执行 JavaScript 交给已登录的浏览器。登录 Cookie、已打开的标签页可以继续用,不必为 Agent 再准备一套账号。

看见页面之外的证据

Agent 可以截图、检查网络活动、上传工作区内的文件,以及把当前页存成 PDF。截图和 PDF 返回的是文件路径,而不是把整页像素或完整浏览器状态塞进模型请求。仓库说明:单次模型可见内容最多 32,000 字符,超出时会明确标记截断。

一个任务对应一个标签组

稳定的 session 名把同一任务的标签页归到一起。不同任务互不混用,用户仍然可以在自己的浏览器里看见并接管全过程。浏览器动作采用排他调度,全部工具声明 isConcurrencySafe=false,避免共享标签页被并行改写。

标签页只会在用户明确要求时关闭;任务结束不会自动清理用户浏览器。重启守护进程会清空由它维护的标签组。

不改 DSH 核心

插件作为 Cordis bundle 安装,注册稳定的 webbridge 行和 13 个 webbridge_* 工具。卸载 bundle 即可移除能力,不必给 DeepSeek Harness 打补丁。这和官方仓库「Everything is a Plugin」的设计一致:扩展能力靠挂载插件,而不是改核心源码。

13 个 webbridge 工具

仓库 README 列出的工具如下:

工具 用途
webbridge_navigate 打开 URL,并为任务设置标签组标题
webbridge_find_tab 重新选择任务标签页,或借用当前活动标签
webbridge_snapshot 读取页面无障碍树与 @e 元素引用
webbridge_click @e 引用或 CSS selector 点击
webbridge_fill 填写 input、textarea 或 contenteditable
webbridge_evaluate 在页面中运行同步或异步 JavaScript
webbridge_screenshot 截取页面或指定元素,返回文件路径
webbridge_list_tabs 列出当前 session 的标签页
webbridge_network 启停并检查网络活动
webbridge_upload 通过文件输入上传调用 Agent 工作区内的文件
webbridge_save_as_pdf 将当前页面保存为 PDF
webbridge_close_tab 关闭 session 的当前标签页
webbridge_close_session 关闭 session 的全部标签页

navigatefind_tab 只接受绝对 http / https URL,拒绝本地文件和脚本协议。上传文件必须落在调用 Agent 的工作区内,插件会解析规范路径并拒绝符号链接逃逸。截图和 PDF 路径只接受 WebBridge 专用临时目录。

安装与启用

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

dsh plugin add github:titanwings/dsh-better-browser

仓库 README 建议装到 web profile,并固定当前版本标签 v0.3.6(对应 commit 506493224a21510c3f9cc7329a17e84af20879dc):

dsh plugin --profile web add github:titanwings/dsh-better-browser#v0.3.6

目录页也提示:如需可复现安装,可以写成 github:titanwings/dsh-better-browser#commit,把 commit 换成具体哈希。

这只是 DSH 一侧。浏览器操作链路还要先装好 Kimi WebBridge。仓库 README 给出的安装方式如下(脚本来自 Kimi CDN,安装前应自行核对来源):

curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash
kimi-webbridge status

kimi-webbridge status 期望看到 "extension_connected": true。同时需要从官方商店安装 Kimi WebBridge 扩展:

安装并启用扩展后保持浏览器运行,再查一次 status。只有扩展已连接,浏览器、守护进程和本插件的完整链路才算就绪。Kimi 产品页与帮助中心见 Kimi WebBridge帮助文档

装好插件后,重启 dsh web 并刷新页面。模型随后即可看到 webbridge_* 工具。守护进程未运行时,工具会返回 daemon_unreachable,不会静默降级。

如果 profile 里还装着旧包 @dsh-external/dsh-kimi-browser,仓库要求先移除再装新版本:

dsh plugin --profile web remove @dsh-external/dsh-kimi-browser
dsh plugin --profile web add github:titanwings/dsh-better-browser#v0.3.6

@dsh-external/dsh-better-browser 的包身份、webbridge 行 id、全部工具名和配置字段保持稳定。

可选配置字段如下,非法 URL 或非正整数超时会在插件挂载时直接失败:

字段 默认值 含义
baseUrl http://127.0.0.1:10086 守护进程的 http/https 地址
timeoutMs 30000 单次工具调用超时预算(毫秒)
- id: webbridge
  config:
    baseUrl: http://127.0.0.1:10086
    timeoutMs: 30000

典型用法

安装完成后,仓库给出的可复现示例是直接让 Agent:

使用我的真实浏览器打开 GitHub,找到当前仓库的 Issues,检查最新三个问题,不要关闭我已有的标签页。

Agent 会为任务选择稳定的 session,依次导航、读取页面并执行交互。推荐的工具顺序是:

navigate → snapshot → click/fill → snapshot → screenshot/network

snapshot 返回无障碍树和 @e 元素引用,后续 click / fill 按引用或 CSS selector 操作。screenshot 返回守护进程写入的临时文件路径,需要再用 Read 工具查看。

适用场景与注意事项

适合这类需求:

  • Agent 必须操作已经登录的网站,又不想复制 Cookie 或重新登录。
  • 导航、点击、填写、截图和网络检查要组成一条完整工作流。
  • 希望浏览器状态留在本机,而不是不断塞进模型上下文。
  • 用户要能在自己的浏览器里看见、接管 Agent 打开的标签页。

当前限制(以仓库 README 为准):

  • 严格检查 event.isTrusted 的站点可能忽略合成 click / fill。
  • snapshotclickfillevaluate 只作用于顶层 frame,不穿透跨域 iframe。
  • 截图返回临时文件路径,不是内联图像。
  • 标签组由守护进程维护,重启守护进程会清空它们。

安全边界需要单独看一眼。本地优先不等于零风险:Agent 操作的是真实登录会话,发送消息、提交表单、发布内容等动作仍应遵守 DSH 的确认与权限策略。插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证;本插件为 BSD-3-Clause,Kimi WebBridge 则按月之暗面自身条款使用。

小结

dsh-better-browser 把用户已经登录的浏览器接到 DeepSeek Harness 上,用 13 个 webbridge_* 工具覆盖导航、快照、交互、截图、网络检查和标签管理。它不内置浏览器驱动,依赖本机 Kimi WebBridge;装的是 Cordis 插件,不是 DSH 核心补丁。

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

GitHub:https://github.com/titanwings/dsh-better-browser

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

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

小夜