dsh-browser-mode:可见浏览器预设与会话级浏览器门禁

前言

在 DeepSeek Harness(DSH)里给 Agent 挂上 Playwright 类浏览器能力时,常见做法是往 profile 里加 provider 行。工具会出现在几乎所有会话里,模型一旦调用就会真的开浏览器,缺少「先问用户再开」的环节。若把 provider 塞进预设,又会撞上 DSH 对 browserUse 隔离域的限制,或出现多 Session 争用同一 provider 的错误。

dsh-browser-mode 是社区维护的 DSH bundle:提供「浏览器操作」会话预设、可在运行时切换的浏览器来源,以及门禁逻辑——除浏览器模式会话外,其它会话在用户明确同意前无法成功调用浏览器工具。下面按安装、用法和注意点说明。

这是什么

  • 名称与维护者:GitHub 仓库 Shad0wwa1ker/dsh-browser-mode,维护者 Shad0wwa1ker。
  • 社区分类:在 SkillHub 插件目录 中归类为 admin-security。
  • 许可证:MIT(见仓库 README)。
  • 定位:DeepSeek Harness 插件包——可见浏览器预设 + 浏览器来源管理 + 按会话授权的门禁。README 写明在 DSH 0.2.1-rc.2(Windows 11 + Edge)上实测通过;package.json 当前版本为 1.7.1。

DSH 生态强调「一切皆插件」;SkillHub 等目录是社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

可见浏览器与来源切换

  • 默认 headless: false,窗口可见,便于观察或人工接管。
  • 浏览器来源可在运行时切换,默认 Microsoft Edge;也可选 Playwright 内置 Chromium,或通过 CDP 连接已启动的浏览器。
  • Playwright MCP provider 由包内 browser-source 行挂载,不需要在 profile 里再单独写一条 provider 行(与旧版 browser-use-playwright-mcp 互斥,升级时需删掉旧行)。

两种使用入口

  1. 浏览器操作会话:新建会话时模式选「浏览器操作」,该会话内可直接使用 browser_navigate 等工具,不再弹授权。
  2. 当前会话申请:在普通会话里让模型用浏览器时,首次调用会被门禁拦住;模型可走 browser_access,界面弹出「允许 / 不允许」。允许后仅对当前 Agent 放行,授权存在插件内存,重启或重开会话需重新同意。

门禁行为

  • 对非 mcp__playwright-mcp__ 前缀的工具不处理;browser_access 本身不拦。
  • 预设为 browser 的 Agent、或已被用户授权的 Agent,调用浏览器工具时放行。
  • 其它情况返回中文说明与后续建议,而不是单纯的 permission denied。
  • 读不到预设、问答服务不可用或 provider 未加载时,按「不可用浏览器」处理。

失败与安全边界

插件以当前 DSH 进程权限运行浏览器与 MCP;安装前应自行查看源码与 MIT 许可证。授权不落盘、不跨会话;子 Agent 无法完成授权问答,须在主会话操作。

安装与启用

一键安装

在 DSH 插件管理器的「包名或地址」中粘贴:

github:Shad0wwa1ker/dsh-browser-mode

等价工具调用:

plugin_manager install_bundle target:github:Shad0wwa1ker/dsh-browser-mode

安装会写入 profile 依赖 "@local/dsh-browser-mode": "github:Shad0wwa1ker/dsh-browser-mode",并启用包内三行:preset-browser、browser-source、browser-gate。

首次使用前配置

在 $DSH_PROFILE_DIR/cordis.patch.yml 中保留共享的 browserUse 注册表行(若已存在则跳过):

- insert:
    - id: browser-use
      name: "@deepseek-ai/dsh-browser-use"

从 1.5.1 或更早版本升级时,请删除 browser-use-playwright-mcp 那一行(保留 browser-use)。一个进程里只能有一个 provider。

确认安装

执行:

plugin_manager list_plugins

include:preset-browser、include:browser-source、include:browser-gate 均应 enabled: true、fiberPhase: "active"。

典型用法

方式一:整段网页任务

新建会话,模式选「浏览器操作」。会话内模型直接调用浏览器相关工具,无需再问用户。

方式二:普通会话里临时用浏览器

对模型说「用浏览器打开这个页面并填好」。第一次调用浏览器工具会被拦下,随后出现授权对话框,文案类似:

允许使用浏览器
是否允许我在这个会话里打开浏览器?用途:……
[允许]  [不允许]

点「允许」后本会话后续浏览器调用放行;点「不允许」时模型应改用 web_search、web_fetch、文件与命令行等能力。

切换浏览器来源

在插件设置页可选来源、填 CDP 地址、改 Edge 路径、切换无头模式;与 browser_source 工具读写同一份配置。

让模型切换时,会调用例如:

browser_source({ source: "builtin" })
browser_source({ source: "endpoint", endpoint: "http://127.0.0.1:9222" })

不带参数时只回显当前配置。切换会重挂 provider,已打开会话里的浏览器工具会失效,建议新开「浏览器操作」会话再打开页面。

source 行为
edge 启动本机 Edge(找不到时退回 Playwright 内置 Chromium)
builtin 启动 Playwright 自带 Chromium
endpoint 连接已开调试端口的浏览器;独占,多会话不能共用

连接本机 Edge 调试端示例(README 中的 PowerShell):

& "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9222 --user-data-dir="$env:TEMP\edge-cdp"

运行时选择会写入 $DSH_PROFILE_DIR/browser-source.json(Windows 上为 %USERPROFILE%\.dsh\profiles\<profile>\browser-source.json)。删除该文件即恢复默认 Edge。也可在 cordis.patch.yml 里覆盖 browser-source 的 config 字段。

适用场景与注意

适合谁:需要在 DSH 里做可见浏览器自动化、又希望默认会话不会静默开浏览器的开发者或日常用户;整页抓取、填表、点按等适合「浏览器操作」会话,偶发需求适合 browser_access。

务必知晓:

  • 普通会话里仍可能看到 mcp__playwright-mcp__* 工具名,只是未授权时调用会被门禁拒绝(tools.restrict() 无法隐藏 provider 自注册的工具,插件采用 tools.guard() 在调用管线拒绝)。
  • 浏览器页面与登录态仅在单个会话内保留;切换来源不保留已打开页面。
  • 会话开始后不能切换预设;临时用浏览器应走授权,而不是指望改模式。
  • 依赖 @deepseek-ai/dsh-experimental-browser-use-playwright-mcp 等包,DSH 大版本升级后需对照 package.json 与 README 兼容性说明,并重跑 README 中的验证清单。

README 提供的快速验证包括:普通会话打开网址应被拒且不弹窗;同意后应出现可见窗口;浏览器操作会话应直接可用;切换 builtin 后下一次打开页面应换 Chromium。

结尾

dsh-browser-mode 把「专用浏览器会话」「运行时可选 Edge / 内置 Chromium / CDP」和「按会话征求同意」收进一个 bundle,缓解 profile 层单 provider 与多会话安全之间的矛盾。安装与细节以仓库 README 为准。

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

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

Xiaoye