前言¶
DeepSeek Harness(DSH)里,每个新 Session 都会开在默认工作区里。宿主在注册这条工作区时就把路径钉死;全新安装时通常是 <Documents>/deepseek-harness/default-workspace,在 Windows 上往往落在系统盘。会话产物(代码、数据集、缓存等)会持续写进这个目录,而内置逻辑写明宿主不会自动重命名或搬迁已有默认工作区;Remote API 也没有改 path 的接口。手工改 ~/.dsh/storages/workspace.json 需要重启,还容易触发会话日志 header 的 cwd 与磁盘路径不一致,Session 从列表里消失。下面介绍社区插件 dsh-default-workspace(维护者 Elefseus,分类:客户端),它在这套约束下提供受控的查看、切换与修复能力。
这是什么¶
dsh-default-workspace 是在运行中的 DSH Host 内操作默认工作区的插件:可检查当前默认路径与健康状态,把默认工作区改到指定绝对路径(可选搬目录、迁会话日志),并对宿主已静默跳过的日志做重帧化修复。目标是不重启、也不用手工编辑 workspace.json 完成上述工作。
- 目录页:SkillHub - dsh-default-workspace(社区插件目录,与 DeepSeek / 幻方无官方从属关系)
- 源码与说明:GitHub - Elefseus/dsh-default-workspace
- 许可证:MIT(见仓库)
- 当前 package 版本:0.1.0;要求 DSH
>=0.1.7-rc.1,README 写明已在 DSH0.2.1-rc.3上验证
核心功能¶
插件暴露一个工具 default_workspace,对应三种 action:
| action | 作用 |
|---|---|
status |
查看默认工作区路径、目录是否存在、关联会话数量与正在运行的会话数;并对已存会话日志做健康扫描(只读)。 |
switch |
通过宿主存储域 entity.mutate 改写工作区记录,内存与落盘同步,无需重启;可选 moveFiles 搬旧目录内容;默认 migrateSessions: true 会把 header 仍指向旧路径的会话日志一并迁移。 |
repair |
对「首帧 Zstandard 不是恰好一行 header」、被 listArtifacts 静默跳过的日志做重帧化修复。 |
常用参数(摘自 README):
| 参数 | 含义 |
|---|---|
action |
必填:status / switch / repair |
path |
仅 switch:新默认工作区的绝对路径,不存在会创建 |
moveFiles |
仅 switch:是否搬旧目录内容,默认 false;旧目录有活 Session 时会拒绝 |
migrateSessions |
仅 switch:是否改写 header 并搬日志,默认 true |
dryRun |
switch / repair:只输出计划不改动,默认 false |
安全设计上,switch 与 repair 支持先 dryRun;改写日志时只重压第一帧,其余帧字节拷贝;校验通过才替换;旧日志会 rename 到备份目录而非删除;活 Session 不会被迁移,会在结果中列出。
除工具外,插件带 Web 客户端面板:侧栏「工作区」入口可图形化执行上述动作。README 说明首次安装带 dsh.client 元数据的插件后,需要重启一次 DSH,面板才会出现;之后改 lib/client.js 可由 HMR 生效。
可选配置在 cordis.patch.yml 中:sessionsRoot 留空则使用宿主 sessionPersistence 的根(通常为 ~/.dsh/sessions)。
安装与启用¶
在已安装 DSH 的环境中,官方 README 给出的安装方式为:
dsh plugin add https://github.com/Elefseus/dsh-default-workspace
也可按 README 将依赖写入 profile 的 package.json 并加入 bundle 列表。安装后若需使用 Web 面板,按文档重启一次 Host。
插件以当前 DSH 进程权限读写工作区记录、目录与会话日志;安装前应自行审阅源码与 MIT 许可证,确认路径与备份策略符合你的环境。
典型用法¶
在 Session 中调用工具(与 README 示例一致)。先查状态,再 dry run 预览切换,确认后再执行:
default_workspace {"action": "status"}
default_workspace {"action": "switch", "path": "D:\\work", "dryRun": true}
default_workspace {"action": "switch", "path": "D:\\work", "moveFiles": true}
default_workspace {"action": "repair", "dryRun": true}
建议顺序:先用 status 看清默认路径与会话/日志体检结果;switch 前务必 dryRun: true 核对计划(冲突路径、活 Session、缺失日志等);需要搬目录时再设 moveFiles: true。若列表里缺 Session 而磁盘上仍有日志,可先用 repair 的 dry run 评估,再执行修复。
适用场景与注意¶
适合以下情况:
- 系统盘空间紧张,希望把默认工作区迁到数据盘,且保留已有 Session 日志。
- OneDrive 或策略重定向了「文档」路径,导致记录指向的默认目录不存在。
- 希望新 Session 统一开在固定绝对路径(例如
D:\work),而不是用户配置下的默认文档子目录。
需要注意:
- 默认工作区依赖桌面的
workspaceRegistry与(迁移日志时的)sessionPersistence;非桌面或缺少这些服务时能力会受限。 switch会拒绝与已有工作区路径冲突、或新旧路径互相嵌套的目标。- 正在运行的 Session 不会随工作区搬迁;计划里会单独报告,需自行结束或另开 Session。
- README 中的大规模迁移数据(条目数、文件数、体积、会话数)是作者编写插件时的量级参考,不是你的环境必然结果;以你自己
status/dryRun输出为准。
结尾¶
DSH 生态强调「一切皆插件」;dsh-default-workspace 补的是默认工作区路径在运行时不可改、手改又易损坏会话索引这一缺口。若你正被默认目录钉在系统盘或日志打不开困扰,可先安装插件、用 status 与 dryRun 摸清现状,再决定是否执行 switch 或 repair。