dsh-browser-tabs: Automatic Finalization of DSH Browser Tabs

前言

在 DSH 里跑智能体时,专用 Edge(CDP 9227)往往会不断打开页面做检索、登录或预览。窗口和标签页一多,内存和焦点都被占满,手动关页又打断调试节奏。常见做法是凭习惯偶尔清一批,但很难稳定遵守「保留正在看的、刚开的、命中规则的」这类约束。

下面介绍社区插件 dsh-browser-tabs(维护者 0changandui0,分类:客户端)。它在标签页或单窗数量超过可配置上限时,按固定优先级自动关闭闲置、重复、报错和最老的页面,并通过设置页提供阈值、预演与手动清理;只关标签页,不关浏览器窗口。

这是什么

dsh-browser-tabs 是 DSH 的浏览器标签页管家:面向 DSH 专用浏览器,通过 CDP 连接 http://127.0.0.1:9227,在后台周期性检查标签数量,超限后分批关闭,同时保护正在使用、刚打开、每窗最新以及命中保留正则的页面。

插件版本在仓库 package.json 中为 0.2.0,许可证 MIT。社区目录页:https://www.skillhub.cn/plugins/0changandui0/dsh-browser-tabs;源码与说明:https://github.com/0changandui0/dsh-browser-tabs。SkillHub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,可按需从市场或 GitHub 安装。

核心功能

自动清理策略

默认每 30 秒(intervalMs)巡检一次;两次真正关闭之间至少间隔 90 秒(cooldownMs)。满足以下任一条件即视为超限:

  • 单个窗口标签数超过 maxTabsPerWindow(默认 8)
  • 全部窗口标签合计超过 maxTabsTotal(默认 12)

超限后按顺序挑选关闭对象,每轮最多 maxClosePerRun(默认 3)个:

  1. 空白页 / 新标签页(如 about:blank、edge://newtab)
  2. 报错页(含 error.html、chrome-error、/404)
  3. 重复 URL(同一地址多开时只留一份)
  4. 最老的普通页

以下情况默认不关闭:

  • 页面可见或有焦点(document.visibilityState、document.hasFocus());读不到可见性时按「正在用」保守处理
  • 2 分钟内新开的标签(minAgeMs,默认 120000)
  • 每个窗口保留最新的 keepRecentPerWindow 个(默认 1)
  • 命中 keepPatterns 的 URL(出厂默认含抖音推荐流 douyin.com/?recommend=1)
  • 每个窗口至少保留 minTabsPerWindow 个(默认 1)
  • 浏览器服务在 activeGuardMs(默认 120 秒)内仍有操作(依据 $DSH_HOME/browser-service/ops.jsonl 的 mtime)时,自动清理让路
  • 窗口最小化时不再整窗保护:仍保留有焦点、最新及至少 1 个标签;后台自动化在 120 秒内仍有操作时同样让路

closeExtraWindows 默认为 false,当前仅预留配置,不会自动关多余窗口;maxWindows 同样只作配置保留。

两个工具

  • browser_tabs_status:只读。查看当前标签页/窗口数量、是否超限,以及每个页面被保留的原因。
  • browser_tabs_clean:默认 dryRun=true,只预演不关闭;dryRun=false 才会真正关标签。force=true 可忽略「浏览器刚被操作过」的保护。手动清理不受 autoClose 和冷却时间限制。

设置页

路径:设置 → 浏览器标签页。页面上可查看当前标签页/窗口数、是否超限、各页保留原因,并修改:

  • 自动清理总开关、巡检时是否实际关闭(enabled、autoClose)
  • 巡检间隔、清理冷却、活跃让路时间窗
  • 每窗口/合计上限、每轮最多关闭数、新标签保护时长、每窗保留最新个数
  • 保留正则(一行一个)

「保存设置」写入 $DSH_HOME/browser-tabs/settings.json 并立即重设定时器;该文件优先级高于 cordis.patch.yml 出厂默认。「预演一次」只计算不关闭;「立即清理」执行前会再次确认。手动清理默认先预演,不会一按就关。

配置与数据文件

常用配置项(默认值在 cordis.patch.yml,设置页保存项在 settings.json 且优先级更高):

键 默认 说明
enabled true 总开关
autoClose true false 时定时器只看不关,仅手动工具可关
cdpUrl http://127.0.0.1:9227 DSH 浏览器调试口
maxTabsPerWindow 8 单窗口上限
maxTabsTotal 12 全部窗口合计上限
maxClosePerRun 3 每轮最多关闭数
minAgeMs 120000 新标签保护期
keepRecentPerWindow 1 每窗口保留最新个数
keepPatterns 含抖音推荐流 正则数组,命中则不关
intervalMs / cooldownMs 30000 / 90000 巡检间隔 / 关闭冷却
activeGuardMs 120000 浏览器服务活跃让路时间窗

数据目录:$DSH_HOME/browser-tabs/(示例路径 D:\dsh-data\browser-tabs),含 state.json(标签首次出现时间、清理统计)、history.jsonl(真实关闭记录)、settings.json、boot.log(加载确认)。

安装与启用

从插件市场:打开 设置 → 插件市场,搜索「浏览器标签页」或 dsh-browser-tabs。

从 GitHub 安装(命令来自仓库 README):

dsh plugin --profile desktop add github:0changandui0/dsh-browser-tabs

装完后将 dsh-browser-tabs 加入 profile 的 dsh.profile.bundles,热重载配置即可;设置页位于 设置 → 浏览器标签页。

临时关闭:在 cordis.patch.yml 中将 enabled 或 autoClose 设为 false 并保存。彻底卸载:从 dsh.profile.bundles 移除该包名,并删除依赖与 $DSH_HOME/browser-tabs/ 目录。

典型用法

  1. 日常依赖自动巡检:保持 enabled 与 autoClose 为 true,按默认单窗 8、合计 12 运行;智能体频繁开页时由插件按优先级收尾。
  2. 调阈值与保留规则:在设置页改 maxTabsPerWindow、maxTabsTotal,或在保留正则中追加一行 pattern(例如固定监控页、文档页),保存后立即生效。
  3. 先看再关:在设置页点「预演一次」,或在工具侧调用 browser_tabs_clean 且保持 dryRun=true,确认将被关闭的标签列表后再设 dryRun=false 执行。
  4. 排查状态:调用 browser_tabs_status 查看是否超限,以及每个标签因何被保留,便于与智能体开页行为对照。

适用场景与注意

适合长期在 DSH desktop profile 中使用专用浏览器、且标签页容易堆积的开发者或智能体工作流。插件以当前 DSH 进程权限运行,会通过 CDP 关闭标签;安装前应阅读源码与 MIT 许可证,确认 keepPatterns 与上限符合自己的页面习惯。

若浏览器在 activeGuardMs 内仍有自动化操作,自动清理会主动让路,避免与正在进行的任务冲突;需要立即清理时可用手动工具并视情况使用 force=true,仍建议先预演。

结尾

dsh-browser-tabs 把「标签过多时的关闭顺序」和「正在用/刚开/规则保留」写进可配置策略,并给出设置页与只读/预演工具,减少手动扫关标签的负担。进一步了解可访问社区目录页 https://www.skillhub.cn/plugins/0changandui0/dsh-browser-tabs 与 GitHub 仓库 https://github.com/0changandui0/dsh-browser-tabs。

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

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

Xiaoye