dsh-workspace-session-drag:側欄拖拽在工作區之間移動會話

前言

在 DeepSeek Harness(DSH)裏,會話默認跟工作區綁定:日誌目錄、header 裏的 cwd、工作區註冊表裏的歸屬是一套整體。多工作區並行時,若要把某個會話從工作區 A 歸到 B,或從「未分組」收進某個項目,靠改配置文件或手工搬目錄既慢又容易半改半留。社區插件 dsh-workspace-session-drag(維護者 liangzz1998,分類:客戶端)在側欄用拖拽加確認,把會話真正移動或只改歸屬,並儘量即時刷新,無需重啓 DSH。

下面按定位、功能、安裝、用法、限制與排錯說明,事實與倉庫 README 及 package.json 一致。

這是什麼

dsh-workspace-session-drag 是 MIT 許可的 DSH 插件(當前資料版本 0.4.0),核心一句:在側欄把會話從一個工作區拖到另一個工作區,確認後真正移動會話日誌與工作區歸屬;支持子代理跟隨、列表邊緣自動滾動、已打開且空閒的會話即時生效。

插件分宿主半側(路由、註冊表刷新、文件移動)與瀏覽器半側(拖拽 UI、確認框、自動滾動),通過 Cordis bundle patch 注入桌面/Web 客戶端。

核心功能

跨工作區拖動與確認

  1. 在左側側欄按住某個會話拖動。
  2. 拖到目標工作區的標題或該分組內任意會話區域;目標會出現藍色虛線框高亮。
  3. 鬆開鼠標後彈出確認框,例如:是否將《會話名》從《工作區 A》移動到《工作區 B》?
  4. 點「移動」後儘量即時生效:刷新工作區歸屬,一般不用重啓 DSH。

同一工作區內拖動仍走 DSH 自帶排序,不會彈確認框。

未分組與工作區雙向拖動

  • 「未分組」裏的會話拖到某個工作區分組 → 歸入該工作區。
  • 工作區裏的會話拖到「未分組」分組,或側欄列表空白處 → 確認後移出工作區,變爲未分組。移出只改 workspace.json 歸屬,會話日誌、cwd、內容不動,可隨時再拖回原工作區(若 cwd 未變則只恢復歸屬、不重複搬文件)。

長列表邊緣自動滾動

拖到側欄列表頂部或底部邊緣時自動滾動,越靠邊緣滾得越快。列表很長時便於把會話拖到下方工作區或拖回上方;同工作區內排序時同樣生效。

已打開、空閒的會話

沒有正在跑的任務(對話回覆、子代理、後臺任務、提醒)時,已打開的會話也可移動:先 flush 事件,再切換寫句柄目錄,後續事件寫入新工作區路徑。子代理會話隨父會話一起移動。

確認後的底層改動與備份

確認後先自動備份,再:

  1. 改寫會話日誌 header 裏的 cwd。
  2. 將會話日誌目錄移動到目標工作區的 session-project 目錄。
  3. 同步標題緩存。
  4. 即時刷新工作區註冊表(detach 舊 / attach 新;已打開會話走等價的記錄改寫)。

若宿主半側註冊表刷新失敗,文件會整體回滾並報錯,不留下半移動狀態。移動前備份位於 %USERPROFILE%\.dsh\backups\session-drag-<時間>/。

安裝與啓用

要求:DeepSeek Harness Desktop(Windows / Web 均可)。安裝時 DSH 須完全退出(窗口與托盤圖標)。插件要求 Node >= 20。

資料中的安裝方式如下,沒有 dsh plugin add github:owner/repo 形式的一鍵遠程安裝,需使用 link 或本地目錄。

方式 A:一鍵安裝(Windows,推薦)

  1. 下載或克隆本倉庫到任意目錄(例如 D:\dsh-plugins\<本倉庫>)。
  2. 完全退出 DeepSeek Harness。
  3. 雙擊目錄中的 安裝.cmd。
  4. 重新打開 DeepSeek Harness。
dsh plugin --profile desktop add link:<插件目錄>

若 dsh 不在 PATH,可使用桌面端自帶 CLI:

%LOCALAPPDATA%\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd

(接上同樣的 plugin --profile desktop add link:<插件目錄> 參數。)

方式 C:手動安裝

編輯 %USERPROFILE%\.dsh\profiles\desktop\package.json:

  • 在 dependencies 增加:
"dsh-workspace-session-drag": "link:<插件目錄>"
  • 在 dsh.profile.bundles 增加 "dsh-workspace-session-drag"。

再以管理員 CMD 建立目錄聯接:

mklink /J "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-workspace-session-drag" "<插件目錄>"

安裝前建議在 GitHub 閱讀源碼與 MIT 許可證;插件以當前 DSH 進程權限訪問會話目錄與註冊表,只從可信來源安裝。

典型用法

與 README 操作步驟一致:

  1. 側欄按住會話拖動。
  2. 拖到目標工作區標題或分組內區域(注意頂部/底部邊緣可觸發自動滾動)。
  3. 鬆開 → 確認框 →「移動」。
  4. 成功後有提示,工作區列表自動刷新。

移出工作區:拖到「未分組」或側欄空白 →「移出工作區」確認 → 僅歸屬變化,日誌與 cwd 不變。

適用場景與注意

適合:多工作區開發者需要把歷史會話歸檔到對應項目、在未分組與會話池之間整理、或在不重啓的情況下調整已打開但空閒的會話歸屬。

不能移動的情況(插件會拒絕並說明正在進行的任務類型):

  • 正在跑任務的會話(含當前正在對話的會話)。
  • 空白會話(DSH 本身不可拖,插件不處理)。
  • 歸檔會話。

其他限制:拖回工作區且 cwd 已等於該工作區路徑時,只恢復歸屬;若 DSH 未來改爲 file:// + IPC 且無 webServer,宿主路由不可用時插件會安全跳過,不報錯、不影響啓動。

移動改了哪些文件(摘要)

位置 改動
會話日誌 session.vN.jsonl.zstd 僅首幀 header 的 cwd 改爲目標工作區路徑
%USERPROFILE%\.dsh\sessions\--<cwd>--\<會話ID>\ 整個目錄遷到目標工作區對應路徑
投影緩存 session_projcache identity.cwd 同步,標題保留
workspace.json 舊工作區移除、新工作區加入該會話

移出工作區只改 workspace.json。

排錯與卸載

  • 桌面端 F12 打開 Console,搜索 dsh-workspace-session-drag 或 dsh-wsd。
  • 提示「無法連接宿主半側」→ 檢查 profile 的 bundles 是否包含本包,重啓 DSH。
  • 移動失敗並提示「已回滾」→ 查看 .dsh\backups\session-drag-* 與 DSH 日誌中的 [dsh-workspace-session-drag]。
  • 卸載:完全退出 DSH 後雙擊 卸載.cmd。

開發者本地可跑冒煙測試:

node test/smoke-move-core.mjs
node test/smoke-auto-scroll.mjs

結尾

dsh-workspace-session-drag 把「跨工作區歸會話」收成側欄拖拽加確認,並在備份與回滾約束下改日誌目錄、header cwd 和註冊表,對子代理與空閒 live 會話做了兼容。DSH 生態強調「一切皆插件」;SkillHub 目錄頁爲社區收錄,與 DeepSeek / 幻方無官方從屬關係。

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

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

小夜