dsh-workspace-snapshot-fork:为 DeepSeek Harness 会话分叉附加历史工作区状态

DeepSeek Harness (DSH) 的内置会话分叉功能可以复制对话历史,但默认情况下不会同步对应的工作区文件状态。对于需要基于特定回合继续开发或调试的场景,这会造成状态割裂。dsh-workspace-snapshot-fork 插件通过扩展 DSH 的分叉机制,将回合对应的文件快照一并带出新会话,确保源工作区保持不变。

该插件由 Yu-Zhuang1 维护,开源协议为 MIT。它利用 Git 对象作为存储后端,为每个完成的回合生成不可变的检查点。

工作原理

DSH 每个已完成的回合都会生成一个基于 Git 的不可变检查点。当在 Web UI 中 fork 该回合时,插件会复制会话日志前缀并在新工作区中实现匹配的文件。

具体行为取决于源工作区的类型:

  • 普通目录:从私有快照仓库实现检查点。
  • Git 仓库根目录(有提交):创建新 worktree 和 dsh/workspace-fork/<id> 分支,保留历史、远程、钩子和仓库配置。
  • 嵌套目录或无提交的 Git 仓库:使用私有快照行为。

安装与启用

此插件目前仅支持 Web profile。安装命令如下:

dsh plugin --profile web add "github:Yu-Zhuang1/dsh-workspace-snapshot-fork#v0.1.0-alpha.1"

安装或更新后需重启 DSH。

配置说明

默认配置项位于 cordis.patch.yml:

mode: workspace
storageRoot: <DSH_HOME>/workspace-snapshot-fork/snapshots
childRoot: <DSH_HOME>/workspace-snapshot-fork/workspaces
exclude: [.git, node_modules, .env, .env.*, .DS_Store]

DSH_HOME 默认为 ~/.dsh。如需覆盖配置,需编辑 $DSH_HOME/profiles/web/cordis.patch.yml 并填入完整配置。注意: DSH 替换完整的 config 值,而非合并字段,因此覆盖时需保留所有配置项。

Native 模式

在完整配置中设置 mode: native,可将新分叉委托给 DSH 原生行为。Native 模式不记录新的工作区检查点,但归档清理仍会释放现有检查点。切换回 workspace 模式后,仅后续完成的回合会生成检查点。

清理与维护

分叉产生的子 worktree、分支及快照不会自动删除。手动清理命令如下:

git -C <source-repository> worktree remove <child-workspace>
git -C <source-repository> branch --delete dsh/workspace-fork/<id>

注意事项

  • 平台支持:目前仅 Windows 支持已测试(Web profile)。Linux 和 macOS 尚未验证。
  • 版本兼容:支持 DSH 0.1.1-rc.x 系列。DeepSeek Harness 处于开发者预览,升级后需验证插件。
  • 安全性:快照是本地 Git 对象,未加密。插件不视 .gitignore 为安全策略,需在 exclude 中手动添加敏感文件路径(如 .env)。
  • 限制:无 headless fork 适配器。存档会话会移除检查点映射。仅 mode: workspace 下创建检查点。

链接

  • GitHub: https://github.com/Yu-Zhuang1/dsh-workspace-snapshot-fork
  • 插件目录: https://www.skillhub.cn/plugins/Yu-Zhuang1/dsh-workspace-snapshot-fork
羽毛球分组比赛记分
小程序二维码

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

小夜