前言¶
在 DeepSeek Harness(DSH)裏,一個工作區不只是一層文件夾:註冊表裏有嵌套工作區,會話日誌裏記着 cwd,側欄標題也常和目錄名對齊。如果只是用系統自帶的 mv 或拷貝目錄,註冊路徑和會話頭不會跟着改,側欄裏會出現「路徑對了、會話歸屬錯了」的斷層。
@reed-io/dsh-workspace-move(倉庫 ame-code/dsh-workspace-move)把搬遷做成一次原子操作:從工作區菜單發起,由 Host 進程同時處理目錄樹、嵌套工作區註冊和會話日誌,失敗則回滾,成功後可撤銷最近一次搬遷。下面介紹它的能力邊界、安裝方式與典型用法。
這是什麼¶
社區目錄將插件歸爲客戶端類;維護方爲 ame-code,npm 包名爲 @reed-io/dsh-workspace-move(當前資料中的版本爲 0.1.1,許可證 MIT)。它在 DSH 側欄爲工作區增加「Move workspace…」入口,行爲上接近 mv:一個目標路徑,一次完整結果;若搬遷時改了文件夾名,工作區顯示名也會在滿足條件時一併更新。
一次搬遷會帶走什麼¶
官方 README 用表格歸納了攜帶範圍,核心如下。
| 隨工作區遷移的內容 | 處理方式 |
|---|---|
| 工作區文件夾及整棵目錄樹 | 同捲上爲重命名;跨卷爲先複製、校驗再刪源 |
| 該文件夾內已註冊的工作區 | 註冊路徑改寫爲新位置,註冊信息、標題與會話列表保留 |
| 工作區下列出的會話 | 會話日誌落到目標項目目錄;僅重編碼攜帶 cwd 的壓縮頭幀,事件幀按字節複製 |
| 工作區標題 | 僅當搬遷同時重命名文件夾,且標題仍等於原文件夾名時更新 |
不會遷移工作區以外的對象。源文件夾只在搬遷「清空」後被刪除;不會改動源文件夾的父目錄。
核心功能與約束¶
側欄操作¶
在工作區上右鍵(或使用 … 菜單),選擇 Move workspace…。在內置目錄瀏覽器中選目標父路徑,輸入工作區在該處的文件夾名,覈對合成後的完整路徑後確認。
下列情況會拒絕搬遷並給出原因(摘自 README):
- 目標位置已存在同名工作區文件夾;
- 目標在工作區內部,或工作區位於目標路徑之下;
- 仍有會話在運行(需先停止);
- 文件夾名不符合當前平臺合法規則。
搬遷成功後,Toast 提供 Undo;在工作區菜單中還可選 Undo last move(僅限本進程內最近一次搬遷)。撤銷信息只保存在內存中,重啓 DeepSeek Harness 後不可再撤銷。
任一步失敗時,插件會回滾已改動的文件夾、註冊表和已觸及的會話,並報告失敗;整次操作要麼全部成功,要麼回到搬遷前狀態。
Agent 工具¶
同一套邏輯也暴露爲 Agent 工具,簽名如下:
move_workspace(workspaceId, targetParent, folderName?)
folderName 默認取當前文件夾名。工具會返回最終路徑、隨行的會話數與嵌套工作區數量,以及是否仍可撤銷。
行爲說明(與日常使用相關)¶
- 搬遷在 Host 進程執行(持有工作區註冊表與會話存儲);瀏覽器只負責交互。
- 搬遷完成後無需重啓 DSH,已遷會話即可繼續使用;但正在運行的會話不能被搬走(由運行中檢查保證)。
- 路徑處理、卷檢測與文件夾命名規則按平臺適配;資料寫明在 Windows 上優先開發與驗證,macOS / Linux 走同一代碼路徑,跨原生共享目錄時走複製校驗分支。
環境與安裝¶
依賴(來自 README 與 package.json):
- DeepSeek Harness:
>=0.2.0-rc.1 <0.3.0-0 - Node:
^22.19.0 || >=24.0.0 - 需要本地(owner)桌面會話:目標路徑對話框通過僅 loopback 的路由與 Host 通信
安裝前需已運行 DeepSeek Harness。將 desktop 換成你實際使用的 profile(如 web、desktop 等):
dsh plugin --profile desktop add @reed-io/dsh-workspace-move@latest
也可把 bundle 寫入 profile 的 dsh.profile.bundles 後重啓 DSH。安裝後刷新頁面(Ctrl+R),側欄纔會出現新菜單項。
插件在當前 DSH 進程權限下執行文件與註冊表改寫;安裝前建議瀏覽 GitHub 倉庫 源碼並確認 MIT 許可證是否與你的合規要求一致。
典型用法¶
人工搬遷: 側欄 → 目標工作區 → Move workspace… → 選父目錄、填文件夾名 → 確認。若路徑或名稱不合法、或有會話仍在跑,按提示調整後重試。
Agent 搬遷: 在具備 move_workspace 工具的會話中調用上述接口,用返回信息覈對目的地與會話/嵌套工作區數量,必要時在同一進程內使用撤銷。
適用場景與注意¶
適合需要把項目整體遷到另一磁盤、重命名根目錄同時保持會話歷史與工作區層級一致的場景;不適合指望「只挪幾個文件、不動註冊表和會話」的輕量拷貝。
注意:撤銷僅在本進程、且爲最近一次搬遷時有效;跨卷搬遷耗時取決於目錄大小與校驗策略。資料未提供社區星標以外的用戶案例,本文不涉及虛構評測數據。
結尾¶
dsh-workspace-move 把「目錄 + 嵌套工作區 + 會話 cwd」綁成一次可回滾的搬遷,減少手工改路徑帶來的斷裂。更多信息見社區目錄頁 skillhub.cn/plugins/ame-code/dsh-workspace-move 與 GitHub README。