听写助手对话记录 30 — 归档问题处理¶
编号:DLG-30 日期:2026-08-05 智能体:听写(DT) 主题:处理归档目录递归重复问题,优化归档策略 关联文档:ARC、PJM §4.4、WLG
一、用户需求¶
用户检查归档目录时发现递归重复归档现象,示例路径:
D:\AC\TF\hk2026\docs\归档\20260804_V1.0_筹备期前期\docs\归档\20260804_V1.0_筹备期前期\docs\归档\20260804_V1.0_筹备期前期
用户要求: 1. 调整归档,不必重复,不能递归 2. 检查并调整优化归档策略,避免重复问题 3. 支持全量归档、增量归档、指定部分归档
二、工作过程¶
2.1 问题诊断¶
| 检查项 | 结果 |
|---|---|
| V1.0 批次(20260804_V1.0_筹备期前期) | 存在递归:docs/归档 子目录被复制进归档批次,形成自我嵌套 |
| V1.0 递归深度 | 检测程序卡住,推断深度达 200+ 层(路径超 MAX_PATH 限制) |
| V1.1 批次(20260805_V1.1_筹备期前期) | 健康:无递归,归档目录内不含 docs/归档 |
| V1.0 Git 跟踪状态 | 未跟踪(git ls-files 返回空),删除不影响版本历史 |
根因:首次归档(V1.0)执行 robocopy 复制 docs/ 目录时,未使用 /XD "归档" 参数排除归档目录自身,导致 docs/归档 被复制进归档批次,形成无限递归。
2.2 清理损坏批次¶
V1.0 批次因递归深度达 200+ 层,路径远超 Windows MAX_PATH(260 字符)限制,常规 Remove-Item 无法删除。
解决方案:使用 .NET Directory.Delete 配合 \\?\ 长路径前缀绕过 MAX_PATH 限制:
$longPath = "\\?\d:\AC\TF\hk2026\docs\归档\20260804_V1.0_筹备期前期"
[System.IO.Directory]::Delete($longPath, $true)
执行结果:V1.0 批次完全删除。归档目录现仅保留 V1.1(健康)和 README.md。
删除决策依据: - V1.0 内容已被 V1.1 完全覆盖且过时(agents.md V5.0、无 CPT-F、无 MDS) - V1.0 从未提交 Git,删除无版本历史损失 - 递归损坏严重,清理嵌套目录比保留更复杂且无价值
2.3 优化归档策略¶
在 ARC README 新增 §三 归档策略,明确三种归档类型:
| 归档类型 | 适用场景 | 关键操作 |
|---|---|---|
| 全量归档 | 里程碑、主版本升级 | robocopy /E /XD "归档" 排除归档目录 |
| 增量归档 | 月末定期、小版本 | /XO /XL 增量参数 + /XD "docs\归档" |
| 指定部分归档 | 临时需求、敏感文档 | 按文件列表复制,涉及 docs/ 仍需排除 |
新增 §3.4 递归防护清单,要求每次归档后必须执行递归校验脚本。
2.4 文档更新¶
| 文档 | 版本变更 | 更新内容 |
|---|---|---|
| ARC README | V1.1 → V1.2 | 新增归档策略章节、递归防护清单;归档原则新增「非递归性」;删除 V1.0 批次索引 |
| PJM §4.4 | V1.3 → V1.4 | §4.4.5 新增「非递归性」原则与递归防护强制要求;新增 §4.4.6 归档类型与策略 + 命令示例 |
三、产出物清单¶
| 产出物 | 路径 | 说明 |
|---|---|---|
| 清理后的归档目录 | docs/归档/ |
仅含 V1.1 批次 + README.md |
| ARC README V1.2 | docs/归档/README.md |
新增归档策略 + 递归防护 |
| PJM V1.4 | docs/项目管理.md |
§4.4 归档机制强化 |
| DLG-30 工作日志 | 本文件 | 归档问题处理记录 |
四、关键决策¶
- 删除整个 V1.0 批次(而非仅清理递归部分):V1.0 内容过时且已被 V1.1 覆盖,递归损坏严重,清理成本高于价值
- 归档策略分类为三种类型:全量/增量/指定部分,覆盖不同场景需求
- 递归防护作为强制要求:归档后必须执行递归校验脚本,写入 PJM 与 ARC 双重规范
五、经验教训¶
| 教训 | 说明 |
|---|---|
| 递归是归档的头号陷阱 | 复制 docs/ 时若不排除 docs/归档,会无限自我复制 |
| 长路径需要特殊处理 | Windows MAX_PATH 限制 260 字符,深层递归需用 \\?\ 前缀或 .NET API |
| 归档策略需前置明确 | 应在首次归档前就定义全量/增量/指定部分的分类,避免临时操作出错 |
本记录由听写(DT)于 2026-08-05 生成。