前言¶
在 DeepSeek Harness(DSH)里让 agent 操作网页,常见做法是走无头浏览器或远程截屏转播:模型能「操作」,但人往往看不到同一块页面,遇到登录、人机验证时也很难及时接手。dsh-builtin-browser(仓库 wqty123/dsh-browser)走的是另一条路:给 DSH 装一个真实、可见、可与用户共享的浏览器,agent 通过 20 个 browser_* 工具驱动,用户与 agent 操作的是同一个页面,需要时可以直接接管。
下面介绍这个插件的定位、能力、安装方式与典型用法。事实来自 GitHub 仓库 README 与 package.json(当前版本 v0.1.15)。
这是什么¶
dsh-builtin-browser 是维护者 wqty123 发布的 DSH 插件,npm 包名同为 dsh-builtin-browser,许可证 MIT。SkillHub 目录将其归类为客户端插件;GitHub 上约 19 stars。
一句话:安装插件 = 获得一个与用户共享、可被 agent 驱动的真实浏览器。
与无头方案的区别在于:浏览器是原生 WebContentsView,不是转播截图;有桌面外壳时嵌入外壳视图,纯 dsh web 环境下插件也可自托管——自行拉起 Electron 窗口(标题 dsh-browser),无需额外配置。
核心功能¶
共享真实浏览器与人机同页¶
用户直接看到 agent 在做什么,可随时上手接管;agent 驱动的就是用户眼前的窗口。
20 个 browser_* 工具¶
安装后 agent 自动获得一整套浏览器工具,覆盖打开、查看、操作、填表、截图、下载、登录态管理等。常用入口如下:
| 想做什么 | 工具 | 说明 |
|---|---|---|
| 打开页面 | browser_open |
打开 URL,返回带编号元素的快照 |
| 了解页面 | browser_snapshot |
输入框、按钮、链接的编号清单 |
| 操作页面 | browser_execute |
在页面内执行 JS(原生 setter,框架友好) |
| 填写表单 | browser_fill |
一次填写多个字段,可选提交 |
| 看到页面 | browser_screenshot |
PNG 截图,可存文件交给视觉模型 |
完整清单与参数见仓库 工具参考。
DOM 级驱动与框架友好¶
browser_snapshot 返回带编号的交互元素;browser_execute 在页面内执行 JS,受控输入使用原生 setter 并触发 input/change 事件,React、Vue 页面也能较可靠地交互。
多标签与任务级会话隔离¶
支持并行打开 URL,查看、切换、关闭、重置标签。每个 DSH 任务(会话)拥有独立的浏览器会话(独立标签页与历史),并发任务互不抢页面;同一任务内多次调用复用同一会话。
登录态、人机验证与下载¶
browser_auth:导出/恢复 cookie,重启后登录态不丢;自托管实例的 cookie 也会落盘持久化。browser_challenge:检测 Cloudflare、reCAPTCHA、hCaptcha、Turnstile 等挑战,提示人工在共享窗口完成。browser_download:在页面上下文内携带会话 cookie 下载文件(上限 256MB)。
操作历史、回放与安全限制¶
browser_history记录操作日志;browser_replay可按序号回放某一步。browser_restrict以白名单限制允许的浏览器动作;只读工具(browser_snapshot、browser_content、browser_screenshot等)不受限。
多格式内容抓取¶
browser_content 支持以 html、markdown、txt、json 抓取页面,可配合 CSS selector、字符上限与超时控制。
架构与自托管¶
插件通过 cordis.patch.yml 挂载三层:browser(seam)、browser-electron(provider)、tool-browser(工具层)。没有桌面外壳时,插件通过 host-main.js 拉起 Electron 子进程,经本机 TCP JSON-RPC 驱动;子进程崩溃会自动重启。README 注明 Electron 33.x 有合成器缺陷,建议版本 ≥ 40。
安装与启用¶
环境要求:
- 已安装 DeepSeek Harness,且配置了
webprofile - Node.js ≥ 22.19(见
package.json的engines) - Electron 运行时:桌面外壳通常自带;纯
dsh web下插件会自动定位环境中版本最新的 Electron 二进制
README 徽章标明当前在 Windows 上验证过;其他平台是否可用需自行验证。
安装命令(README 官方写法):
# 方式一:从 npm 安装(已发布)
dsh plugin --profile web add dsh-builtin-browser
# 方式二:从源码目录安装(独立仓库,一插件一仓库)
dsh plugin --profile web add <本仓库路径>
安装前建议阅读源码与 MIT 许可证,确认插件将以当前 dsh 进程权限运行。
典型用法¶
安装完成后,agent 即可调用 browser_* 工具。一个常见流程是:先打开页面,再读快照,再操作或填表。
1. browser_open(url) → 打开页面,得到带编号元素的快照
2. browser_snapshot() → 查看可交互元素编号
3. browser_execute(...) → 按编号或选择器执行点击、提交等 JS
4. browser_screenshot() → 需要视觉定位时截图,可选 savePath 落盘
批量填表可用 browser_fill 一次填写多个字段;需要持久登录时,人工登录后用 browser_auth 导出 cookie,下次恢复。
操作纪律(README 摘要):表单提交优先 form.requestSubmit(),点击优先 element.click();坐标点击是最后手段,取坐标后应立即点击,点击前用 document.elementFromPoint(x, y) 验证命中。
适用场景与注意¶
适合谁
- 需要在 DSH 里做网页自动化,且希望人能看到、能接管同一浏览器的开发者
- 需要处理登录态、人机验证、带 cookie 下载等「真实浏览器」场景的智能体工作流
- 使用 DSH 桌面外壳或纯
dsh web环境,希望零额外配置拉起可见浏览器窗口的用户
注意事项
- 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证。
- 浏览器可见视图、列布局等由宿主外壳(如
apps/desktop)负责;本插件只消费electronViewHost,无外壳时走自托管。 - 带 ✅ 守卫的动作受
browser_restrict白名单约束;配置项见 README 中的cordis.patch.yml说明(如httpOnly默认true,仅允许 HTTP(S) 导航)。 - SkillHub(skillhub.cn)是社区插件目录,与 DeepSeek、幻方无官方从属关系;DSH 生态理念是「一切皆插件」。
结尾¶
dsh-builtin-browser 把「共享真实浏览器」做成可安装的 DSH 插件:装好即用、人机同页、20 个 browser_* 工具覆盖从打开页面到登录态与下载的常见需求。若你正在 DSH 里搭建需要可见、可接管的网页 agent,可以从目录页或 GitHub 获取包与文档。