前言¶
在 DeepSeek Harness(DSH)里让模型操作网页,常见做法是 HTTP 抓取或外挂 Playwright/Puppeteer。前者拿不到登录态和复杂交互;后者往往再拉一层浏览器二进制或依赖栈,和日常浏览器 profile 也容易搅在一起。若你需要「已登录、可点击填表、多标签、上传下载」,又希望工具形态与 DSH 原生 browser_* 一致,可以看一下社区插件 dsh-browser-harness(npm 包名 @xumi0920/dsh-browser-harness)。它用零依赖 CDP 内核实现 13 个 browser_* 工具,连接你单独启动的 Chromium 系浏览器,并按 DSH 任务给插件自建的标签页分组。
这是什么¶
dsh-browser-harness 由 Xumi0920 维护,分类为 联网工具,源码与文档在 GitHub,社区目录页:skillhub.cn/plugins/Xumi0920/dsh-browser-harness。社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。
一句话定位:在 DSH 中提供与 Harness 对齐的 browser_ 工具集,通过 Chrome DevTools Protocol 驱动专用、已登录*的 Chromium 内核浏览器(Chrome、Edge、Brave、Chromium、Vivaldi、Opera、Arc 等),以无障碍树 + ref(e1、e2…)为主做页面理解与操作,截图/PDF 作补充;插件自建的标签页按 DSH 会话(Task)分组,不影响你日常工作标签页。
当前版本 v1.10.0,许可 MIT;运行时除宿主提供的 @deepseek-ai/dsh-tools peer 外为零依赖(构建产物仅使用 Node 内置 fetch / WebSocket)。
核心功能¶
工具一览¶
安装生效后,模型可调用的工具包括(名称与 README 一致):
browser_status 端点 / 浏览器版本 / 标签页 / 当前标签页
browser_wait 出现/消失、URL/文本变化、response、network_idle、delay
browser_navigate 打开 URL,或 back / forward / reload
browser_snapshot 紧凑引用(e1…);frameId、offset/limit 完整分页、checked/selected/expanded
browser_act click / hover / highlight / drag / type / fill / selectOption / check / uncheck / press / scroll / dialog;可选 expectUrl/expectText/expectSelector 断言
browser_extract text / html / JS / network / console / frames
browser_screenshot 整页或元素级 PNG 路径
browser_pdf 页面 PDF 路径
browser_diagnose 截图 + console + 网络失败 + 活动请求诊断包
browser_upload 文件输入上传,路径限制在 uploadDir
browser_download 触发并等待下载,文件落在 downloadDir
browser_task status / pause / resume / close / start,任务生命周期
browser_tabs list / use / new / close
设计要点(资料中明确的能力)¶
- 真实登录态:接自己起好的专用 Chromium 实例,登录一次长期有效;文档明确建议不要指向日常浏览器。
- 文本优先:快照基于无障碍树与 ref,比纯截图喂视觉模型更省 token;截图、PDF 为补充。
- 按任务标签组:插件自建的标签页按 DSH 会话分组;headless 环境下标签组自动跳过,其它工具仍可用。
- 操作与并发:快照按页串行;click 默认做遮挡/命中检查(错误码
E_CLICK_INTERCEPTED);导航等待load至complete;跨任务标签冲突可返回E_TAB_LOCKED/E_TAB_OWNER_CONFLICT等。 - 只读模式:配置
readOnly: true时阻止 click/fill/type、JS、上传/下载及部分 tabs/task 变更,导航与快照/提取仍可用于检查。 - 失败诊断:页面工具失败时自动写入
<stateDir>/diagnostics/<lane>/,错误信息附带诊断路径;敏感 URL、token 类字段在输出中尽力脱敏,但页面正文/HTML/截图仍可能含敏感数据。 - 边界:上传限定
uploadDir、下载限定downloadDir、截图/PDF 限定screenshotDir;browser_tabs use对非自建页需显式{borrow:true}等规则见仓库 SECURITY.md 与 docs/architecture.md。
环境要求(README 表格):
| 要求 | 说明 |
|---|---|
| DSH | >=0.2.1-rc.5(不设上限) |
| Node | >=22 |
| 浏览器 | 任一 Chromium 内核 + remote debugging(默认端口 9331,详见 docs/configuration.md) |
| 平台 | Windows / Linux 已验证;macOS 单测 CI 通过,真实 Chromium 端到端未实测 |
安装与启用¶
插件发布于 GitHub Packages:@xumi0920/dsh-browser-harness(npmjs 上同名包为其它项目,勿混淆)。官方给出三种方式,详见 docs/install.md:
- 插件页(推荐):DSH Web → 插件页 → 添加插件 → 安装第三方插件(npm 包名 / Git 仓库 / 本地目录),或在「发现」标签页安装市场条目。
- 创造模式一句话:在创造模式会话中让 DSH 执行:
把 @xumi0920/dsh-browser-harness 安装到当前 profile。 - 手动安装(GitHub Packages,classic PAT):需 scope
read:packages的 classic PAT(不支持 fine-grained token)。Windows 示例如下:
npm config set "@xumi0920:registry" "https://npm.pkg.github.com"
npm config set "//npm.pkg.github.com/:_authToken" "<YOUR_GITHUB_TOKEN>"
& "$env:LOCALAPPDATA\\Programs\\DeepSeek Harness\\resources\\runtime\\cli\\bin\\dsh.cmd" `
plugin --profile desktop add "@xumi0920/dsh-browser-harness"
手动 npm config set 会把 token 写入 ~/.npmrc;README 建议装完后删除 token 配置并撤销 PAT。热插拔方面:application: applied 已生效时无需重启;若返回 restart-required,需按 restartReason 重启 DSH 以加载新 JS 模块。
启用前请知悉:第三方插件与 DSH 同进程权限运行。安装前应阅读源码、MIT 许可证及 SECURITY.md,确认 cdpUrl、目录边界与只读策略符合你的安全要求;不要把 remote debugging 指向日常浏览器。
典型用法¶
经过上面的安装步骤,先启动专用 Chromium(默认 remote debugging 9331),确认 http://127.0.0.1:9331/json/version 可访问。然后在任意 DSH 会话中让模型按 README 推荐的顺序调用:
browser_status → browser_navigate {url} → browser_snapshot → browser_act {action:"click", ref}
browser_extract {mode:"text" | "html" | "js" | "network" | "console" | "frames"}
若首次 browser_status 返回 connected:false,按 docs/configuration.md 检查浏览器是否已启动、端口与 profile 配置是否一致。
更细的工作流、独立库与 CLI(包内 bh)见 docs/usage.md;标签组行为见 docs/tab-groups.md。
适用场景与注意¶
| 场景 | 建议 |
|---|---|
| 登录态页面、点击/填表、上传下载、多标签、截图 | 用本插件 |
| 公开页面纯读取 | 优先 DSH 自带 web_fetch(更快,不占浏览器) |
| headless 环境 | 标签组自动跳过;其它工具正常 |
| 日常浏览器 | 不要指向它;使用专用 profile 实例 |
DSH 生态理念是「一切皆插件」;本插件属于社区贡献的联网工具类扩展,星标与迭代以 GitHub 仓库为准。遇到登录墙或需 force 关闭标签等敏感操作时,文档要求停手由人确认。
结尾¶
dsh-browser-harness 把 DSH 原生的 browser_* 工具落到可维护的 TypeScript 实现上:零依赖 CDP、专用已登录浏览器、ref 驱动的交互与按任务分组的标签页。若你的智能体工作流需要真实浏览器会话而不是单次 HTTP 抓取,可按官方安装方式接入,并从配置文档把端口与目录边界设清楚。