dsh-sidebar-browser-use:用两个稳定 MCP 工具驱动 DSH 右侧栏浏览器

前言

在 DeepSeek Harness(DSH)里做需要「看网页、点页面、填表单」的智能体时,常见做法是再挂一套浏览器 MCP。很多浏览器 MCP 会一次性向模型暴露十几到几十个工具,工具列表一变,模型侧 prompt 与 tool cache 也跟着抖。DSH 右侧栏本身已经有一块内置浏览器;若能把这块 UI 当成受控终端,同时把模型可见的工具面压到最小,会更贴近长期对话与缓存稳定的需求。

下面介绍社区插件 dsh-sidebar-browser-use(维护者 SS206,SkillHub 分类:联网工具)。它把 DSH 桌面版右侧栏里的 Electron <webview> 浏览器,通过 stdio MCP 暴露给 DSH 智能体,且模型侧始终只有两个稳定工具。

这是什么

dsh-sidebar-browser-use 的定位是:DeepSeek Harness 插件,将内置右侧栏浏览器以 MCP 形式交给 agent 使用(仓库简介:A DeepSeek Harness plugin that exposes the built-in right-sidebar browser as a stdio MCP server to DSH agents.)。

  • 维护者:SS206
  • 许可证:MIT(package.json / README)
  • 版本:0.1.0(以仓库 package.json 为准)
  • 运行要求:DSH >=0.2.0-rc.2,Node >=22

插件通过 bundle 补丁 cordis.patch.yml 挂载 host 半与 stdio MCP 行;在 web profile 下若未安装桌面环境,MCP 行会自动禁用(README / 补丁注释)。

核心功能:两个模型工具 + 一组内部浏览器能力

模型侧只暴露两个 MCP 工具

与「一次暴露 15–40 个工具」的常见浏览器 MCP 不同,本插件固定为:

工具 作用
browser_use_list 返回内部工具目录(名称、读/写类型、参数、调用示例)。只读,无需审批。
browser_use_call 执行单个内部工具,参数形如 { tool, args, reason? }。唯一执行入口,也是唯一审批点。

智能体应先 browser_use_list 查目录,再通过 browser_use_call 调用具体能力;具体参数与示例以 list 返回为准,避免凭记忆拼字段。

内部工具(经 browser_use_call 调用)

内部工具包括:browser_tabs、browser_snapshot、browser_text、browser_screenshot、browser_navigate、browser_click、browser_fill、browser_press、browser_history、browser_open,以及默认关闭的 browser_eval(可在配置中开启,见下文)。

写类操作在非 danger-full-access 会话中,由 host 半在 DSH 的 tools/pre-execute 钩子里返回 { kind: 'ask' },走 DSH 原生审批与 sandbox,而不是在 MCP 层再堆一套审批 UI。

架构概览

数据路径(摘自 README 架构说明):

模型
  -> mcp__browser-use__browser_use_list / browser_use_call
  -> mcp/server.js(stdio MCP,@modelcontextprotocol/server)
       -> 本机 HTTP bridge(127.0.0.1,每次启动随机 token)
            -> host 半(lib/index.js)
                 -> tools/pre-execute 审批
                 -> Connection Fetch /api/browser-use
                      -> client 半(lib/client.js)
                           -> 右侧栏可见 electron <webview>

host 半不向模型注册工具;MCP 进程由 stock @deepseek-ai/dsh-mcp-client 按补丁配置以 stdio 拉起(serverName: browser-use)。

配置

在 profile 或 bundle 层覆盖 host 行(README 示例):

- id: browser-use-mcp
  config:
    allowEvaluate: false      # 是否暴露 browser_eval(任意页面 JS),默认 false
    commandTimeoutMs: 30000   # 单条命令等待 renderer 的超时(毫秒)

MCP 客户端侧补丁里还有 toolCallTimeoutMs: 180000(cordis.patch.yml),与 host 的 commandTimeoutMs 分工不同,改超时需对照两处含义。

安装与启用

已抓取资料与仓库 README 未给出形如 dsh plugin add … 的单行安装命令;安装方式请以 SkillHub 目录页 与 GitHub 仓库 当前说明为准。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

启用后需注意:

  1. 仅桌面版可用。Web profile 侧栏浏览器在 iframe 中,没有 executeJavaScript,无法满足本插件驱动方式。
  2. 插件以当前 DSH 进程权限运行;安装前请自行审阅源码与 MIT 许可证。
  3. 修改 lib/、mcp/ 等 host/client 代码后须重启 DSH;plugin_manager 的 enable/disable 不会重新从磁盘加载 ESM 模块。

诊断信息:标准 DSH 日志通道 browser-use-mcp;$DSH_HOME/browser-use-mcp/bridge.json 记录 live 端口、pid 与启动时间。

典型用法(可复现思路)

下面是一条与 README 设计一致的调用顺序,具体 args 以 browser_use_list 返回为准。

  1. 查目录
    调用 MCP 工具 browser_use_list,确认当前可用的内部工具名与参数 schema。

  2. 确保有可见侧栏页
    若右侧栏没有浏览器标签,在 UI 中打开侧栏浏览器,或经 browser_use_call 调用内部工具 browser_open(参数见 list)。

  3. 导航与快照
    - browser_use_call → browser_navigate:打开目标 URL。
    - browser_use_call → browser_snapshot:获取可交互元素的 ref(ref 仅在下一次 browser_snapshot 之前有效)。

  4. 读内容与操作
    - 读文本:browser_text
    - 点击 / 填表:browser_click、browser_fill(ref 来自最近一次 snapshot)
    - 需要视觉确认时:browser_screenshot(过大时会缩放;base64 过长会拒绝并提示改用 snapshot)

  5. 历史
    browser_history 的 back 行为与侧栏 webview 的历史模型有关:页面内链接跳转、表单提交不会写入与 browser_navigate 相同的历史链,back 可能跳过这些页面(见「已知限制」)。

适用场景与注意

更适合

  • 已在 DSH 桌面版使用右侧栏浏览器,希望 agent 在同一窗口内完成查资料、填表、点按钮等联网步骤。
  • 希望模型侧 MCP 工具面恒定(两个工具),减少 prompt / tool cache 因工具膨胀而失效的情况。

务必知晓的限制(README「Known limitations」)

  • MCP server 为进程级,无 per-session 隔离。
  • 多窗口 DSH 时 bridge 不按窗口路由;任意 renderer 可能认领命令并在本窗口侧栏执行——建议单窗口使用。
  • 跨域 iframe 不可读;同源 iframe 子树也不递归遍历。
  • 截图上限约 1600×1200;base64 约 2M 字符以上会拒绝。

常见错误码

码 含义与处理方向
BRIDGE_NOT_READY host 未起或 bridge.json 过期 → 重启 DSH
CLIENT_OFFLINE 当前窗口 renderer 未轮询 → 窗口置前并重试
NO_BROWSER_TAB 侧栏无可见浏览器页 → 打开侧栏或 browser_open
NO_SUCH_REF ref 过期 → 重新 browser_snapshot

结尾

dsh-sidebar-browser-use 把 DSH 右侧栏浏览器接到 MCP,并用 browser_use_list + browser_use_call 固定模型工具面,内部再展开 tabs、导航、快照、点击、填表等能力,同时把写操作审批交给 DSH 原生链路。适合在桌面 DSH 里做可控、可缓存的浏览器自动化。

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

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

Xiaoye