在 DeepSeek Harness (DSH) 中,Agent 对工作区的修改通常难以直接撤销。如果 Agent 走了弯路或遇到错误,需要一种机制能够将状态“回滚”到之前的检查点,并从旧节点继续探索。dsh-plugin-time-machine 插件正是为此设计,它能够协调 DSH 会话的分叉与安全的工作区检查点。
核心功能¶
- 恢复工作区:支持预览目标文件、冲突及外部副作用。确认后回到旧检查点。普通新增文件随完整恢复清理,忽略文件默认保留。
- 保留探索路径:检查点组成持久化 DAG(有向无环图)。从旧节点 fork 时,保留原来的失败分支和错误证据。
- 对齐会话:回滚时请求 DSH 从对应消息边界创建会话分支,同时恢复文件。原会话历史继续保留。
- 记录失败线索:将失败工具的摘要用于新分支的反思提示,帮助 Agent 避开已知错误。
- 适配非 Git 目录:在没有 Git 仓库时,使用 manifest 和内容哈希保存快照。
安装与启用¶
安装前请确保已安装 DeepSeek Harness 和 pnpm,Node.js 版本需满足 ^22.19.0 || >=24.0.0,且 DSH 版本为 >=0.1.5-rc.2 <0.2.0 的 web profile。
执行以下命令安装插件:
dsh plugin --profile web add github:GeoSyntax/dsh-plugin-time-machine#v0.2.0
安装或更新后重启 DSH。插件会通过 cordis.patch.yml 自动加入 profile 配置。
典型用法¶
- 在项目目录启动 DSH Web:
dsh web
- 在会话中输入指令查看检查点列表和分支关系:
/tm-list
/tm-tree
- 打开仪表盘页面:
http://127.0.0.1:3088。该页面支持中文/英文切换,用于查看检查点详情、文件变化和恢复预览。DSH Web 自身默认运行在http://127.0.0.1:3080,两者是不同的页面。
适用场景与注意¶
- Safe 模式限制:默认
safe模式下,遇到无法验证的用户修改、暂存区变化或受保护的忽略文件时会拒绝覆盖,恢复前必须查看 preview。 - 工作区共享:当前 DSH 宿主的 fork 共用工作区,不提供独立 worktree 或容器。并行会话修改同一目录时需注意。
- 副作用限制:文件回滚不能撤销数据库事务、网络请求或云资源变更,插件仅能记录并提示这类副作用。
- 恢复类型区分:完整恢复和选择性文件恢复是不同操作,需要只恢复某些文件时,应使用选择性恢复功能。
- 插件性质:非官方社区插件。
结语¶
该插件通过 DAG 分支和失败反思机制,为 DSH 提供了类似时间旅行的能力。更多细节可参考 GitHub 仓库 或 SkillHub 插件目录。