# 引文三角核验协议 (language 无关) 论文最致命的失分是**编造引文**(hallucinated citation)与**引而不实**(cite 的文献不支撑该论断)。 本协议把每条引文从"看起来对"逼到"经得起查"。移植自 ARS 的 triangulation + claim-faithfulness 思路, **后端换成 zcbot 自己的 `documents` / `research` 库**(它们本就带 DOI + md_content,做 anchor 比对反而更顺)。 > 这是**协议**不是脚本 —— 你(模型)拿 host-side tool 逐条执行。quality_check.py 只做机械的 > orphan/uncited/编号核对,真伪与支撑度靠本协议。 ## 何时跑 - 阶段四逐章起草后、阶段六渲染前,对所有引文跑一遍 - 用户自带的引文清单**也要跑**(用户也可能记错卷期/页码) ## 三层核验(逐条引文执行) ### 第 1 层 — 存在性 (exists) 每条引文先确认"这篇文献真实存在": 1. `documents` 库语义检索(材料类优先,中英 query 都行)/ `research` 库 `search()` / `get_paper(doi)` 2. 命中 → 记下真实 DOI / 作者 / 年份 / 期刊 / 卷期页;**以库里返回为准**,不沿用记忆里的字段 3. 两个库都查不到 → 标 `[未核实]`,**不得编造条目**;告诉用户"这条找不到来源,请提供 PDF/DOI 或删去该论断" ### 第 2 层 — 三角印证 (triangulate) 关键论断(创新点对比、机理依据、定量结论)的支撑引文,**至少两个独立信息源一致**才算稳: - documents 命中 + research/DOI 一致 → 通过 - 仅单一来源 → 标"单源,谨慎",提示用户复核 - 不同来源字段冲突(年份/卷期不一致)→ 以可验证的 DOI 元数据为准,修正条目 ### 第 3 层 — 支撑度 (claim-faithfulness) 最容易翻车的一层:文献存在,但**并不支撑你写的那句话**。逐条做: 1. 抓回该文献的 `md_content`(documents 直接给整篇 Markdown)/ `fetch_xml` / `fetch_pdf`(research) 2. 在原文里定位与论断相关的**锚点证据**:一句 ≤25 词的原文引语 + 出现的段落/小节位置 3. 判定支撑度三档: - **support**:原文明确支撑该论断 → 通过 - **partial / 需限定**:原文只支撑部分,或有前提条件 → **改写论断**使之与证据相符(别让引文背锅) - **not-support / 反向**:原文不支撑甚至相反 → **删除该引用或换文献**;绝不硬挂 4. 抓不到全文(无 PDF/XML)→ 至少用 abstract 做弱核验,标"仅摘要核验",提示用户终审时复查 ## 产出:核验台账 `CITATIONS.md` 在 `/CITATIONS.md` 记一份可复盘的台账(append,一条引文一行): ```markdown # 引文核验台账 > 每条引文的存在性/三角/支撑度核验结果。渲染前所有条目应为 verified 或经用户确认。 - [1] Provis & Bernal 2014, Annu. Rev. Mater. Res. 44:299 | exists:✓(documents+DOI) | triangulate:✓ | claim:support "geopolymers form via dissolution-polymerisation"(§2.1) | status: verified - [2] ... | exists:✓ | claim:partial → 已把"显著提高"改为"在 28d 提高约 12%" | status: verified-revised - [3] ... | exists:✗ 两库未命中 | status: 待用户提供来源 ``` ## 与编号流程的衔接 1. 起草时占位 `[CITE-]`(见 cite_*.md) 2. 本协议逐条把占位映射到**已核验的真实文献** 3. 仅 status=verified / verified-revised / 用户确认 的才进入编号 4. 按文中首次出现顺序编 `[1][2]...`,写 `06_references.md` 5. quality_check.py 兜底查 orphan/uncited/编号连续 ## 铁律 - ❌ 任何 status 非 verified 的引文不得带进最终稿(要么核实、要么删论断、要么用户拍板) - ❌ 不得为凑引文数编造"看起来合理"的文献 - ✅ 支撑度不足时**改论断迁就证据**,不是改证据迁就论断 - ✅ 两库都查不到时如实告诉用户,给出"提供来源 / 删除论断"两个选项