2026-07-09 | 数据:results/r3f9(10 题 × 2 方案,逐题同批配对) 结论先行:F9.1 与 B3 报告质量打平,但”报告里的话能被原始网页印证”的比例 显著更高(0.48 → 0.57),代价是每题多花约三分之一时间。生产默认已切换为 F9.1。
此前的实验已经确定:给裸 agent 加一段研究协议提示词(B3)是性价比最高的增强, 外挂的验收机器不加分。但引用核查(fact 指标)暴露了 B3 的短板:它写的报告里, 约一半的事实句在它自己引用的网页上找不到完整依据。逐句诊断发现主因是 “打包句”——一句话塞进好几个事实、共享句尾一个链接,其中任何一个事实不在 那个网页上,整句就无法被印证。
F9 系列就是针对这个短板的写作方式改造。F9 首版有效但伤了报告的覆盖面, F9.1 是降低了执行负担的修正版。本报告回答:F9.1 相对 B3,质量有没有损失? 可信度提升有多少?值不值得换?
两个方案的基座完全相同:同一个 agent(Claude Code 无头模式)、同一个执行模型、 同一套搜索工具、同一段研究协议提示词(要求列任务清单、拟大纲、交叉信源、 按”数据点/多方对比/机制解释/批判评估”四要素写作、写完自检)。 唯一差别是协议里”怎么引用来源”那一条——这是刻意设计的单变量对比, 分数差异只能来自引用方式本身。
协议只要求”重要论断标注来源 URL”。agent 自己决定怎么标。 实测它每一批的格式都在变:有时正文里直接贴链接,有时用脚注,这一批干脆用了 “正文标 [11]、文末列参考文献”的学术格式。写作时 agent 凭检索时的记忆下笔, 没有任何机制约束”这句话是否真的来自那个网页”。
写作前多一道”登记”工序,把话和出处机械地绑在一起:
登记:研究照常做(协议明说”覆盖广度优先,登记不得挤占检索”)。 写某一章之前,把该章要引用的证据批量登记进一个 evidence.jsonl 文件, 每条 = 编号 + 网址 + 从网页原文逐字复制的一段话(不许改写、概括):
{"id": "E3", "url": "https://…", "quote": "2025年全球固态电池出货量约5-6GWh"}
标注:只有”关键事实论断”(具体数字、日期、金额、排名、点名主体的 事实、直接引语)必须在句末标编号,如”……出货量约 5-6 GWh[E3]。” 一句只承载一条证据的事实;背景叙述和 agent 自己的分析不用标。 论断的措辞强度不得超过摘录原文(原文说”计划”,不得写成”已经”)。
机械收尾(代码完成,非 AI):交卷后程序把 [E3] 替换成真实链接; 另跑一个纯代码审计——把每条登记的”逐字摘录”拿去和网页原文做字符串 比对,验证摘录没有被编造。这一步不用 AI 判断,查得又快又硬。
没有任何”写完退回重改”的环节:两个方案都是一稿交卷,保证对比干净。
10 道中文深度研究题(产业分析/政策对比/行业评估),每道题 F9.1 和 B3 在同一天交错执行。这样做的原因是此前吃过亏:同一套系统隔天重跑, 分数会漂 ±0.25,不同天跑出来的两个方案没法公平比。本次每道题的两份报告 都出自同一天,比较时只看”同题两份报告的差”,不看混合平均分。
尺子一:报告质量(裁判盲评)。 由另一档更强的模型(claude-opus-4-8) 当裁判,匿名乱序看报告,按全面性/深度/指令遵循/可读性四个维度打分(0-10), 每份报告独立打 3 次取中位数。裁判不知道报告出自哪个方案。
尺子二:引用可核实性(fact-v2)。 回答”报告里的话,在它引用的网页上 真的存在吗”:程序解析报告里所有”论断句 + 引用链接”对,先把每句拆成 一个个独立的小事实(避免打包句一损俱损),再抓取被引网页原文,逐个小事实 判断”网页内容支不支持这句话”。汇报的主指标是小事实级支持率—— 全部小事实里有多少能在被引网页上找到依据。这把尺子锚在真实网页内容上, 不依赖裁判的主观打分。
两把尺子都做逐题配对比较,报 bootstrap 95% 置信区间。同时对照我们实测过的 两个噪声底线:同系统隔天重跑方差 ~0.25、裁判措辞噪声 ~0.11——小于噪声的 差异一律不当结论。
| 题 | 裁判分 B3 | F9.1 | Δ | 可核实率 B3 | F9.1 | Δ |
|---|---|---|---|---|---|---|
| q01 固态电池 | 9.25 | 9.00 | −0.25 | 0.38 | 0.65 | +0.28 |
| q02 推理框架 | 9.12 | 9.12 | 0 | 0.48 | 0.50 | +0.03 |
| q03 | 8.75 | 8.88 | +0.13 | 0.41 | 0.48 | +0.07 |
| q04 | 8.75 | 8.38 | −0.37 | 0.66 | 0.75 | +0.09 |
| q05 CBDC | 9.00 | 9.12 | +0.12 | 0.33 | 0.40 | +0.07 |
| q06 | 9.00 | 9.00 | 0 | 0.46 | 0.46 | −0.00 |
| q07 | 8.75 | 8.62 | −0.13 | 0.57 | 0.60 | +0.02 |
| q08 | 9.00 | 9.00 | 0 | 0.65 | 0.70 | +0.05 |
| q09 垂直农业 | 8.88 | 9.00 | +0.12 | 0.49 | 0.56 | +0.07 |
| q10 | 9.00 | 9.00 | 0 | 0.54 | 0.58 | +0.04 |
| 维度 | B3 | F9.1 | 配对比较 |
|---|---|---|---|
| 裁判 overall | 8.95 | 8.91 | 均差 −0.04,CI [−0.14, +0.05],3胜4平3负 → 无差异 |
| 可核实率(小事实级) | 0.48 | 0.57 | 均差 +0.071,CI [+0.035, +0.123],9胜1平0负 → 显著 |
| 整句全部成立的比例 | 0.12 | 0.17 | F9.1 更高 |
| 小事实总量(信息密度) | 1083 | 1179 | 持平略高——提升不是靠少说 |
| 每题平均耗时 | 664s | 884s | F9.1 +33% |
F9.1 对 B3 是一次没有质量代价的可信度升级:报告读起来一样好 (裁判分无差异),但”说的话经得起对原文查证”的比例显著提高,信息量不减, 还多了一份可机械回溯的证据台账。代价只有每题多 ~3.5 分钟(+33%)。
生产建议:默认方案由 B3 切换为 F9.1。追求极限可信度的场景可用 F9 (全量登记版:可核实率再 +0.15,但报告覆盖面和深度会付出约 0.3 分), 追求最快出稿仍可用 B3。
eval/run.py --compare / --fact --v2,
产物在 results/r3f9/(报告、trace、scores.json、fact2.json 齐全可复查)。