开源的多智能体事实核查系统

用可追溯证据,
核查互联网传闻

TruthForge 会把一条传闻拆成可验证的主张,从登记在 source manifest 中的本地快照开始检索,检查来源与时间线,再由红队复核结论和引用。整个过程有明确调用上限,最终报告可回溯到具体来源、证据与本地快照。

TruthForge input: 直接输入传闻
● processing / traceable

核查:网传手机整夜充电一定会爆炸,是真的吗?

正在检索、登记并校验可引用证据。
系统优先使用 manifest 登记的本地快照;证据不足时,再在上限内调用搜索和内容提取。

  • claim 把原始传闻拆成可验证的具体主张 done
  • evidence 检索来源、保存快照并登记证据 traced
  • red_team 检查遗漏条件、证据缺口和过度绝对的表述 reviewed
  • verdict 校验引用、证据登记与快照哈希后生成报告 guarded

项目能力 / capabilities

TruthForge 主要做什么

TruthForge 把事实核查拆成多个环节,并用来源快照、证据登记和引用校验,限制模型能够写进最终报告的内容。

claim

把一条复杂传闻拆成若干可验证、可反驳的具体主张,并设置处理优先级。

evidence / RAG-first

先查 source manifest 登记、哈希可校验的本地来源快照;证据不够时,再在调用上限内补充搜索和正文提取。

review

检查来源可信度、发布时间和相互矛盾之处,避免把有条件成立的事实写成绝对结论。

red_team

专门挑出遗漏条件、证据缺口和措辞问题;需要时返回前序步骤修改,但不会无限循环。

工作流程 / workflow

从传闻到核查报告

完整流程由 LangGraph 编排。项目同时保留 single_agent 基线,方便比较完整多智能体流程带来的实际改进。

  1. 01 initialize

    读取运行配置、来源清单和本次任务状态。

    start
  2. 02 claim decomposition

    把原始传闻拆成可分别核查的具体主张。

    claim
  3. 03 case-memory recall

    启用案例记忆时,查找相似历史案例,供后续检索参考。

    optional
  4. 04 bounded evidence loop

    先检索 source manifest 登记的本地快照;仍有证据缺口时,再按上限调用缓存搜索或实时搜索,并保存联网正文快照。

    bounded
  5. 05 credibility → timeline → contradiction

    评估来源可信度,核对时间线,再检查证据之间是否存在事实或表述冲突。

    review
  6. 06 verdict → red team

    先形成初步结论,再由红队检查证据缺口、遗漏条件和不准确表述。

    challenge
  7. 07 explanation → citation validation

    生成解释并逐项检查引用;首次失败只允许修复一次,仍不合格的相关主张会降级为“缺乏证据”。

    repair once
  8. 08 formatter → memory commit

    整理为最终报告;启用案例记忆时,把本次案例写入长期存储。

    complete

检索次数、联网调用和红队修订次数都由配置限定。达到上限后,系统会根据现有证据给出结论;证据不足的部分会明确标注,不会继续无休止地重试。

证据规则 / evidence

什么内容可以写进结论

搜索结果摘要、模型记忆或没有登记来源的内容,都不能单独支撑确定性判断。只有通过证据登记和引用校验的内容,才能进入最终报告。

EvidenceRegistry

每条候选证据都要记录它对应的主张、原始来源、获取工具和提取方式,方便之后复查。

  • 受控语料通过 source manifest 登记,并对应一份可校验哈希的本地快照。
  • 联网检索到的内容必须先提取正文并保存为快照,之后才能作为候选证据。
  • 来源、证据 ID 和有效状态会一直保留到最终报告。

CitationGuard

最终报告只能引用已登记、状态有效且快照哈希一致的证据。

  • 引用校验失败时,系统只允许 Explanation Agent 修复一次。
  • 修复后仍不通过,相关主张会降级为“缺乏证据”,不会保留无效引用。
  • 只有搜索摘要、没有正文快照的结果,不能单独支撑确定性结论。

运行与复现 / reproduce

全量联网复现

完整运行需要两类独立凭据:OpenAI-compatible 模型服务用于 Agent 推理,Tavily 用于实时网页搜索。复制 .env.example 后仅在本地填写占位字段;不要提交、压缩或公开 .env

3.11 Python 版本
2 必需凭据类型
11 受控来源快照
8 协作 Agent
$ conda env create -f environment.yml
$ conda activate truthforge
$ cp .env.example .env
$ conda run -n truthforge python scripts/init_data.py
# .env:真实模型与实时搜索缺一不可
OPENAI_API_KEY=your_llm_key
OPENAI_BASE_URL=https://your-llm-endpoint/v1
TRUTHFORGE_MODEL_PROVIDER=openai_compatible
TRUTHFORGE_MODEL_NAME=your_model_name
TRUTHFORGE_SEARCH_MODE=live
TRUTHFORGE_SEARCH_PROVIDER=tavily
TAVILY_API_KEY=your_tavily_key
$ conda run -n truthforge python main.py \
  --query "待核查的互联网传闻" \
  --search-mode live

# 或启动 Streamlit 工作台
$ conda run -n truthforge streamlit run app.py

[!]Evidence Agent 始终先检索受控 RAG;现有证据不足时才调用 Tavily、提取网页正文、保存快照并登记证据。要确认真实联网链路,请使用未被本地快照覆盖的传闻,并在运行记录中检查 web_searchtext_extract、来源快照与 Citation Guard 状态。

示例输出 / demo

一次核查会输出什么

报告会保留原始输入、判断结果、理由和引用关系。需要复核时,可以继续追到具体证据和来源快照。

输入
手机整夜充电一定会爆炸
结论
表述具有误导性
说明
大多数正规手机和充电器都有充电管理与安全保护,整夜充电并不等于一定会爆炸。使用劣质配件、电池已经受损或处于高温环境时,风险会增加,但这只能说明存在条件性风险,不能支持“一定爆炸”的说法。