前言¶
在 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),核心一句:在側欄把會話從一個工作區拖到另一個工作區,確認後真正移動會話日誌與工作區歸屬;支持子代理跟隨、列表邊緣自動滾動、已打開且空閒的會話即時生效。
- 目錄頁:https://www.skillhub.cn/plugins/liangzz1998/dsh-workspace-session-drag
- 源碼:https://github.com/liangzz1998/dsh-workspace-session-drag
- GitHub 星標:4(截至資料抓取)
插件分宿主半側(路由、註冊表刷新、文件移動)與瀏覽器半側(拖拽 UI、確認框、自動滾動),通過 Cordis bundle patch 注入桌面/Web 客戶端。
核心功能¶
跨工作區拖動與確認¶
- 在左側側欄按住某個會話拖動。
- 拖到目標工作區的標題或該分組內任意會話區域;目標會出現藍色虛線框高亮。
- 鬆開鼠標後彈出確認框,例如:是否將《會話名》從《工作區 A》移動到《工作區 B》?
- 點「移動」後儘量即時生效:刷新工作區歸屬,一般不用重啓 DSH。
同一工作區內拖動仍走 DSH 自帶排序,不會彈確認框。
未分組與工作區雙向拖動¶
- 「未分組」裏的會話拖到某個工作區分組 → 歸入該工作區。
- 工作區裏的會話拖到「未分組」分組,或側欄列表空白處 → 確認後移出工作區,變爲未分組。移出只改
workspace.json歸屬,會話日誌、cwd、內容不動,可隨時再拖回原工作區(若cwd未變則只恢復歸屬、不重複搬文件)。
長列表邊緣自動滾動¶
拖到側欄列表頂部或底部邊緣時自動滾動,越靠邊緣滾得越快。列表很長時便於把會話拖到下方工作區或拖回上方;同工作區內排序時同樣生效。
已打開、空閒的會話¶
沒有正在跑的任務(對話回覆、子代理、後臺任務、提醒)時,已打開的會話也可移動:先 flush 事件,再切換寫句柄目錄,後續事件寫入新工作區路徑。子代理會話隨父會話一起移動。
確認後的底層改動與備份¶
確認後先自動備份,再:
- 改寫會話日誌 header 裏的
cwd。 - 將會話日誌目錄移動到目標工作區的 session-project 目錄。
- 同步標題緩存。
- 即時刷新工作區註冊表(detach 舊 / attach 新;已打開會話走等價的記錄改寫)。
若宿主半側註冊表刷新失敗,文件會整體回滾並報錯,不留下半移動狀態。移動前備份位於 %USERPROFILE%\.dsh\backups\session-drag-<時間>/。
安裝與啓用¶
要求:DeepSeek Harness Desktop(Windows / Web 均可)。安裝時 DSH 須完全退出(窗口與托盤圖標)。插件要求 Node >= 20。
資料中的安裝方式如下,沒有 dsh plugin add github:owner/repo 形式的一鍵遠程安裝,需使用 link 或本地目錄。
方式 A:一鍵安裝(Windows,推薦)¶
- 下載或克隆本倉庫到任意目錄(例如
D:\dsh-plugins\<本倉庫>)。 - 完全退出 DeepSeek Harness。
- 雙擊目錄中的
安裝.cmd。 - 重新打開 DeepSeek Harness。
方式 B:命令行 link 安裝¶
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 操作步驟一致:
- 側欄按住會話拖動。
- 拖到目標工作區標題或分組內區域(注意頂部/底部邊緣可觸發自動滾動)。
- 鬆開 → 確認框 →「移動」。
- 成功後有提示,工作區列表自動刷新。
移出工作區:拖到「未分組」或側欄空白 →「移出工作區」確認 → 僅歸屬變化,日誌與 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 / 幻方無官方從屬關係。