mcpField
F
fact-checker

fact-checker

github.com/moonlight-lupin生产力113142 次安装今天更新
代码仓库

关于 fact-checker

Fact Checker 是一次核验一条事实主张的工作流和脚本集。它帮助研究者和 Agent 收集支持与反驳证据,评估来源独立性和时效性,并生成带引用的结论报告。

主要功能

  1. 01将主张整理为搜索查询
  2. 02收集支持与反驳的段落
  3. 03评估来源独立性和时效性
  4. 04生成带引用的核验报告
  5. 05提供分级置信度结论

适用场景

  1. 01发布前核查统计数据
  2. 02验证日期、引述或关系
  3. 03复核 Agent 报告中的关键主张
  4. 04检查引用来源的独立性和时效性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moonlight-lupin/agent-skills --skill fact-checker

安装后在 Claude Code 中输入/fact-checker确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
confidence-rubric.md
source-independence.md
scripts/
verify.py
templates/
verification-report.md
tests/
test_verify.py

详细介绍

事实核查

概述

事实核查是一种有针对性的验证工作流,每次只处理一项事实断言。之所以需要它,是因为 Agent 经常会给出听起来合理、但可能是幻觉、摘自薄弱来源、与后续数据矛盾,或因新的报道而过时的说法。常规研究可以收集有用的背景信息,却仍无法回答这个具体问题:现有来源是否支持、反驳或已使这项具体说法过时,或者无法验证?

使用此技能,可将一项说法转化为结构化搜索查询,从多个相互独立的来源中收集支持和反驳的段落,评估来源的独立性和时效性,然后生成一份简洁的核查报告,附上引用并给出审慎的结论。

快速开始

在此技能目录中:

python scripts/verify.py structure --claim "Singapore's GDP grew 4.1% in 2025"

或使用兼容性快捷方式:

python scripts/verify.py --claim "Singapore's GDP grew 4.1% in 2025"

使用网页搜索工具和网页提取工具收集来源段落后,生成报告:

python scripts/verify.py report \
  --claim claim.json \
  --sources sources.json \
  --output verification-report.md

完成标准:报告须给出结论、列出所有引用来源、指出存在的矛盾,并附上来源独立性说明。

适用场景

  • 在发布、发送或采信之前,核实一项事实说法。
  • 检查某项统计数据、事件、关系、引语或日期是否有来源支持。
  • 逐项核实 Agent 撰写的段落中影响最大的说法,以进行交叉核查。
  • 审查引用的说法,评估来源的独立性和时效性。

不适用场景

  • 广泛的主题研究或文献综述 → 使用深度研究工作流。
  • 完整的实体背景档案 → 使用实体研究工作流。
  • 引用数据库管理 → 使用来源追踪工作流。
  • 宣传、偏见或意图分析 → 此技能仅核实事实依据。
  • 实时市场、天气、紧急情况、法律、医疗或监管判定 → 使用权威的实时系统并由人工审查。

5 阶段流程

1. 解析说法

将断言提取为结构化对象:

  • 说法文本 — 要核实的准确措辞。
  • 说法类型 — 统计数据、事件、关系、引语或日期。
  • 关键词 — 实体、指标、数值、年份、日期和具有辨识度的名词。
  • 时间范围 — 若有,注明明确的年份或日期范围。
  • 实体 / 指标 / 数值 — 若可识别。
  • 搜索查询 — 3-5 条有针对性的搜索查询。

命令:

python scripts/verify.py structure --claim "Singapore's GDP grew 4.1% in 2025" > claim.json

完成标准:JSON 中包含足够的词语,无需依赖记忆即可搜索这项说法。

2. 搜索

在不同来源类别中运行 3-5 条有针对性的搜索。组合使用:

  • 一手 / 官方来源查询:监管机构、统计机构、公司文件、法院文件、政府公告。
  • 独立新闻 / 报告查询:信誉良好的媒体或分析师报告。
  • 矛盾查询:添加 not、revised、correction、dispute 等词,或替代数值 / 日期。
  • 时效性查询:若说法涉及特定时间范围,则添加 latest、当前年份、revised、updated 或 final。

