文档版本变更核对 (ym-doc-version-diff)
把两版文档逐处比出来,不只回答"有没有改",而是标出每处增删改与位置移动,并区分实质性修改(数字/日期/金额/主体/范围/义务/条件变了)和纯格式调整(同义替换/标点/换行/大小写/空格)。实质性改动必须给出"旧值 → 新值"对照,高风险字段单独列出来让你复核。
何时使用
- 用户说「这两版有什么区别」「改了哪里」「版本对比」「修订核对」「doc diff」时
- 用户贴出同一份合同/方案/制度/需求文档的新旧两版,问"改了什么"时
- 用户需要在签版、归档、评审前确认两版差异时
运行前提
- 依赖:无第三方依赖,纯文本处理
- 不读取任何本地文件,除非用户明确给出可读路径
- 不联网、不上传任何文档内容
输入契约
| 项 | 必需 | 说明 |
|---|---|---|
| 旧版本文本 | 必需(二选一) | 文档旧版,可贴文本,也可给可读文件路径 |
| 新版本文本 | 必需(二选一) | 文档新版,可贴文本,也可给可读文件路径 |
| 关注重点 | 可选 | 如数字、日期、责任主体、金额、条款编号;默认全量核对 |
| 是否忽略格式差异 | 可选 | 默认不忽略,格式差异单列;若设为忽略则不展开格式节 |
缺失处理:
- 只给一个版本 → 明确说明无法对比,请同时提供另一版
- 只给文件路径且当前环境读不到 → 请用户直接粘贴文本,不臆测内容
- 文档过长(任一版 > 2 万字)→ 先按章节/条款分块比对再汇总,并在报告开头注明"已分段比对"
- 两版结构差异极大(章节被重排)→ 先说明对齐方式,再出清单,不强行逐段对应
执行步骤
-
建立结构锚点 — 按标题层级、条款编号或段落序号把两版内容对齐。先判断整体:是否有整段新增或删除、章节是否被重排。结构无法逐段对齐时,在第 1 步就说明采用的对齐策略(如"按条款编号对齐"或"按语义段落对齐")。
-
逐处标注五类变更 — 对每一处差异标为以下之一:新增 / 删除 / 修改 / 位置移动 / 仅格式或措辞调整。位置移动需注明"从第 X 移到第 Y",不计入修改。
-
判定实质性修改 — 对"修改"类,按
references/实质判定对照表.md判定:改变数字、日期、金额、主体、范围、义务、条件之一即为实质性修改;仅同义替换、标点、换行、大小写、空格为格式调整。判定规则见该表,不得凭感觉。 -
给出旧值 → 新值对照 — 凡实质性修改,必须写出具体旧值与新值(如"违约金 10% → 15%"),不允许只写"该条款有改动"。找不到原值时标注"旧值未在上版定位到"。
-
标记高风险字段 — 涉及金额、日期、责任主体、违约条款、排他条款、期限任一项的改动,单独列入"需重点复核"清单,并标注它属于哪一类高风险。
-
自检 — 输出前逐条核对:实质性改动是否都带了旧值新值?格式调整有没有混进实质性清单?高风险项是否全部进复核清单?是否出现了对改动原因/好坏的评价(不应出现)?
输出格式
Markdown,套用 templates/diff-report-template.md:
## 一、对齐方式说明
[两版如何对齐,是否分段,结构是否有重排]
## 二、变更总览表
| 序号 | 类型 | 位置 | 旧值 | 新值 | 是否实质 | 风险级别 |
|------|------|------|------|------|----------|----------|
| 1 | 修改 | 第 3.2 条 | 10 万元 | 12 万元 | 是 | 高 |
## 三、需重点复核
- [涉及金额/日期/责任主体/违约/排他/期限的实质改动,逐条列]
## 四、纯格式调整
[可折叠,仅列数量与位置,如"共 8 处:第 2 段换行、第 5 条标点……"]
能力边界
- 不做 .docx/.pdf 的二进制解析;环境不支持读取时要求用户粘贴文本
- 不做语义级合规审查,不判断改动是否合法或合理
- 不自动生成修订版文档或合并文档
- 不推测"为什么改""改得好不好",只做客观核对
- 不跨次存储比对结果
常见坑
- 把格式调整算成实质修改 — 现象:仅"的/了"增删、标点变化被标成实质修改,吓到用户。原因:没套判定表就下结论。规避:对照
references/实质判定对照表.md,只有数字/日期/金额/主体/范围/义务/条件变化才算实质。 - 实质修改只写"有改动"没给旧值新值 — 现象:清单里写"金额条款已修改",用户仍要翻原稿。原因:第 4 步没执行。规避:每条实质修改强制带"旧值 → 新值",缺值就标注未定位。
- 高风险字段漏进格式节 — 现象:违约比例从 10% 改 15% 被当成格式调整。原因:没走第 5 步高风险扫描。规避:所有金额/日期/主体/违约/排他/期限改动先过一遍高风险清单再归类。
- 结构重排时强行逐段对应 — 现象:章节被移动后,把"位置变了"误判成"内容删了又新增"。原因:未先说明对齐方式。规避:第 1 步先定对齐策略,位置移动单独标注,不与增删混。
- 顺手评价改动好坏 — 现象:写"这个改动对客户更有利"。原因:偏离"只核对不评价"约束。规避:输出里删掉一切评价性措辞,只陈述差异。
- 一长段里夹一处实质改动被整段忽略 — 现象:一大段只改了一个数字,模型整段标"无变化"。原因:逐段粗比对。规避:对长段落拆句/拆条款比对,尤其盯着数字、日期、金额。
验收用例
- 正常:两版合同,金额 10 万 → 12 万 → 标为实质性修改并给"10 万元 → 12 万元"对照,进高风险清单
- 边界 1:仅换行和"的/了"等措辞差异 → 归入格式调整,不计入实质修改总数
- 边界 2:新增一整个章节 → 标为"新增",说明插入位置(如"置于第 4 章之后")
- 失败:只提供一版 → 明确拒绝对比,说明需要另一版
目录说明
references/— 实质性判定对照表、高风险字段清单templates/— 变更核对报告模板
