dsh-edge-browser:用 CDP 让 DSH 直接驱动本机 Edge

前言

在 DSH 里做联网、读页、截图或简单页面交互时,常见做法是再挂一层 Playwright、Puppeteer 之类运行时,或走外部浏览器自动化服务。多一层依赖,往往意味着额外下载、版本对齐和 Host 进程里的包体积。若你本机已经装了 Microsoft Edge,且希望 agent 通过 Host 插件直接连 DevTools 协议(CDP)控制浏览器,可以看一下维护者 lingziba 发布的 dsh-edge-browser(仓库 lingziba/dshedge,社区目录分类为联网工具)。

下面介绍它是什么、提供哪些工具、如何安装,以及典型调用顺序与使用注意。

这是什么

dsh-edge-browser 是 DeepSeek Harness 的 Host 插件:在 DSH agent 与 Edge 之间插入一组 edge_* 工具,由插件进程经 CDP 启动或接管本机 Edge(--remote-debugging-port),完成开标签、导航、执行 JS、取正文、截图、点击、输入等操作。实现上只使用 Node.js 内置 node: 模块和自研 WebSocket 客户端,README 写明零第三方依赖,不通过 Playwright/Puppeteer 下载浏览器。

数据流可以概括为:

DSH agent  ──edge_* 工具──▶  插件(Host 进程)  ──CDP──▶  Edge (--remote-debugging-port)
                                     │                        ▲
                                     └── 专用 user-data-dir ───┘

HTTP /json/* 管理调试目标,WebSocket 下发 CDP 命令。默认使用专用配置目录(Windows 上为 %LOCALAPPDATA%\dsh-edge-browser\profile),既满足 Chromium 136+ 对「远程调试须非默认 profile」的要求,也避免动到你日常使用的 Edge 会话。只有真正操作浏览器时才建立 WebSocket;关闭标签页不会因此退出整个浏览器实例。

核心功能:11 个 edge_* 工具

安装后由 bundle 提供下表工具(名称与作用均来自仓库 README):

工具 作用
edge_status 只读探测:调试端口是否可达、版本、可执行文件、配置目录、当前标签页
edge_launch 启动或复用可控制的 Edge,可选直接打开网址;headless: true 可无头运行
edge_tabs 列出标签页,取得 targetId
edge_open 新标签打开网址,并设为后续调用的默认目标
edge_navigate 让已有标签跳转,并等到 document.readyState === 'complete'
edge_eval 在页面执行 JS 表达式,返回 JSON 文本(支持 await Promise)
edge_text 取 document.body.innerText 正文,以及标题、地址
edge_screenshot 截图落盘(PNG/JPEG、可整页),返回路径供 read_image 查看
edge_click 按 CSS 选择器或可见文本点击;滚动到可见处后发真实鼠标事件
edge_type 聚焦输入框、清空、输入文本,可 submit: true 回车
edge_close 关闭某个标签页;shutdown: true 可退出整个可控制实例

README 给出的典型链路是:edge_launch → edge_navigate → edge_text / edge_eval;需要视觉确认时用 edge_screenshot,再配合 read_image。

安装与启用

插件需放在之后不会移动的目录:DSH profile 记录的是该目录的绝对 link 路径,移动后需重新安装。

1、取得插件代码

README 提供两种方式(二选一):

git clone https://github.com/lingziba/dshedge.git D:\dsh-plugins\dshedge
# 或网页上 Code → Download ZIP,解压到同一位置

以下示例路径 D:\dsh-plugins\dshedge 请换成你本机实际目录。

2、装进 DSH profile

plugin_manager  install_bundle  target=D:\dsh-plugins\dshedge

3、验证

装完后让 agent 执行一次 edge_status:README 说明应能看到 插件构建:1.0.4 以及 Edge 版本信息。

若暂时不想启动浏览器,可在插件目录执行(期望 20/20,秒级,校验 schema 是否被当前 DSH 接受):

node test/definitions.mjs

package.json 要求 Node.js >=20;包名为 dsh-edge-browser,许可证 MIT。

卸载

plugin_manager  remove_bundle  target=dsh-edge-browser

注意:target 是包名 dsh-edge-browser,不是仓库名 dshedge。

配置(均可省略)

bundle 行 config 支持以下字段(默认值见 README):

字段 默认 说明
port 9222 Edge 调试端口
executablePath 自动探测 Windows / macOS / Linux 常见安装位置与 PATH;可用环境变量 DSH_EDGE_PATH 覆盖
userDataDir 按平台 各平台 dsh-edge-browser/profile 路径
headless false 默认显示窗口
windowSize — 例如 1440,900
defaultTimeoutMs 30000 单个 CDP 操作默认超时
launchTimeoutMs 25000 等待调试端口就绪上限

典型用法

在 agent 侧,可按 README 推荐顺序组织调用:

  1. edge_launch(必要时带初始 URL 或 headless)
  2. edge_navigate 或 edge_open 到目标页
  3. edge_text 或 edge_eval 取内容与页内数据
  4. 需要交互时用 edge_click、edge_type
  5. 需要画面时用 edge_screenshot,再用 DSH 的 read_image 读返回路径

维护者在 README「验证状态」一节记录了宿主进程内 11/11 工具、定义自检 20/20、以及 smoke.mjs / live.mjs 的端到端结果(含 example.com、baidu.com 等);你若在本机复现,应在非受限进程下跑 node test/smoke.mjs 或 node test/live.mjs --url https://example.com,并知悉受限沙箱下 Edge 渲染进程可能因令牌限制在 WebSocket 连页面时失败——插件正常运行路径在 Host 进程,不受该限制影响。

适用场景与注意

适合谁: 已在 Windows / macOS / Linux 安装 Edge、希望 DSH agent 在本机完成导航、正文提取、截图和轻量 DOM 交互,且不想为 Host 再引入 Playwright/Puppeteer 的开发者。

权限与安全: 插件以当前 DSH Host 进程权限运行,能启动浏览器、读写专用 profile、在页面执行任意 JS。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认路径与配置符合你的安全策略。

生态说明: DeepSeek Harness 采用「一切皆插件」的扩展方式;SkillHub 目录页 是社区收录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-edge-browser 把 Edge 自带的 CDP 接到 DSH 的 edge_* 工具链上:专用 profile、懒加载 WebSocket、无第三方浏览器自动化依赖。若你的 workflow 需要「本机 Edge + agent 可读页可截图可点击」,可按 README 的 plugin_manager install_bundle 安装,用 edge_status 确认构建与版本后,再按 launch → navigate → text/eval 的路径接入会话。

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

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

Xiaoye