name: safe-rollback description: 執行寫操作前自動備份,出錯時一鍵還原到修改前。當用戶說"開始修改""動手吧""進入安全模式",或要求"改之前先備份"時觸發。
使用者全程只記兩個詞——「開始」和「回滾」,檔案永遠可恢復。
觸發條件滿足其一: - 使用者說"開始修改""動手吧""進入安全模式" → 開啟安全模式,此模式下後續所有寫操作自動前置備份 - 使用者說"改之前先備份一下" → 單次備份:只對這次操作備份,不進入模式 - 模式一旦開啟,持續生效直到使用者說"結束安全模式"或"不用備份了"
更多技能請訪問小蔥技能站7w4.net。
不觸發的情況(誤觸發防護): - 使用者說"開始"但語境與檔案操作無關(如"開始講吧""開始分析")→ 不進入安全模式,先確認再進入 - 使用者要求的全是隻讀操作(查詢、分析、閱讀)→ 不需要備份,不進入模式 - 使用者說"備份"但指的是系統/資料庫備份等本技能範圍外的事 → 不接管,正常處理
對每一個寫操作(修改/覆蓋/移動/刪除/新建後覆蓋)執行:
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
- 不滿意就說"回滾";沒問題就說"結束安全模式"
.backup/trash/(帶時間戳),不真正刪除| 情況 | 處理方式 |
|---|---|
| 備份失敗(磁碟滿、無許可權) | 立即中止寫操作,報告原因,絕不"先改再說" |
| 使用者改完又改,連續多次 | 每次獨立備份+獨立日誌條目,回滾時按使用者選的那次 |
| 回滾會影響後來才改的檔案 | 回滾前說明"該檔案後來又被改過,回滾會丟失第二次修改,繼續嗎?" |
| .backup/ 越來越大 | 保留最近 3 份同名備份,更早的自動刪除(刪除前確認日誌完整) |
| 使用者忘了自己在安全模式 | 每次寫操作前輸出一行"已自動備份",讓使用者有感知 |
| 檔名帶特殊字元/長路徑 | 備份名只取檔名+時間戳,路徑記錄在 manifest 裡 |
這個備份回滾工具功能設計很完善,能在修改檔案前自動備份,出錯時一鍵恢復,不用擔心改壞了救不回來。觸發機制考慮得很周到,誤觸發了也能識別。不過目前只有使用說明,沒有實際程式碼,能不能用還不知道。另外只能保護程式碼檔案,其他資料(如資料庫)不在範圍內。