前言¶
在 DeepSeek Harness(DSH)Web 里長期跑智能體會積累大量會話。官方側欄通常只提供單個會話的歸檔入口,沒有一頁集中查看「活動 / 已歸檔」會話,也沒有把已歸檔會話一鍵放回側欄的界面。若希望批量整理、或刪除時保留日誌以便手工恢復,就需要額外能力。社區插件 dsh-session-ops(維護者 lxl8182,分類:記憶)在 設置 → 會話管理 增加一頁,提供一鍵歸檔、一鍵還原、一鍵刪除;刪除會把會話日誌移入回收目錄而非抹盤。
這是什麼¶
dsh-session-ops 是面向 DSH Web 的會話管理插件:瀏覽器端調用官方歸檔 API,服務端提供還原與「軟刪除」接口。零構建、零額外依賴——lib/index.js 與 lib/client.js 爲手寫 JavaScript,宿主側僅用 Node 內置模塊,瀏覽器側只 require('react')。
- 目錄頁:https://www.skillhub.cn/plugins/lxl8182/dsh-session-ops
- 源碼:https://github.com/lxl8182/dsh-session-ops
- 許可證:MIT(
package.json版本 0.1.0,要求 Node >=20)
核心功能¶
設置頁與會話頁籤¶
插件在設置中註冊 dsh-session-ops 區塊,展示 活動 與 已歸檔 兩個頁籤,支持單行操作與批量操作。批量操作按順序執行(刪除會移動磁盤目錄,避免併發導致錯誤難讀),全部完成後只刷新一次列表。
歸檔¶
瀏覽器端直接調用官方 ctx.workspaces.archiveSession(id)。會話從側欄消失,日誌完整保留在 <DSH_HOME>/sessions/ 下對應目錄。
還原¶
對已歸檔會話發起 POST /dsh-session-ops/restore。插件會將會話 id 從 workspace 域的 archivedSessionIds 中移除,並把 <DSH_HOME>/deleted-sessions/<會話 id>/ 中的日誌目錄搬回原位(若此前執行過刪除)。優先使用新版宿主公開的 ctx.workspaceRegistry.unarchiveSession(sessionId);舊宿主無該接口時,會退回通過 storage 域更新並同步 registry 內存緩存的路徑,形狀無法識別時返回 registry-shape-unknown 且不寫盤。
刪除(移入回收目錄)¶
POST /dsh-session-ops/delete 會先歸檔(列表立即更新),再把會話日誌目錄 rename 到 <DSH_HOME>/deleted-sessions/<會話 id>/,並寫入 .dsh-session-ops.json 元數據(含 sessionId、originalPath、cwd、deletedAt 等),供還原時使用。磁盤上無日誌目錄、或已在回收目錄等情況會返回明確 reason(如 no-artifact、already-deleted、log-in-use),頁面有對應說明。
| 動作 | 實現要點 |
|---|---|
| 歸檔 | 官方 archiveSession,日誌不動 |
| 還原 | 解歸檔 + 可選從回收目錄搬回日誌 |
| 刪除 | 歸檔後移目錄到 deleted-sessions,非抹盤 |
安裝與啓用¶
從 GitHub 安裝(命令來自項目 README):
dsh plugin --profile web add github:lxl8182/dsh-session-ops
或從本地目錄安裝:
dsh plugin --profile web add /path/to/dsh-session-ops
安裝後 重啓 dsh web 即可。插件通過 cordis.patch.yml 注入宿主路由與客戶端設置頁。
典型用法¶
- 打開 DSH Web 設置 → 會話管理(插件註冊的會話管理頁)。
- 在 活動 頁籤選中會話,使用一鍵歸檔;需要時再在 已歸檔 頁籤一鍵還原。
- 確認不再需要保留側欄入口、但仍希望保留日誌時,使用一鍵刪除;日誌進入
<DSH_HOME>/deleted-sessions/。若要徹底清理磁盤,需手工刪除該目錄下對應文件夾。 - 運行中的會話 拒絕刪除(
session-running);若日誌被進程佔用無法移動,頁面會提示重啓後再刪。
服務端接口(僅 POST,請求體 { sessionId },最多 8 KiB):
POST /dsh-session-ops/deletePOST /dsh-session-ops/restore
會話 id 須匹配 ^[A-Za-z0-9][A-Za-z0-9-]{7,127}$。失敗時 ok: false 多爲 HTTP 409,具體 error / reason 見 README 接口表。
適用場景與注意¶
適合:經常在 DSH Web 中開多會話、需要集中查看活動/已歸檔列表、希望刪除可恢復而非直接刪盤的開發者。
務必知曉:
- 插件與 DSH 同進程、同本地 HTTP 面運行;端點 無鑑權,與 DSH 其它本地接口一致,任何能訪問
127.0.0.1:<端口>的進程都可調用。安裝前請自行查看源碼與 MIT 許可證。 - 回收目錄 無容量上限、無自動清理;
workspace.json裏sessionIds在刪除後可能仍保留 id(被archivedSessionIds屏蔽),屬 README 記載的已知行爲。 - 若部署中通過
cordis.patch.yml修改過session-persistence-jsonl的root,會話掃描路徑需與之一致。 - 還原後側欄是否立刻出現會話,取決於宿主持久化緩存;個別情況需重啓 DSH。老版本刪除留下的回收目錄無元數據時,還原依賴日誌頭
cwd反推,失敗時需手工搬目錄。
結尾¶
dsh-session-ops 補上了 DSH Web 側欄之外的集中會話管理:歸檔、還原、以及移入 deleted-sessions 的軟刪除。DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。