前言¶
DeepSeek Harness(DSH)在 Web 側邊欄裏管理多項目、多會話時,原生能力以歸檔爲主,並沒有面向日常整理的「刪除會話」入口。會話 JSONL 和投影緩存會長期留在 <DSH_HOME> 下,列表裏刪不掉、誤操作也難有緩衝。社區插件 dsh-safe-session-delete(維護者 tz-Wang510,分類:記憶)在菜單、懸停按鈕和「設置 → 會話管理」裏補上刪除流程:確認後由宿主端移入回收站並刷新列表,默認保留 30 天,便於手動找回。
這是什麼¶
一句話:給 DSH Web 側邊欄提供真正可用的刪除會話能力,日誌進回收站而非直接抹掉。
- 倉庫:tz-Wang510/dsh-safe-session-delete
- 目錄頁:SkillHub 插件頁
- 當前版本(資料):0.2.0,許可證 MIT
- 目標 DSH:
>=0.2.1-rc.5 <0.3.0-0;Node.js>= 20
核心功能¶
下面介紹插件在界面與宿主端分別做了什麼(均來自 README 說明)。
界面入口¶
- 會話行
...菜單新增「刪除會話」。 - 會話行懸停時右側出現紅色
×,無需展開菜單。 - 「設置 → 會話管理」列出所有會話,每行一個「刪除會話」按鈕。
- 中英文界面自適應;刪除前確認框會顯示會話標題。
宿主端刪除流程¶
確認後,宿主按會話 id 定位 <DSH_HOME>/sessions/<項目目錄>/<session-id>,並依次:
- 歸檔會話並停止正在運行的工作;
- 摘除內存中的 live 會話;
- 移動日誌到回收站,避免運行中寫入把文件重新創建。
同時會:
- 刪除投影緩存
<DSH_HOME>/storages/session_projcache/sessions/<id>.json,防止列表刷新複用舊標題; - 遞歸處理該會話的 subagent 子會話目錄(側邊欄本就不顯示它們);
- 調用瀏覽器端
sessions.refresh(),側邊欄立即更新。
當前正在主視圖打開的會話也可刪除:確認框會額外提示,刪除後對話關閉、清除保存的選擇並刷新頁面。
回收站與保留策略¶
日誌移動到:
<DSH_HOME>/session-trash/<時間戳>/<項目目錄>/<session-id>/
Windows 上常見路徑爲 C:\Users\<你>\.dsh\session-trash\。
- 默認 30 天保留;過期批次在 DSH 啓動時及之後每 24 小時自動清理。
- 設置頁可查看當前保留天數,並用「清理過期回收站」立即執行一次清理。
retentionDays: 0表示關閉自動清理,僅手動清理。
profile 插件配置示例:
- id: dsh-safe-session-delete
name: dsh-safe-session-delete
config:
retentionDays: 30
應用內無法撤銷;恢復需把回收站中的會話目錄移回原項目目錄下,再重啓 DSH。
安裝與啓用¶
從 GitHub Release 的預構建 tarball 安裝(<profile> 換成 desktop、web 等):
dsh plugin --profile <profile> add "https://github.com/tz-Wang510/dsh-safe-session-delete/releases/download/v0.2.0/dsh-safe-session-delete-0.2.0.tgz"
若本機 pnpm 報 UNABLE_TO_VERIFY_LEAF_SIGNATURE,在命令前設置:
$env:NODE_OPTIONS="--use-system-ca"
再執行安裝命令。安裝後重啓 DSH(插件在啓動時加載)。README 註明 npm 包發佈後還會補充 dsh plugin add dsh-safe-session-delete 的安裝方式。
從本地插件目錄安裝到其他 profile:
dsh plugin --profile <profile> add "<插件目錄>"
確認 package.json 的 dsh.profile.bundles 中出現 dsh-safe-session-delete 後重啓 DSH。
典型用法¶
經過上面的安裝與重啓,可按任一路徑刪除:
- 鼠標移到會話行,點
...→「刪除會話」; - 或直接點懸停時的紅色
×; - 或打開 設置 → 會話管理,在列表中點「刪除會話」。
確認後,該行從側邊欄消失。若確認不再需要回收站內容,可手動清空(示例爲 PowerShell):
Remove-Item "<DSH_HOME>\session-trash" -Recurse -Force
宿主 HTTP 路由(與內置 API 一樣受啓動令牌 / 簽名 Cookie 保護)包括:
POST /api/dsh-safe-session-delete/delete
Content-Type: application/json
{ "sessionId": "session-xxxx" }
另有 POST /api/dsh-safe-session-delete/status 與 POST /api/dsh-safe-session-delete/purge-trash,供設置頁與清理邏輯使用。
適用場景與注意¶
適合誰: 長期在 DSH 裏開大量會話、需要側邊欄和設置頁統一刪除入口,又希望誤刪能在 30 天內從 session-trash 手動恢復的用戶。
權限與安全: 插件以當前 DSH 進程權限讀寫 <DSH_HOME>;安裝前應閱讀倉庫 SECURITY.md 與源碼。路由非 owner Peer 會被拒絕。
已知限制(README):
- 依賴 DSH 默認 JSONL 佈局(
dshHomePath('sessions'));若 profile 修改了session-persistence-jsonl.root,需自行適配。 - 刪除是宿主端文件操作,非 DSH 官方持久化 API;DSH 升級若改存儲佈局,需同步適配插件。
- 自動清理僅在 DSH 運行時執行;長期不啓動則過期批次保留到下次啓動。
- 側邊欄入口依賴官方 slot;設置頁是相對更穩定的入口。
兼容性說明:已在 DSH 0.2.1-rc.5(Desktop / Windows)上通過真實瀏覽器點擊驗證;DSH 插件 API 仍處預覽階段,升級 DSH 後建議在隔離 profile 試裝並運行 npm test。
結尾¶
dsh-safe-session-delete 補上了 DSH 原生缺失的刪除路徑,並把日誌放進帶保留期的回收站,同時清理投影緩存與子會話目錄,列表可立即刷新。需要安裝包、截圖與變更記錄時,以 GitHub 倉庫爲準。
- 目錄頁:https://www.skillhub.cn/plugins/tz-Wang510/dsh-safe-session-delete
- GitHub:https://github.com/tz-Wang510/dsh-safe-session-delete