dsh-browser-tabs:DSH 瀏覽器標籤頁自動收尾

前言

在 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。

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

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

小夜