插件目录 / Developer / dsh-file-undo
dsh-file-undo
已验证 · 实测可装 QinLuza
✓ 持续维护 基于 2 个官方 DSH 包
0Stars
0Forks
0未关闭 issue
JavaScript语言
2026-08-16最近推送
跨平台平台
功能简介
通过/undo命令撤销DSH中文件写入/编辑操作,支持快照历史。
我们的评价
可用 — 实测通过,早期项目
可用 — 实测通过,早期项目
通过/undo命令撤销DSH中文件写入/编辑操作,支持快照历史。 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-file-undo
DSH 插件:撤销 agent 对文件的 **write / edit** 操作,通过 /undo 恢复到操作前状态。
命令
| 命令 | 作用 | |---|---| |/undo | 撤销最近一次文件写入/编辑 |
| /undo list | 查看所有已记录的操作历史(索引 + 时间 + 工具 + 文件路径) |
| /undo <n> | 撤销指定索引的操作 |
| /undo prune [days] | 清理 N 天前的快照(默认 7 天),只缩短可回退深度,不动任何当前文件 |
原理
每次write / edit 执行前,插件自动保存文件操作前的内容到本地快照;/undo 时用快照内容覆盖回文件。
安装
方式一:本地构建(link)
1. 构建插件: ``sh
pnpm install
pnpm build
`
2. 在 profile 的 package.json 里加依赖:
`json
"dependencies": {
"dsh-file-undo": "link:<本目录绝对路径>"
}
`
3. 在 profile 的 cordis.patch.yml 里挂载:
`yaml
- insert:
- id: file-undo
name: 'dsh-file-undo'
`
4. 安装依赖并重启:
`sh
cd ~/.dsh/profiles/web
pnpm install
dsh web
`
方式二:发布到 npm 后
`sh
dsh plugin --profile web add dsh-file-undo
`
快照存储
- 位置:~/.dsh/file-undo/snapshots.jsonl
- 插件每次加载自动按 7 天惰性清理一次
- 手动清理:/undo prune [days](默认 7 天)
- time 字段缺失的快照条目会保守保留,不会被清理
限制
- 只覆盖 write / edit 两个工具;shell 里直接改文件(如 Set-Content、重定向)不覆盖
- 删除回退不支持(官方 fs 无 delete 方法)
- 快照全局共享,不按会话隔离
开发
`sh
pnpm typecheck # 类型检查
pnpm build # 构建
node verify-prune.mjs # 隔离验证清理逻辑(临时 HOME,不碰真实快照)
``
安装
🧩 让 Agent 自动装(推荐)
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-file-undo」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:QinLuza/dsh-file-undo Headless(CLI)profile:
dsh plugin --profile headless add github:QinLuza/dsh-file-undo 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。
使用场景
扩展 agent 的编码能力面——给它一个新工具、工作流或集成,让它接手以前做不了的开发任务。
适合谁
想让 dsh 在真实代码库上像队友一样干活的开发者——能改、能跑、能验证,而不只是回答问题。
二次开发建议
工具/命令面就是缝:暴露更多 SDK 能力、加更聪明的上下文接线,或收紧改代码与验证之间的循环。