dsh-sidebar-control:驱动 DSH 右栏内置浏览器的 Agent 工具

前言

DeepSeek Harness(DSH)桌面版在右侧侧栏里自带 Browser 面板:标签、地址栏、Electron <webview> 会话都在界面上,但在 0.2.2-rc.1 这一档构建里,面板往往只是 UI,模型侧未必有对应的控制工具。若要让 Agent 去读页、点按钮、填表单,常见做法是再挂一套 Playwright 或独立 Chromium——多一个配置、多一轮登录,token 开销也随「整页快照」叠上去。

下面介绍社区插件 Sidebar Control(npm 包名 dsh-sidebar-control,维护者 clusterstar1229)。它在不下载额外浏览器的前提下,把右栏里你正在看的那个页面暴露为单一模型工具 builtin_browser,并针对长页阅读做了按 query 检索、diff 增量和 batch 多步合并,目标是把第二次、第三次读页的 token 和往返次数压下去。

这是什么

Sidebar Control 是 DSH 客户端 类插件:Agent 在 Harness 内置侧栏 Browser 里读真实 DOM、点真实控件、输入、按键、滚动、等待和截图,不另起第二个浏览器进程,也不捆绑 Chromium/Playwright。实现上基于 MIT 许可的 dsh-sidebar-browser,复用其动作面与长轮询桥;本包在此基础上增加 query 范围内的 read、相对上次的 diff、多标签 tabs / focus / close_tab,以及最多 12 步的 batch,依赖列表为空。

当前发布版本为 0.2.1(2026-11-08),许可证 MIT,作者 Hongrui Zhao。在 DSH 生态里,插件由社区目录(如 SkillHub 条目)收录,与 DeepSeek / 幻方无官方从属关系;安装与审阅仍以 npm 包与 GitHub 仓库为准。

与整页快照相比,多做了什么

多数侧栏浏览器插件用一次大 snapshot(默认上限约 12k 字符)回答所有问题——读一次尚可,连读三次成本很高。Sidebar Control 把差异化放在后续读取上,可与同基础的 dsh-sidebar-browser 对比如下(均来自项目 README):

场景 dsh-sidebar-browser Sidebar Control
读长页 全文 + refs read 带 query,BM25(英文词 + 中文二元组)只回命中段落
看动作改了什么 再 snapshot diff 只回新增/消失段落
多步表单 每步一次调用 batch 单次最多 12 步
点击后等待 固定 350 ms + 加载窗口 页面稳定即返回,README 称常见约 100 ms
多标签 单标签 tabs / focus / close_tab

项目在 15,521 字符的 test/long-article.html fixture 上给出过字符与约合 token 标注:例如 read { query: "wall-clock" } 约 199 字符(≈50 token),而同页默认 snapshot 截断到 12,000 字符(≈3,000 token)。这些数字来自插件自身的 chars ≈ tokens 输出,token 列宜看数量级;字符数为实测值。

核心能力(工具 builtin_browser)

插件只向模型注册一个工具,故意命名为 builtin_browser,表示驱动的是宿主面板而非外挂浏览器。0.2.1 支持的动作包括(节选,完整表见 README):

  • 导航与会话:status、open、navigate / back / forward / reload、close;open / 标签相关操作按 Session 隔离(0.2.1 加固)。
  • 页面认知:snapshot(文字 + 编号 refs,可限 max_text_chars / max_refs)、read(可选 query + max_chars)、diff、screenshot(过大时降采样)。
  • 交互:click、type(submit: true 提交表单)、press(含修饰键)、select、scroll、wait(要求可见元素)、eval(页面内 JS,需互信页面)。
  • 编排:batch 一次执行多步(navigate/click/type/…/read/diff/snapshot 等),校验每步并报告 ran N of M。
  • 多标签:tabs 列表、focus / close_tab 按 tab_id。

