dsh-workspace-move:在侧栏整体搬迁 DSH 工作区

前言

在 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。

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

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

Xiaoye