前言¶
在 DeepSeek Harness 里让智能体操作网页,常见做法是调用外部无头浏览器或让模型「想象」页面状态。前者往往和当前会话、子智能体边界对不齐,后者又无法验证真实 DOM 与网络行为。dsh-browser 是社区维护的 DSH 插件,为每个会话(以及子智能体)启动独立的 Chromium 进程与临时配置目录,并在客户端展示实时标签缩略图、侧边栏 Browser 面板,以及接近 DevTools 的一整套调试命令。下面介绍它的定位、能力与安装方式。
这是什么¶
- 名称:dsh-browser(npm 包名同 GitHub 仓库
machine202502/dsh-browser) - 维护者:machine202502
- 许可证:MIT(package.json)
- 版本:0.1.0(package.json)
- 要求:Node.js >= 20;Chromium 需通过 Playwright 单独安装(见下文)
- 一句话:Isolated Playwright browser per session for DeepSeek Harness: tabs, screenshots in chat, per-site proxy(目录页简介与 README 一致)
插件在 Host 侧注册 16 个工具、33 个 browser_run 子命令(含 list / help 与网络预设),附带设置表单与回归测试套件(README)。
核心功能¶
每智能体独立浏览器¶
每个智能体对应一个浏览器管理器:独立进程、独立临时用户数据目录、独立标签页。子智能体拥有自己的浏览器实例,不会看到其它会话的标签与存储。
多上下文(ctx)¶
在同一浏览器内可用 ctx1、ctx2 等隔离 cookie 与 storage,便于在同一服务端上模拟两个客户端。
实时画面与聊天截图¶
Composer 文档区有浏览器卡片,展示各标签缩略图与虚拟指针。在 open、navigate、click、resize、drag 等操作后,可向聊天流推送截图(可在 YAML 配置里用 shots 控制开关、质量与最小间隔)。
侧边栏 Browser¶
列出当前打开的浏览器,按会话分组:会话名、标签数量、跳转到会话、单独关闭某个浏览器实例。
按站点分流代理¶
内置路由代理监听 127.0.0.1:49222:按连接目标主机决定走 Hiddify 代理还是直连。README 说明 Chromium 156 会忽略 PAC(含 --proxy-pac-url 与扩展里的 chrome.proxy),因此分流在浏览器外完成。站点列表与代理地址持久化在数据目录:
- Windows:
%LOCALAPPDATA%\dsh-browser - Linux:
~/.local/share/dsh-browser - macOS:
~/Library/Application Support/dsh-browser
调试与审计¶
通过 browser_run 可访问控制台、网络、cookies、storage、IndexedDB、DOM、无障碍快照、性能与 trace、JS 覆盖率、下载列表、WebSocket、Lighthouse 等;也可用 browser_cdp 直接调用 Chrome DevTools Protocol。
工具一览¶
| 工具 | 用途 |
|---|---|
browser_open |
打开标签(可指定 ctx) |
browser_navigate |
导航到 URL |
browser_click |
按 CSS 选择器点击(README 称不受对话框阻塞) |
browser_fill |
填写表单字段 |
browser_hover / browser_drag |
悬停与拖拽(视口内) |
browser_resize |
调整视口大小 |
browser_text |
页面文本 |
browser_tabs |
标签列表 |
browser_close |
关闭标签(最后一个会结束浏览器) |
browser_cdp |
原始 CDP 调用 |
browser_run |
子命令调度器 |
browser_proxy_enable / disable / status / list |
代理管理 |
各工具支持 timeout(毫秒),默认约 10–45 秒视操作而定。
browser_run({ command: "list" }) 列出子命令;browser_run({ command: "help", args: { name: "network" } }) 查看单项说明。子命令包括 console、network、cookies、storage、idb、eval、dom、snapshot、keyboard、dialog、emulate、metrics、perf、slow3g / fast3g / offline / off、trace、coverage、downloads、lighthouse、report、css、assets、html、screenshot、diff、ws、wait、ctx、cdp 等(完整表见 GitHub README)。
安装与启用¶
官方一键安装会写入 GitHub 依赖并执行包管理器:
npx --yes github:machine202502/dsh-browser
安装后需重启 DSH:侧边栏出现 Browser 分区,文档区出现浏览器卡片。
其它安装脚本选项:
node install.mjs --profile desktop --dry-run # 预览将修改的内容
node install.mjs --home /path/to/.dsh # 指定 DSH 主目录
node install.mjs --uninstall # 卸载插件
playwright-core 不会自带浏览器,需单独安装 Chromium:
npx playwright install chromium
若无 pnpm,可手动在 ~/.dsh/profiles/desktop/package.json 增加依赖,并在 dsh.profile.bundles 中加入 dsh-browser(字段示例见 README)。
插件目录内可用 npm test(运行 node tests/regression.mjs)做回归;README 提到需要本地 QA 页 node tests/qa-page.mjs。
Chromium 默认路径遵循 Playwright 缓存布局;也可通过环境变量 DSH_BROWSER_EXE 指定可执行文件。
配置示例¶
README 中的 YAML 片段(字段以仓库为准):
- id: browser
name: 'dsh-browser'
config:
headless: true
bridgePort: 49221
idleTimeoutMs: 900000
viewport: { width: 1280, height: 800 }
proxy:
server: 127.0.0.1:10901
shots:
enabled: true
on: [open, navigate, click, resize, drag]
quality: 55
minIntervalMs: 1500
Host 在 127.0.0.1:49221 提供 bridge,供客户端拉取标签、帧与代理状态。
架构要点(便于排查)¶
- Host(
index.js):每智能体一个 manager,注册工具与 bridge。 - Manager(
src/browser-manager.js):launchPersistentContext+ 临时 profile,关闭时删除。 - Bridge(
src/bridge.js):向 UI 提供标签、截图、代理状态。 - Client(
client.js):文档卡片、侧边栏、工具行缩略图。 - Routing proxy(
src/routing-proxy.js):按规则转发连接。
DSH 进程退出时,watchdog(src/watchdog.mjs)经 CDP 关闭 Chromium,不依赖平台特定的 kill / taskkill。
典型用法思路¶
- 安装插件与 Chromium,重启 DSH,确认侧边栏 Browser 与文档卡片可见。
- 在对话中让智能体调用
browser_open打开目标 URL,必要时browser_navigate跳转。 - 用
browser_click、browser_fill、browser_run的wait/keyboard完成交互;需要排查时用browser_run的network、console或snapshot。 - 仅需部分站点走代理时,配置代理服务器与站点列表,用
browser_proxy_*工具查看或切换状态。
具体参数以工具 schema 与 browser_run help 输出为准。
适用场景与注意¶
适合:需要在 DSH 内做真实页面自动化、联调前后端、检查网络与存储、或多会话隔离测试的开发者。
限制:
browser_run的lighthouse依赖lighthouse包;未安装时命令返回明确错误,其余功能仍可用(README 与 package.json 均列出该依赖)。- 浏览器生命周期绑定 Host;非正常退出由 watchdog 清理 Chromium。
安全与权限:插件以当前 DSH 进程的用户权限运行,可启动本地 Chromium、读写配置的代理与数据目录。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-browser 把「每会话一个真 Chromium + UI 可见 + 代理与 DevTools 级命令」收进 DSH 插件形态,减少在外部再搭 Playwright 栈的重复工作。查阅详情与 issue:
- 目录页:https://www.skillhub.cn/plugins/machine202502/dsh-browser
- GitHub:https://github.com/machine202502/dsh-browser