refs 绑定在最近一次 snapshot 上;导航后旧 ref 会失败并提示重新快照。只想知道「变了一点什么」时优先 diff,不必整页重拍。

安装与版本要求

适用 DeepSeek Harness 桌面版,且需已启用右栏内置 Browser。package.json 声明:

  • engines.dsh: >=0.2.2-rc.1 <0.3.0
  • engines.node: >=20

官方安装命令(README 原文):

dsh plugin --profile desktop add dsh-sidebar-control@0.2.1

或在应用内:设置 → 插件 → 安装 bundle,填写 dsh-sidebar-control@0.2.1。从 npm 安装后,插件管理器可为后续版本提供 Update。从 0.1.x 升级无配置迁移;若曾从 checkout 安装,建议改回 npm 以便收到更新。

兼容矩阵摘要:桌面 0.2.2-rc.1 已做 110 步现场测试;低于 0.2.2-rc.1 的桌面版不支持(无右栏 Browser 服务);dsh web 构建下页面自动化受限(跨域 iframe),tabs / focus 仍可用;macOS / Linux 桌面为「预期可用」,README 注明主要战役在 Windows 上完成。

典型用法

经上面的步骤装好插件后,可按 README 教程复现两类流程。

1. 用 batch 完成搜索,只读命中段落

在 Bing 等站点上,把输入、等待结果、read 合成一次调用:

builtin_browser({
  action: "batch",
  steps: [
    { action: "type", selector: "#sb_form_q", text: "DeepSeek Harness", submit: true },
    { action: "wait", text: "DeepSeek Harness" },
    { action: "read", query: "deepseek harness plugin", max_chars: 700 },
  ],
})

README 给出的示例返回里,第三步约为 700 chars ≈ 206 tokens,而不是 12k 级整页快照。

2. 本地 HTML 报告(经 http 提供)

当前桌面构建可能拦截 file://,需用本机 HTTP serve 目录后再 open:

python -m http.server 8000 --bind 127.0.0.1 --directory ./out
builtin_browser({ action: "open", url: "http://127.0.0.1:8000/report.html" })
builtin_browser({ action: "snapshot", max_refs: 20 })
builtin_browser({ action: "read", query: "Q3 revenue", max_chars: 800 })
builtin_browser({ action: "screenshot" })

需要点选控件时用 snapshot;只要摘要用 read;要看版式用 screenshot。

更基础的顺序仍是:先 open 或已有标签 → snapshot 拿 refs → click / type 等 → 动作后用 diff 或再 snapshot。

适用场景与注意

适合谁:已在 DSH 桌面版使用右栏 Browser、希望 Agent 与你在同一标签、同一会话里操作页面,且希望在长文、多步表单场景下控制 token 的开发者。

环境与权限:

  • 插件随当前 DSH 进程运行;安装前请阅读 GitHub 源码 与 MIT 许可证,确认其行为符合你的安全策略。
  • 页面内容对模型是不可信数据,不是系统指令;eval 等同在页面内开 devtools,仅用于可信页面。
  • Harness 主界面需打开:Client 半运行在 Harness 页面里;open / focus / close_tab / screenshot 需要调用 Session 在屏幕上,读与点击可在后台进行。
  • 若未来 Harness 自带同名 builtin_browser 工具,不要与本案同时启用,避免同名注册竞争。
  • 固定宽度站点在窄侧栏可能横向滚动;插件不注入缩放或改样式。
  • 本地页面优先用 http://127.0.0.1;内置 Browser 对下载、权限弹窗、顶层跳转等仍有沙箱限制。

结尾

Sidebar Control 补齐了 DSH 右栏 Browser 的 Agent 控制面:同一 webview、同一 cookie,加上 read / diff / batch 降低长页与多步任务的 token 与往返成本。查阅条目与版本说明可到社区目录 SkillHub 与仓库 clusterstar1229/dsh-sidebar-control;问题可走 GitHub Issues 或 README 所列邮箱。

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

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

小夜