Anti-Autoresearch(论文诚信取证)
一句话定位
跳转到“一句话定位”一节Anti-Autoresearch 站在审稿人一侧,对任意论文(尤其是 autoresearch 产出的论文)做诚信取证:先把论文变成带位置锚点的证据账本,再让 LLM 审计器提出问题,最后由一个只按规则运行的确定性裁决器汇总结论。
它回答的问题是“这篇论文是否自相矛盾、是否有自己的证据支撑”,而不是“这篇论文是不是 AI 写的”。它不给出“AI 生成”的判定,也不认定学术不端,只列出值得人去核查的不一致之处。ARIS 把它打包成 /integrity-forensics,作为投稿前的自查关卡。
基本信息
跳转到“基本信息”一节| 项目 | 内容 |
|---|---|
| 仓库 | wanshuiyin/Anti-Autoresearch |
| 许可证 | MIT |
| 论文 | 没有单独的论文。README 请使用者引用 ARIS 技术报告(arXiv 2605.03042) |
| GitHub star(2026-10-15) | 163 |
| 创建时间 | 2026-06-26(v0.1 首发) |
| 最近提交 | 2026-10-06,只是更新微信群二维码;最近一次改动代码是 2026-08-10 的一组提交(#19–#22)。累计 67 个 commit |
| 维护者 | 与 ARIS 相同(wanshuiyin),与 ARIS 共用微信群 |
| Issues | 4 个(#9、#11、#15、#17),全部已关闭;其中 3 个由维护者自己开出,来自外部用户的只有 #9 |
| 组成 | 11 个 skill 加 1 个编排工作流 /anti-autoresearch,外加只依赖 Python 3 标准库的确定性核心 |
它的审计 skill 大多由 ARIS 的自查审计改写而来(例如 consistency-audit 来自 paper-claim-audit,experiment-forensics 来自 experiment-audit,citation-forensics 来自 citation-audit),只是审计对象从“自己的论文”换成了“别人投来的论文”。evidence-ledger、presentation-signals、eval-design-forensics 和 ai-style-impressions 是新增的。
它查什么:46 个诚信模式,8 个类别
跳转到“它查什么:46 个诚信模式,8 个类别”一节README(taxonomy v0.5)列出 46 个诚信模式,分为 8 类。README 自己说明,这是一套“覆盖词表”,不是经过评测的检测器清单。
| 类别 | 查什么 | 例子(README 中的模式名) |
|---|---|---|
| A 数值自洽 | 表格、正文和增量计算对不上 | HP-AGG-DRIFT:写的是“多个 seed 的均值”,实际是最好的那个 seed;HP-GRANULARITY-IMPOSSIBLE:在 500 个样本上报告 84.7%,算术上不可能(GRIM 检验) |
| B 方法与范围 | 描述的方法或范围与实际做的不一致 | HP-ABLATION-ATTRIB:把功劳归给组件 X,但每个消融都把 X 和 Y 绑在一起;HP-CAUSAL-EVIDENCE-LEAP:得出了没有任何实验检验过的因果结论 |
| C baseline 诚信 | baseline 缺失、偏弱或配置不公平 | HP-WEAK-BASELINE:新方法得到了 baseline 没有的调参和算力;HP-SIG-OVERLAP:误差棒重叠或没给 seed 就说“超过” |
| D 实验诚信(需要代码和结果,L2) | 假 ground truth、凭空的结果、代码输出与论文数字不符 | HP-SELF-NORM:分数接近 1.0 是因为除以了模型自己的最大值;HP-PLACEHOLDER-DATA:公开的代码里,支撑某个图或数字的仍是占位数据 |
| E 引用诚信 | 引用不存在、张冠李戴或已撤稿 | HP-CITE-CONTEXT:论文是真的,但它并没有说被引用来支撑的那句话;HP-CITE-RETRACTED:关键引用已撤稿却没有说明 |
| F 表面信号(上限 minor) | 版面、措辞和图上的痕迹 | HP-LLM-FIGURE、HP-PAGE-PADDING、HP-PIPELINE-ARTIFACT(正文残留 “As an AI language model” 之类的字符串) |
| G 证明与推导(L1) | 跳步、循环论证、无效推导 | HP-PROOF-OBLIGATION-GAP、HP-DERIVATION-INVALID、HP-ASSUMPTION-SMUGGLE |
| H 评测设计与有效性 | 数据泄漏、LLM 评委有利益冲突或未经验证、选择性报告 | HP-EVAL-LEAKAGE、HP-JUDGE-VALIDITY、HP-SELECTIVE-REPORTING |
README 里另外几个有代表性的例子:
HP-NUM-INFLATE:摘要写 85.3%,表 2 最高只有 84.7%。HP-DELTA-ERROR:从 73.1 到 78.0 被写成“提升 16%”,实际是 6.7%。HP-FAKE-GT(L2):拿模型输出当参考答案,再当成 ground truth 报告。HP-PHANTOM-RESULT(L2):头条数字指向一个不存在的结果文件或指标键。HP-CITE-HALLUC:DOI、arXiv 编号、会议或作者列表根本不存在。
除了这 46 个模式,还有两类不影响结论的输出:
- 13 条 AI 写作风格印象(AIS track),例如防御性的 hedge、LLM 惯用措辞、滥用列表和加粗。它们单独成节,权重为零。一篇论文可以列出很多条 AIS 印象,诚信结论仍然是
CLEAN_GIVEN_EVIDENCE。 - 2 份建议性备忘:
/adversarial-case-builder写出敌意审稿人能写出的最强拒稿段落;/novelty-duplication-advisory列出与已有工作重叠、或疑似重复发表的候选,交给人判断。
架构与流程
跳转到“架构与流程”一节输入:PDF / PDF + LaTeX / PDF + 代码仓库 + 结果文件 │ ▼ /evidence-ledger:artifact_manifest.json(含可观测级别)+ claims.json ← 确定性 │ ▼ 各审计器读同一份账本,提出带位置锚点的发现: consistency-audit · citation-forensics · baseline-comparison-audit experiment-forensics(L2)· proof-derivation-forensics(L1) eval-design-forensics · presentation-signals(上限 minor) ai-style-impressions(零权重) adversarial-case-builder · novelty-duplication-advisory(备忘,不给结论) │ ▼ tools/adjudicate_findings.py:按固定规则汇总,不调用模型 → REPORT.md + report.json ← 确定性- 导入:
/anti-autoresearch接收 arXiv 编号或 PDF,用pdftotext抽取到工作目录。 - 证据账本:
/evidence-ledger把论文转成带哈希、带位置锚点的claims.json,并确定本次运行的可观测级别。 - 审计:7 个影响结论的审计器各自提出发现,每条发现都必须引用账本里的
claim_id和原文片段。/anti-autoresearch会自动判断哪些审计器适用。 - 裁决:
tools/adjudicate_findings.py按固定规则生成REPORT.md和report.json。
可观测级别 L0–L2
跳转到“可观测级别 L0–L2”一节| 级别 | 本次运行能看到 | 能查到什么 |
|---|---|---|
| L0 | 只有 PDF | 不一致和表面痕迹。README 明说,这一级不能核对外部 ground truth,也不能运行代码,查不出所有伪造 |
| L1 | LaTeX 源码 | 另外可以审证明和推导(G 类) |
| L2 | 代码和结果文件 | 另外可以查实验诚信(D 类),比如假 ground truth、凭空的结果、代码产出与报告数字不符 |
需要更高级别才能确认的发现,会标出它需要的级别,并注明本次运行没有相应材料。README 的说法是,这样 “nothing shouts ‘fraud’ from a PDF and nothing disappears either”。它不会去执行论文的代码仓库,README 把那一步称为它拒绝做的 “L3”。
确定性裁决器:确定的是什么
跳转到“确定性裁决器:确定的是什么”一节“确定性”指的是:裁决器 tools/adjudicate_findings.py 是纯规则代码,不调用模型;输入同样的发现,总会得到同样的汇总结果。
但这不等于“最终结论里没有模型的判断”。每条发现的严重程度是 LLM 审计器提出的,裁决器在此基础上标注计算能确认什么、不能确认什么。维护者在 2026-08-10 的提交(#20)里说得很直白:站不住的说法是 “no model in the final decision”,站得住的是可复现性。从那次提交起,报告会列出审计器的每一条提议,不再由规则悄悄决定哪些“不算”。
同样从 #20 起,裁决器不再根据审计器对自己发现的评估(比如自报的误报风险、所需的观测级别)去降级,这些信息改为在报告里单独成列。按 #20 的说明,仍会改变严重程度的是两条针对“指控”本身、而不是针对论文的规则:
- 锚点检查:发现引用的原文片段如果在账本里找不到,降为
info。这类发现不会直接消失,例如原本提议为 critical 的,报告里显示为 “info (proposed critical)”。 - critical 审查:critical 级发现必须说明自己排除了哪些无害解释;数值类的还要声明基于哪些数字计算。缺了就降为
major。
其他机制:
- 反驳线程:每条保留下来的 critical 会有一个新开的反驳线程,它唯一的权力是打上 ⚠️ CONTESTED 标记,不改变严重程度,也不改变结论;报告会注明,这是同家族模型的冗余检查,不是独立验证。
- 不做自动“判无罪”:维护者曾想用精确计算器自动清除误报的 critical(比如四舍五入差异),但每个版本都被反例攻破。典型的反例是论文写“dropout 恰好 50%“而表格是 50.4%:计算器无法知道一个数是精确值还是四舍五入后的显示值。最终计算器只把完整的计算过程附给人看,什么都不自动清除(#15)。维护者的总结是,计算可以证明某个矛盾存在,但要证明矛盾不存在,就得理解数字的含义,这是解析器做不到的:“Flags can be computed; acquittals cannot.”
- 防火墙:README 说明,裁决器把 F 类表面信号硬性限制在
minor,所以它们最多只能让结论变成SOFT_FLAGS;AIS 风格印象强制为info,不计入结论和计数。两条限制都写在代码里,并有回归测试。不过,提交 #20 的说明没有把 F 类上限列为仍会改变严重程度的规则,两处说法如何对应,我们没有读代码核实。 - 覆盖门:空的发现文件不等于审完了。只要有一个影响结论的维度没能运行,论文就不能被判为 CLEAN,原本会是 CLEAN 的结论改为
REVIEW_UNAVAILABLE;已经发现的问题照样保留(2026-07-10 的提交 #13)。
报告的总体结论包括 HARD_FLAGS、SOFT_FLAGS、REVIEW_UNAVAILABLE 和 CLEAN_GIVEN_EVIDENCE 等几档。CLEAN_GIVEN_EVIDENCE 的意思是“在本次能看到的证据范围内没有发现问题”,不是“这篇论文没有问题”。
只有一小部分检查经过评测
跳转到“只有一小部分检查经过评测”一节- 确定性核心只依赖 Python 3 标准库,几秒钟就能跑完。
eval/run_eval.py在一组干净样例和人为注入缺陷的合成样例(delta 计算夸大、重复表格、夸大头条数字)上做回归测试。README 报告全部通过:7 个确定性模式的注入缺陷召回率 100%,干净样例上没有误报。- 这 7 个模式是
HP-NUM-INFLATE、HP-DELTA-ERROR、HP-DUP-TABLE、HP-GRANULARITY-IMPOSSIBLE(GRIM)、HP-VARIANCE-IMPOSSIBLE(参考 GRIMMER)、HP-STAT-INCONSISTENCY(statcheck)和HP-PIPELINE-ARTIFACT。 - 其余 39 个诚信模式是交给 LLM 层的“契约”:由跨模型审计器提出发现,再交给裁决器处理。README 明确说,它们不是经过评测的检测器(“not bundled-eval detector claims”)。
- README 开头有一句“8 个模式经过端到端 eval”,列举中包含一个写作风格类的 hedge-density 筛查;按 README “Shipped v0” 一节的说法,46 个诚信模式里经过 eval 测试的就是上面 7 个。
- 没有外部验证。README 描述的评测只有上面这组合成样例。
Claude Code 与 Codex 的角色
跳转到“Claude Code 与 Codex 的角色”一节| 组件 | 角色 |
|---|---|
| Claude Code | 运行各个 skill 和 /anti-autoresearch 工作流:导入论文、建证据账本、调度审计器 |
| Codex(GPT) | 跨模型审计器:通过 mcp__codex__codex 提出发现,最终汇总交给确定性裁决器。据 2026-07-10 的提交说明(#13),所有审计调用固定用 gpt-5.6-sol 加 xhigh,不用 ultra 档,理由是流程要串行调用很多次,而结论由裁决器承担 |
| 不接 Codex 时 | consistency-audit、presentation-signals、ai-style-impressions 还会写出 *.deterministic.findings.json,没有跨模型审稿人也能跑。只跑确定性部分时,没运行的维度会触发上面的覆盖门,结论给不出 CLEAN |
安装与运行
跳转到“安装与运行”一节git clone https://github.com/wanshuiyin/Anti-Autoresearch.git./Anti-Autoresearch/tools/install_anti_autoresearch.sh # 装到 ~/.claude/skills# 只装到某个项目:./Anti-Autoresearch/tools/install_anti_autoresearch.sh ./.claude/skills接上跨模型审稿人
跳转到“接上跨模型审稿人”一节README 原文的写法(codex-cli 0.154 起不再可用):
claude mcp add codex -- codex mcp-serverclaude mcp list替代做法:改用 ARIS 自带的 bridge。命令来自 ARIS README:先 clone ARIS 仓库、安装并登录 Codex CLI,再在 clone 所在的目录下注册:
git clone https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep.gitnpm install -g @openai/codex && codex loginclaude mcp add codex -s user -- python3 "$(pwd)/Auto-claude-code-research-in-sleep/mcp-servers/codex-exec/server.py"claude mcp list两种写法的目标都是让 Claude Code 里出现 mcp__codex__codex 这个工具。
审计一篇论文
跳转到“审计一篇论文”一节claude> /anti-autoresearch ~/papers/submission运行结束后,论文目录里会有 REPORT.md、report.json、claims.json 和每个 skill 的 *.findings.json。把代码和结果文件放在论文旁边,才能解锁 L2 检查;只有 PDF 或源码时,能查的范围按设计会受限。
只跑某一项审计
跳转到“只跑某一项审计”一节每个审计器都可以单独使用,但要先建证据账本,否则会报 NO_LEDGER 并停止:
claude> /evidence-ledger ~/papers/submission之后对同一个论文目录运行任意审计器,输出 <skill>.findings.json。单个审计器只提出发现,不给结论;要得到结论,需要把发现交给下面的裁决器。
确定性核心(离线,只需 Python 3 标准库)
跳转到“确定性核心(离线,只需 Python 3 标准库)”一节# 在干净样例和注入缺陷的样例上跑回归测试python3 eval/run_eval.pypython3 tests/test_adjudicator.py
# 手动在一篇真实论文上跑确定性主干python3 tools/build_claim_ledger.py --paper-id mypaper --latex main.tex sections/*.tex \ --observability-level 1 --out claims.jsonpython3 tools/check_numeric_consistency.py --ledger claims.json --out findings.jsonpython3 tools/adjudicate_findings.py --findings findings.json --ledger claims.json \ --paper-id mypaper --observability-level 1 --out report.json --md REPORT.md--ledger 是必填参数:一条发现如果引用不到账本里的原文片段,就会按“fail closed”的原则降为 info。
在 ARIS 里:/integrity-forensics
跳转到“在 ARIS 里:/integrity-forensics”一节2026-07-12 起(ARIS PR #357),ARIS 内置了 /integrity-forensics。它是一个固定到 Anti-Autoresearch 某个具体 commit(SHA)的轻量启动器:对你自己的论文跑一遍上面的审计(证据账本、9 个审计维度、数值核心、规则裁决),再接上 ARIS 自己的类型化关卡和只追加的待办义务账本。
什么时候跑:assurance 为 submission 时(effort 为 max 或 beast 时默认如此),/paper-writing 默认运行它;用 — self_forensics: false 显式关闭,最终报告里会记为 “Forensics: skipped (opted out)”。draft 档默认不跑,除非加上 — self_forensics: true。
结果怎么用:
| ARIS 关卡结果 | 触发条件 | 后果 |
|---|---|---|
| BLOCK | 上游给出 HARD_FLAGS 或 REVIEW_UNAVAILABLE,或者还有未关闭的 critical 义务 |
拒绝生成最终报告,原样展示上游的 REPORT.md 和待办义务 |
| WARN | SOFT_FLAGS,或有未关闭的非 critical 义务 |
可以继续,但最终报告必须列出它们,包括这次没跑到的维度 |
| NO_NEW_BLOCKER | 没有发现问题 | 只表示“没找到问题”,从不当作无罪证明 |
其他要点:
- 怎么关闭问题:只能提交带类型、带哈希的证据(
forensics_gate.py resolve),或者由人记录豁免(waive)。改写被标记的句子不算数;一条发现如果没解决就“消失”了,关卡保持关闭(UNRESOLVED_DISAPPEARANCE)。ARIS 的 skill 明确要求,不要以“让审计不再报错”为目标去改论文。 - 误报会变多:2026-08 起上游会列出审计器的每一条提议,所以待办义务会增加,其中一些你会判断为误报。ARIS 的说明是,附上理由
waive是正常的处理方式,不是最后手段。 - 观测级别:自查时如果
code/和results/都在,就能跑到 L2,比外部审稿人能做的检查更严格。 - Codex 镜像:在 ARIS 的 Codex 原生镜像里,这一功能需要手动开启,而且只跑上游的确定性部分,“can flag but never say CLEAN”。
- 首次运行会 clone 并校验固定版本的上游仓库,需要联网;README 提示先运行
bash tools/smart_update.sh --apply。 - 固定版本:上游的修复要等 ARIS 更新固定的 commit 后才会生效;ARIS 的 skill 写明,用旧固定版本得出的关卡结果需要重新审计。
人工检查点与自主模式
跳转到“人工检查点与自主模式”一节- 整个流程可以全自动运行,但输出只是建议,最终交给人类审稿人判断。
- 不给出“AI 写的”判定,也不判断是否学术不端。README 的原话是 “Forensics ≠ proof of misconduct”,输出是 “flags for a human, never an accusation”。
- 可观测级别和报告里的覆盖表会写明哪些查了、哪些没查;CONTESTED 标记提示哪些 critical 受到了反驳。
- critical 发现一律交给人判断,不会被自动清除;适用的数值类 critical 会附上计算器的完整计算过程。
成本与算力
跳转到“成本与算力”一节- 确定性核心:只用 Python 3 标准库,不用装依赖,几秒钟跑完。
- agent 层:每个审计器调用几次 Claude 和 Codex,成本没有公开。
- 它不运行论文的代码(见上文的 “L3”),所以不涉及复现实验的算力。
质量证据
跳转到“质量证据”一节证据强度:弱。只有作者在合成样例上的自测,没有独立评测,也没有外部验证。
| 证据 | 类型 | 内容 |
|---|---|---|
| eval 回归测试 | 自报 | 在干净样例和人为注入缺陷的样例(delta 夸大、重复表格、夸大头条数字)上全部通过;7 个确定性模式的注入缺陷召回率 100%,干净样例无误报 |
| 其余 39 个诚信模式 | — | 交给 LLM 层的契约,没有评测数据 |
| 独立评测或外部验证 | — | 没有找到 |
| 真实使用反馈 | — | 只有 4 个 issue,全部已关闭,其中 3 个由维护者自己开出 |
下面两项是第三方研究,能间接说明它的设计思路为什么合理,但都不是对 Anti-Autoresearch 本身的评测:
- 只看论文查不出问题(独立评测,Hidden Pitfalls,2509.08713):LLM 审计器(gemini-2.5-flash)只看论文时,判断项目有没有缺陷的准确率是 55%(F1 0.51),接近随机;加上运行日志和代码后是 82%(F1 0.81)。每类缺陷 20 个平衡样本,部分阳性样本是人工注入的。这支持它把 L2 当作最强的检查级别。
- 引用检查工具误报很多(独立评测):RefChecker 在一个测试集上把 71 条真实引用中的 36 条标为可疑。ARIS 自己的引用核查脚本也曾因 arXiv 返回 406,把 38 篇真实论文中的 47% 标成幻觉引用(ARIS PR #445,由一位用户发现,2026-09-28 修复)。所以 E 类发现一定要人工复核。
已知问题
跳转到“已知问题”一节- README 的 Codex 接线方式已过时:quickstart 仍然注册
codex mcp-server,而 codex-cli 0.154 已将其移除(据 ARIS README)。替代做法见上文,改用 ARIS 的mcp-servers/codex-exec/server.py,以codex为名注册。 - #11(2026-07-05 关闭):证据账本选“论文 PDF”时,取的是
find返回的第一个文件,可能把图片 PDF 当成论文来抽文字,之后所有审计都基于错误的文本。修复后改为确定性的选择规则;目录里只有图片类 PDF 时,如实停在“没有源文本”。 - #15(2026-07-10 关闭):试图用确定性计算自动降级误报的 critical(如四舍五入差异),每种方案都被反例攻破。结果是计算器只把计算过程记录在报告里供人参考,任何 critical 都不会被自动清除。
- 提交 #21(2026-08-10,见仓库提交记录):修复之前,离线的“仅确定性”模式只运行了 eval 所用 4 个检查器中的 2 个,GRIM、GRIMMER、方差不可能性和 statcheck 检查在这个模式下从未执行;而且即使补上缺的检查器,汇总步骤的文件匹配规则也会漏掉它们的输出。也就是说,“100% 召回”描述的是 eval harness 本身,在这次修复之前,“仅确定性”模式实际跑的检查少于 eval 测到的。
适合与不适合
跳转到“适合与不适合”一节- 作为任何 pipeline 产出的最后一道关卡,或者审稿时检查别人的论文。它针对的是数值对不上、凭空的结果、引用不支撑论断、缺 baseline、评测泄漏这类问题,目标是在人类审稿人之前发现它们。
- 需要一份带位置锚点、可复现、能逐条指给人看的问题清单。
- 已经在用 ARIS:在 submission 档下,
/paper-writing默认就会跑。
不适合
跳转到“不适合”一节- 生成或改进论文。
- 证明一篇论文是对的:它只给建议,46 个模式里只有 7 个确定性检查经过评测;没有发现问题,不等于没有问题。
- 判断论文是不是 AI 写的:它刻意不做这件事,AIS 风格印象的权重为零。
- 只有 PDF 却想查出伪造:L0 只能查不一致和表面痕迹。
- Anti-Autoresearch 是一个便宜的保险步骤。任何 pipeline 产出的论文,投稿前都值得跑一遍它(或 ARIS 的
/integrity-forensics),再由人逐条核对引用和数字。 - 它的价值主要在设计:证据账本、“模型只提议、规则来汇总”、可观测级别、不自动判无罪。
- 它的检测能力还没有被证明:只有 7 个确定性模式在作者的合成样例上测过,其余 39 个模式交给 LLM,没有外部验证。所以“没有发现问题”不能当作论文干净的证据。
下一步:怎么选 pipeline · 有证据支持的推荐流水线