dsh-session-ops:DSH Web 集中會話歸檔、還原與軟刪除

前言

在 DeepSeek Harness(DSH)Web 里長期跑智能體會積累大量會話。官方側欄通常只提供單個會話的歸檔入口,沒有一頁集中查看「活動 / 已歸檔」會話,也沒有把已歸檔會話一鍵放回側欄的界面。若希望批量整理、或刪除時保留日誌以便手工恢復,就需要額外能力。社區插件 dsh-session-ops(維護者 lxl8182,分類:記憶)在 設置 → 會話管理 增加一頁,提供一鍵歸檔、一鍵還原、一鍵刪除;刪除會把會話日誌移入回收目錄而非抹盤。

這是什麼

dsh-session-ops 是面向 DSH Web 的會話管理插件:瀏覽器端調用官方歸檔 API,服務端提供還原與「軟刪除」接口。零構建、零額外依賴——lib/index.js 與 lib/client.js 爲手寫 JavaScript,宿主側僅用 Node 內置模塊,瀏覽器側只 require('react')。

核心功能

設置頁與會話頁籤

插件在設置中註冊 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 注入宿主路由與客戶端設置頁。

典型用法

  1. 打開 DSH Web 設置 → 會話管理(插件註冊的會話管理頁)。
  2. 在 活動 頁籤選中會話,使用一鍵歸檔;需要時再在 已歸檔 頁籤一鍵還原。
  3. 確認不再需要保留側欄入口、但仍希望保留日誌時,使用一鍵刪除;日誌進入 <DSH_HOME>/deleted-sessions/。若要徹底清理磁盤,需手工刪除該目錄下對應文件夾。
  4. 運行中的會話 拒絕刪除(session-running);若日誌被進程佔用無法移動,頁面會提示重啓後再刪。

服務端接口(僅 POST,請求體 { sessionId },最多 8 KiB):

  • POST /dsh-session-ops/delete
  • POST /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 / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

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

小夜