Browser Ops(dsh-browser-ops):DSH 自建持久化浏览器操作

前言

在 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 专节说明):

  1. 滑块 / 拼图 / 短信 / 人脸等人机验证——例如拉勾滑块、豆瓣腾讯拼图、BOSS 短信码等,一律不自动处理;验证由人完成,其余步骤可自动化。
  2. showDirectoryPicker 等浏览器原生目录/文件选择框——CDP 无稳定接口选中目录;<input type="file"> 可用 web_upload,showDirectoryPicker / showOpenFilePicker 仍需人工点一次。

设计取舍是:不碰验证码与 OS 级对话框,降低风控与越界风险。

结尾

dsh-browser-ops 把「自建持久 Chrome/Edge + 语义快照 + ref 操作」收进 DSH 插件,并用 networkIdle、结构化导航错误和 web_upload 等补齐常见自动化痛点,同时把人机验证和原生目录选择留在人工侧。需要安装说明与分类信息可看 SkillHub 目录页;工具列表、行为变更与示例以 GitHub README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