dsh-session-batch:DSH 會話批量清理與真實運行狀態

前言

在 DeepSeek Harness(DSH)里長期使用,會話日誌會堆積在 $DSH_HOME/sessions 下:官方持久化層提供歸檔能力,但沒有提供刪除 API。側邊欄也說不清某個會話是「真的在跑任務」,還是進程裏仍留着 Session 對象——只打開過一次、刷新頁面也不會消失,只有重啓宿主纔會釋放。

若還要連同某次對話在工作區裏產出的文件一起刪掉,歸屬判定本身很複雜;社區裏 dsh-session-artifacts 已經用創建證據、命令時間窗等規則做了解決。本文介紹的是維護者 ajsney764-blip 在 SkillHub 分類「記憶」下的插件 dsh-session-batch(GitHub):在側邊欄做批量刪除會話記錄,可選聯動刪除產出文件,並用徽章區分 Running 與 In memory。刪除是永久性的,不進回收站。

這是什麼

dsh-session-batch 是面向 DSH 0.2.x 的插件(當前倉庫 package.json 版本爲 0.2.2,許可證 MIT)。它不重新實現產物歸屬邏輯;安裝可選同伴插件 dsh-session-artifacts(>= 0.7.0)時,產物刪除直接調用對方導出的函數。

核心功能

批量刪除會話記錄

在單個面板裏勾選任意數量的會話,一次請求刪除:會話日誌、子智能體記錄、工作區成員關係、置頂與歸檔標記等。

可選刪除工作區產物

確認對話框裏可勾選「同時刪除這些對話產出的文件(含子會話產物)」;執行前會展示文件列表與總大小。未安裝 dsh-session-artifacts 時,該複選框隱藏,僅刪聊天記錄。

誠實的運行狀態

  • Running:當前輪次、owned jobs、子智能體或定時提醒等仍活躍,數據來自宿主 workspace/session-activity 瀑布流。
  • In memory:宿主仍持有 Session 對象;刷新頁面不會改變,重啓應用纔會消失。

可信賴的刪除流程

文檔描述的行爲包括:忙碌會話先嚐試停止,仍忙則整次操作中止且零副作用;日誌目錄刪除後會在磁盤上覆查;已清理的 id 寫入墓碑文件並從面板隱藏;未能刪除的項記入隊列,下次啓動重試。單次請求最多處理 200 個會話。

環境與依賴

  1. DSH 0.2.x,且需具備 connection、sessionQuery、workspaceRegistry 服務(官方發佈的 web 組合均包含)。
  2. 可選:dsh-session-artifacts >= 0.7.0,用於產物刪除。
  3. Node:開發/測試側要求 >= 20(見 package.json 的 engines)。

安裝與啓用

官方 README 給出的安裝方式爲 npm 包(發佈後)或本地路徑;安裝後須完全重啓 DSH,宿主側代碼僅在啓動時加載。

# from npm (once published)
dsh plugin --profile <profile> add dsh-session-batch

# from a local checkout
dsh plugin --profile <profile> add <absolute-path-to-this-repo>

Desktop 應用獨佔 profile 時,CLI 的 dsh plugin 無法直接改其配置;README 提供在應用完全退出後執行的 PowerShell 腳本 scripts/install-when-closed.ps1,並可用 scripts/rollback-when-closed.ps1 回滾。

# fully quit DeepSeek Harness first
pwsh -ExecutionPolicy Bypass -File scripts/install-when-closed.ps1 -WaitForExit

插件以當前 DSH 進程的權限運行;安裝前建議閱讀倉庫源碼與 MIT 許可證,確認刪除範圍符合你的數據安全要求。

典型用法

  1. 在側邊欄打開 Batch purge。
  2. 點 Select,勾選會話(或用 Select all),再點 Delete records of N selected。
  3. 在對話框中:
    - 默認 Chat records only——日誌、子智能體記錄、工作區成員關係。
    - 勾選 Also delete the files these conversations produced (N · size) 可同時刪產物;會先展示文件列表。
  4. 確認執行。不進入選擇模式時,也可在單行上單獨刪除某個會話。

刪除順序在文檔中概括爲:先停作業 → 脫離工作區 →(經同伴插件)移除產物 → 移除日誌並校驗 → 清理緩存 → 墓碑。正在運行的會話若拒絕停止,整批刪除會被拒絕。

適用場景與注意

適合誰:本地或自託管 DSH 長期試用、實驗性對話很多,需要定期清空 $DSH_HOME/sessions 下日誌,又希望在同一界面區分「真在跑」和「只佔內存」的會話;在已安裝 dsh-session-artifacts 的前提下,需要「連產物一起清」的批量操作。

與同伴插件的關係:dsh-session-batch 與 dsh-session-artifacts 不爭奪 Cordis 插槽;兩者都能刪會話記錄,誰先執行誰生效。產物刪除遵循同伴插件規則:僅 創建 的文件可刪,僅交付、僅編輯、時間窗衝突或 $DSH_HOME 內的路徑不會刪。

已知限制(README 原文要點):

  • 已打開的 Session 無法被宿主釋放;刪記錄後本插件面板會隱藏該行,但 DSH 自帶側邊欄可能要重啓應用纔不再顯示。
  • 日誌刪除後,隊列中的產物只能按路徑重試。
  • 另一個仍打開該會話的瀏覽器標籤可能在刪除後重建日誌,應先關閉標籤頁。
  • 含 /、\、. 或 .. 的 id 會被拒絕。

結尾

dsh-session-batch 補的是 DSH 默認「能歸檔、不能刪」與側邊欄狀態不透明之間的縫隙:批量、可校驗的會話清理,可選委託 dsh-session-artifacts 做產物刪除,並用 Running / In memory 減少誤判。

SkillHub 爲社區維護的插件目錄,與 DeepSeek / 幻方無官方從屬關係;安裝與刪除操作均在你本機 DSH 權限下執行,請自行評估風險。

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

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

小夜