> API 命中只证明"它存在",不证明"它哪年发表"——而年份分歧零网络可检
有一条看起来很稳的协议:每个新加的 DOI / arXiv id,在写进 .bib 之前先交核验工具裁决。 方向是对的,但不能在"信 API"模式下执行。
结论先行¶
有一条看起来很稳的协议:每个新加的 DOI / arXiv id,在写进 .bib 之前先交核验工具裁决。
方向是对的,但不能在"信 API"模式下执行。
实测的反例:某文献检索 API 把 Baydin 等人的 Online Learning Rate Adaptation with
Hypergradient Descent 记成 2017。那是它的 arXiv 年份;
它发表在 ICLR 2018,也就是 .bib 里原本写的那个年份。
一个在"信 API"模式下执行该协议的 agent,会把一条正确的条目"修"成 2017, 并且打断一条基于发表时间的优先权主张。
规则:
- API 命中 ⇒ 这条文献存在(这一点可用);
- API 给的年份 / 场次 ⇒ 只是证据,不是权威;
- ICLR / NeurIPS / ICML 的 arXiv 年份例行比 venue 年份小一。
为什么¶
两件事叠在一起才产生危险。
一、"存在性"和"元数据"是两种强度完全不同的证据。 检索 API 擅长前者(命中即存在),对后者只是某一个来源的某一次记录—— 而预印本和正式发表版在它们的索引里常常被合并成一条,年份取了先出现的那个。
二、自动化把一个弱证据变成了一次写操作。 "查到了就按查到的改"这条规则,在存在性上是安全的,在年份上是破坏性的。 agent 执行协议时不会区分这两者,除非协议本身区分。
而这个风险有一个很漂亮的性质:它零网络可检。
arXiv 标识符本身编码了 YYMM。
所以"这条的 arXiv 年份和它声明的 venue 年份不一致"这个判断,
从 id 本身就读得出来——不需要 API、不需要第二个也可能出错的来源。
一个约 60 行的脚本在一个项目的 .bib 上报出 8 条年份分歧,全部可人工裁决。
对称的一条:另一次是回忆错了年份(把一篇文献的年份记成前一年),这次是 API 错了。 两个方向都错过,说明年份这一项不能自动化,只能自动化地被标记出来。
而最强的证据既不是回忆也不是 API:本地语料库里的物理存在—— 翻到那本书那一章那一页,看见它。API 没索引不等于不存在。
怎么用¶
- 把核验结论拆成两级:存在性(可自动采纳)与元数据(只能标记,待人判)。 工具不要用同一个"✅"盖住两者。
- 年份分歧用本地检查,不用查询。
从
arXiv:YYMM.NNNNN解出年月,和条目的year比; 不一致就报出来,并带上"会议类文献的 arXiv 年通常小一"这条提示。 - 任何"查到就改"的自动化,要列出它被允许改的字段白名单。
eprint、archivePrefix这类可以;year、booktitle不行。 - 承载优先权主张的那几条,手工核。 数量通常是个位数,成本很低,而错一条的代价是打断一个论证。
- "API 没索引"永远不能作为"不存在"的证据。 书、教材、老会议论文都常不在索引里。
出处¶
- 自己的参考文献核验链在三个项目的
.bib上的实测,2026-10-01, 记录在~/Tools/submission-preflight/feedback/: 某 API 将一篇 ICLR 2018 论文记为 2017(arXiv 年)、承载优先权主张的四条手工核对全部正确、 以及据此写的约 60 行本地年份检查脚本在另一个项目报出 8 条 arXiv 年 ≠ venue 年 - 相关:引用幻觉藏在作者列表和 venue 里,不在标题里——只比标题的批量校验会漏、检索工具说"没有相关工作"之前,先让它找一篇你已经知道存在的论文、 一个标签盖了三种根因,而三种的处置相反——"可能是幻觉"的三张脸