편집자 노트

dyhyfjn/dsh-rollback-withdraw

Trae-style withdraw for DeepSeek Harness Web — one-click rollback of workspace code + conversation (git commits or hard-link snapshots).

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-rollback-withdraw

面向 DeepSeek Harness Web 的 Trae 式会话撤回插件。 在每条用户提问与助手回答旁提供一键撤回按钮:把工作区代码会话本身(记忆、轨迹、目标)整体回滚到该消息之前的最后一个完整回合。

简体中文 · English

License Platform


它能做什么

DSH Web 会话中每个已完成的回合都会自动成为一个回滚点。点击任意消息旁的撤销图标,工作区文件即恢复到该消息之前最后一个完整回合的状态,同时会话在该处分叉并自动打开回滚后的对话——仿佛那段交流从未发生过。

  • 工作区代码:通过最佳可用后端恢复(见下)。
  • 会话:在边界处 fork 出子会话并打开;模型记忆、轨迹、目标与子代理血缘都与那一刻完全一致。
  • 原生 git 集成:工作区是 git 仓库时,回滚点就是真实提交,撤回 = git reset --hard + 安全的 git clean

功能特性

  • 每条消息都可撤回——用户气泡下方、每个已完成回合的最后一条助手消息旁。
  • 双恢复后端,自动选择:
    • git 模式(默认开启,一键切换):每回合结束提交 rollback checkpoint <seq>;撤回用 git reset --hard + 保留依赖/构建目录的 git clean。空间高效、与常规 git 工作流一致。
    • 文件快照模式:否则在每回合结束生成硬链接快照——未变更文件跨快照共享同一副本,保留几百轮历史几乎零成本。
  • 按工作区开关——会话头部 git 分支图标一键切换 git 自动提交;选择持久化在 .dsh-rollback/config.json
  • 随客户端启动自动加载——以 web profile bundle(dsh.bundle + dsh.client)形式打包,重启无需重新激活。
  • 两步确认——第一次点击进入"确认"状态(按钮变红),再次点击才执行,杜绝误撤回。

环境要求

项目说明
操作系统Windows(依赖 robocopy 与 PowerShell 5.1+);其他平台规划中
Git可选——仅 git 模式需要
DSHweb profile(dsh web

安装

# 从 npm 安装
dsh plugin --profile web add dsh-rollback-withdraw

# 或从本仓库安装
dsh plugin --profile web add github:dyhyfjn/dsh-rollback-withdraw

# 或本地构建
npm pack && dsh plugin --profile web add ./dsh-rollback-withdraw-0.1.0.tgz

安装后重启 Web 应用——插件集变更需重启生效。

使用方法

  1. 照常与 agent 对话;每个回合完成后自动记录一个回滚点。
  2. 悬停消息并点击撤销图标——第一次点击进入"确认"(变红),再次点击执行。
  3. 工作区恢复,界面切换到分叉后的回滚会话,从这里继续。

会话头部的 git 分支图标表示 git 模式状态:

  • 点亮(品牌色 + 右下角绿点)= git 自动提交开启
  • 灰暗 = 关闭,或工作区不是 git 仓库(悬停有提示);
  • 工作区无 git 仓库时按钮禁用。

工作原理

  • host 半部监听 session/event,在每个 turn/end 记录检查点——git 提交,或硬链接快照(存放在 <工作区>/.dsh-rollback/snap/<会话>/<序号>/)。
  • 客户端按钮通过同源 HTTP 路由 /rollback/rpc 调用 host(静态插件通道,替代动态插件的 harness.handle)。
  • 撤回流程:校验边界(该消息之前最近的 turn/end)→ 恢复文件 → 客户端在对应序号 fork 会话并打开子会话。
  • 会话第一条消息无法撤回(没有更早的回合);插件安装前的消息没有快照——按钮会说明原因。

配置

配置项位置默认含义
gitAutoCommit<工作区>/.dsh-rollback/config.jsontrue工作区为 git 仓库时,用 git 提交作为回滚点

忽略路径(不纳入快照/提交/删除):node_modules.gitdistbuild.next.venv__pycache__.idea.vscodecoverage*.pyc*.log 等(详见 lib/index.jsIGNORE_DIRS / IGNORE_FILES)。

安全说明

/rollback/rpc 是本机 web 服务器上的同源、无鉴权路由——本插件假定仅个人、仅本机使用。请勿将 harness 端口暴露到不可信网络。

已知限制

  • 优先支持 Windows(robocopy + PowerShell);macOS/Linux 回退方案规划中。
  • git 模式执行整仓库 git reset --hard + git clean(保留忽略目录)——回滚会删除未跟踪且未被忽略的文件。
  • 撤回助手回答时也会一并回滚其前置提问(回到上一个完整回合结束点);平台分叉原语只能在回合边界切割。
  • 源会话保留在侧栏作为分支;不做自动归档。

开发

npm pack                 # 生成可发布的 tarball
node --check lib/index.js lib/client.js   # 语法检查

许可证

MIT — 见 LICENSE

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.