前言¶
在 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 推荐顺序组织调用:
edge_launch(必要时带初始 URL 或headless)edge_navigate或edge_open到目标页edge_text或edge_eval取内容与页内数据- 需要交互时用
edge_click、edge_type - 需要画面时用
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 的路径接入会话。