Skip to content

Releases

v0.2.0 — CDP authorization guidance and /bw commands

Choose a tag to compare

@SciF-Lin SciF-Lin released this 30 Sep 10:10

新功能

  • CDP 授权引导:接管你已登录的浏览器需要一次性允许远程调试。现在插件在真正需要时引导——未授权时向系统提示注入说明(模型会先解释,而不是盲目调用工具),浏览器调用被拦下时给出可执行的中文指引,并在该回合收尾时自动打开设置页:先文字、后弹窗,你只需勾选一次。
  • 斜杠命令:/bw 查看状态,/bw-setup 立即打开设置页。
  • 新配置键:guideSetup(off / auto / open,默认 open)、probeTimeoutMs、browserExe、executablePath。

Chrome 支持(实测)

chrome / msedge 走同一套参数,代码里没有按浏览器分支。Chrome 不在标准安装位置时用 executablePath 指向它即可——实测它会覆盖通道查找,且与 browser 同时给出也不冲突;已用真实 Chrome 154 构建验证 launch 与 cdp 两条路径。

一个值得记录的坑

通过 inspect 页面开关授权的 Chromium 只开放 DevToolsActivePort 里那条 WebSocket 路径,HTTP 发现端点(/json/version、/json、/)全部返回 404。所以 0.2.0 的就绪判定改用 TCP + WebSocket,而不是 HTTP——否则会把本来可用的浏览器误判为未就绪,进而让守卫拒绝合法调用。

验证

55 个用例(插件 18 / 文档一致性 9 / 就绪探测 14 / 授权引导 8 / 斜杠命令 6),CI 绿色。

升级

dsh plugin --profile web remove dsh-browsercontrol-mcp
dsh plugin --profile web add github:SciF-Lin/dsh-browsercontrol-mcp

装完重启一次 profile。

v0.1.0 — Playwright MCP as native DSH tools

Choose a tag to compare

@SciF-Lin SciF-Lin released this 23 Sep 11:02

Initial public release: mount Playwright MCP into DeepSeek Harness as native tools.

它做什么 / What it does

一条命令把官方 @deepseek-ai/dsh-mcp-client 行挂进 profile,工具以 mcp__playwright__* 出现在模型工具表里:
导航、点击、填表、按键、拖拽、上传、快照、截图、控制台、网络请求、执行 JS。

安装 / Install

dsh plugin --profile web add github:SciF-Lin/dsh-browsercontrol-mcp

装完重启一次 profile 才会生效——新装的 bundle 只在进程启动时参与组合,patchReload: live 只覆盖 patch 文件的改动。

三种接管模式

  • launch —— 自己开浏览器;默认用系统 Edge/Chrome,不下载 Chromium
  • cdp —— 接管你正在用的浏览器(登录态全在);需先在 edge://inspect/#remote-debugging 勾选 Allow remote debugging for this browser instance
  • extension —— 走 Playwright 浏览器扩展,可用 profileDirName 指定 profile

为什么是插件而不是一段 YAML

  1. @playwright/mcp 的 exports 不导出 ./cli.js,直接 resolve 会 ERR_PACKAGE_PATH_NOT_EXPORTED——正确做法是从它导出的 ./package.json 读 bin 字段
  2. Windows 上 npx 是 npx.cmd,Node 的 spawn 不加 shell 起不来
  3. cli.js 与 node 的绝对路径都只有安装完成后才能确定

所以插件在 apply() 里解析路径,用 process.execPath 启动 MCP 进程,并把生成的行挂到 loader;卸载时随 fiber 回收。

稳定性与共存

  • 配置写错、或找不到 @playwright/mcp 时,插件打印 not mounting: ... 并不贡献任何工具,而不是让整个插件树加载失败
  • 检测到同 serverName 已有手写行时,跳过挂载并告警,不产生重复注册错误
  • 未知配置键会报错而非静默忽略

安全

cdp / extension 模式下模型能看到该浏览器里所有已登录站点;browser_run_code_unsafe 与 browser_evaluate 等价于在浏览器进程里执行任意 JS。建议给自动化单独一个浏览器 profile。

验证

  • 25 个用例:18 个插件用例(参数构造、行生成、全部配置拒绝分支、冲突跳过、entries() 抛错降级、卸载竞态)+ 7 个文档一致性用例(README 配置表与代码 DEFAULTS 强制一致)
  • CI 在 push/PR 上运行 npm ci --omit=peer 与 npm test
  • 在受限沙箱里 npm test 会因测试运行器 fork 子进程被拒(spawn EPERM),此时用 npm run test:direct

已知限制

  • firefox / webkit 没有系统通道,需先 npx playwright install firefox(或 webkit)
  • browser 与 CDP 通道是两组取值:msedge-beta 这类别名只能作为 cdp 目标,不能传给 --browser

MIT