dsh-recall-plugin 使用指南
在 DSH 用户消息旁加「撤回」按钮,把项目文件与对话历史一并回退到该消息发送之前;底层用影子 git 仓库快照+官方 sessions.fork。
本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。
本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。
快速上手
dsh-recall-plugin
— 源: plugin_wiki.wiki_content
安装与验证
dsh plugin --profile web add dsh-recall-plugin
复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。
— 源: plugins.install
关键要点
- 设置页 · 排除项快速编辑(设置 → 插件 → 撤回设置)
- 文件 + 对话,整段回退:撤回的不只是聊天记录,agent 改过的文件也一并回到原样。
- 不碰你项目自己的 git:快照存在独立的影子 git 仓库里,你的分支、暂存区、未提交改动统统不受影响;
.git、node_modules自动排除。 - 项目目录保持干净:快照始终存在
$DSH_HOME下,不会往项目里塞任何东西;与会话的沙箱权限无关(workspace-write / read-only 会话照常快照与回退),仅当 home 本身不可写(如指到只读盘)才降级到项目内.dsh-recall-snapshots(降级时页面会提示),home 恢复后自动迁走、清理干净。 - 可以反复后悔:只要会话还在(含归档),快照全量保留、不修剪。撤回一次后还能再撤到更早;撤回时被覆盖的文件也一直找得回来。会话被彻底删除后,其快照随之清理(见下)。
— 源: plugin_wiki.readme_zh (fallback readme_raw)
常见问题
撤回按钮没出现怎么办?
多数情况是 DSH 进程没重启,或 git CLI 不在 PATH 里——插件启用前发送的消息本来就没有快照,也不会出现按钮(README.md:69)。
撤回会污染项目自己的 git 仓库吗?
不会。快照存在 home 下的独立影子 git 仓库(~/.dsh/dsh-recall-snapshots/
home 不可写时数据存哪里?
降级到项目内 .dsh-recall-snapshots/,页面顶部会出现降级提示;home 恢复后下次快照会把降级数据迁回 home 并清理项目内目录(README.md:35, lib/store.js:259-289)。
如何自定义不进快照的内容?
设置 → 插件 → 撤回设置 里可视化编辑 exclude.txt(gitignore 语法),保存后下一次快照/回退立即生效;或者直接编辑 home 下 dsh-recall-snapshots/exclude.txt(README.md:85-94)。
会话被删除后快照还在吗?
不在。归档不算删除——撤回功能自己归档的原会话快照保留;只有会话日志从磁盘消失时,下一次维护才会自动清理该会话的全部快照(README.md:84, lib/maintenance.js:66-85)。
撤回错了能找回来吗?
能。回退前会自动打一个不进列表的 snap-pre-rollback-<时间戳> 安全快照 tag,孤儿重建/手动 git tag 仍能找到它,从该 tag 恢复即可(CHANGELOG.md:40-41)。
卸载后快照数据会一起删吗?
不会。dsh plugin --profile web remove 仅移除依赖与挂载层,快照数据保留在 home 下 dsh-recall-snapshots/;想彻底清除需手动删除该目录(README.md:71)。
第一条用户消息为什么只回退文件不回退对话?
因为 fork 需要更早的 turn 边界,第一条消息之前没有可切的位置,所以仅做文件回退、对话保持(README.md:45)。
— 源: plugin_wiki.faq_json
兼容性
- DSH: >=0.1.0-rc.8 (peerDependencies)
- Node: >=20 (engines.node)
— 源: plugin_wiki.compatibility_json
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则