前言¶
在 DeepSeek Harness(DSH)里做网页自动化,常见做法是让智能体借用本机已打开的 Chrome,或通过 MCP 连外部浏览器服务。前者 profile 不固定、多会话容易串台;后者要额外部署,且未必和 DSH 的插件模型对齐。若希望「插件自带一份可复用的 Chrome/Edge profile」,又能用统一的一组工具完成导航、读页、点击、执行 JS、截图和上传文件,社区维护者 dcd887 的 dsh-browser-ops(README 中称 Browser Ops 8 / v8.2)就是面向这一点的联网类插件。下文介绍它的定位、工具面、典型步骤,以及刻意不覆盖的能力边界。
这是什么¶
dsh-browser-ops 是 DSH 生态中的自管持久浏览器插件:启动或复用插件自己的 Chrome/Edge profile,通过 CDP 驱动页面,而不是为绕过验证码而设计。npm 包名为 @local/browser-ops8(package.json 版本 1.0.0,许可证 MIT),源码仓库为 github.com/dcd887/dsh-browser-ops。社区目录 SkillHub 将其归类为联网工具,简介与 GitHub 一致:导航、切标签、语义快照与 ref 操作、eval、截图、文件上传等均在内;不自动处理滑块、拼图等人机验证。
维护者:dcd887。SkillHub 目录页:skillhub.cn/plugins/dcd887/dsh-browser-ops。
核心功能:十四条 web_* 工具¶
README 列出 14 个以 web_ 为前缀的工具,覆盖从启浏览器到原子交互的完整链路:
| 工具 | 用途 |
|---|---|
web_launch |
启动或复用插件自己的浏览器(持久 profile) |
web_status |
运行状态、版本、profile、标签列表 |
web_tabs |
list / new / activate / close(可批量) |
web_navigate |
打开网址,可新标签;超时不抛错 |
web_snapshot |
页面语义轮廓,元素给 [eN] 引用 |
web_act |
按 ref / 文字 / 选择器执行 click、type、select、check、submit |
web_key |
按键 |
web_scroll |
滚动 |
web_shot |
截图 |
web_eval |
执行 JS(返回值任意类型都行) |
web_wait |
等条件 + 可选的网络空闲 |
web_upload |
给 file input 塞文件 |
web_click |
原始坐标点击 |
web_drag |
原始拖拽 |
v8.2 相对旧版的几处行为变化(均来自 README 实测说明):
web_navigate超时改为结构化返回{ ok:false, stage, error, hint },并继续读页面状态,超时不算硬失败。web_eval对字符串/数字等返回值统一包成{ result: ... },避免「must be an object」。web_wait支持networkIdle(在途请求为 0 持续idleMs,且 DOM 签名稳定);原web_wait_idle已删除,能力并入web_wait。- 新增
web_upload(DOM.setFileInputFiles),不必只靠点系统文件框。 web_tabs action=close支持all+keep或indexes批量关标签。
README 还写明:上述改动在源码内,当前会话若已缓存模块,需重开 DSH 后生效(工具数由 13 变为 14:去掉 web_wait_idle,加上 web_upload)。
安装与启用¶
已抓取资料中未出现形如 dsh plugin add ... 的固定 shell 安装命令;SkillHub 目录给出的做法是把安装意图交给 Harness。可在 DSH 中发送如下说明(原文来自目录页):
请安装 DSH 插件 dcd887/dsh-browser-ops。先读取..
安装前建议自行打开 GitHub 仓库 查看 index.js、cordis.patch.yml 与许可证(MIT),确认与本地环境、合规要求一致。插件以当前 DSH 进程权限运行,能访问其启动的浏览器 profile 与页面上下文,安装前应完成源码与授权检查。
完成安装后,若需使用 v8.2 新增/合并的工具行为,按 README 重启一次 DSH。
典型用法¶
等懒加载列表真正稳定¶
抓懒加载列表时,README 建议不再只靠 waitMs 猜时间,可按三步走:
web_scroll direction=bottom
web_wait networkIdle=true idleMs=1000
web_snapshot
networkIdle=true 同时要求:没有任何请求在途并持续 idleMs 毫秒,且 DOM 签名稳定(元素数量、滚动高度、文本长度在该时段内不变)。
批量关闭标签¶
web_tabs action=close all=true keep=[0]
web_tabs action=close indexes=[2,3,4]
语义操作的一般节奏¶
实践中常见流程是:web_launch → web_navigate → web_snapshot 取得 [eN] → web_act 按 ref 点击或输入 → 必要时 web_eval / web_shot。需要向 <input type="file"> 塞本地文件时用 web_upload;系统级目录选择器不在支持范围内(见下节)。
适用场景与边界¶
适合谁:在 DSH 智能体流程里需要稳定、可复用的本机浏览器 profile,且希望用一组固定工具做读页与操作(而非每次 hand-off 到外部自动化服务)的开发者。
明确不做的事(README 专节说明):
- 滑块 / 拼图 / 短信 / 人脸等人机验证——例如拉勾滑块、豆瓣腾讯拼图、BOSS 短信码等,一律不自动处理;验证由人完成,其余步骤可自动化。
showDirectoryPicker等浏览器原生目录/文件选择框——CDP 无稳定接口选中目录;<input type="file">可用web_upload,showDirectoryPicker/showOpenFilePicker仍需人工点一次。
设计取舍是:不碰验证码与 OS 级对话框,降低风控与越界风险。
结尾¶
dsh-browser-ops 把「自建持久 Chrome/Edge + 语义快照 + ref 操作」收进 DSH 插件,并用 networkIdle、结构化导航错误和 web_upload 等补齐常见自动化痛点,同时把人机验证和原生目录选择留在人工侧。需要安装说明与分类信息可看 SkillHub 目录页;工具列表、行为变更与示例以 GitHub README 为准。