前言¶
在 DeepSeek Harness(DSH)里让 Agent 改代码时,对话可以撤销,但已经写入磁盘的工作区文件不会自动回滚。若你依赖 Git,未提交的草稿、被忽略的文件、或未初始化的目录往往不在常规版本控制范围内。下面介绍社区插件 dsh-time-machine(维护者 zjukop,分类:工作流):在本地为工作区建立内容寻址快照,对比变更,并在用户明确确认后再恢复。
这是什么¶
dsh-time-machine 是面向 DeepSeek Harness 的 npm 插件(当前 package 版本 0.1.0,许可证 MIT)。定位是「Safe, local workspace checkpoints and two-phase restore for DeepSeek Harness」——本地优先的工作区检查点,以及 deliberately two-phase 的恢复流程。它不替代 Git:无分支、远端同步或垃圾回收;适合在 Agent 做大改动前留一份可检视、可回退的本地存档。
核心功能¶
快照与对比¶
time_machine_checkpoint:创建存档。time_machine_list:查看已有存档。time_machine_diff:只读比较当前工作区与指定存档。
数据默认落在工作区下的 .dsh-time-machine/。默认会忽略 .git、node_modules、.DS_Store、存储目录和符号链接;单文件默认上限 10 MiB,单次存档默认上限 200 MiB(以插件文档为准)。
两阶段恢复¶
恢复被设计为两阶段,降低误覆盖风险:
time_machine_restore_preview:只读预览,返回与快照及恢复模式绑定的短时、一次性令牌。time_machine_restore:携带有效令牌执行恢复;缺失、过期、重复使用或模式不匹配的令牌会被拒绝。
恢复模式:
merge(默认):恢复检查点中的文件,同时保留检查点之后新增的文件。exact:除恢复检查点文件外,还会删除检查点之后新增的文件;须在预览时明确选择,并使用与该模式绑定的确认令牌。
预览阶段会展示相对存档的新增、修改、删除文件数量,便于在真正写盘前判断影响范围。
安装与启用¶
DSH 插件管理会调用 pnpm,安装前请确认本机 pnpm --version 能正常运行。插件要求 Node.js >= 22。
在 web profile 下安装:
npx @deepseek-ai/dsh plugin --profile web add dsh-time-machine
安装后重启 dsh web。若在插件源码目录做本地开发,可将当前目录作为安装目标:
npx @deepseek-ai/dsh plugin --profile web add .
典型用法¶
在对话中可以先建档、再 diff、再预览,最后才在用户明确同意时恢复。官方文档给出的示例表述如下:
重构登录模块前,先给工作区存个档,叫“登录重构前”。
看看当前工作区和“登录重构前”相比变了什么。
预览回到“登录重构前”,先不要真的恢复。
对应工具链:time_machine_checkpoint → time_machine_diff → time_machine_restore_preview;只有在用户看过预览并明确同意后,Agent 才应调用 time_machine_restore。
适用场景与注意¶
适合谁: 经常在 DSH web 中让 Agent 做较大重构或批量改文件、又希望在改前留本地快照的开发者;尤其在不方便或未使用 Git 覆盖全部文件的场景。
运行与信任边界: 插件随当前 DSH 进程权限读写工作区;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,自行评估是否纳入你的工作流。
生态说明: DeepSeek Harness 采用「一切皆插件」的扩展方式;社区目录 SkillHub 上的 dsh-time-machine 页 为独立站点收录,与 DeepSeek / 幻方无官方从属关系。
API 稳定性: 文档注明 Developer Preview 阶段的 DSH API 可能发生破坏性变化;插件按官方工具注册契约开发,并以 npm 已发布的 @deepseek-ai/dsh-tools@0.0.1-rc.1 做独立构建验证。
结尾¶
经过上面的步骤,你可以在 Agent 动手前用本地快照锁住工作区状态,用 diff 和预览看清「会动哪些文件」,再用令牌绑定的两阶段恢复回到检查点。更多细节见仓库 README.zh-CN.md;目录页:https://www.skillhub.cn/plugins/zjukop/dsh-time-machine,源码:https://github.com/zjukop/dsh-time-machine。