dsh-default-workspace: View, Fix, and Migrate Default Workspace in a Running DSH

前言

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 完成上述工作。

核心功能

插件暴露一个工具 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。

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

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

Xiaoye