DSH 的 Web 模式爲智能體開發提供了圖形界面,但在會話管理上,用戶往往只能查看或歸檔,缺乏直接刪除會話日誌和工作區登記的入口。這會導致目錄膨脹,影響檢索效率。dsh-delete-session 插件解決了這個問題,它將“刪除”能力直接集成到會話列表的溢出菜單中。
插件簡介¶
這是一個 DeepSeek Harness (DSH) Web 模式的客戶端與主機插件。它由 SMWHff 維護,旨在爲 Web 界面的會話列表提供“刪除會話”的功能。操作時會徹底清理磁盤上的日誌目錄和引用該會話的工作區記錄。
核心功能¶
- 菜單集成:在會話列表每行右側的省略號菜單末尾追加“刪除會話”選項。
- 安全確認:點擊後彈出產品級風險確認對話框,必須勾選“我瞭解此操作不可恢復”後方可確認。
- 清理機制:徹底刪除會話日誌目錄(
sessions/<project>/<sessionId>/),並從工作區記錄中移除會話登記。 - 狀態反饋:提供 Toast 成功/失敗反饋;若刪除當前打開會話,會清空選擇回到空態。
- 運行時保護:運行中拒絕刪除,提示等待完成;執行順序爲先 flush 緩衝事件落盤,再 detach。
- 事件轉發:detach 發佈的
session/disposed由 host API proxy 轉發爲host/session-removed,已打開的客戶端列表自動移除該會話。
安裝與啓用¶
使用 pnpm 安裝插件:
pnpm dsh plugin --profile web add file:/path/to/dsh-delete-session
安裝後需重啓 web 表面,並刷新頁面以獲取新的 window.__DSH_BOOT__ 圖。
典型用法¶
- 在 DSH Web 界面的會話列表中,找到目標會話行,點擊右側的省略號菜單。
- 在菜單末尾選擇“刪除會話”。
- 在彈出的確認對話框中勾選“我瞭解此操作不可恢復”,點擊確認。
- 等待會話 agent 運行完成後再嘗試刪除。
工作原理¶
- 主機端:插件按
dsh-open-in-vscode同款模式註冊了deleteSession/delete的嚴格 Typert Remote,Gateway 無需@Remote標記表即可解析調用。 - 客戶端:由於當前構建的會話行菜單沒有原生 slot,插件使用 legacy 適配器模式。它識別會話行省略號按鈕(通過 aria-label 模板匹配),並在 portal 菜單彈出時使用
MutationObserver將“刪除會話”行注入菜單中。會話身份解析優先級爲:顯示標題唯一匹配 -> 同名會話按 DOM 位置消歧 -> 僅當解析失敗且該行是當前選中行時纔回退到當前會話。
注意事項¶
- 依賴項:插件依賴運行時會話列表快照(
displayTitle、blank、current)以及 workspace locale 的actions.session.aria和menu.archiveSession模板。它也依賴會話行[role="treeitem"]的aria-selected標記。 - 維護:官方後續版本若調整這些契約,需更新
src/client/session-menu.ts頂部的識別邏輯。 - 權限與審查:插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
該插件爲 DSH Web 模式提供了會話清理能力,減少了人工維護負擔。更多細節與源碼可參考: