前言¶
DeepSeek Harness 在執行 “Delete workspace” 操作時,只會移除工作區列表中的條目,保留會話目錄和日誌文件。長期使用會導致磁盤積累大量無法回收的會話目錄。雖然 dsh 0.1.7 版本已引入官方的歸檔功能,但缺乏物理刪除歸檔會話的入口。dsh-session-manager 插件通過一級設置頁面和會話上下文菜單,提供跨工作區的歸檔會話列表、恢復和永久刪除能力。
核心功能¶
設置頁面¶
進入 DSH 的設置界面,可以找到 “Session Manager” 頁面。該頁面列出所有歸檔會話的詳細信息,包括標題、所屬工作區、項目目錄、更新時間和運行狀態。在列表中,可以對單個會話執行恢復操作,或點擊紅色的 “Delete permanently” 按鈕永久刪除。此外,支持全選(通過表頭複選框或行選擇)後進行批量刪除操作。所有刪除操作均需經過確認對話框。
會話上下文菜單¶
在左側邊欄的會話列表中,鼠標懸停在某一行並點擊 ⋯ 菜單,在內置的 “Rename”、”Fork session”、”Archive session” 等選項下方,會出現一個紅色的 “Delete permanently” 項。該菜單項使用了原生危險樣式,點擊後會觸發與設置頁面相同的確認對話框。
Agent 工具¶
插件爲 Agent 提供了三個工具函數,用於在代碼中操作歸檔會話:
* session_list_archived:以 JSON 格式列出所有歸檔會話。
* session_restore_archived:根據 ID 恢復歸檔會話(無確認步驟)。
* session_delete_permanently:根據 ID 永久刪除歸檔會話。此工具必須傳入 confirm: true 參數,且拒絕處理未知 ID、非歸檔 ID 或包含運行任務的會話。
安裝與啓用¶
本插件依賴 dsh 0.1.7 版本,因爲它引入了 sidebar.workspaces.session.menu.item 插槽(用於上下文菜單項)以及 size-neutral 產品圖標。
- 克隆倉庫到本地:
git clone https://github.com/SunshineR04/dsh-session-manager.git
- 添加插件到指定配置文件:
dsh plugin --profile <name> add "file:/path/to/dsh-session-manager"
插件會通過 pnpm 安裝並追加到 `dsh.profile.bundles`。如果在頁面刷新後未看到插件,請重啓 DSH 桌面應用。
注意:請勿通過裸 npm 名稱
dsh-session-manager安裝。該名稱下存在一個無關的獨立項目(由 hkkz9522 維護),安裝錯誤的包會導致功能異常。
典型用法¶
- 查看歸檔會話:在 Agent 調用
session_list_archived工具,或在 DSH 設置頁面的 Session Manager 中查看所有已歸檔會話。 - 恢復會話:在設置頁面點擊會話對應的恢復按鈕,或讓 Agent 調用
session_restore_archived工具。 - 永久刪除:在設置頁面勾選會話並確認刪除,或在會話上下文菜單中點擊紅色刪除按鈕。若需在 Agent 中刪除,調用
session_delete_permanently並設置confirm: true。
注意事項¶
- 物理刪除:插件執行的是直接物理刪除,不會經過備份層。刪除前請務必確認。
- 環境限制:每個
DSH_HOME僅支持一個主機。如果兩個 DSH 實例共享同一個 Home 目錄並嘗試併發刪除,後寫入的進程會靜默覆蓋前者的標記,導致前者的會話標記丟失且文件已被刪除。 - 版本要求:需要 dsh >= 0.1.7。低於此版本的 dsh 無法渲染上下文菜單項,僅設置頁面可用。
- 依賴項:需要
@deepseek-ai/schemastery版本 >= 3.18.0。
結語¶
dsh-session-manager 解決了 DSH 歸檔會話無法物理清理的痛點。它提供了直觀的圖形界面和腳本化工具,幫助開發者有效管理磁盤空間。更多細節可參考插件目錄或 GitHub 倉庫。