name: safe-rollback description: 执行写操作前自动备份,出错时一键还原到修改前。当用户说"开始修改""动手吧""进入安全模式",或要求"改之前先备份"时触发。
用户全程只记两个词——「开始」和「回滚」,文件永远可恢复。
触发条件满足其一: - 用户说"开始修改""动手吧""进入安全模式" → 开启安全模式,此模式下后续所有写操作自动前置备份 - 用户说"改之前先备份一下" → 单次备份:只对这次操作备份,不进入模式 - 模式一旦开启,持续生效直到用户说"结束安全模式"或"不用备份了"
不触发的情况(误触发防护): - 用户说"开始"但语境与文件操作无关(如"开始讲吧""开始分析")→ 不进入安全模式,先确认再进入 - 用户要求的全是只读操作(查询、分析、阅读)→ 不需要备份,不进入模式 - 用户说"备份"但指的是系统/数据库备份等本技能范围外的事 → 不接管,正常处理
对每一个写操作(修改/覆盖/移动/删除/新建后覆盖)执行:
1. 创建 .backup/ 目录(如不存在)
2. 备份文件命名为:原文件名.备份.YYYYMMDD-HHMMSS(同名同秒冲突时追加序号 -2、-3)
3. 立即校验备份成功:对比原文件与备份的 hash,不一致就中止本次写操作并报错
4. 写一条操作日志到 .backup/manifest.txt:
[时间] 文件:src/config.py → 备份:config.py.备份.20260618-093000
[时间] 动作:修改 3 处(第 12、45、78 行)
日志是回滚的依据,必须记录「改了哪个文件、改了什么」,否则无法精确回滚。
正常执行用户要求的修改,动作与日志保持一致。
改动完成 ✅
- 改了:src/config.py(3 处:12、45、78 行)
- 备份:.backup/config.py.备份.20260618-093000
- 不满意就说"回滚";没问题就说"结束安全模式"
7w4.net小葱技能站收录全网优质技能,值得收藏。
.backup/trash/(带时间戳),不真正删除| 情况 | 处理方式 |
|---|---|
| 备份失败(磁盘满、无权限) | 立即中止写操作,报告原因,绝不"先改再说" |
| 用户改完又改,连续多次 | 每次独立备份+独立日志条目,回滚时按用户选的那次 |
| 回滚会影响后来才改的文件 | 回滚前说明"该文件后来又被改过,回滚会丢失第二次修改,继续吗?" |
| .backup/ 越来越大 | 保留最近 3 份同名备份,更早的自动删除(删除前确认日志完整) |
| 用户忘了自己在安全模式 | 每次写操作前输出一行"已自动备份",让用户有感知 |
| 文件名带特殊字符/长路径 | 备份名只取文件名+时间戳,路径记录在 manifest 里 |
这个备份回滚工具功能设计很完善,能在修改文件前自动备份,出错时一键恢复,不用担心改坏了救不回来。触发机制考虑得很周到,误触发了也能识别。不过目前只有使用说明,没有实际代码,能不能用还不知道。另外只能保护代码文件,其他数据(如数据库)不在范围内。