不要将同一新闻稿的多个转载版本视为独立证据。

完成标准:搜索集合中至少包含一条可能找到矛盾或更新数据的查询,而不只是用于确认说法的查询。

3. 提取

对于每个候选来源,提取一段简短文字,直接确认、反驳或补充说明该说法。将来源存储为 JSON:

[
  {
    "url": "https://example.org/report",
    "title": "Example Report",
    "passage": "The economy grew 4.1% in 2025...",
    "stance": "confirm",
    "source_type": "official",
    "accessed_at": "2026-07-06"
  }
]

stance 的取值:

  • confirm — 直接支持该说法。
  • refute — 直接反驳该说法。
  • nuance — 部分支持、附加限定或改变其适用范围。

完成标准:每个来源都包含 URL、标题、引用段落、立场、来源类型和访问日期。

4. 交叉核查

在做出判断前,评估以下四个方面:

  1. 来源独立性 — 根域不同是一个起点,但还不够。请检查各来源是否依赖同一篇新闻稿、新闻发布稿、文件或数据集。
  2. 一致性 — 分别统计支持、反驳和补充说明的来源。
  3. 矛盾 — 如果可信来源意见不一,请附上引用并呈现双方观点。
  4. 时效性 — 如果主张涉及某一时间段,请检查是否有后续修订、最终数据、重述或更新后的文件。

使用 URL 评估辅助工具:

python scripts/verify.py assess --urls "https://a.example/report,https://b.example/story,https://c.example/data"

完成标准:最终报告说明证据是否真正独立且具有时效性。

5. 结论

生成报告:

python scripts/verify.py report --claim claim.json --sources sources.json --output report.md

结论是一个置信度标签,而非真相判定器。报告应说明收集到的证据支持什么、存在哪些冲突,以及还有哪些未知事项。

完成标准:结论符合以下标准,且报告包含引用、矛盾、备注和核查日期。

置信度标准

结论适用情形最低证据要求
✅ 已核实多个相互独立的可靠来源直接支持该主张,且未发现可信的相反证据。至少 2 个相互独立的支持来源、数据具有时效性,且没有可信的反驳来源。
⚠️ 可能属实有一个权威来源支持该主张,或有有限的佐证,且未发现矛盾。1 个官方/学术/报告来源,或 1 个强来源加上较弱的佐证。
⚖️ 存在争议可靠来源对该主张意见不一。至少 1 个支持来源和 1 个反驳来源,且两者都明显相关。
❓ 未核实没有可靠来源直接支持该主张。没有可靠来源、只有较弱/不相关的提及,或来源未涉及该断言。
📅 已过时该主张似乎在较早的数据版本中属实,但更新的数据与之矛盾或已取代旧数据。较早来源予以确认,且较新来源与之矛盾或已修订。
不得臆造规则

如果没有找到来源,结论应为 未核实,绝不能标为 false。快速搜索中缺少证据并不能证明该主张为假。请说明搜索了什么、没有找到什么,以及得出更有力结论还需要哪些信息。

过时信息检测

如果主张提及年份、季度、事件日期、文件期或特定的数据发布版本:

  • 搜索 revised、final、updated、restated、latest 和当前年份。
  • 优先采用最新的官方数据版本,而非较早的初步报道。
  • 如果较早来源予以确认,但较新来源与之矛盾,且新来源取代了旧来源,则应使用 已过时,而非 存在争议。
呈现矛盾

来源意见不一时,请呈现双方观点。不要悄然选择符合预期答案的一方。请解释措辞、范围、单位、日期和数据版本之间的差异。

声明类型

