关于 paper-claim-audit
paper-claim-audit 是面向研究写作的技能,用于核对论文中的数字是否与原始结果一致。它让无先验上下文的独立审阅者比对论文源文件和证据,并生成机器可读与人类可读的审计报告。
主要功能
- 01以全新零上下文审阅
- 02比对论文主张与原始结果
- 03生成 JSON 和 Markdown 报告
- 04判定数值不符与舍入差异
- 05可选生成 HTML 报告
适用场景
- 01投稿前核验报告指标
- 02论文修改后重新检查数字
- 03为改进流程标记不符主张
MCP 相关
使用可选的外部审阅路由;文档中的 Codex 后端通过 Codex MCP 在全新线程中审阅。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill paper-claim-audit安装后在 Claude Code 中输入/paper-claim-audit确认已加载。
详细介绍
论文声明审计:零上下文证据核验
每次评审前,请遵循可选评审者: 通过规范的辅助解析器解析调用 →
.aris/reviewer.json→ Claude Code 默认设置(Codex MCP), 使用reviewer_route.py,并保留此评审环节的层级、新鲜上下文、源文件/图像输入及确定性门控条件。 下方的 Codex 示例/固定配置仅适用于backend=codex;其他路由使用各自的首次调用/回复约定。保存路由和实际返回的身份; 不可用的选择标记为REVIEW_UNAVAILABLE。根据实际的系列/完成状态/范围对验收进行分类。 将调用中的评审者/模型/effort 覆盖项传递给包含评审者的子任务。生成工作进程保持不变。
🔒 请勿将此技能封装在
/loop、/schedule或CronCreate中。 它负责作出判定——由一个刻意设置为零上下文的新鲜评审者判断论文与证据是否一致。按墙上时钟定时重复作出判定不会带来新信号(只有论文或结果发生变化时,判定才会改变)。请安排它之前的外部等待——论文草稿就绪 → 然后审计一次。参见shared-references/external-cadence.md。
核验论文中的每项声明是否与以下原始证据相符:$ARGUMENTS
存在原因
执行者既编写实验,也撰写论文。它“知道”结果应该是什么。这会造成确认偏误:
- 将 84.7% 四舍五入成 85.3%
- 报告最佳种子,而非平均值
- 引用来自不同实验配置的指标
- 声称“提升了 15%”,但实际差值为 12.8%
没有任何先验上下文的新鲜评审者能够发现这些问题,因为它没有预期,只会比较论文文本与原始文件。
与其他审计技能的区别
| 技能 | 回答的问题 |
|---|---|
/experiment-audit | 实验代码是否诚实?(伪造 GT、归一化造假) |
/result-to-claim | 数据是否从科学角度支持此声明? |
/paper-claim-audit | 论文是否如实、准确地报告了数据? |
核心原则
零上下文、新鲜评审者。 审计者仅接收:
- 论文
.tex文件(声明) - 原始结果文件(证据)
它不会接收:
- ❌ EXPERIMENT_LOG.md
- ❌ EXPERIMENT_TRACKER.md
- ❌ AUTO_REVIEW.md
- ❌ NARRATIVE_REPORT.md
- ❌ 任何执行者摘要或解读
- ❌ 任何先前审计结果
- ❌ 任何对话历史
这比评审者独立性要求更严格——这是零上下文证据审计。
工作流
第 1 步:收集文件(执行者 — Claude)
定位论文和结果文件,但不要阅读或解读它们。
论文文件(声明)——所示路径相对于 shell 的工作目录,以便使用 ls 查找;将路径写入
audited_input_hashes 时,请使用相对于论文目录的路径(不带 paper/
前缀),详见下文“提交产物生成”一节:
paper/main.tex # → hash key: main.tex
paper/sections/*.tex # → hash key: sections/*.tex
paper/tables/*.tex (if separate) # → hash key: tables/*.tex
结果文件(证据):
results/*.json, results/*.jsonl, results/*.csv, results/*.tsv
outputs/*.json, outputs/*.csv
wandb-summary.json (if exists)
**/metrics.json, **/eval_results.json
**/config.yaml, **/args.json (experiment configs)
排除项(不得包含摘要或解读):
EXPERIMENT_LOG.md, EXPERIMENT_TRACKER.md, AUTO_REVIEW*.md
NARRATIVE_REPORT.md, PAPER_PLAN.md, findings.md
Any .md file that is an executor-written summary
第 2 步:新鲜评审者审计(GPT-6-Astra — 新线程,无回复)
重要:使用 mcp__codex__codex(新线程),绝不可使用 mcp__codex__codex-reply。 每次运行都必须使用全新上下文。
首先解析此评审环节;以下示例适用于
backend=codex。
mcp__codex__codex:
model: gpt-6-astra
config: {"model_reasoning_effort": "ultra"}
prompt: |
You are a paper-to-evidence auditor. You have ZERO prior context about
this research. You will receive only paper source files and raw result
files. Your job is to verify that every number in the paper exactly
matches the raw evidence.
Paper files to read:
[list .tex file paths]
Result files to read:
[list .json/.csv/.yaml file paths]
## Audit Protocol
### A. Extract Every Quantitative Claim
For each number, percentage, comparison, or scope statement in the paper:
- Location (section, table, caption, or inline text)
- Exact claim text
- The number or comparison being made
### B. Trace Each Claim to Evidence
For each extracted claim, find the supporting raw data:
- Which result file contains this number?
- What is the EXACT value in that file?
- Match status: exact_match / rounding_ok / mismatch
### C. Check These Specific Failure Modes
1. **Number inflation**: Paper says 85.3%, raw file says 84.7%
Rule: only standard rounding to displayed precision is allowed
2. **Best-seed cherry-pick**: Paper says "achieves 90.2%" but
that's the best of 5 seeds; mean is 87.1%
Rule: check if paper specifies "average" / "best" / "median"
3. **Config mismatch**: Paper compares Method A vs Baseline B,
but they used different hyperparameters / datasets / splits
Rule: verify config files show same settings for compared methods
4. **Aggregation mismatch**: Paper says "average over 5 seeds"
but result files show only 3 runs
Rule: count actual runs vs claimed count
5. **Delta error**: Paper says "improves by 15%" but
actual delta is (85.3 - 73.1) / 73.1 = 16.7%
Rule: verify arithmetic of all relative improvements
6. **Caption-table mismatch**: Figure caption describes
something different from what the figure/table actually shows
Rule: cross-check every caption against its content
7. **Scope overclaim**: Paper says "consistently outperforms"
but only tested on 2 datasets
Rule: check if language matches actual evaluation scope
## Output Format (per claim)
For each claim, report:
- claim_id: sequential number
- location: section/table/figure
- paper_text: exact quote from paper
- paper_value: the number claimed
- evidence_file: which raw file
- evidence_value: the actual number
- status: exact_match | rounding_ok | ambiguous_mapping |
missing_evidence | config_mismatch | aggregation_mismatch |
number_mismatch | scope_overclaim | unsupported_claim
- details: explanation if not exact_match
Overall verdict: PASS | WARN | FAIL
第 3 步:撰写报告(执行者 — Claude)
解析评审者的回复并编写 PAPER_CLAIM_AUDIT.md:
# Paper Claim Audit Report
**Date**: [today]
**Auditor**: GPT-6-Astra ultra (fresh zero-context thread)
**Paper**: [paper title from tex]
## Overall Verdict: [PASS | WARN | FAIL]
## Claims Verified: [N total]
- exact_match: [count]
- rounding_ok: [count]
- ambiguous_mapping: [count]
- missing_evidence: [count]
- mismatch: [count]
## Issues Found
### [FAIL/WARN] Claim #N: [description]
- **Location**: Section X / Table Y / Figure Z
- **Paper says**: "..."
- **Evidence shows**: ...
- **Status**: [status]
- **Fix**: [specific correction needed]
## All Claims (detailed)
| # | Location | Paper Value | Evidence Value | Status |
|---|----------|-------------|---------------|--------|
| 1 | Table 2 | 85.3% | 85.28% | rounding_ok |
| 2 | Abstract | "15% improvement" | 12.8% | number_mismatch |
| ... |
另请编写供机器读取的 PAPER_CLAIM_AUDIT.json。
第 4 步:打印摘要
📋 Paper Claim Audit Complete
Claims verified: 24
exact_match: 18
rounding_ok: 3
ambiguous: 1
⚠️ mismatch: 2
Overall: ⚠️ WARN
See PAPER_CLAIM_AUDIT.md for details.
运行时机
/paper-write之后——改进循环前的首次检查/auto-paper-improvement-loop之后——若改进循环更改了数值,则重新检查- 提交前——最终核验
与其他技能集成
由 /auto-paper-improvement-loop 读取(如果存在)
if PAPER_CLAIM_AUDIT.json exists:
read mismatched claims
fix them as priority items in the improvement round
建议性检查,不阻塞流程
与 /experiment-audit 使用相同模式:
PASS→ 正常继续WARN→ 打印警告,继续,并将草稿标记为“提交前检查数字”FAIL→ 打印提醒,继续,但不要标记为可提交
渲染 HTML 视图(自动;当 RENDER_HTML = true 时,默认启用)
写入 paper/PAPER_CLAIM_AUDIT.md 和 paper/PAPER_CLAIM_AUDIT.json 后,对审计报告调用 /render-html,为用户提供清晰易读的 HTML 视图,展示判定结果及各项声明的细分情况:
/render-html "paper/PAPER_CLAIM_AUDIT.md" --json "paper/PAPER_CLAIM_AUDIT.json"
使用完整 Codex 审查门禁(审计类产物——渲染保真度检查符合该技能现有的零上下文跨模型审计不变量)。输出写入 paper/PAPER_CLAIM_AUDIT.html,其中嵌入源文件 SHA256,并附带包含渲染判定结果的 .review.json 旁文件。
不阻塞流程:如果 /render-html 失败(缺少辅助工具、Codex MCP 不可用、文件写入错误),记录失败并将技能视为已完成——JSON 和 MD 判定文件是权威输出;HTML 视图仅为方便人工阅读而提供。
如果项目的 CLAUDE.md 中设置了 RENDER_HTML = false,或传入 — render html: false,则跳过。
关键规则
- **每次运行都使用全新线程。**绝不使用
codex-reply。不得沿用上下文。 - **执行者不得作出任何解读。**只提供文件路径,不提供摘要。
- **仅使用原始结果。**不使用 EXPERIMENT_LOG、AUTO_REVIEW 或人工摘要。
- **舍入规则。**只能按显示精度进行常规舍入。84.7% → 84.7% 或 85% 均可。84.7% → 85.3% 不可。
- **跨模型。**审查者必须与执行者使用不同的模型系列。
审查追踪
每次调用 mcp__codex__codex 或 mcp__codex__codex-reply 审查者后,按照 shared-references/review-tracing.md 保存追踪记录(Policy C — forensic;绝不可静默跳过)。使用 save_trace.sh(根据 shared-references/integration-contract.md §2 中的调用链解析),或直接将文件写入 .aris/traces/<skill>/<date>_run<NN>/。遵守 --- trace: 参数(默认值:full)。
提交产物生成
无论调用方或检测器的结果如何,此技能始终都会写入 paper/PAPER_CLAIM_AUDIT.json。如果检测器判定论文没有数值声明,则此次运行输出判定结果 NOT_APPLICABLE;如果论文包含数值声明但没有原始结果,则输出 BLOCKED。禁止静默跳过——paper-writing Phase 6 和 verify_paper_audits.sh 都依赖此产物存在于可预测的路径。
该产物符合 shared-references/assurance-contract.md 中的架构:
{
"audit_skill": "paper-claim-audit",
"verdict": "PASS | WARN | FAIL | NOT_APPLICABLE | BLOCKED | ERROR",
"reason_code": "all_numbers_match | rounding_drift | missing_raw_results | ...",
"summary": "One-line human-readable verdict summary.",
"audited_input_hashes": {
"main.tex": "sha256:...",
"sections/5.evidence.tex": "sha256:...",
"/abs/path/to/results/run_2026_04_19.json": "sha256:..."
},
"trace_path": ".aris/traces/paper-claim-audit/<date>_run<NN>/",
"thread_id": "<codex mcp thread id>",
"reviewer_model": "<resolved — the model that actually ran (target: gpt-6-astra)>",
"reviewer_reasoning": "<resolved — the effort that actually ran (target: ultra)>",
"generated_at": "<UTC ISO-8601>",
"details": {
"total_claims": <int>,
"mismatches": [ ... per-claim issue records ... ],
"result_files": [ ... raw files consulted ... ]
}
}
audited_input_hashes 范围
对传入本次审计调用的声明输入集进行哈希处理,即本次运行读取的确切 .tex 文件及原始结果/配置文件,而非整个仓库的文件集合,也不是审查者自行报告的子集。如果调用方只传入 main.tex 和单个结果文件,则只对这两个文件进行哈希处理,不包括其他文件。外部验证器会重新计算这些条目的哈希值;任何不匹配都会标记为 STALE。
路径约定(必须与 verify_paper_audits.sh 的预期一致):对于论文目录内的文件,键必须是相对于论文目录的路径(即传给验证器的参数),因此应为 main.tex,而不是 paper/main.tex;对于论文目录外的文件(例如外部 results/ 目录中的文件),则使用绝对路径。验证器通过 os.path.join(paper_dir, key) 解析相对路径条目;添加 paper/ 前缀会导致路径变成 paper/paper/main.tex,从而错误地判定为 STALE。
判定决策表
| 输入状态 | 判定 | reason_code 示例 |
|---|---|---|
| 未在论文中检测到数值声明 | NOT_APPLICABLE | no_numeric_claims |
| 检测到数值声明,但未找到原始结果文件 | BLOCKED | no_raw_evidence |
| 所有声明均与原始数据一致 | PASS | all_numbers_match |
| 仅存在轻微舍入偏差,无实质性不匹配 | WARN | rounding_drift |
| 存在任何实质性不匹配(数字错误、配置不匹配) | FAIL | claim_mismatch |
| 审查者调用失败(网络错误 / 格式错误) | ERROR | reviewer_error |
线程独立性
每次调用都使用一个全新的 mcp__codex__codex 线程。绝不使用
codex-reply。不要将先前的审计输出(PROOF_AUDIT、CITATION_AUDIT、
EXPERIMENT_LOG、AUTO_REVIEW 摘要)作为本次审计的输入——全新
线程可根据 shared-references/reviewer-independence.md 确保审查者保持独立。
面向读者的配套文档
paper/PAPER_CLAIM_AUDIT.md 与 JSON 一同生成,供读者查阅。
对于 verify_paper_audits.sh,JSON 是权威数据;Markdown
则供人工阅读。父技能(paper-writing Phase 6)与验证器
共同决定该判定是否会阻止最终定稿——本技能本身绝不会阻止定稿,只会生成结果。