前言¶
DeepSeek Harness(DSH)的 Web GUI 側欄會列出當前工作區下的會話,歸檔後條目會進入「已歸檔」分組,便於與進行中的會話分開查看。歸檔只改變列表歸類,並不會從本機刪掉 JSONL 會話日誌、子代理記錄和 Workspace 記賬;若長期積累大量試驗會話或敏感 cwd 下的歷史,僅靠歸檔無法真正騰出磁盤或降低本地暴露面。社區插件 dsh-archived-session-delete(維護者 Ediblewildfungi)在已歸檔會話行尾的 ... 菜單中增加 刪除會話,經二次確認後由 Host 清理本地持久化與相關集合,並通知瀏覽器刷新列表。下面介紹其定位、能力與安裝方式。
這是什麼¶
dsh-archived-session-delete 是一個面向 DSH web profile 的普通 bundle 插件(dsh.bundle.patch + dsh.client)。它在側欄 已歸檔 會話的 ... 菜單裏追加一項 刪除會話(位於內置「複製 Session ID」之後,帶分隔線);點擊後彈出確認對話框,確認後永久刪除該會話的本地記錄。運行中或未歸檔的會話不會出現刪除入口,Host 端也會拒絕刪除請求。
源碼與說明見 GitHub 倉庫 Ediblewildfungi/dsh-archived-session-delete;包名 dsh-archived-session-delete,當前 README 對應 npm 版本 1.0.0,許可證 MIT。插件目錄頁:skillhub.cn/plugins/Ediblewildfungi/dsh-archived-session-delete(社區目錄站點,與 DeepSeek / 幻方無官方從屬關係)。
核心功能¶
側欄交互與 Host 清理範圍在 README 中寫得很具體,可概括爲以下幾點。
- 菜單與確認:僅已歸檔行顯示 刪除會話;對話框展示會話標題、不可恢復警告,以及取消 / 刪除按鈕;刪除進行中與失敗信息都在對話框內展示。
- 磁盤與記賬:刪除時會清理會話 JSONL 目錄(默認
$DSH_HOME/sessions/<project>/<session-id>/)、該會話下origin: 'subagent'的子代理日誌(遞歸,不刪除從該會話 fork 出來的會話)、Workspace 的detachSession、全局歸檔與置頂集合。 - 活躍表與刷新:若 Host 仍爲該歸檔會話保留空閒 Agent 實例,會調用
SessionStore.detachEntered分離,避免列表出現日誌已刪的「幽靈」行;並通過api-session/removed讓已打開頁面刷新會話列表。 - 只讀排查:Connection RPC 通道
/archived-session-delete提供plan({ sessionId }),先解析將刪除哪些文件與會話,不寫盤,便於測試與排查。
Host 半側在 lib/index.js 註冊上述 RPC;瀏覽器半側在 lib/client.js 向 slot sidebar.workspaces.session.menu.item 與 shell.overlay 註冊菜單項和確認層,依賴 DSH 公開 slot 與 Connection 服務(README 註明當前針對 DSH 0.2.1-rc.5 驗證;升級 DSH 後若接口改名需同步調整插件)。
安裝與啓用¶
推薦從 npm 安裝到 web profile:
dsh plugin --profile web add dsh-archived-session-delete
若從本地目錄安裝並在運行中即時生效(示例路徑來自 README,請換成你的 clone 路徑):
dsh plugin --profile web add link:/home/jiang/agent-talk/dsh-archived-session-delete
也可在 Web GUI 的 插件 頁面安裝本地目錄;profile 啓用 HMR 時,bundle 補丁與 client 可熱更新,無需重啓。
手工寫入 profile 時,在 $DSH_HOME/profiles/web/cordis.patch.yml 末尾追加:
- insert:
- id: archived-session-delete
name: 'dsh-archived-session-delete'
並把包裝進 profile 的 node_modules(例如 pnpm add dsh-archived-session-delete),然後重啓 dsh web。
可選配置¶
Host 側僅一個可選字段(僅當 JSONL 持久化根目錄與默認不一致時需要):
| 字段 | 默認值 | 含義 |
|---|---|---|
sessionsRoot |
$DSH_HOME/sessions |
JSONL 會話持久化根目錄 |
在 patch 中示例:
- id: archived-session-delete
name: 'dsh-archived-session-delete'
config:
sessionsRoot: /data/dsh-sessions
典型用法¶
安裝並激活插件後,用法集中在 Web GUI 側欄,無需額外 CLI。
- 在側欄篩選或展開 已歸檔 會話列表。
- 在目標已歸檔會話行點擊
...,選擇 刪除會話。 - 在二次確認對話框中核對標題與警告,點擊 刪除;成功後該行從側欄消失,其他歸檔會話不受影響。
若需在不點 UI 的情況下覈對刪除範圍,可調用 Host 暴露的 plan({ sessionId })(走 Connection 鑑權);實際刪除由 delete({ sessionId }) 執行,邏輯與 UI 確認後相同。
適用場景與注意¶
適合:本地 DSH Web GUI 用戶,希望歸檔後仍能一鍵清掉試驗會話、子代理日誌和 Workspace 記賬,而不是長期堆在 $DSH_HOME/sessions 下。
務必知曉的限制(均來自 README):
- 刪除不可撤銷,無回收站;只清理本地記錄,已上傳到模型或外部的備份不在範圍內。
- 運行中會話(Agent running,或仍有 turn / 子代理 / 後臺任務 / 定時提醒)會返回
session-active並被拒絕。 - 若另一進程以寫者身份打開同一會話,刪除可能失敗,需先停止該進程。
$DSH_HOME/storages/session_projcache/中可能殘留檢查點文件,不會讓已刪會話重新出現在列表,可後續手工清理。- 插件以當前 dsh 進程權限操作文件系統;安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的安全策略。
維護者在 2026-11-02 記錄了離線單測、Host 端到端與瀏覽器 UI 端到端驗證(README 中 PASS 33/33 等),可作爲質量參考,不構成對你環境的保證。
結尾¶
dsh-archived-session-delete 補上了 DSH Web GUI 在「已歸檔」之上的永久本地刪除能力:菜單入口、二次確認、Host 側完整清理與列表刷新一條鏈路完成。需要安裝命令與行爲細節時,以 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/Ediblewildfungi/dsh-archived-session-delete
- GitHub:https://github.com/Ediblewildfungi/dsh-archived-session-delete