DeepSeek Harness Hub
← 返回列表

LingLambda/dsh-undo

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

超前预览:本版本无法在任何当前已发布的 DeepSeek Harness 版本中使用。 它依赖尚未发布的…

自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/8/16 · 已提供中文文档

DeepSeek Harness (dsh) 的上下文撤销/重做插件:将模型上下文回滚到上一个已完成的步骤,并再次恢复它。

综合分
32.8
GitHub 分
32.8
用户评分
★ Stars
4
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-undo
npm 包 dsh-undo 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-undo @ 0.2.0
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 02:16:29

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-commands@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-timeout@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol@deepseek-ai/dsh-user-approval
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-undo

[!WARNING]
超前预览:本版本无法在任何当前已发布的 DeepSeek Harness 版本中使用。 它依赖尚未发布的 Harness 持久化 surface/rewind / surface/restore 事件和 conversation.chat.user-actions WebUI slot。现在安装后,/undo 会安全拒绝并提示升级。本包当前仅用于预览和协调未来集成;在配套 Harness 正式发布前,不应视为可用于生产环境。请查看

面向 DeepSeek Harness(dsh)的持久化多级撤销/重做插件。它按真实用户轮次回退模型上下文,并恢复该轮工具修改的工作树文件。

命令只在本地处理,绝不发送给模型:

- /undo 撤销当前可见的最后一条真实用户消息及其后的全部 surface 消息。
- /undo  从指定的可见用户消息开始撤销,同时移除其后的所有轮次。
- /redo 恢复最近一次仍有效的撤销。连续 undo/redo 按 LIFO 顺序执行。

WebUI Client 会在已完成的真实用户消息气泡上添加撤销按钮。按钮调用 /undo ;Host 负责验证该消息当前是否仍是合法的回退目标。

工作原理

Harness 会话日志保持只追加。undo 为当前 surface 的精确连续后缀追加专用 surface/rewind 控制事件;redo 为最新 active rewind 追加 surface/restore。原消息节点、消息 ID、工具调用关联和日志事件均不改变。进程重启后,Session replay 会重建相同的可见 surface 与 redo 栈。

每次顶层工具执行前后,插件使用 ~/.dsh/dsh-undo/snapshots/ 下按会话隔离的隐藏 Git 目录记录工作树。它不会创建 commit、切换 branch,也不会修改仓库自己的 Git index。undo 只恢复所选用户轮次中工具实际触及的文件;redo 恢复 undo 前的工作树。patch 和 redo 元数据按会话保存,因此文件 redo 可跨 Host 重启继续使用。

工作树跟踪包含 tracked 文件和不超过 2 MiB 的未跟踪文件。仓库忽略的文件和更大的未跟踪文件保持不变。小型两阶段 journal 会在重启后依据持久化的 active-rewind 栈对账未完成的文件操作。若会话不在 Git 工作区内,上下文 undo/redo 仍然可用,命令会提示无法恢复文件。

顶层工具返回的后台任务会关联到对应用户轮次。undo 会请求停止被移除轮次启动的任务。redo 只恢复上下文和文件,不能重新启动已终止的进程。

要求

插件要求 Harness 提供:

- 持久化的 surface/rewind 和 surface/restore Session 事件。
- 用于 WebUI 消息按钮的 conversation.chat.user-actions Client slot。

旧版 Harness 会安全拒绝:/undo 会提示升级,而不会写入伪造的 assistant 替换消息或复制 transcript 事件。

限制

- 文件恢复只覆盖检测到的 Git 工作区,绝不会恢复该目录之外的文件。
- 网络请求、数据库写入、远程 API 调用、已退出进程及其他外部副作用无法撤销。
- 经嵌套工具派发或子 Agent 启动的后台任务可能无法关联到根用户轮次。
- undo 会向已记录的顶层后台任务发送停止请求,但不会无限等待进程退出。
- 新的普通 surface 输出会按 Harness surface 语义使当前 redo 历史失效。

安装

本包是 dsh 组合包。package.json 通过 dsh.bundle 指向 cordis.patch.yml 以启用 Host 插件,同时导出 WebUI Client bundle。

从 npm 安装:

dsh plugin --profile demo add dsh-undo

从 git 安装(prepare 脚本会在安装时构建 lib/;需先在 profile 的 pnpm-workspace.yaml 中授权构建):

dsh plugin --profile demo add github:LingLambda/dsh-undo#

针对 Harness 源码检出做本地开发时,可通过 overlay 加载 Host 源码:

pnpm dsh web --patch ./cordis.patch.yml --patch /absolute/path/to/dsh-undo/overlay.yml

- insert:
- id: undo
name: /absolute/path/to/dsh-undo/src/index.ts

用法

/undo
/undo 42
/redo

使用 /undo 撤销最近用户轮次;点击较早用户消息上的按钮可从该处回退;使用 /redo 恢复最近一次撤销。

开发

corepack yarn install
corepack yarn typecheck
corepack yarn test
corepack yarn build

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群