dsh-session-manager:在設置頁管理已歸檔 Harness 會話

前言

在 DeepSeek Harness(DSH)里長期跑智能體,會話會不斷積累。歸檔能把側邊欄裏暫時不用的對話收起來,但歸檔記錄仍佔磁盤,也缺少一個集中查看體積、批量恢復或徹底清理的入口。手動到 ~/.dsh/sessions/ 下翻目錄既容易誤刪,又很難對照工作區與會話 id。

會話管理(@local/dsh-session-manager)是掛在 DSH 設置裏的一頁插件:只列出已歸檔會話,支持按標題、工作區路徑或 session id 搜索,展示每條日誌的佔用體積與歸檔合計,並支持多選恢復或永久刪除。下面介紹它的定位、能力與使用時的邊界。

這是什麼

  • 名稱:會話管理(包名 @local/dsh-session-manager,社區目錄 xiaobaga281/dsh-session-manager)
  • 維護者:xiaobaga281
  • 分類:記憶(社區目錄歸類)
  • 版本(資料中的當前包版本):1.1.0
  • 許可:MIT © 2026 xiaobaga281

插件在 Settings 中註冊 Session Manager 頁面:英文 README 將其描述爲列出 archived Harness sessions、檢查佔用、恢復與永久刪除,並帶搜索與多選批量操作。

核心功能

以下能力均來自項目 README,未歸檔會話不會出現在該頁。

僅歸檔視圖

頁面只管理已歸檔記錄;未歸檔會話不在列表中顯示。

搜索

對列表做過濾,匹配字段包括:標題、工作區路徑、session id(字面匹配,不區分大小寫)。README 說明:主查詢服務未掛載全文檢索後端(openAt: never),因此不能按對話正文搜索,僅 metadata。若要在歸檔日誌上做字面內容搜索,需在 sessionQuery.filterEvents 之上自行擴展,代價是讀取每條歸檔 log。

多選與批量操作

支持全選 / 逐行勾選,再對選中項執行恢復或刪除。

恢復

對選中會話執行 unarchive,它們會回到對應工作區的對話列表。

永久刪除

一次性移除 durable session log、其 session_projcache checkpoint,以及 Workspace 裏的 sessionIds 成員關係。 destructive 操作會要求確認,並在完成後展示回收的體積。

刪除涉及的路徑包括:~/.dsh/sessions/<workspace>/<session-id>/ 下的 log 目錄及相關 checkpoint 與成員項。

體積展示

每一行顯示該會話 log 在磁盤上的大小;頁面彙總當前已歸檔會話佔用的總量。

安裝與啓用

官方 README 未給出 dsh plugin add github:... 一類 CLI 命令。安裝方式爲:

  1. 通過 DSH Plugin Manager 使用 install_bundle 安裝插件包目錄;或
  2. 將插件加入某個 profile 的 bundle 列表。

說明:

  • Host 側(index.js 等)改動後需要 重啓 DSH 應用 纔會生效。
  • Client 側(設置頁 UI)在 host 重新提供 bundle 後,隨頁面刷新即可加載。
  • 運行環境要求 Node.js >= 20(見 package.json 的 engines)。

若自行打包分發,倉庫 README 給出:

npm pack

產物示例爲 dsh-session-manager-1.1.0.tgz(以 package/ 爲根),tarball 內含 files 列表、README.md 與 LICENSE。

典型用法

  1. 在 DSH 中打開 設置,進入插件註冊的 會話管理 / Session Manager 分區。
  2. 瀏覽已歸檔會話列表,查看各行體積與頁腳/合計處的歸檔總佔用。
  3. 在搜索框輸入標題片段、工作區路徑或 session id,縮小列表。
  4. 勾選需要處理的行(或全選),選擇 恢復 或 永久刪除,按提示確認。
  5. 刪除完成後留意界面提示的回收體積;若側邊欄仍有個別殘留條目,見下文「行爲與限制」。

行爲與限制

刪除是即時且不可逆的

一次請求內移除 log 目錄、projcache checkpoint 與 workspace 成員關係,確認後即執行。

正在跑 turn 的會話不能刪

若會話當前正在執行一輪對話,需先停止再刪。僅駐留在內存、處於 idle 的會話可以刪除。

駐留會話與側邊欄殘留

Harness 會把已打開的會話留在進程內存,且沒有公開的 unload API。刪除後記錄已無法解析到數據,但插件仍保留 archive 條目(用於在 UI 中隱藏),直到下次啓動;啓動時的 drain 會去掉最後一條 archive 條目。若側邊欄歸檔組裏仍看到已刪會話的空殼,重啓應用一次即可讓該條目消失。

延遲刪除重試

若請求時 log 因罕見原因無法刪除(例如仍有句柄佔用),對應 id 會寫入:

~/.dsh/storages/session-manager/pending-deletions.json

並在下次啓動時重試刪除。

實現結構(便於審閱源碼)

文件 作用
index.js Host:在 webServer 註冊 /session-manager/{list,restore,delete};經 ctx.sessionQuery 讀語料;改 live workspace 成員;刪存儲目錄
client.js Web:註冊 settings.section 頁面、樣式與導航圖標
cordis.patch.yml 插入 session-manager Loader 行
locale/en.json、locale/zh.json Plugin Manager 與 Settings 展示文案
icon.svg 線型圖標

適用場景與注意

適合:經常歸檔大量 Harness 會話、需要按 metadata 檢索、想看清磁盤佔用並批量恢復或徹底清理歸檔數據的開發者。

注意:

  • 插件以當前 DSH 進程權限讀寫 ~/.dsh/ 下會話與存儲;安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的安全與合規要求。
  • 永久刪除不可恢復;刪除前務必確認選中項。
  • 社區目錄 SkillHub 插件頁 與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本文事實以倉庫 README 與 package 元數據爲準。

結尾

會話管理把「已歸檔 Harness 會話」收攏到設置頁:搜索 metadata、看體積、多選恢復或永久刪除,並在無法即時刪盤時通過 pending-deletions.json 在下次啓動重試。若你已在用 DSH 歸檔對話並關心磁盤與清理流程,可通過 Plugin Manager 的 bundle 安裝方式啓用該插件。

羽毛球分组比赛记分
小程序二维码

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

小夜