dsh-archived-session-delete:在 Web GUI 側欄永久刪除已歸檔會話

前言

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 中寫得很具體,可概括爲以下幾點。

  1. 菜單與確認:僅已歸檔行顯示 刪除會話;對話框展示會話標題、不可恢復警告,以及取消 / 刪除按鈕;刪除進行中與失敗信息都在對話框內展示。
  2. 磁盤與記賬:刪除時會清理會話 JSONL 目錄(默認 $DSH_HOME/sessions/<project>/<session-id>/)、該會話下 origin: 'subagent' 的子代理日誌(遞歸,不刪除從該會話 fork 出來的會話)、Workspace 的 detachSession、全局歸檔與置頂集合。
  3. 活躍表與刷新:若 Host 仍爲該歸檔會話保留空閒 Agent 實例,會調用 SessionStore.detachEntered 分離,避免列表出現日誌已刪的「幽靈」行;並通過 api-session/removed 讓已打開頁面刷新會話列表。
  4. 只讀排查: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。

  1. 在側欄篩選或展開 已歸檔 會話列表。
  2. 在目標已歸檔會話行點擊 ...,選擇 刪除會話。
  3. 在二次確認對話框中核對標題與警告,點擊 刪除;成功後該行從側欄消失,其他歸檔會話不受影響。

若需在不點 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