dsh-recall-plugin:DeepSeek Harness 的消息撤回与文件回退插件

limbo947/dsh-recall-plugin

会话与消息已验证
收录时间 2026-08-20
页面最后更新 2026-08-20

DSH plugin 消息撤回:一键回到发送该消息时的文件与对话状态。

让 DeepSeek Harness 的对话和文件能一起回到过去,撤回一条消息,项目文件也恢复原样。

install
dsh plugin --profile web add github:limbo947/dsh-recall-plugin
分类
会话与消息
平台
DSH-Plugin
作者
limbo947
分发方式
插件

dsh-recall-plugin 核心特性

文件与对话整段回退独立影子 git 快照不碰项目自身 git确认面板先看清单自动 gc 与清理

dsh-recall-plugin 仓库信息

limbo947
发布者
limbo947
仓库
limbo947/dsh-recall-plugin
22
Star
2
Fork
0
Watch
4
开放 Issue
语言JavaScript
许可证MIT License
官网
仓库最近更新2026-08-17 16:43:03
仓库创建时间2026-08-15 01:43:10
主题
cordisdeepseek-harnessdshdsh-pluginpluginwindows
默认分支main

dsh-recall-plugin 仓库简介

dsh-recall-plugin 是 DeepSeek Harness(DSH)的会话回退插件(DSH plugin),它让你在任意一条自己发过的消息下方点击「↶ 撤回」,就能让工作区文件和对话历史一起回到那条消息发出之前的状态。它解决的是 agent 改错文件、聊错方向后难以干净回退的痛点,核心能力包括:文件与对话整段回退、独立影子 git 快照(不碰项目自己的 git)、增量压缩存储、自动 gc 瘦身,以及会话删除后的联动清理。该插件由 limbo947 维护,采用 MIT 协议,纯 JavaScript 实现、零构建,支持 Windows(PowerShell 5.1/7 + git CLI)与 Linux/macOS(bash + git CLI),最近更新于 2026-08。

dsh-recall-plugin 这个 DSH plugin 支持哪些核心特性?

  • 文件 + 对话整段回退:撤回的不只是聊天记录,agent 改过的文件也一并回到原样。
  • 不碰项目自己的 git:快照存在独立的影子 git 仓库里,你的分支、暂存区、未提交改动统统不受影响;.gitnode_modules 自动排除。
  • 项目目录保持干净:快照始终存在 $DSH_HOME 下,不会往项目里塞任何东西;与会话的沙箱权限无关(workspace-write / read-only 会话照常快照与回退),仅当 home 本身不可写才降级到项目内 .dsh-recall-snapshots(降级时页面会提示),home 恢复后自动迁走。
  • 可以反复后悔:只要会话还在(含归档),快照全量保留、不修剪。撤回一次后还能再撤到更早;撤回时被覆盖的文件也一直找得回来。
  • 先看清单再动手:点撤回先弹出将变更的文件清单(修改 / 恢复 / 删除),确认后才执行。
  • 磁盘友好:快照走 git delta 压缩,是增量不是整目录拷贝;超过 100MB 的大文件自动跳过。
  • 自动瘦身:定期 git gc 把 loose 对象压 pack(无损);会话删除后其快照自动清理;构建产物可经 exclude.txt 全局排除。

dsh-recall-plugin 怎么安装?

前置:git CLI(未装时撤回按钮不出现,页面顶部会提示安装 git,不影响 DSH 运行);Windows 上 PowerShell 5.1 / 7 均可,Linux/macOS 需 bash + git;DSH 0.1.0-rc.x。

bash
dsh plugin --profile web add github:limbo947/dsh-recall-plugin

重启 DSH 进程(按你的启动方式,任选其一):

bash
dsh web                      # 前台直接启动
pm2 restart <你的dsh进程名>   # 若用 pm2 托管

验证:重启后硬刷新页面(Ctrl+Shift+R),悬停任意一条插件启用后发送的用户消息——复制按钮旁出现「↶」即生效。卸载:dsh plugin --profile web remove dsh-recall-plugin(快照数据保留在 home 下 dsh-recall-snapshots/,想彻底清除手动删掉该目录即可)。

dsh-recall-plugin 怎么使用?

  1. 鼠标悬停任意插件启用后发送的用户消息,复制按钮左侧出现「↶ 撤回」。
  2. 点击 → 确认面板展示将变更的文件清单(修改 / 恢复 / 删除)。
  3. 点「确认回退」→ 文件恢复到该消息发送前的状态;视图切到新会话(该消息及之后的对话移除),原会话归档、随时可找回。

dsh-recall-plugin 的快照维护与清理机制是怎样的?

  • 定期 gc:每 50 条快照或距上次 gc 24 小时(先到先触发),后台执行 git gc 把 loose 对象压成 pack。节流凭据写在影子仓库内的 gc.stamp,重启 DSH 不会重置周期。两个阈值可用环境变量覆盖:DSH_RECALL_GC_SNAPSDSH_RECALL_GC_HOURS
  • 会话删除联动清理:会话被彻底删除后,下一次维护会自动删除该会话的全部快照并释放空间。归档不算删除,判断很保守。
  • 用户自定义排除:在 $DSH_HOME/dsh-recall-snapshots/exclude.txt 里一行一条 gitignore 风格 pattern,对所有项目生效,下一次快照/回退立即应用。

dsh-recall-plugin 的工作原理是什么?

每条用户消息发送时(agent 动文件之前),工作区被快照进一个独立的影子 git 仓库;撤回时用 git archive 恢复文件、通过 DSH 官方 sessions.fork 机制把会话切到该消息之前。快照存储于 home 下 dsh-recall-snapshots/<SHA256(项目绝对路径)>/,内含影子 git 仓库(tag 名为 snap-<消息ID>)与索引文件 index.json。Windows 上脚本走 PowerShell,Linux/macOS 走 bash(按 ctx.shell 平台层挂载的执行器自动分叉)。已知限制:快照在消息发送时创建,插件启用前的历史消息没有快照;会话第一条用户消息无法回退对话(仅文件回退);工作区内嵌套的其他 git 仓库不进快照。

查看更多 DSH 插件,访问 dsh-plugin.org

DSH-Plugin 常见问题