前言¶
DeepSeek Harness(DSH)側欄的會話菜單目前僅提供重命名、分叉與歸檔功能。歸檔只是將會話隱藏,並不清理本地日誌數據;若要停止一個會話的運行,用戶往往需要先打開會話再點擊停止按鈕。這種操作路徑增加了管理成本。
dsh-session-remove 插件將“停止工作”與“永久刪除數據”這兩個操作直接放回用戶最常點擊的位置——側欄會話行的菜單中。
插件概覽¶
- 名稱:
dsh-session-remove - 維護者:BG0EXM
- 許可證:MIT
- 核心價值:在側欄會話菜單中直接添加“停止”與“刪除”選項,管理會話生命週期。
核心功能¶
- 菜單擴展:在側欄會話菜單中添加“停止會話…”與“刪除會話…”選項。
- 停止會話:取消運行中的回合、子代理、後臺任務與定時提醒。
- 永久刪除:刪除會話的日誌(
session.v4.l.zstd)、投影緩存與工作區記錄。 - 事件通知:通過官方事件
api-session/removed通知側欄移除該行。 - 更新提示:檢查更新並提示(僅提示,不靜默替換)。
安裝與依賴¶
安裝前請確保宿主 DSH 版本爲 0.2.0-rc.2 或更高。
# 桌面版:側欄 → 插件 → 添加插件 → 填包名
dsh-session-remove
# 其它 profile(web / tui / 自建)
dsh plugin --profile web add dsh-session-remove
安裝後不需要重啓 DSH,也不需要刷新頁面。
典型用法¶
- 鼠標移到側欄任意會話行。
- 點擊 ⋯ 菜單。
- 選擇 停止會話… 取消當前運行。
- 選擇 刪除會話… 永久移除本地數據。
實現原理與安全邊界¶
該插件不使用 DOM 注入或 React Fiber 遍歷,而是通過官方擴展點實現,以避免核心 UI 更新導致失效。
菜單註冊¶
菜單項註冊進官方 slot sidebar.workspaces.session.menu.item,與其他菜單項按 order 排序。
刪除流程¶
刪除操作通過 ctx.workspaceRegistry 與 storageDomain 的公開 API 完成。爲確保數據一致性,執行順序必須嚴格遵循:
- 釋放會話:先釋放會話的寫句柄。
- 停止工作:調用
ctx.workspaceRegistry.stopSessionActivity()。 - 等待清零:確認所有任務已結束。
- 刪除文件:移除會話目錄與緩存。
若嘗試刪除仍在運行中的會話,插件會拒絕操作並提示“停止並刪除”。停止操作會丟棄排隊中的輸入。
刪除的內容¶
| 位置 | 內容 |
|---|---|
$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