前言¶
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 把无头浏览器和本插件的差异写成了对照表,核心差别有四点:
- 登录态:无头方案通常要重新登录或注入凭据;本插件复用用户浏览器里已有的状态。
- 标签页:无头方案由工具自己维护;本插件使用真实标签页和标签组。
- 浏览器状态:无头方案容易把状态写进工具输出或模型上下文;本插件把状态留在浏览器和本地守护进程。
- 适用场景:无头更适合隔离测试和抓取;本插件更适合登录后的工作流和真实页面检查。
核心功能¶
操作用户真实浏览器¶
插件把导航、无障碍快照、点击、填写和执行 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 的全部标签页 |
navigate 与 find_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。 snapshot、click、fill与evaluate只作用于顶层 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