Repository navigation
Releases
v0.2.0 — CDP authorization guidance and /bw commands
新功能
- 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
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,不下载 Chromiumcdp—— 接管你正在用的浏览器(登录态全在);需先在edge://inspect/#remote-debugging勾选 Allow remote debugging for this browser instanceextension—— 走 Playwright 浏览器扩展,可用profileDirName指定 profile
为什么是插件而不是一段 YAML
@playwright/mcp的exports不导出./cli.js,直接 resolve 会ERR_PACKAGE_PATH_NOT_EXPORTED——正确做法是从它导出的./package.json读bin字段- Windows 上
npx是npx.cmd,Node 的spawn不加 shell 起不来 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