批量改名最危险的结果不是任务报错,而是 500 个文件被迅速改成了“看起来整齐”的错误路径。可靠流程必须先把每个旧路径、新路径、依据和异常展示出来,再用少量金丝雀验证,最后证明内容没变且能够回滚。
这次不碰你的真实下载目录。练习包固定包含 12 个纯文本样本:两个会产生序号冲突的 Atlas 发票、两个同日 Nova 会议记录、两个信息不足的待审核项,以及一个模拟占用文件。
- 下载 12 文件源练习包 ZIP
- 下载预期变更计划 CSV:先自己生成预览,再对照。
- 下载空白验收记录
- 下载参考目录 ZIP:完成全量执行后再打开。
本站已检查两个 ZIP 可无损解压,并核对 CSV 中每个源文件的 SHA-256。本站没有登录 WorkBuddy 或实际触发改名与回滚;版本、权限弹窗、耗时和积分必须由你的运行记录提供。
先读懂 R01–R08
源包根目录的 README.md 是唯一规则源。核心命名格式为:
YYYY-MM-DD_project_document-type_NN.ext
日期只取文件中的 document_date,项目名转小写,扩展名保持不变。同一日期、项目、类型按原路径字典序分配两位序号。缺字段或含糊内容进入 99-to-review/ 并保留原名;occupied-demo.txt 必须跳过。任何同名覆盖、自动猜日期或为提高成功率强制处理占用文件都算失败。
1. 创建隔离工作区和运行前快照
workbuddy-file-lab/
├── source-archive/ # 保存原 ZIP,不授权修改
├── workspace/ # 把 ZIP 解压到这里
├── evidence/ # 预览、实际完成表、截图和哈希
└── rollback/ # 只放反向计划
解压后确认 workspace/samples/ 有 12 个文件。记录源 ZIP 哈希,再生成包含相对路径、文件大小和每个文件 SHA-256 的 evidence/before.csv。不要用修改时间当唯一身份,因为移动和解压可能改变时间戳。
2. Ask 只盘点,不创建目录
只读取 workspace/README.md 和 workspace/samples/,禁止改名、移动、创建或删除文件。
输出:
1. 12 个相对路径、扩展名、文件大小和 SHA-256;
2. 每个文件内明确的 document_date、project、document_type;
3. 会产生相同命名前缀的冲突组;
4. 缺字段、内容含糊和模拟占用项;
5. 逐条复述 R01–R08。
信息不明确时写 [待确认],不要用文件名或当前时间猜值。
盘点应识别两个冲突组:2026-03-12 的 Atlas invoice 和 2026-04-02 的 Nova meeting。README-copy.md 没有三个字段,photo-notes.txt 明确写了两种可能项目,它们都不能被“智能补全”。
3. Plan 输出 12 行预览
要求生成 evidence/rename-preview.csv,列固定为:
old_path,new_path,rule_ids,confidence,action,sha256
预览必须是 9 个 rename、2 个 review、1 个 skip。两个待审核项的新路径在 99-to-review/;模拟占用项的新旧路径相同。检查 12 个新路径唯一、扩展名不变、序号分配稳定,并确认没有任何实际文件变更。
此时才下载预期计划 CSV 对照。差异不能直接以参考答案覆盖:先判断是 WorkBuddy 漏读内容、排序口径不同,还是你的提示没有明确 R05。
4. 只执行三个金丝雀
依据已确认的 rename-preview.csv,只执行以下三行:
- IMG_0001.txt:验证正常 rename;
- README-copy.md:验证 review 且保留原名;
- occupied-demo.txt:验证 skip 且保留原位。
每次动作前检查目标不存在;动作后立即计算 SHA-256。
把实际结果追加到 evidence/completed.csv,禁止执行其余 9 行。
在右侧边栏检查实际文件和变更。如果三个结果不是 rename / review / skip,撤销练习目录并重新解压,不要继续放大。
5. 分批执行剩余九行
先执行两个冲突组的四个文件,确认 01 与 02 没有覆盖;再执行剩余五个高置信文件。每个动作都写入 completed.csv,至少包含时间、旧路径、新路径、动作、前后哈希和错误。
最终对账必须满足:
| 结果 | 数量 | 说明 |
|---|---|---|
| rename | 9 | 进入 project/type 目录 |
| review | 2 | 进入 99-to-review/,保留原名 |
| skip | 1 | occupied-demo.txt 留在原位 |
| failed | 0 | 任一失败都先停批次 |
原始文件数 12 = 成功移动 11 + 跳过 1 + 失败 0。所有成功项改名前后哈希相同;否则说明内容被改写,这不是“整理文件”的授权范围。
6. 从实际完成表生成条件回滚
不要把预览 CSV 简单反转。只读取 completed.csv 中真实成功的 11 行,生成 rollback/rollback-preview.csv。每一行恢复前必须满足:当前路径存在、原路径为空、当前 SHA-256 等于完成时哈希。任一条件不满足就标记 manual-review,不能覆盖。
先回滚最后一个成功文件,核对路径和哈希,再按完成顺序的逆序恢复其余文件。回滚后重新生成 evidence/after-rollback.csv,与 before.csv 比较:12 个相对路径和内容哈希应完全一致。
7. 做一次幂等复验
回滚完成后再次运行 Ask 和 Plan。预览仍应得到相同的 9 / 2 / 1,以及完全相同的新路径。这个检查能发现使用“当前时间”、不稳定遍历顺序或随机命名造成的漂移。
失败定位表
| 现象 | 原因 | 修复 |
|---|---|---|
| 两份发票指向同一路径 | 没实现 R05 稳定序号 | 先按原路径排序,再统一分配序号 |
| 模糊文件被命名为 Atlas | 根据猜测补了 project | 按 R06 保留原名进待审核区 |
| 占用文件被强制移动 | 忽略 R07 或提升权限 | 停止并记录 skip,不扩大权限 |
| 回滚覆盖了新文件 | 直接反转预览,没查目标 | 只反转 completed,并校验路径与哈希 |
| 文件能打开但哈希变化 | Agent 重写了内容或换行 | 从源包恢复;限定只改路径 |
| 第二次预览序号变化 | 遍历顺序不稳定 | 使用相对路径字典序作为固定排序 |
真实目录只有在这套固定实验完整通过后才值得试点,而且仍应使用副本、代表性小批次和业务负责人确认。代码仓库、素材引用目录、系统目录、密钥和持续被其他程序写入的目录不适合套用本练习。