前言¶
在 DeepSeek Harness(DSH)裏用 Web UI 管本地會話時,側欄默認只能逐條歸檔,沒有批量操作,也沒有把會話刪掉的主入口。會話一多,想一次性歸檔或清理舊記錄,只能一條條點;想對比各會話用了哪個模型、token 和緩存、上下文還剩多少,也缺少一張總覽表。社區維護者 mars401 的 dsh-session-batch-manager 針對這兩塊空白:側欄多選後批量歸檔、恢復與物理刪除,並提供一個全屏 Session management 面板,把模型、token 分桶、緩存讀寫和上下文壓力可視化出來。
這是什麼¶
dsh-session-batch-manager 是面向 DSH 的 Web 客戶端插件(倉庫 mars401/dsh-session-batch-manager),在 host 側提供刪除路由與統計掃描,在 GUI 側擴展側欄與會話管理面板。插件以 MIT 許可證發佈,當前 package 版本爲 0.1.1,要求 DSH >= 0.2.1;README 註明在 DSH 0.2.2-alpha.2(Web UI、dev sandbox)上做過驗證。倉庫內已提交 lib/ 預構建產物,安裝時無需本地 build。
核心功能¶
側欄批量管理¶
側欄底部有兩個入口按鈕:Batch(清單圖標)切換多選模式;Session management(儀表圖標)打開或關閉全屏管理面板。
進入 Batch 模式後,每行會話會出現複選框(默認隱藏)。在該模式下點擊整行即可切換選中;打開會話、雙擊重命名、拖拽排序以及 Enter/Space 等行爲會被批量選擇接管。退出 Batch 模式後,已選中的高亮和底部浮動工具欄仍會保留;執行任意批量操作(歸檔 / 恢復 / 刪除)完成後會自動清空選擇,也可用工具欄上的 Clear 手動清空。
只要至少選中一條會話,側欄底部會出現浮動工具欄(不限於 Batch 模式),顯示選中數量,並提供 Select all、Clear、Archive(若所選全部已歸檔則變爲 Unarchive)、Delete(先確認)以及在 Batch 模式下才有的 Exit。
批量歸檔時若遇到仍在運行的會話,結果提示會單獨列出,並提供與 DSH 原生歸檔對話框類似的 Stop and archive N running sessions 一鍵重試。
Delete 會先彈出確認框列出目標會話,確認後走 host 物理刪除 JSONL 日誌目錄,並廣播 api-session/removed,各已連接 GUI 會立即移除對應行;客戶端另有 tombstone 機制避免已刪行短暫復現(詳見倉庫「Safety and behavior」一節)。
部分 DSH 構建若自帶上下文菜單服務,插件會貢獻 Batch select sessions 菜單項;在缺少該服務的 0.2.2-alpha.2 上該入口不會出現,其餘功能不受影響。
Session management 面板¶
全屏 Session management 面板會掃描本機全部本地會話,呈現六列表格:複選框 / 會話標題(含 running、subagent、archived、pinned 等標記)/ 模型(provider/model)/ token 用量(四桶合計,單元格 tooltip 可展開 uncached input、cache read/write、output)/ cache read · write / 上下文壓力百分比(進度條,≥ 90% 時警告色)。
頂部有四個篩選 chip:All / Main / Subagents / Archived,並顯示實時數量;切換篩選會清空面板內獨立的選擇集(與側欄選擇無關)。面板內可複用與側欄相同管線的批量歸檔、恢復與刪除。
首次加載會對全部日誌做一次掃描:先顯示骨架行,再按從新到舊追加行,待處理數量遞減並顯示細進度條;之後僅重放 revision 變化的會話。統計路由採用 fire-and-forget 掃描,不阻塞響應。面板打開時每約 5 秒輪詢一次(可通過 bundle 層配置項 statsPollIntervalMs 覆蓋);瀏覽器標籤隱藏時可暫停;面板關閉時 host 無額外輪詢開銷。單條日誌損壞時該行顯示警告圖標,數值列顯示「—」,不拖垮整張表;若 host 的 sessionQuery 不可用,面板會降級爲列表加批量操作。
安裝與啓用¶
Web 側通過 CLI 從 GitHub 安裝(desktop profile 由官方 Desktop 應用管理,不宜用常規 dsh CLI 改;Desktop 用戶應在應用內 Plugins 安裝):
dsh plugin --profile web add github:mars401/dsh-session-batch-manager
安裝後重啓 DSH Web。若瀏覽器仍加載舊客戶端包,用 Ctrl+Shift+R 強制刷新。
可用 status 路由自檢(端口換成你的 DSH Web 端口):
curl -s http://127.0.0.1:<your-dsh-web-port>/dsh-session-batch-manager/v1/status
# {"ok":true,"service":"dsh-session-batch-manager","version":"0.1.1"}
可選配置寫在 bundle 的 cordis.patch.yml 中,例如:
| Key | 默認值 | 說明 |
|---|---|---|
routeBase |
/dsh-session-batch-manager/v1 |
Host 路由前綴,注入頁面爲 window.__DSH_SESSION_BATCH_MANAGER__ |
maxBatchSize |
200 |
單次刪除請求允許的會話 ID 上限 |
trustedHosts |
[] |
host fence 額外信任域名(非 loopback 部署時可能需要) |
statsPollIntervalMs |
(見倉庫配置表) | 管理面板統計輪詢間隔 |
具體默認值以倉庫 README 與 cordis.patch.yml 爲準。
典型用法¶
- 在 DSH Web 側欄底部點 Batch,勾選要處理的會話;在浮動工具欄選 Archive、Unarchive 或 Delete,按提示確認。若歸檔被運行中會話阻塞,在結果通知裏使用 Stop and archive 重試。
- 點 Session management 打開全屏表,用 All / Main / Subagents / Archived 縮小範圍,查看模型與 token、緩存、上下文壓力;在表內勾選後做批量歸檔或刪除。
- 將鼠標懸停在 token 用量單元格上,查看各 bucket 的 tooltip 明細。
本地開發時可在倉庫內 pnpm install、pnpm build,再用本地路徑代替 GitHub spec 安裝:
dsh plugin --profile web add <path-to-this-repository>
適用場景與注意¶
適合長期在 DSH Web 上維護大量本地會話、需要批量歸檔或物理刪除、或需要橫向對比 token 與上下文佔用的開發者。批量刪除不可恢復,操作前務必覈對確認框中的會話列表。
DSH 生態強調「一切皆插件」;SkillHub 目錄頁 是社區索引站點,與 DeepSeek / 幻方無官方從屬關係。插件在 當前 dsh 進程權限 下運行,安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。
結尾¶
dsh-session-batch-manager 補上了 DSH 原生 GUI 在側欄批量歸檔/刪除與會話級資源可視上的缺口:多選工具欄加全屏 Session management 儀表盤,並與 host 刪除、統計掃描打通。目錄頁:https://www.skillhub.cn/plugins/mars401/dsh-session-batch-manager;源碼與完整說明:https://github.com/mars401/dsh-session-batch-manager。