预览每轮改动并选择文件撤回,恢复可再撤销
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add icyaaaww/dsh-time-machine该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/10) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 27 处,展示前 17 条)
- 写入本地文件lib/index.js:29
await mkdir(dirname(path), { recursive: true, mode: 448 }); - 写入本地文件lib/index.js:39
await rename(temp, path); - 删除本地文件lib/index.js:41
await unlink(temp).catch((error) => { - 读取本地文件lib/index.js:60
const root = await realpath(stdout.trim()); - 写入本地文件lib/index.js:63
await mkdir(directory, { recursive: true, mode: 448 }); - 写入本地文件lib/index.js:64
await mkdir(join(directory, "objects"), { recursive: true, mode: 448 }); - 写入本地文件lib/index.js:65
await mkdir(join(directory, "records"), { recursive: true, mode: 448 }); - 写入本地文件lib/index.js:66
await writeFile(join(directory, "lock-anchor"), "", { flag: "a", mode: 384 }); - 读取本地文件lib/index.js:104
stat = await lstat(current); - 读取本地文件lib/index.js:113
await lstat(join(current, ".git")); - 读取本地文件lib/index.js:126
stat = await lstat(absolute); - 读取本地文件lib/index.js:132
const bytes = await readFile(absolute); - 读取本地文件lib/index.js:139
const after = await lstat(absolute); - 删除本地文件lib/index.js:255
await unlink(this.pendingPath(sessionId)); - 删除本地文件lib/index.js:272
await unlink(this.pendingPath(sessionId)); - 删除本地文件lib/index.js:309
await unlink(path); - 删除本地文件lib/index.js:327
await unlink(temp).catch((error) => {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop-testkit@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-slots给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 预览每轮改动
- 选择文件撤回
- 恢复可再撤销
DeepSeek Harness 的撤销按钮:持久检查点、差异预览和按文件选择性还原。改动时光机
README
由 DeepSeek 最新模型翻译生成改动时光机 · DSH Time Machine
给 DeepSeek Harness 加一个撤回按钮:看清这一轮改了什么,再选择要恢复的文件。
面向 DeepSeek Harness 的第三方插件。按官方 bundle、Cordis 生命周期和 Web 客户端模块规范实现,无需修改 DSH 源码。非 DeepSeek 官方出品。
下载 v0.1.0 · 反馈问题 · English
展开真实 DSH Web 验收截图
隔离测试工作区中的撤回成功页面
截图使用确定性测试检查点;自动轮次捕获由生产服务集成测试覆盖。
功能
- 自动记录顶层 Agent 每轮开始前和结束后的本地 Git 工作区文本文件内容。
- 记录持久化到工作区之外,关闭 DSH 后仍可查看。
- 中文/英文 Web 入口、时间线卡片、文件差异、检查点命名。
- 整轮撤回或选择部分文件;先预览,确认后才执行。
- 后续内容或权限发生变化即拒绝撤回,保留用户原有未提交工作。
- 恢复本身也形成一条记录,可以再撤回恢复。
- 写入前保存恢复日志;中断后可以回滚已应用部分,不覆盖不匹配的后续编辑。
- 成功恢复后向 Agent 的持久 inbox 注入提示,要求重新检查文件;保留原聊天记录。
兼容版本
第一版针对并精确声明 DSH 0.2.1-alpha.1、Cordis 4.0.5-alpha.1。
展开完整文档(README 剩余 1 节)
改动时光机 · DSH Time Machine 给 DeepSeek Harness 加一个撤回按钮:看清这一轮改了什么,再选择要恢复的文件。 面向 DeepSeek Harness 的第三方插件。按官方 bundle、Cordis 生命周期和 Web 客户端模块规范实现,无需修改 DSH 源码。非 DeepSeek 官方出品。 下载 v0.1.0 · 反馈问题 · English 展开真实 DSH Web 验收截图 隔离测试工作区中的撤回成功页面 截图使用确定性测试检查点;自动轮次捕获由生产服务集成测试覆盖。 功能 - 自动记录顶层 Agent 每轮开始前和结束后的本地 Git 工作区文本文件内容。 - 记录持久化到工作区之外,关闭 DSH 后仍可查看。 - 中文/英文 Web 入口、时间线卡片、文件差异、检查点命名。 - 整轮撤回或选择部分文件;先预览,确认后才执行。 - 后续内容或权限发生变化即拒绝撤回,保留用户原有未提交工作。 - 恢复本身也形成一条记录,可以再撤回恢复。 - 写入前保存恢复日志;中断后可以回滚已应用部分,不覆盖不匹配的后续编辑。 - 成功恢复后向 Agent 的持久 inbox 注入提示,要求重新检查文件;保留原聊天记录。 兼容版本 第一版针对并精确声明 DSH 0.2.1-alpha.1、Cordis 4.0.5-alpha.1。Node.js 24+、Git 必需。本地 Git 工作区支持 Windows、macOS、Linux;本次运行验证在 Windows 完成。其他平台需再验收。 精确版本来自本次审查的官方源码和已发布包。其他 DSH 版本可能拒绝安装,这是 pre-stable API 的兼容保护;不要直接放宽 peerDependencies 或使用版本豁免来宣称兼容。 安装预构建包 先从 GitHub Release 下载 dsh-time-machine-0.1.0.tgz,然后在 DSH CLI 所在终端执行,把路径替换为下载的文件: dsh plugin --profile web add "C:\path\dsh-time-machine-0.1.0.tgz" dsh --profile web --dump-config 已有 Web 进程在安装后重新启动。配置树中应出现 time-machine。桌面版请通过桌面应用自己的插件管理入口安装到其 desktop profile,不要用不匹配版本的外部 CLI 改写 desktop profile。 此 tarball 包含编译产物,不依赖安装时构建脚本。无需 API key 即可查看记录、预览和恢复;Agent 执行任务仍使用你原有的模型设置。 卸载: dsh plugin --profile web remove dsh-time-machine 卸载撤销界面和命令注册,但保留快照。现有聊天中的命令结果可由默认命令卡片继续显示。没有增加第三方专属 Session 事件类型,减少卸载后的日志读取依赖。 使用 1. 在本地 Git 项目中打开会话,让 Agent 完成一次文件修改。 2. 点击输入框附近的「查看改动时间线」。Agent 应处于空闲状态。 3. 在对应轮次点「查看差异 / 撤回预览」。差异展示的是原始修改方向,撤回会恢复到修改前。 4. 可以取消勾选部分文件,然后点「仅预览所选文件」生成新的预览。 5. 确认范围后点「确认撤回所选文件」。有冲突时按钮不可用,Host 也会再次检查。 6. 要撤销刚才的恢复,刷新时间线,对新的 Undo 记录再次预览、撤回。 检查点名称只是记录标签,不创建 Git commit。每条记录包含该轮发生变化的文件,撤回恢复的是这些文件的 before 内容,不是把整个仓库强行切换到某个历史 commit。 斜杠命令同样可用: /time_machine /time_machine list /time_machine preview <checkpoint-id> /time_machine undo <preview-token> /time_machine name <checkpoint-id> 当前能运行的版本 /time_machine recover 命令路径也要求先获取预览。预览 token 绑定当前会话和进程、默认五分钟有效、只能使用一次。刷新页面或重新启动后请重新预览。 配置 在 profile 的 cordis.patch.yml 覆盖插件的 config。官方 patch 替换整份 config;未填写的字段由本插件 schema 补默认值。 - id: time-machine config: storageRoot: 'D:/dsh-time-machine-data' maxFileBytes: 2097152 maxFiles: 5000 maxStoreBytes: 536870912 maxRecords: 2000 timeoutMs: 30000 maxDiffChars: 60000 previewTtlMs: 300000 storageRoot 为空时使用 $DSH_HOME/plugins/time-machine,未设置环境变量时使用 ~/.dsh/plugins/time-machine。若启动器使用独立的 home 参数但没有设置环境变量,请显式配置 storageRoot。存储目录必须位于 Git 仓库之外。 容量和记录上限按仓库分别计算。到达上限后停止新增快照/恢复记录,旧记录仍可读取;第一版不自动删除用户检查点。目录包含源代码历史,应按项目机密资料管理。POSIX 新建文件使用 owner-only 权限;Windows 继承父目录 ACL。 官方插件规范对应 | 官方机制 | 本插件 | | dsh.bundle.patch | cordis.patch.yml 插入 dsh-time-machine | | 函数插件 | 命名导出 name、inject、Config、apply,无 default export | | 同实例 DSH 依赖 | 同时声明 peerDependencies 和 devDependencies | | 可释放注册 | effect 管理命令和监听器;卸载等待任务结束 | | Web 模块 | dsh.client、./client export、官方 lazy-CJS factory 格式 | | UI 扩展 | conversation.input.dock 和 keyed conversation.chat.commandview | | 持久命令结果 | 复用官方 command/run、command/done | | 模型可见上下文 | 通过 agent.inject() 进入持久 inbox,并 flush Session | | 本地化 | typed 中英文词典和 locale 元信息 | | 安装分发 | 编译后 tarball,无安装时脚本 | 依据:官方打包与安装规范、客户端扩展格式。 开发与验证 npm ci --ignore-scripts npm run typecheck npm run build npm test npm pack 测试使用临时 Git 仓库,包括持久性、原有未提交改动、选择性撤回、撤回恢复、冲突、路径越界、junction、损坏内容、配额、中断恢复、官方 Loader 组合、命令事件、Agent inbox、卸载,以及浏览器模块格式与组件交互。 Model Experience 恢复通知 What the model sees 模型不会获得自动恢复工具。用户从 Web 或人类命令发起恢复后,下一次请求会收到来源为 time-machine 的上下文通知,包含检查点 id、已恢复文件,并要求重新读取文件和必要时重新运行测试。通知通过 Agent inbox 持久化;不会主动发起模型调用。 Token effect 成功恢复或中断恢复处理时增加一次文件列表通知;自动快照和查看 diff 不调用模型。 KV Cache effect 通知追加到下一步上下文,不改写已有聊天历史。文件恢复本身不修改模型请求缓存。 Known Limitations and Deferred Work - 第一版只处理 Host 本地 Git 仓库、UTF-8 常规文本文件。二进制、过大文件、symlink/junction、嵌套仓库不恢复;跳过的文件会列入记录。 - 不跟踪未纳入 Git 且被 ignore 的文件、空目录、数据库、部署或外部副作用。已跟踪文件即使匹配 ignore 仍可能被记录,行为与 Git 一致。 - 快照覆盖整个仓库。用户在 Agent 同一轮中手动做的修改也可能归入该轮,记录不证明“所有修改都由 AI 做出”。 - 两次快照并非文件系统原子快照。恢复前先关闭写入这些文件的编辑操作和后台进程;本插件会检查指纹、拒绝已知冲突,并阻止同一 Host 已知活跃 Agent 的恢复,但不能对不合作的外部进程提供原子隔离。 - 多个合作插件进程通过文件锁互斥;Host 外部写入不受锁控制。恢复是逐文件事务,失败时保留恢复日志,不声称多文件同时原子替换。 - 不改写 Git index、commit 或对象库。保存的内容与 Git index 状态分别存在;如果修改曾经被暂存,恢复后需要用户自行检查暂存状态。 - 正常记录在 turn/end 后异步完成;命令会等候队列。崩溃后残留的起始快照在下次访问时与当前磁盘比较,此间人工改动也可能进入恢复记录。 - 检查点记录跨重启保留,但列表当前展示本会话最近 50 条;旧记录可用 id 直接访问。第一版没有跨会话浏览、全文搜索、自动清理和 Git 分支切换。 - 撤回不会自动撤销文件夹创建,也不恢复 ACL、扩展属性和时间戳。常规权限位记录并恢复;Windows 权限语义以系统为准。 - 遇到无法读取的仓库或达到快照上限时,原 Agent 任务仍可继续;日志和时间线会报告警告。该轮不应被视为受到完整保护。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
icyaaaww/dsh-time-machine
预览每轮改动并选择文件撤回,恢复可再撤销
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,197已汉化DSH
71.7
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2