前言¶
在 DeepSeek Harness(DSH)里長期跑智能體,側欄會話會不斷累積:試過的分支、已歸檔的舊對話、佔磁盤的會話日誌。內置能力可以歸檔會話,但要從列表裏徹底清掉一條記錄(含磁盤上的日誌與投影緩存),或一次性控制「所有工作區裏歸檔會話是否顯示」,往往要逐個菜單操作,或手動刪目錄。Session Cleaner 是掛在 Web 側欄上的客戶端插件,由維護者 gcggcg 發佈,在會話行菜單裏提供不可撤銷的刪除,並在側欄用單個開關統一顯示或隱藏全部已歸檔會話。
這是什麼¶
Session Cleaner(npm 包名 @estelle-ge/dsh-plugin-session-cleaner,GitHub 倉庫 gcggcg/dsh-plugin-session-cleaner)面向 DSH Web 側欄:從任意會話行的 ... 菜單永久刪除該會話,並通過側欄全局開關一鍵顯示或隱藏所有工作區(含「未分組」)下的已歸檔會話。分類上屬於客戶端插件;Host 端註冊刪除 API,瀏覽器端注入菜單與開關 UI。當前 package 版本爲 0.2.0,許可證 MIT;要求 DSH 版本 >=0.2.1-rc.3 且 <0.3.0-0。
刪除會話¶
側欄中任意會話行 → ... → 刪除會話(紅色危險項)。二次確認後,Host 會按順序處理:
- 若該會話正在運行,先停止其 Agent(最多等待 8 秒;超時則拒絕刪除,不改動任何內容);
- 從工作區歸屬、置頂集合、歸檔集合中移除該會話;
- 刪除
$DSH_HOME/sessions/<project>/<session-id>/下的會話日誌目錄; - 刪除投影緩存
$DSH_HOME/storages/session_projcache/sessions/<session-id>.json(以及存在時的派生搜索索引); - 通知已連接的瀏覽器移除側欄對應行。
刪除不可撤銷。DSH 曾打開過的會話(含當前主視圖中的會話)也可直接刪除,無需重啓應用;刪除當前會話後客戶端會自動新建空會話。會話 ID 支持 session-<uuid>、舊版 sess_<uuid> 與子代理裸 <uuid> 等 DSH 形態。
刪除經 Host 受認證路由 POST /api/session-cleaner/delete 完成,使用官方 slot sidebar.workspaces.session.menu.item(order: 500,danger)。
全局顯示 / 隱藏歸檔會話¶
側欄面板列表裏、「自動化任務」下方有一行 歸檔會話 開關(膠囊形 button[role="switch"]),默認關閉(隱藏全部歸檔會話)。點一次即切換:打開則所有工作區的已歸檔會話一次性全部顯示;關閉則一次性全部隱藏,無需在每個工作區的 ... 裏逐個切換。
可見性保存在瀏覽器 localStorage,鍵名爲 dsh.session-cleaner.archived-visible:'1' 表示顯示,'0' 或缺省表示隱藏;刷新或重啓後仍有效。插件關閉開關時,即使用戶把內置篩選切到「全部對話(顯示已歸檔)」,也會拉回「隱藏已歸檔」,以保證默認隱藏行爲;要看或取消歸檔某條會話,需先打開側欄歸檔開關。摺疊的工作區分組未展開時不會渲染會話行,展開後才能看到該工作區的歸檔會話。
安裝與啓用¶
Desktop(推薦):DeepSeek Harness Desktop →「插件」→「添加插件」,輸入 npm 包名或等價 GitHub 地址,確認後完全退出並重啓應用:
@estelle-ge/dsh-plugin-session-cleaner
# 等價寫法(從 GitHub 倉庫安裝同一個插件)
github:gcggcg/dsh-plugin-session-cleaner
插件無需單獨構建;安裝後 Host 入口 index.js 與瀏覽器 bundle client.js 會被直接加載。Desktop 的 profile 由 Electron 應用管理,CLI 的 dsh plugin --profile desktop ... 會被拒絕。
Web / TUI(CLI):
dsh plugin --profile web add @estelle-ge/dsh-plugin-session-cleaner
本地開發可用 dsh plugin --profile web add link:<本倉庫絕對路徑>。安裝或更新後需完全退出並重啓 Desktop,或刷新 Web 頁面,以便瀏覽器端 bundle 重新加載。
開放插件市場頁面:https://dshopen.org/zh/plugins/@estelle-ge/dsh-plugin-session-cleaner/ 。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
典型用法¶
清掉一條不再需要的會話:側欄定位會話 → ... → 刪除會話 → 確認。若 Agent 仍在跑且 8 秒內停不下,按提示先停止該會話工作後再刪。
批量查看或處理歸檔:打開側欄「歸檔會話」開關,各工作區歸檔行出現後可使用內置「取消歸檔」;處理完再關開關,列表恢復默認隱藏歸檔。
Web profile 維護環境:在對應機器上執行上面的 dsh plugin --profile web add ...,重啓或刷新 Web UI 後生效。
適用場景與注意¶
適合需要定期清理 DSH 會話磁盤佔用、或希望側欄默認隱藏歸檔、偶爾一鍵展開全部歸檔的開發者。插件在 Host 側以當前 DSH 進程權限刪除目錄與緩存,安裝前應閱讀倉庫源碼與 MIT 許可證,確認可接受破壞性刪除行爲。
已知限制(摘自上游 README):已打開但空閒的會話刪除後,Host 內存中的 Session 對象可能保留到進程重啓;插件開啓且歸檔開關關閉時會接管內置歸檔篩選;側欄開關注入依賴內置面板 DOM,DSH 大版本升級後可能需要插件適配。
插件以 DSH 既有服務(如 webServer、sessionPersistence、workspaceRegistry 等)實現,Host 端不引入新的運行時依賴。
鏈接¶
- 社區目錄頁:https://www.skillhub.cn/plugins/gcggcg/dsh-plugin-session-cleaner
- GitHub:https://github.com/gcggcg/dsh-plugin-session-cleaner
- npm:https://www.npmjs.com/package/@estelle-ge/dsh-plugin-session-cleaner
Session Cleaner 把「永久刪除單條會話」和「全局歸檔可見性」收進側欄兩處入口,適合在 Harness 日常開發中控制會話列表與本地 $DSH_HOME 佔用。