| name | claim-verification |
| description | 把一份分析报告、手稿草稿或结论段落拆成原子陈述,逐条打到权威数据库与文献核验,并标注每条的支持/反驳/无证据状态。当用户要求核查结论、验证结果、检查引用是否属实、审阅手稿的事实性、或问"这些数字可靠吗"时使用。也在提交前的最后一道自查时使用。 |
| allowed-tools | Read, Write, Grep, Glob, Bash(python -m provenance.*), mcp__pubmed__*, mcp__ot__*, mcp__chembl__*, mcp__c-trials__*, mcp__consensus__*, mcp__biorxiv__*, mcp__kg__*, mcp__codex__*, Agent(stats-auditor, bio-critic) |
| model | opus |
| effort | xhigh |
claim → 库核验
为什么这个 skill 值得花 xhigh effort
带核验与不带核验的差距是可量化的:GeneAgent 的 SelfVeri-Agent 把每条陈述
提取出来打到 18 个策展数据库(4 个 web API),富集术语的精确匹配率
从 56% 提升到 80.7%;在 15,848 条被核验的陈述中,84% 得到支持、8% 被反驳;
人工复查 132 个核验决定,92% 正确。
最重要的一条警示,放在最前面
对陈述的验证 ≠ 对执行的验证。
Kosmos 为每一条陈述都给出了指向代码或文献的引用,独立科学家评判的
陈述准确率仍只有 79.4%。也就是说:一条陈述"有引用、读着对、格式规范"
可以同时是错的。
所以本 skill 的第 3 档必须包含独立重算,不能只做"读着像对"。
只做前两档就宣称已验证,是这个流程里最容易犯的错。
三档并行
第 1 档 —— 确定性检查(先做,最便宜)
- 每个数值断言能否在
RUN_LEDGER.jsonl 找到对应执行记录?
(.claude/hooks/no_fabrication_exit.py 已强制,这里做二次确认并出报告)
- 引用的 accession 是否真实存在?
GSE\d+ / SRR\d+ / PRJ[EDN][A-Z]\d+ /
phs\d{6} 逐个解析。幻觉出来的 accession 是高频失败模式。
- DOI 是否解析?作者-年份-期刊三者是否与 DOI 元数据一致?
(引用错配比引用不存在更难发现)
- 统计量内部是否自洽?n、df、p、CI 能否互相推出?
交给
Agent(stats-auditor)。
第 2 档 —— 陈述 → 权威库
拆成原子陈述(一条陈述 = 一个可独立判真假的命题),逐条路由:
| 陈述类型 | 路由到 |
|---|
| 基因-疾病关联 | mcp__ot__*(Open Targets,CC0,26.06 版本活跃) |
| 化合物-靶点活性 | mcp__chembl__* |
| 临床试验存在性/结果 | mcp__c-trials__* |
| 文献主张 | mcp__pubmed__* + mcp__consensus__* + mcp__biorxiv__* |
| 机制/通路 | mcp__kg__*(只查 asserted 命名空间) |
每条陈述输出四态之一:supported / refuted / no-evidence / out-of-scope。
"no-evidence" 不等于 "refuted",也不等于 "可以保留" —— 它意味着
这条陈述在正文中必须降级为推测性表述,或删除。
门槛:整份文档的 supported 比例 ≥ 90% 才放行(G_V)。
参考 Kosmos 的 79.4% —— 那是有引用的情况下的上限,所以阈值必须高于它。
第 3 档 —— 异构独立重算 + 对抗反驳
用不同的模型家族,理由是错误模式不相关。调 mcp__codex__codex:
任务:不要评价下面的分析,而是独立重新计算它的关键统计量。
输入:{run_dir}/results/ 下的原始输出文件 + {pipeline}
要求:
1. 用你自己的实现重算:{列出 3–5 个关键量}
2. 报告你的值与原值的相对偏差
3. 若偏差 > 1%,指出最可能的原因
4. 另外:试图反驳主结论。默认立场是"结论不成立",需要证据说服你。
输出 JSON:{recomputed, values, max_relative_delta, refutations[]}
偏差判读:
- > 1% 必须解释来源。 注意有些非确定性来自工具本身而非代码 ——
已发表结果显示结构变异 caller 在打乱但等价的输入上产生
3.5–25.0% 不同的 call set。这类偏差要在 Methods 里显式披露量级,
不要抹平。
- 反驳必须逐条书面回应。未回应的反驳直接卡门。
输出
results/verification_report.md:
# 核验报告
陈述总数 N / supported X (x%) / refuted Y / no-evidence Z
## 必须修改(refuted)
- [陈述原文] → [反驳证据 + 来源 URL] → [建议改法]
## 必须降级(no-evidence)
- [陈述原文] → [已查库与查询词] → [建议改成推测性表述或删除]
## 独立重算对照
| 量 | 原值 | 重算值 | 相对偏差 | 判读 |
## 未回应的反驳
(此节非空则 G_V 门不通过)
同时把逐条结果写成 results/claims.jsonl,供 provenance/agent_run_crate.py
装入 crate —— 核验记录本身也是 provenance 的一部分。
一个容易漏的合规检查
若数据涉及 All of Us:扫描所有表格,1–20 的参与者计数必须抑制
(0 允许),且不得发布能反推出被抑制计数的边际和或差值。
.claude/hooks/suppress_small_counts.py 会自动拦,但这里应主动检查一遍
——包括图形中的点数和图注里的 n。