前言¶
DeepSeek Harness(DSH)把会话和工作区目录绑在一起:会话从哪个文件夹开始,事件日志就按该路径校验与追加,已有会话不能像改配置一样「原地改 cwd」。当你把对话开在了默认工作区或临时目录,后来想按项目文件夹归档继续聊,或者同一目录下堆了很多未分组会话,手工新建会话、复制上下文既慢,也容易丢轮次与标题。
下面介绍社区插件 dsh-move-to-workspace(维护者 Stijnus,npm 包名同插件 id,当前版本 0.1.13,MIT 许可证)。它在侧栏会话菜单里提供「Move to workspace…」等能力:把完整对话历史复制到目标工作区下的新 Session,原会话在原工作区归档(可用 Unarchive 恢复),并在 Desktop 上可从对话框注册新工作区文件夹。插件分类为工作流(workflow),亦支持批量整理会话。安装与行为以 GitHub 仓库 README 为准;社区目录页见 skillhub.cn。
这是什么¶
一句话:在 DSH 侧栏里把已有会话迁到另一个工作区(或一次性按规则整理多个会话),历史随复制走,原记录归档不删盘。
DSH 本身没有「原地改绑工作区」的原语;该插件做的是官方 README 描述的等价流程:在拷贝前检查进行中的 turn、子 agent、后台任务与计划任务,把完整 event log 复制到新 Session 并持久化,再挂到目标工作区;若拷贝或挂载失败,原会话仍可见。若会话记录目录已经是目标工作区目录,则直接 attach 现有 Session,保留同一 session ID。
核心功能¶
移动到指定工作区¶
在任意会话行的 … 菜单中选择 Move to workspace…,在对话框里选目标工作区并确认;也可选 New workspace…,用系统目录选择器注册新文件夹为工作区并作为目标(Desktop 上为 macOS/Windows 原生文件夹选择器)。
移动完成后:目标工作区下出现带完整历史与标题的会话,可继续对话;源工作区里原会话进入归档列表(默认筛选下隐藏,可用 Unarchive 恢复)。
对话框会列出除当前所属工作区以外的所有工作区。若所选目录就是本会话当前工作区,对话框会提示,不会执行移动。
移动时实际发生什么¶
README 归纳的步骤如下:
- 检查是否有运行中的 turn、subagents、后台作业与 scheduled tasks。
- 将完整 event log 复制到新 Session 并 durable flush。
- 把副本 attach 到目标工作区,并校验源 transcript 未在拷贝过程中变化。
- 归档原会话,在副本上恢复 pin,并宣告新 Session。
若源会话在拷贝期间开始工作或内容变化,会拒绝归档;已 attach 的副本仍会保留,与原会话并存。拷贝或 attach 失败时,原会话保持可见。
后果与限制(使用前建议通读)¶
- 跨文件夹移动会生成 新的 session ID。引用旧 ID 的链接、运行中的 job、scheduled tasks 仍留在已归档的原会话上。
- 原日志仍在磁盘上(归档),DSH 没有删除 session 的原语;取消归档会回到原工作区下的位置,而不是目标工作区。
- 插件拷贝产生的是普通 Session:无 fork 标记,也不会为顶层会话伪造 parent 链接。
- 移动的是 会话历史,不会复制项目文件。
重命名与删除(菜单扩展)¶
插件还在行菜单提供:
- Rename:确认对话框预填当前标题,确认后保存;空标题会被拒绝,成功后侧栏立即更新。
- Delete conversation…:永久删除存储的 session log,确认前会警告不可撤销并提示可用 Archive 作为可恢复替代。会话当前打开或为 subagent 子会话时会拒绝删除;无 undo。
批量整理(Organize conversations…)¶
在任意会话 … 菜单选 Organize conversations…。插件对当前所有非归档、非 subagent 会话生成 dry-run 计划:
- 记录目录已是某项目文件夹的会话,归入该路径对应的工作区(已注册则 REUSE,未注册则 CREATE)。
- 在 catch-all 工作区(如默认工作区)里开始的会话,会按标题/文件夹名与该项目目录及
~/Developer/GitHub下项目文件夹做 无歧义 匹配后再分组。
预览列出每个工作区分组(CREATE/REUSE)、路径、将接收的会话,以及每条是 移动(拷贝、新 session id)还是 原地 attach(同目录、同 id)。确认前可取消勾选任意分组;未在资料截断处展开的细节以仓库 README 为准。
安装与启用¶
Web 侧常用 profile 的安装命令(README Quick start):
dsh plugin --profile web add dsh-move-to-workspace
安装后重启 Harness 或刷新 Web UI。每个会话 … 菜单会出现 Move to workspace…。若新开的浏览器 分屏未出现,可尝试页面 reload(⌘R)。
通用 profile 占位写法:
dsh plugin --profile <profile> add dsh-move-to-workspace
从本地目录以 bundle 安装:侧栏 Plugins → Add plugin → 填本仓库绝对路径,或:
dsh plugin --profile <profile> add /absolute/path/to/dsh-move-to-workspace
卸载:
dsh plugin --profile <profile> remove dsh-move-to-workspace
package.json 标明客户端注入 @deepseek-ai/dsh-client-ui-workspace 与 @deepseek-ai/dsh-client-locale,平台为 web。发布经 GitHub Actions 与 npm trusted publishing(OIDC),版本携带 SLSA provenance;需要时可按 README 用 npm view dsh-move-to-workspace@latest dist.attestations 等命令核对。
典型用法:在测试会话上走一遍¶
README 建议在至少两条消息、且已有两个工作区文件夹的环境下,用可丢弃会话自测(非托管 demo):
- 等待所有 turn 与后台任务结束。
- 打开该会话 … → Move to workspace…,选另一个工作区并确认。
- 在目标工作区检查历史与标题;源工作区归档列表中应能看到原会话。
跨文件夹移动会产生新 session ID;进行中的正式任务前请先理解上一节的 Consequences。
适用场景与注意¶
适合谁: 经常在错误工作区开聊、需要把整段上下文迁到项目目录继续的人;侧栏会话多、希望按文件夹规则批量归位的人(配合 Organize 预览确认)。
权限与安全: 插件以当前 DSH 进程权限运行,会读写会话日志与工作区注册信息;安装前请阅读源码与 MIT 许可证,仅从 npm 或你信任的 profile/路径安装。
生态说明: DSH 采用「一切皆插件」的扩展方式;skillhub.cn 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文也不将其描述为官方应用商店。
同维护者套件中还有 Moodboard、Composer Predictions、Workspace Status、Prompt Rewrite 等插件,可按 README 链接自行选用。
结尾¶
dsh-move-to-workspace 补的是 DSH 无法原地改绑工作区这一缺口:侧栏里选目标(或注册新文件夹),历史随复制走,原会话归档可恢复;需要时再配合重命名、删除与 Organize 整理侧栏。详情与更新以仓库为准。