dsh-session-remove:在側欄中停止並永久刪除 DeepSeek Harness 會話

前言

DeepSeek Harness(DSH)側欄的會話菜單目前僅提供重命名、分叉與歸檔功能。歸檔只是將會話隱藏,並不清理本地日誌數據;若要停止一個會話的運行,用戶往往需要先打開會話再點擊停止按鈕。這種操作路徑增加了管理成本。

dsh-session-remove 插件將“停止工作”與“永久刪除數據”這兩個操作直接放回用戶最常點擊的位置——側欄會話行的菜單中。

插件概覽

  • 名稱:dsh-session-remove
  • 維護者:BG0EXM
  • 許可證:MIT
  • 核心價值:在側欄會話菜單中直接添加“停止”與“刪除”選項,管理會話生命週期。

核心功能

  1. 菜單擴展:在側欄會話菜單中添加“停止會話…”與“刪除會話…”選項。
  2. 停止會話:取消運行中的回合、子代理、後臺任務與定時提醒。
  3. 永久刪除:刪除會話的日誌(session.v4.l.zstd)、投影緩存與工作區記錄。
  4. 事件通知:通過官方事件 api-session/removed 通知側欄移除該行。
  5. 更新提示:檢查更新並提示(僅提示,不靜默替換)。

安裝與依賴

安裝前請確保宿主 DSH 版本爲 0.2.0-rc.2 或更高。

# 桌面版:側欄 → 插件 → 添加插件 → 填包名
dsh-session-remove

# 其它 profile(web / tui / 自建)
dsh plugin --profile web add dsh-session-remove

安裝後不需要重啓 DSH,也不需要刷新頁面。

典型用法

  1. 鼠標移到側欄任意會話行。
  2. 點擊 ⋯ 菜單。
  3. 選擇 停止會話… 取消當前運行。
  4. 選擇 刪除會話… 永久移除本地數據。

實現原理與安全邊界

該插件不使用 DOM 注入或 React Fiber 遍歷,而是通過官方擴展點實現,以避免核心 UI 更新導致失效。

菜單註冊

菜單項註冊進官方 slot sidebar.workspaces.session.menu.item,與其他菜單項按 order 排序。

刪除流程

刪除操作通過 ctx.workspaceRegistry 與 storageDomain 的公開 API 完成。爲確保數據一致性,執行順序必須嚴格遵循:

  1. 釋放會話:先釋放會話的寫句柄。
  2. 停止工作:調用 ctx.workspaceRegistry.stopSessionActivity()。
  3. 等待清零:確認所有任務已結束。
  4. 刪除文件:移除會話目錄與緩存。

若嘗試刪除仍在運行中的會話,插件會拒絕操作並提示“停止並刪除”。停止操作會丟棄排隊中的輸入。

刪除的內容

位置 內容
$DSH_HOME/sessions/<項目>/<會話id>/ 會話日誌(session.v4.jsonl.zstd)與寫租約
session_projcache 存儲域 投影檢查點記錄
$DSH_HOME/storages/workspace.json 工作區成員位置、置頂、歸檔記錄

注意事項

  • 零依賴、零構建:不需要額外環境,安裝即用。
  • 不可恢復:刪除操作不可撤銷,沒有回收站功能。
  • 更新生效:更新插件後需要重啓宿主模塊才能生效。
  • 附件處理:附件是內容尋址去重的,插件僅刪除會話目錄,不按會話回收附件。

排查

插件運行日誌位於 $DSH_HOME/plugin-session-remove.log,可用於排查安裝或執行問題。

生態鏈接

  • GitHub:https://github.com/BG0EXM/dsh-session-remove
  • 目錄頁:https://www.skillhub.cn/plugins/BG0EXM/dsh-session-remove
羽毛球分组比赛记分
小程序二维码

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

小夜