DeepSeek Harness(DSH)的插件机制允许开发者通过特定接口扩展运行器能力。dsh-plugin-cdp 是一款基于 Chrome DevTools Protocol(CDP)的插件,旨在解决使用浏览器扩展进行自动化时可能遇到的标签页清空、借用用户标签页失效以及成功弹窗不可信等问题。它通过驱动一个受控的 Chrome 实例,提供了一套零运行时依赖(基于 Node ≥ 22 内置模块)的自动化方案。
核心能力¶
该插件主要提供以下四个核心能力:
- CDP 驱动受控实例:不依赖浏览器扩展,直接通过 CDP 协议与 Chrome 通信,避免被目标网站反制。
- 弹窗收集规则:插件本身不携带任何预设规则。首次使用时,会通过 DSH 内置的
ask_user_question弹窗收集信息,包括岗位方向、工作地点、薪资下限、投递平台、浏览器选择及排除规则。收集到的答案落盘后不再重复询问。 - 纯文本可视化:提供基于 Unicode 字符画的薪资分布、地点条形图、平台占比及投递时间线等可视化报告。不依赖外部图表库,中文按双宽计算以防止表格错位。
- 无停机热替换:当规则变更时,采用“先起新进程、再退旧进程”的策略。新旧进程在重叠期内共享一份
append-only(仅追加)的状态记录,确保任务不断档。
工具列表¶
插件提供 15 个工具以支持自动化流程:
| 工具名 | 作用 |
|---|---|
cdp_status |
查看受控 Chrome 的状态、端口及标签页信息 |
cdp_navigate |
导航至指定 URL 并等待加载完成 |
cdp_eval |
在标签页上下文中执行 JS 代码并返回 JSON |
cdp_read |
读取当前标签页的 URL、标题或可见文本 |
cdp_screenshot |
将当前标签页截图并保存到本地文件 |
cdp_new_tab / cdp_use_tab |
创建新标签页或切换到指定标签页 |
cdp_apply_verified |
带校验的操作:等待详情面板稳定、校验薪资一致性,防止误点 |
cdp_prefs |
读取或写入浏览器偏好设置(含规则问卷) |
cdp_browser_info |
报告实际使用的浏览器及可执行文件是否存在 |
cdp_jobs_report |
生成岗位/薪资/地点的文本可视化报告 |
cdp_jobs_data |
获取原始 JSON 数据 |
cdp_runner_status |
查看运行器状态,包含“规则已变更但未生效”的提示 |
cdp_runner_reload |
同步规则并执行热替换 |
cdp_runner_stop |
停止运行器 |
安装与配置¶
在项目目录下执行以下命令安装插件:
npm i dsh-plugin-cdp
安装后,需要在 DSH 的插件配置中引入该插件:
- id: cdp
name: "dsh-plugin-cdp"
config:
port: 9222
配置项说明¶
在 YAML 配置中,以下字段为必填或常用项:
chromePath:Chrome 可执行文件路径,留空则自动探测。userDataDir:受控实例使用的独立用户目录。注意:由于不复用日常浏览器的配置,你需要在此目录中单独登录目标站点。windowSize:浏览器窗口大小,格式为宽,高。defaultTimeoutMs:单条 CDP 命令的超时时间。loadEventMs:等待页面加载事件的最大时长。settleMs:导航后额外的稳定等待时间。prefsPath:偏好设置(含规则问卷)的落盘路径。stateDir:运行器状态目录。
运行与热替换流程¶
在仓库目录下,可以使用以下命令进行自检和测试:
node run-all-tests.mjs
node --test lib/jobs.test.mjs
node --test lib/report.test.mjs
热替换机制¶
插件支持在不中断服务的情况下更新规则。流程如下:
- 变更规则:修改规则配置,触发指纹变化。
- 启动新进程:启动新一代运行器进程,与老进程并存。
- 心跳验证:等待新一代进程输出心跳信号,证明其正常运行。
- 退位:老进程退出,新一代接管。
若新一代进程在就绪窗口内未输出心跳,系统将保留老进程继续运行,不会终止任务。
注意事项¶
- 输出字段严格校验:返回值必须与
output.schema逐一对应,且additionalProperties: false。多一个字段都会被宿主拒绝。 - 运行器默认心跳模式:未配置命令时,运行器不执行实际操作,仅维持心跳。这是为了验证链路通断。
- 状态存储方式:热替换依赖
append-only的状态存储。如果状态是整份重写,重叠期间会互相覆盖,导致更新丢失。 - 结果验证:页面弹出的“成功”对话框不等于操作已记录。请务必到目标站点的记录页进行人工复核。
总结¶
dsh-plugin-cdp 适合需要在 DSH 环境中通过 CDP 协议进行高可控性浏览器自动化的场景。它通过强制可验证的操作流程和零依赖设计,为开发者提供了一个稳定的自动化通道。完整的文档与源码可参考 GitHub 仓库。