前言¶
在 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)個:
- 空白頁 / 新標籤頁(如
about:blank、edge://newtab) - 報錯頁(含
error.html、chrome-error、/404) - 重複 URL(同一地址多開時只留一份)
- 最老的普通頁
以下情況默認不關閉:
- 頁面可見或有焦點(
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/ 目錄。
典型用法¶
- 日常依賴自動巡檢:保持
enabled與autoClose爲 true,按默認單窗 8、合計 12 運行;智能體頻繁開頁時由插件按優先級收尾。 - 調閾值與保留規則:在設置頁改
maxTabsPerWindow、maxTabsTotal,或在保留正則中追加一行 pattern(例如固定監控頁、文檔頁),保存後立即生效。 - 先看再關:在設置頁點「預演一次」,或在工具側調用
browser_tabs_clean且保持dryRun=true,確認將被關閉的標籤列表後再設dryRun=false執行。 - 排查狀態:調用
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。