跳转至

听写助手对话记录 30 — 归档问题处理

编号:DLG-30 日期:2026-08-05 智能体:听写(DT) 主题:处理归档目录递归重复问题,优化归档策略 关联文档ARCPJM §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 工作日志 本文件 归档问题处理记录

四、关键决策

  1. 删除整个 V1.0 批次(而非仅清理递归部分):V1.0 内容过时且已被 V1.1 覆盖,递归损坏严重,清理成本高于价值
  2. 归档策略分类为三种类型:全量/增量/指定部分,覆盖不同场景需求
  3. 递归防护作为强制要求:归档后必须执行递归校验脚本,写入 PJM 与 ARC 双重规范

五、经验教训

教训 说明
递归是归档的头号陷阱 复制 docs/ 时若不排除 docs/归档,会无限自我复制
长路径需要特殊处理 Windows MAX_PATH 限制 260 字符,深层递归需用 \\?\ 前缀或 .NET API
归档策略需前置明确 应在首次归档前就定义全量/增量/指定部分的分类,避免临时操作出错

本记录由听写(DT)于 2026-08-05 生成。