前言¶
DeepSeek Harness (DSH) 採用插件化架構,允許開發者擴展功能。隨着使用時間的增加,會話產生的持久化日誌、工作區賬目以及搜索索引會佔用磁盤空間並增加檢索負擔。dsh-session-delete 插件在「設置 → 會話管理」中提供了直接管理這些會話的界面,支持永久刪除冷會話。
核心功能¶
刪除語義¶
該插件在刪除會話時會執行以下操作:
* 刪除持久化日誌(~/.dsh/sessions/<項目>/<session-id>/)。
* 從工作區賬目中摘除會話引用(workspaceRegistry.detachSession)。
* 清理搜索索引(SQLite FTS),在下一次查詢時自動同步完成。
* 包含兩步確認機制,刪除前後均進行校驗,確保持久化列表不再包含該會話。
* 每次刪除都會記錄日誌(成功爲 info,異常爲 warn),工作區賬目摘除失敗會作爲警告回傳界面,不會靜默吞掉錯誤。
列表與批量操作¶
- 子代理會話:默認隱藏
origin: "subagent"的會話。勾選「顯示子代理會話 (N)」開關即可列出它們。 - 側邊對話隔離:Better-Sidebar 的 Side Chat 線程帶
subagent標記,本插件按標題前綴Side:識別,永遠不顯示。 - 搜索:支持按標題、會話 ID、類型標籤(子代理/主會話)、工作區路徑、Agent Preset(如
qq-chat)搜索。輸入子代理會自動放開隱藏並顯示所有子代理會話。 - 分組:支持按時間(今天/近7天/近30天/更早)或按工作區(會話創建時的
cwd)分組。 - 批量選中與刪除:支持整組勾選、全選、單行勾選。選中範圍嚴格跟隨屏幕可見條目。批量刪除逐個串行執行,顯示進度(如
刪除中 12/357),單條失敗不中斷整批,結束後彙總成功與失敗數。 - 佔用大小:每行顯示會話日誌文件的體積。
安全與限制¶
- 目錄守衛:遞歸刪除會話目錄前校驗目錄名等於會話 ID。若路徑形態變化導致不匹配,只刪日誌文件並記錄警告,防止誤刪整個工作區分組。
- 活動會話限制:本次啓動中打開過的會話(包括當前查看的會話)會被拒絕刪除,因爲活動 Agent 會重寫日誌,刪除不徹底。重啓應用後這些會話變成冷會話,即可正常刪除。
- 狀態檢測:Host 列表接口不可用時,界面會顯示錯誤並禁用所有刪除按鈕。
- 請求超時:前端請求設置 20 秒超時(
AbortController),防止 Host 無響應導致界面鎖死。
兼容性¶
- DSH Desktop 2.0.10 / 內核 0.1.5-rc.2:已驗證。
- DSH Desktop 2.0.9 / 內核 0.1.5-rc.1:未驗證。若該版本的
list()返回的是裸 header 而非 snapshot,列表將取不到 id。
安裝與啓用¶
在目標 profile 的 package.json(例如 ~/.dsh/profiles/desktop/package.json)中加入依賴與 bundle:
{
"dependencies": {
"dsh-session-delete": "github:<你的用戶名>/dsh-session-delete"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"…其他插件…",
"dsh-session-delete"
]
}
}
}
在 profile 目錄執行 pnpm install,重啓 DSH 應用。
典型用法¶
進入 設置(齒輪)→ 會話管理。使用搜索、分組或開關篩選會話,選中後點擊刪除即可。
總結¶
dsh-session-delete 提供了一個安全、可控的會話清理入口,適合需要定期整理會話數據、釋放磁盤空間或維護工作區賬目的 DSH 用戶。安裝前請確認宿主版本兼容性。