下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-vc3t81nj--cite-hallucination-check-moways.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-vc3t81nj/cite-hallucination-check-moways。引用幻觉核查——把报告/PPT/Word/PDF 里的每一条引用与事实出处逐条核验,判定真实可溯/编造拼凑/无法核实等五类,按严重度出红旗清单。基于 GPTZero 五阶段管线方法论。
阅读全文 (展开查看完整说明)
概述
引用幻觉核查(cite-hallucination-check)
一句话定位
把"标【实证】前必核源真实存在"这条反幻觉纪律,做成一条确定性核查管线:逐条引用 → 找真实出处 → 六组件比对 → 按规则判五类 → 出按严重度排序的红旗清单。
KPMG 翻车(45 条引用 40 条编造,2025-10 报告被撤)就是没跑这道关。本 skill 是这道关。
核心原则(不可豁免)
- 证据,不是神谕。本 skill 给的是"这条引用大概率有问题"的证据,不是终审判决。
每条红旗都要给出"最相似的真实来源 + 哪个组件对不上 + 一句话理由",让人能复核。
- 宁可漏判,不可错杀。把一条真引用误判成"编造"的代价很高(冤枉作者/甲方)。
检索要尽量穷尽(本地源 + 联网)才下"编造"结论;查不到就走"无法核实"而非"编造"。
- 联网取源是默认动作。每条可核引用都要真去 WebSearch/WebFetch 或 Bash grep 本地源文件找原始出处,
禁止凭记忆判断某来源"应该存在"。查不到证据时显式三选一:停-问 / 停-降 / 停-删。
五阶段管线
Stage 1 · 检测与解析
用脚本 scripts/cite_check.py extract <文件> 从 docx / pdf / md / 纯文本中自动抽引用。也可以对用户直接粘贴的文本,在本 Agent 里调用 extract_text() 逻辑手动抽取。
- docx:读正文脚注、尾注、参考文献区、正文内
[source: ...]标注。 - pdf:用 Bash 调用 pdfplumber 抽文字,注意脚注与超链接还原;扫描件先 OCR。
- md / txt:正则抓
[source: 文件名:页/段]、【实证】… (URL)、脚注、参考文献列表。
每条引用解析为六组件(咨询语境映射):
| 组件 | 学术原义 | 咨询语境对应 |
|---|---|---|
| 标题 Title | 论文/书名 | 文件名 / 报告名 / 政策名 / 新闻标题 |
| 作者 Authors | 作者 | 发文机关 / 出品方 / 作者 / 受访人 |
| 出版方 Publisher | 期刊/出版社 | 发布平台 / 媒体 / 数据库 / 部委 |
| 日期 Date | 出版年 | 发文日期 / 文号年份 / 数据年份 |
| URL | 链接 | 链接 |
| DOI | DOI | 政策文号 / 档案号 / 标准号(如 GB/T…) |
Stage 2 · 三路分诊
每条引用先分诊,只让"可核"的消耗检索资源:
- 可形式化核验:有结构化组件(标题+作者/机关等)。→ 进 Stage 3。
- 需推理:缺结构、或指向公认常识源(如"国家统计局公开数据""《宪法》")。→ 用语义判断。
- 不可核:设计上无法核验——"同上""内部访谈纪要(未公开)""与某领导座谈""甲方内部数据"。→ 直接判
无法核实,退出管线,不算编造。
Stage 3 · 多源检索(默认主动联网)
对"可核"引用,按三路并行找候选真实来源,再合并排名:
- 本地源比对:用 Bash grep 用户提供的 raw 源文件 / 知识库 wiki / 客户切片。
- 权威库/接口:政府网站、巨潮/年报库、国家标准全文库、官方统计公报、可信媒体。
- 联网检索:用 WebSearch 工具用标题+机关+年份做定向搜索;用 WebFetch 工具打开候选核对。
合规红线:涉甲方真实名称/未公开数据的引用,本地比对即可,不要把客户机密词送进 WebSearch。
Stage 4 · 上下文感知的组件比对
把原引用 vs 每个候选来源,逐组件打标。六组件,每对一个标签:match(对上)/ partial(部分对)/ not match(对不上)/ unknown(缺该组件);作者组件额外支持 weak match(弱对上)。
关键:不能只比字符串。要结合语义——"十四五规划纲要" vs "国民经济和社会发展第十四个五年规划纲要" 应判 match(同一文件简称);"2024 年中国 X 行业白皮书" vs "2023 年中国 X 行业白皮书" 一字之差但 not match(不同年份不同文件)。
Stage 5 · 确定性 taxonomy 判定
组件分三层(诊断价值递减):
- Tier 1(关键):作者/机关、标题
- Tier 2(强标识):URL / DOI / 文号 / 标准号
- Tier 3(辅助):出版方/平台、日期
五分类规则(确定性,由脚本执行):
- 真实可溯 exist:(a) 作者与标题都 match;或 (b) 标题 match 且一方缺作者且至少一个 Tier2 match;或 (c) 公认极著名来源。
- 真实但有小错 exist-minor:满足 exist,但有 Tier1-3 组件 not/partial;或一个 Tier1 match + 一个 Tier1 partial + 至少一个 Tier2 match + 无 not match。→ 来源真实,但引用需更正。
- 编造拼凑 fake:(a) 作者或标题 not match;或 (b) 作者 weak match 且 Tier2 对不上/全 unknown 且出版方 not match;或 (c) 只有一个 URL 且链接坏/空页。
- 无法核实 unknown:来源声明就不可公开核验;或信息太少(仅单组件);或"同上"等。
- 存疑 unsure:不满足以上任何一类的兜底。
配套脚本
位于 scripts/cite_check.py(安装路径:~/.workbuddy/skills/cite-hallucination-check/scripts/cite_check.py)。
典型链路
# 1. 从文件抽取引用(需 python-docx/pdfplumber,md/txt 无依赖)
python scripts/cite_check.py extract 报告.docx > c.json
# 2. 确定性核验(URL存活/DOI/国标/巨潮年报,并发+缓存)
python scripts/cite_check.py verify c.json [--workers 8] [--no-cache] > c2.json
# 3. Claude 回填 Stage 3-4 的语义组件标签(见下文说明)
# 3.5 回填检查点(守门员:标签有效性/完整性/红旗证据/字段矛盾)
python scripts/cite_check.py checkpoint c2.json
# → PASS(0 错误)才能进 classify;FAIL 须修复后重跑
# 4. 生成报告
python scripts/cite_check.py classify c2.json > 报告.md
python scripts/cite_check.py classify c2.json --html > 报告.html
# 5. 改逻辑后必跑回归
python scripts/cite_check.py selftest依赖安装
python -m pip install python-docx pdfplumberStage 3-4 由 Claude 完成(WorkBuddy 侧)
verify 只负责确定性部分(死链/CrossRef/国标/巨潮)。剩余的语义比对由本 Agent 完成:
- 对每条
triage=verifiable的引用,用 WebSearch 工具检索真实来源(标题+机关+年份组合词)。 - 用 WebFetch 工具打开候选 URL 核对全文。
- 按六组件逐一打标(match/partial/not/weak/unknown),回填到 JSON 的
components字段。 - 填写
best_source(最相似的真实来源名称或 URL)和note(一句话理由)。
回填检查点(checkpoint)
Claude 回填完组件标签后、进入 classify 前,跑 checkpoint 子命令验证 JSON 质量。有 ERROR 时禁止 classify——否则会静默产出错误报告。
| 检查项 | 级别 | 规则 |
|---|---|---|
| 标签值有效性 | ERROR | 组件标签必须在 {match, partial, not, weak, unknown} 内 |
| 回填完整性 | ERROR | 可核引用的 6 个组件不能全为 unknown(回填未覆盖) |
| 红旗证据 | ERROR | 预判 fake/exist-minor 的条目必须有 best_source |
| 字段矛盾 | ERROR | broken_url_only=True 时 url 组件必须为 not |
| 薄回填 | WARN | 可核引用仅 ≤1 个组件有标签 |
| 红旗理由 | WARN | 预判 fake/exist-minor 但 note 为空 |
| 证据缺失 | WARN | 组件有 not/partial/weak 但 note 没提 |
| 不可核原因 | WARN | non-checkable 但 note 为空 |
| 著名矛盾 | WARN | famous=True 但 authors 和 title 均 not |
| 噪声疑似 | WARN | raw 文本 <6 字符 |
verify 覆盖范围
| 类型 | 判断逻辑 | 输出 |
|---|---|---|
| URL 存活 | HTTP 状态码/body 长度 | url=not(触发 fake 路径) |
| DOI | CrossRef API | doi=not |
| 国标号 | 国家标准全文公开系统(版本快照锁死) | doi=match 或 doi=not |
| A股年报 | 巨潮(简称→全称映射表补召回) | publisher=match |
assets 文件
assets/company-aliases.json:A股简称→全称,可自行扩充。assets/gb-page-snapshot.json:国标库页面版本快照,selftest 据此锁死判别逻辑。
若 openstd 改版导致断言失败,需重抓真实/空结果页切片更新此文件。
assets/sample-redflags.html:示例报告卡。
输出
一张按严重度排序的红旗清单(fake > exist-minor > unsure > unknown > exist):
每条含:引用原文 / 判定类 / 最相似的真实来源 / 对不上的组件 / 一句话理由 / 建议动作。末尾给统计:N 条引用 → 真实 X / 小错 Y / 编造 Z / 无法核实 W / 存疑 V,编造率 Z/N。
挂接博维纪律:判 fake 的引用,对应正文论断必须停-删或停-降为【估算】+推算路径;判 exist-minor 的,更正组件后保留【实证】+ 修正 source;判 unknown 的,改为方法论描述或补料。
不做什么
- 不做错别字/语病/政治校对/排版 →
plan-proofread - 不做行业数据采集 →
industry-research - 不做去 AI 味改写 →
stop-slop-zh - 不判某段文字"是不是 AI 写的";本 skill 只核引用真实性。
安全边界
- 不送客户机密进联网搜索。涉甲方真实名称/未公开数据的引用,只在本地 grep 核验,不送 WebSearch。
- 宁可漏判,不可错杀。把一条真引用误判成"编造"代价很高——检索穷尽后才下"编造"结论;查不到走"无法核实"而非"编造"。
- 证据不是终审。每条红旗给出最相似来源 + 对不上的组件 + 一句话理由,人工复核后再删/改正文。
- verify 保守原则:网络失败/不确定一律 unknown,绝不凭一次失败误判 absent/not。
已知边界
exist-minor类机检 recall 偏低(原方法实测约 45%),凡判此类务必人工再核。- verify 保守原则:网络失败/不确定一律 unknown,绝不凭一次失败误判 absent/not。
- 涉甲方真实名称的引用,只在本地 grep,不送 WebSearch。