🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

回合回退分支 shutongcao1-design/dsh-rewind-branch

DeepSeek Harness
shutongcao1-design4 天前有提交已提供中文文档扫描:含敏感能力

回退某一轮并恢复文件,再从该处开新分支继续

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add shutongcao1-design/dsh-rewind-branch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 23 处,展示前 23 条)
  • 读取本地文件
    index.js:486
    const bytes = await readFile(CLIENT_FILE)
  • 读取本地文件
    index.js:509
    mtime = statSync(CLIENT_FILE).mtimeMs
  • 发起网络请求
    client.js:145
    const response = await fetch(path, {
  • 读取本地文件
    lib/store.js:84
    info = await lstat(absPath)
  • 读取本地文件
    lib/store.js:93
    const bytes = await readFile(absPath)
  • 读取本地文件
    lib/store.js:117
    await stat(target)
  • 写入本地文件
    lib/store.js:122
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    lib/store.js:123
    await writeFile(target, bytes)
  • 读取本地文件
    lib/store.js:132
    return readFile(blobPath(hash))
  • 写入本地文件
    lib/store.js:140
    await mkdir(DATA_DIR, { recursive: true })
  • 读取本地文件
    lib/store.js:143
    const info = await stat(JOURNAL_FILE)
  • 写入本地文件
    lib/store.js:162
    await rename(JOURNAL_FILE, JOURNAL_OLD_FILE)
  • 写入本地文件
    lib/store.js:169
    await appendFile(JOURNAL_FILE, line, 'utf8')
  • 读取本地文件
    lib/store.js:192
    text = await readFile(file, 'utf8')
  • 写入本地文件
    lib/plan.js:337
    await mkdir(safety, { recursive: true })
  • 读取本地文件
    lib/plan.js:345
    current = await readFile(action.path)
  • 写入本地文件
    lib/plan.js:362
    if (current !== null) await writeFile(join(safety, name), current)
  • 写入本地文件
    lib/plan.js:365
    await writeFile(join(safety, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`, 'utf8')
  • 删除本地文件
    lib/plan.js:379
    await rm(action.path, { force: true })
  • 写入本地文件
    lib/plan.js:384
    await mkdir(dirname(action.path), { recursive: true })
  • 写入本地文件
    lib/plan.js:387
    await writeFile(temporary, bytes)
  • 写入本地文件
    lib/plan.js:389
    await rename(temporary, action.path)
  • 删除本地文件
    lib/plan.js:391
    await rm(temporary, { force: true }).catch(() => {})
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(122 字)↓

DSH插件:回退某一轮,然后开新分支继续,而不是把工作丢掉。 每轮回答的尾部有一个动作——**回到这轮提问前**。它把该轮通过 DSH 文件工具改过的文件恢复到提问之前,再从这条消息的边界 fork 出一个新分支会话并切过去;来源会话保持原样。

README

由 DeepSeek 最新模型翻译生成
dsh-rewind-branch 回退 DeepSeek Harness 会话中的某一轮,然后在一个新分支里继续——同时把那轮改过的文件恢复到提问前。来源会话保持原样。 它做什么 每轮回答结束时,回复下方会出现一个动作:回到这轮提问前。 点击后: 1. 先向 Host 取回退计划——这一轮改了哪些文件、新建了哪些文件、哪些已经冲突、这一轮有哪些风险; 2. 确认后,把这些文件恢复到提问之前的状态(恢复前先备份当前内容); 3. 在该消息边界 fork 出一个新分支会话,并自动切过去。 原会话不会被删除或截断:日志、消息、后续内容都保持原样。新分支只继承到回退点之前的那条消息为止。 为什么用分支而不是原地回退 原地回退会截断当前对话。分支方式把原会话作为证据保留下来,也让这次回退本身可逆:旧会话还在,随时可以对比或继续。 文件恢复不需要 Git。Host 会把 DSH 文件工具目标文件的写前字节存进内容寻址库,因此即使工作区不是 git 仓库(或带着无关的未提交改动),也能逐文件恢复,而不是靠 git reset 重置整个仓库。 安装 要求 DeepSeek Harness 0.2.1-rc.3 或更新版本(已在 dsh.engines 中声明)。无依赖、无构建步骤,纯 JavaScript。
展开完整文档(README 剩余 1 节)
dsh-rewind-branch

回退 DeepSeek Harness 会话中的某一轮,然后在一个新分支里继续——同时把那轮改过的文件恢复到提问前。来源会话保持原样。

它做什么

每轮回答结束时,回复下方会出现一个动作:回到这轮提问前。

点击后:

1. 先向 Host 取回退计划——这一轮改了哪些文件、新建了哪些文件、哪些已经冲突、这一轮有哪些风险;
2. 确认后,把这些文件恢复到提问之前的状态(恢复前先备份当前内容);
3. 在该消息边界 fork 出一个新分支会话,并自动切过去。

原会话不会被删除或截断:日志、消息、后续内容都保持原样。新分支只继承到回退点之前的那条消息为止。

为什么用分支而不是原地回退

原地回退会截断当前对话。分支方式把原会话作为证据保留下来,也让这次回退本身可逆:旧会话还在,随时可以对比或继续。

文件恢复不需要 Git。Host 会把 DSH 文件工具目标文件的写前字节存进内容寻址库,因此即使工作区不是 git 仓库(或带着无关的未提交改动),也能逐文件恢复,而不是靠 git reset 重置整个仓库。

安装

要求 DeepSeek Harness 0.2.1-rc.3 或更新版本(已在 dsh.engines 中声明)。无依赖、无构建步骤,纯 JavaScript。

从 GitHub 安装:

dsh plugin --profile <profile> add "git+https://github.com/shutongcao1-design/dsh-rewind-branch.git"

dsh plugin 会在同一次操作里安装包并选中这个 bundle。安装完成后需要完整重启 DSH(不是刷新页面),Host 半才会启动、回合尾部的动作才会送到客户端。

这个插件没有发布到 npm,请从本仓库安装。

使用

1. 等某一轮回答结束——会话需要处于空闲状态。
2. 在该轮回复下方点击 回到这轮提问前。
3. 查看计划:要恢复的文件、要删除的新建文件、冲突、警告。
4. 点击 确认——文件被恢复,同时打开一个新的分支会话。

注意:

- 会话的第一轮之前没有检查点,不能回退。
- 有回合正在运行时拒绝回退(session-running),等它结束即可。
- 插件安装之前、或被禁用期间产生的回合没有快照。

捕获范围

会被捕获(每个文件一份写前字节 + 一份写后快照):

- write、edit、str_replace_editor、multi_edit——通过 DSH 写文件的工具。

不会捕获:

- bash、pwsh、终端工具、run_code 等 shell/代码执行器。如果被回退的那一轮跑过这些工具,预览会给出警告,它们改过的文件不会被还原;被捕获的文件仍然正常恢复。
- 符号链接、目录、大于 4 MiB 的文件会被跳过。
- 文件权限位、ACL、硬链接、submodule 内容不会恢复。

冲突与安全

- Host 会把文件当前内容与该路径最晚的写后快照对比。不一致时(你手动改过、或被 shell 改过),该文件跳过并列为冲突,绝不覆盖。
- 任何写入之前,先把当前内容备份到 /safety/<时间戳>/(manifest.json + 每个文件一个 .bin)。
- 真正落盘前会再做一次校验(TOCTOU):确认弹窗打开期间被改过的文件会被跳过,而不是被覆盖。
- 写入走「临时文件 + rename」,写了一半的文件不会替换掉原本完好的文件。

数据

- journal 与内容寻址 blob 位于 <DSH_HOME>/dsh-rewind-branch/(journal.jsonl、blobs/、safety/)。
- 桌面版 Host 没有继承 DSH_HOME 时,会落在本包旁边的 data/ 目录。
- journal 只增,超过 64 MB 轮转为 journal.1.jsonl。删掉该目录即清空全部检查点历史;safety/ 里是普通文件,可以先拷走。

安全

- 三条 HTTP 路由(/preview、/rewind、/client.js)都只对同源页面开放:每条先过 connection.requestRejection,不是本 profile 已认证页面时直接 403(fail-closed)。
- 插件不发起任何网络请求。它只在本地存字节,并通过 Host 的 sessions 服务 fork 会话。
- 恢复发生在 Host 进程内、由你明确点击触发,且只作用于 journal 里该回合记录过的绝对路径。

兼容性与边界

- 支持 DSH Web 客户端和 DSH Desktop 壳(任何提供 Web GUI 的部署形态)。
- 工作区不需要 Git;不会改 Git 的 index、HEAD、refs 和提交。如果那一轮做过提交,提交会保留,预览会给出警告。
- 只恢复 DSH 文件工具改过的文件;shell/终端/代码运行器造成的改动只提示、不处理。
- 回退边界必须是已存在的会话事件(turn/start.seq - 1),所以第一轮无法回退。

开发

node --test test/ # 单测:计划计算、恢复执行、TOCTOU、safety 备份、manifest
npm run check # 对每个运行时文件做语法检查

结构:

| 文件 | 作用 |
| index.js | Host 半:捕获、计划路由、恢复 |
| client.js | 浏览器半:回合尾部动作、预览面板、fork 并切换 |
| lib/store.js | 内容寻址 blob + 追加式 journal |
| lib/plan.js | 纯计划计算 + 计划执行(有单测) |
| test/ | 单测与 manifest 检查 |

没有构建步骤:运行时文件就是普通 ESM 加一个浏览器脚本。

许可证

MIT,见 LICENSE。
预览分享卡片长什么样 ↓shutongcao1-design/dsh-rewind-branch
分享 · DeepSeek Harness Hub
shutongcao1-design/dsh-rewind-branch

回退某一轮并恢复文件,再从该处开新分支继续

回到顶部