声明类型检测线索验证方法最佳来源
统计数据数字、百分比、货币、比率、排名查找原始数据集或发布内容;核实单位、时间段、地理范围和修订情况。统计机构、申报文件、官方数据门户、经审计的报告。
事件收购、推出、宣布、辞职、获胜、提交、批准确认事件是否发生、日期、相关方和状态;若是宣布而非完成,还要查看后续信息。新闻稿、申报文件、监管机构通知、信誉良好的新闻来源。
关系is CEO of、belongs to、owned by、subsidiary of、partnered with核实当前关系及生效日期;查看关系是否发生变化。公司页面、申报文件、登记资料、官方简介、信誉良好的个人资料页面。
引述引号、said、wrote、according to查找原始文字记录、文件或音频;核实确切措辞和说话者。文字记录、演讲、访谈、一手文件。
日期明确的年份或日期、founded in、launched on、as of核实确切日期,以及它是开始、宣布、完成、发布还是生效日期。官方时间线、申报文件、一手文件、附有引文的百科全书式参考资料。

来源独立性规则

来源数量不等于证据数量。三篇都引用同一份新闻稿的文章,只算作一个来源源头,而非三项独立佐证。

只有当来源来自不同组织,且看起来是独立获取或核实了该事实时,才将它们视为相互独立。比较根域是一个实用的初步方法,但还要检查:

  • 多个网站是否使用相同署名或通讯社稿件。
  • 措辞和发布时间戳是否相同。
  • 是否有 according to the company、according to a press release 或 reported by Reuters 等明确表述。
  • 汇总页面是否只是概述另一家媒体的内容。
  • 多篇文章是否重复使用官方数据;此时数据集才是主要来源。

如有疑问,应保守计数并说明限制。

集成

  • 深度研究工作流——在发布长篇报告前核实关键声明。对最重要的统计数据、日期和可能引发争议的断言运行此技能。
  • 来源跟踪器——记录验证报告中使用的每个来源,并添加主题标签和备注,以便重复使用引文。
  • 实体研究——在将实体特定的声明纳入档案前进行核实,例如所有权、领导层、注册状态、不利媒体报道中的断言以及制裁名单相关信号。

常见陷阱

  1. 将二手来源当作独立来源。 多篇文章可能重复引用同一来源。追溯到原始来源。
  2. 确认偏误。 仅包含所声称数值的查询往往只会找到支持性内容。至少要运行一次用于查找矛盾或修订信息的查询。
  3. 在没有证据的情况下判定为 false。 搜索无结果意味着尚未核实,除非有可靠来源直接驳斥该声明。
  4. 忽视时效性。 初步数据、过时的简介以及已宣布但尚未完成的事件往往会变得陈旧。
  5. 范围不匹配。 来源可能支持一项相似的声明,但涉及的国家、时间段、单位、分母或实体不同。
  6. 引述洗白。 不要根据引述汇编来核实引述;应找到原始文字记录、视频、演讲或文件。
  7. 过分看重域名数量。 不同域名仍可能发布相同的转载文章或新闻稿。

核验清单

  • 引述的主张准确无误,且范围仅限一项断言。
  • 尽可能提取主张类型、关键术语、时间段、实体、指标和值。
  • 搜索涵盖官方/一手来源、独立二手来源、矛盾信息和时效性查询。
  • 每个来源均记录 URL、标题、段落、立场、来源类型和访问日期。
  • 除根域名外,也检查了来源是否相互独立。
  • 分别统计了支持、反驳和补充说明的来源。
  • 引用来源,明确指出矛盾之处。
  • 对有时限的主张,检查了时效性和数据版本。
  • 结论符合置信度标准。
  • 未将任何缺乏证据支持的主张提升到超出证据所能支持的程度。

此技能不是什么

  • 不是通用研究引擎。
  • 不是宣传、偏见或意图检测器。
  • 不是实时数据源。
  • 不能替代官方数据库、专业判断、法律建议、医疗建议或领域专家。
  • 本身不具权威性;它会生成带引用的核验报告,供他人审阅。

文件

  • scripts/verify.py — 基于规则的主张结构化、URL 独立性评估和 Markdown 报告生成。
  • references/confidence-rubric.md — 详细的结论标准、边缘情况和示例。
  • references/source-independence.md — 来源起源和转载规则。
  • templates/verification-report.md — CLI 输出使用的报告模板。
  • tests/test_verify.py — 覆盖解析、报告生成和独立性评估的 pytest 测试。

评论

支持 Markdown