证据综合与审查
你拿到了一份经核验的文献清单,每篇附关键发现摘要。你的任务是把这些碎片综合成一份有判断力的分析:不是逐篇罗列,而是按主题组织、交叉对比、呈现矛盾、给出结论。
这一步是整个调研中最决定产出质量的环节。检索找到了论文,核验确认了真实性,但"把 30 篇论文变成一份专业综述"——这个转化才是真正的工作。
RUNTIME CONTRACT(最高优先级)
SCRIPT-GATE
开始前先运行:
python scripts/workflow.py enter research-synthesis
若命令返回非 0 或 JSON 中出现 status: blocked,只按返回的 blocked / next_stage 处理,不得开始综合。
INPUT-GATE
- 若输入缺少
[SCOUT_HANDOFF],只输出:BLOCKED: NEED_SCOUT_HANDOFF - 若
[SCOUT_HANDOFF]中缺少ready_for_synthesis: yes,只输出:BLOCKED: NEED_SCOUT_REDO - 若文献清单缺少核验状态或角色标签,只输出:
BLOCKED: NEED_SCOUT_REDO - 若只拿到研究话题、没有经核验文献清单,只输出:
BLOCKED: NEED_SCOUT_REDO
EVIDENCE QUALITY GATE(综合前必过)
拿到 scout 的文献清单后,先做一轮质量筛选再开始综合。以下规则来自 ../literature-scout/references/citation-protocol.md 的"来源质量分级",在综合阶段必须强制执行:
来源质量:
- 支撑核心判断、概念定义、机制解释或反证的文献,
source_quality必须是 A 或 B。C 和 grey 级文献只能作背景线索或次要补充。 - 每条核心文献必须有
url(供文末参考文献附链接)、authority_signal(top_journal/high_citation/classic/official/core_journal 之一)和quality_basis(如 CSSCI/北大核心/SCI 分区/影响因子/被引数/顶刊顶会/经典奠基/官方来源),说明为什么可信。核心证据靠正向质量凭据放行,不靠刊名黑名单放行。 read_status为metadata_only的文献不能进入核心论证。
引用簇:
- 正文每个判断同一处引用最多 3-4 篇,优先 1-3 篇。需要 5 篇以上才能支撑的判断,拆成多个子判断,或解释这些文献之间的关系(收敛/冲突/互补/阶段推进)。
- 禁止把一长串作者-年份引用堆在句尾替代分析。删掉引用后该段只剩"某某认为、某某指出"的,属于文献解释失败,重写。
如果 scout 提供的文献清单中,某个必答 RQ 找不到足够 A/B 级核心文献(至少 3 篇),不得硬凑——在综合中如实标注该 RQ 的证据等级偏低,并在局限性中说明。
READ-GATE(开始前必须完成)
先打开:
references/synthesis-framework.mdreferences/quality-gates.mdreferences/gaps-and-directions.md
开始前必须能回答:
- 开写前的内部底账叫什么?
- Coverage / Citation 不通过时该怎么处理?
- 核心证据的来源质量和引用簇限制是什么?
- “可研究的方向”每条必须包含哪三项?
答不出,先读文件,不得开始综合。
OUTPUT CONTRACT
- Coverage / Citation 不通过时,不得输出 handoff;只输出:
BLOCKED: NEED_SCOUT_SUPPLEMENT - Angle / Taxonomy / Calibration / Weaving 未清,或自对抗审查仍有重大未解时,不得输出 handoff;只输出:
BLOCKED: NEED_SYNTHESIS_REWORK。这个 code 表示“保留当前文献清单,重做本阶段综合”,不是回退到 scout。 - 只有 6 维门禁全部 CLEAR 且自对抗审查通过时,才能在输出最前面给出:
[SYNTHESIS_HANDOFF]
read_gate: pass
gate_status: clear
ready_for_review: yes
紧随其后必须给出四类短交接包:[CLAIM_POOL]、[CITATION_POOL]、[TENSION_POOL]、[GAP_POOL]。没有这些 pool,不得交给 review-writing。
同时把同等字段写入 .workflow/synthesis_handoff.json,并运行:
python scripts/workflow.py accept research-synthesis .workflow/synthesis_handoff.json
默认必须创建 .workflow/research_visuals.json 并运行:
python scripts/research_visuals.py --input .workflow/research_visuals.json --output .workflow/figures
该命令会生成 .workflow/figures/logic_graph.whiteboard.xml(Mermaid 白板,低饱和期刊配色,节点间有向边带语义标签,节点可追溯到文献 evidence 编号)。图必须体现研究之间的脉络(各主题/流派如何推进、分化、争议),不是节点孤立指向中心的放射图,因此 research_visuals.json 必须包含 edges(详见下文"核心逻辑图"节)。不生成 PNG,不生成旧的研究发展脉络图。不得以"文献不足以支撑逻辑图"为由自行跳过;即使文献集中在少数主题,仍用核心问题与现有主题之间的真实关系组织脉络。只有用户明确允许"本次不生成图"时,才可创建 .workflow/logic_graph_skip.json。
反朴素管线:先分配证据,再写
朴素做法是"读完所有论文,然后自由写一段综述,最后在合适的地方插入引用"。不要这样做。 这种做法的引用往往是事后贴上去的装饰,极易张冠李戴或编造。
正确做法:
- 先确定主题分组
- 把每篇论文的关键发现分配到对应主题
- 每个主题拿到一组固定文献,综合时只从这组里写,不越界引用
- 写完后检查:正文每条 claim 是否都能追溯到分配给该主题的文献
这一步的载体是一张 Source × Theme 文献矩阵(内部脚手架,不打印):把"哪篇支撑哪个主题、哪里收敛、哪里空格"摊成一张底账,再动笔。矩阵怎么建、收敛汇总怎么读见 references/synthesis-framework.md 的"证据映射:文献矩阵"。
三步法
第一步:引文抽取
对每篇论文抽取直接回答研究简报的关键信息:
- 核心发现:一两句话概括
- 方法特征:用了什么方法?和其他论文的区别?
- 适用条件:发现在什么条件下成立?已知局限?
- 角色标签:沿用 literature-scout 标好的角色(奠基 / 代表路线 / 最新进展 / benchmark / 局限证据 等)——写不同章节时按角色调用,如"不足讨论"优先取局限证据类。
- 与其他论文的关系:支持、挑战、还是扩展了谁?
不相关的论文在这一步整篇丢弃。
抽取原料:摘要层 vs 全文精读
引文抽取的质量,取决于你手上有这篇论文的多少内容。分两个层次:
- 摘要层(默认,可批量):只有标题、摘要、关键词等元数据。适合给整份清单铺覆盖面。此时抽取的"核心发现"是基于摘要的概括,不得补写摘要里没有的具体实验设置、精确数字或消融结果——那属于编造(见
../literature-scout/references/citation-protocol.md的 PAYWALL 原则)。 - 全文精读层(对核心文献,做得深):拿到论文的完整正文后,抽取可以落到真实细节——具体方法、实验设置、精确指标、消融、作者自陈的局限。写这几篇时才能给出准确到原文的方法与数字,而不是泛化的摘要转述。
什么时候升到全文精读:不是每篇都精读(代价高)。挑奠基作、被反复引用的核心工作、以及综述里要重点展开或用于矛盾对比的关键论文做全文精读;其余留在摘要层即可。典型是"摘要层铺广 + 少数几篇精读做深"。
全文从哪来(关键边界):全文精读依赖一份解析好的论文全文——通常是用外部 PDF 解析工具(如 MinerU 等)把 PDF 转成干净的 markdown 正文(含公式、表格、图注)。
- 本 skill 不自带 PDF 解析能力。全文来源有二:① 用户/协作者提供已解析好的全文(如 MinerU 导出的
.md);② 运行环境挂载了可用的解析或全文抓取工具。 - 两者都没有时,如实退回摘要层,不要假装读过全文、更不能凭记忆补细节。
- 用浏览器能打开的网页正文(如 HTML 版论文、预印本页面)也可作全文来源,但对 PDF(尤其付费或扫描版)的公式、表格解析质量有限,能解析到什么程度就用到什么程度。
精读后仍要核验:全文里读到的具体数字、结论同样要与论文本身一致;解析工具可能出错(表格错位、公式乱码),关键数字存疑时回到原文或降级引述。
第二步:主题聚类 + MECE taxonomy
按研究问题或方法流派聚类,不按论文。大纲每个节点标记:
- 呈现方式:paragraph(多篇论文的细致综合)还是 table(并排对比)
- 分配的文献:这个节点引用哪几篇
MECE 原则:分类轴互斥且完备。空格 = gap = finding。一个好的 taxonomy 不只是分了类,还能通过空格揭示这个领域的盲区。
跨分类的论文(属于多个类别的)要识别出来——它们往往是最有洞见的,正是因为它们挑战了分类轴本身。
第三步:逐节串行合成
按大纲顺序一节一节写。每节输入 = 研究简报 + 分配的文献 + 已写好的前面几节。
串行而非并行。并行写各节会导致内容重复、风格不一、节间无过渡。
每个主题章节的思维骨架
写每个主题章节前,先过这条论证链——编号骨架不打印,但每一环都必须在主题章节正文里展开落地,而不是过一遍就写成一段浓缩概览:
- 这个主题的 claim 是什么? 不是"覆盖了哪些工作",而是"这些工作放在一起告诉我们什么"。
- 最强的正面证据? 哪几篇最直接支持?独立来源的收敛比单一来源更有力。
- 反面证据或限定条件? 哪些工作与 claim 矛盾或限制其适用范围?
- 方法/条件差异怎么解释分歧? 数据集?样本量?指标?时间窗口?
- 和其他主题什么关系? 支持、挑战、还是补充?
自检:写完后删掉所有引用,剩下的还是一篇有判断的分析(不是事实罗列),说明论证链是通的。
主题章节是结果层的论述主体:外围节(核心结论、研究范围、文献多维地图、研究视角、争议、方向、局限)负责导航与索引,主题章节负责实质论证,其深度应明显重于任一外围节。主题章节与核心结论、研究视角、核心逻辑图同源一致、逻辑扣合(各主题分点即研究视角的分类轴与核心逻辑图的证据节点,其 claim 即对应的核心结论),这条逻辑链不变;要防的只是把这套骨架换个说法复述一遍而不加实质论证的空心化。逐环展开时,第②环(机制 / 路线)对"机制解释型"主题尤其关键——要讲清"通过什么中介、在什么边界条件下起作用"的作用路径,不能只给"存在正向影响"这类结论标签就收尾。深度随主题实际证据量自适应,不设字数或占比红线;证据稀疏时如实短写并标注 gap,不硬凑。
交叉对比写法
这是综述和网页摘要的核心区别。 人写的综述 citation 互联密度 0.14,GPT 直出只有 0.02。差距在于:人会在同一句子里比较两三篇论文,AI 倾向于逐篇孤立总结。
操作规则:文献充足、该段承担实质分析时,优先让每个主题段落至少有一个句子同时引用并对比两篇以上论文——一个本可比较的段落却只引一篇,它更像论文摘要而非综述。但不强行凑比较:若该段只承担问题界定、章节过渡,或该主题本身只有 1-2 篇关键文献,可以不做对比,别为了达标写出生硬的拼凑句。
详细的正反面写法示例见 references/synthesis-framework.md。
矛盾呈现
文献间的矛盾是综述最有价值的内容之一。不要平均掉。
如果 A 说 X 有效、B 说 X 无效:
- 明确摆出双方发现
- 分析条件差异(数据集?指标?设置?样本量?)
- 如果能判断,给倾向("在 Z 条件下,B 的证据更有说服力")
- 如果不能判断,如实说"目前证据不足以判断"
自对抗审查
综合完成后,做一轮自我质疑(详见 references/self-adversarial.md):
- 如果重新开始,研究简报会变吗?(检查 frame-lock)
- 有没有未审视的前提假设?(如默认"准确率=更好")
- 结论是被证据支撑的,还是被选择性引用构造的?(检查 confirmation bias)
- 哪个视角被系统性遗漏了?(学科、地域、方法、批判视角)
发现问题 → 修正 claim 或补充限定,不要为走流程硬造自我批评。若这轮自对抗之后仍有重大未解,不得输出 [SYNTHESIS_HANDOFF],只返回 BLOCKED: NEED_SYNTHESIS_REWORK。
6 维内部门禁
综合过程中用 6 个维度做检查(详见 references/quality-gates.md)。这些不对外呈现,是内部质量保证:
- Angle:有判断角度还是只在罗列?(CRITICAL → 回 Step 0 重炼 angle)
- Coverage:关键工作都覆盖了吗?(MAJOR → 通过 OrganizeAgent 回调 literature-scout 补搜)
- Citation:引用真实、引述准确?(CRITICAL → 通过 OrganizeAgent 回调 literature-scout 核验)
- Taxonomy:按主题不按论文?MECE?(MAJOR → 本阶段重设分类轴)
- Calibration:判断强度 ≤ 证据强度?(MAJOR → 本阶段按 hedge-calibration 调措辞)
- Weaving:句内交叉对比?(MAJOR → 本阶段按 synthesis-framework 重写)
产出
综合完成后,产出结构化的综合分析,包含:
- 核心结论(3-7 条 claim,内部 evidence-first 推导,呈现时翻转成 conclusion-first)
- 总体判断一句话
六、主题章节及其下按主题组织的分主题分析(每个### (一)[主题名]有 claim + 本节文献索引 + 正反证据 + 对比表 + 小结;若为满足output_scope新增分主题,后续(二)(三)...序号自动顺延)- 争议与开放问题
- 可研究的方向
- 局限性
争议、开放问题、可研究的方向这三节同源,都是对暴露的缺口做提炼——方法见 references/gaps-and-directions.md(如何从矛盾、taxonomy 空格、视角遗漏中提炼,并把缺口翻译成可下手的选题)。
这是"文献调研结果层":结论先行、分主题、带脚手架(导航段、六、主题章节、本节文献索引、小结),帮读者看清地图。这一层就是本阶段的完整产出——不在这里再写一版连续成文的"完整文献综述参考稿",那是下游 review-writing 的职责(成稿参考层)。本阶段只需保证判断、争议、引用都齐备且可追溯,供成稿阶段忠实转写。
交给 review-writing 的内部输出,最前面必须是一个短交接包:
[SYNTHESIS_HANDOFF]
read_gate: pass
gate_status: clear
ready_for_review: yes
[CLAIM_POOL]
- 核心判断 1 ...
[CITATION_POOL]
- 张三等(2021);Smith et al.(2020)
[TENSION_POOL]
- 争议 / 反证 / 条件差异 ...
[GAP_POOL]
- 开放问题 / 局限 / 可研究方向来源 ...
并创建 .workflow/synthesis_handoff.json:
{
"stage": "research-synthesis",
"read_gate": "pass",
"gate_status": "clear",
"ready_for_review": "yes",
"claim_pool": ["核心判断 1"],
"citation_pool": ["张三等(2021)", "Smith et al.(2020)"],
"tension_pool": ["争议 / 反证 / 条件差异"],
"gap_pool": ["开放问题 / 局限 / 可研究方向来源"]
}
创建后运行:
python scripts/workflow.py accept research-synthesis .workflow/synthesis_handoff.json
然后再接结构化综合正文。若 6 维门禁未清、自对抗未过,或四类 pool 不齐,不得输出这个交接包。
这份产出随后交给 review-writing 成稿为连续综述正文,两者共同构成主 SKILL.md 呈现阶段的双层交付。
文献多维地图(主题级摘要表)
文献多维地图不再输出“文献 × 主题”的稀疏矩阵,也不再生成 SVG / whiteboard。内部仍可使用 Source × Theme 文献矩阵做底账,但最终交付给用户的表格必须压缩成一张主题级摘要表,让读者一眼看到“哪些主题文献多、哪些主题有争议、哪些主题明显稀疏”。
表格必须满足:
- 表头固定为 5 列:
主题、支持文献数、代表文献、争议 / 反对、研究空白 / 后续价值。 - 主题列:建议写成
A. 主题名、B. 主题名这种形式,按支持文献数或主题重要性排序。 - 支持文献数:写成
N 篇;必要时可补一句短注,如5 篇(含 1 篇综述),但核心必须是数量而不是主观评级。 - 代表文献:列 2-5 个关键编号,如
[1][3][5];不要把所有编号全部堆进去。 - 争议 / 反对:一句短话,说明是否存在直接冲突、反对证据或边界条件。
- 研究空白 / 后续价值:一句短话,说明当前明显缺口或为什么值得继续做。
- 表后说明:再用一行纯文字总结整体分布,例如“证据主要集中在整体效应和调节因素,公平效应明显稀疏。”
- 红线:不要保留“证据强度”“置信度”这类主观打分列;不要再输出几十行的文献稀疏矩阵;不要把表格退化成只有“主题 + 文献数”的极简统计表。
模板:
| 主题 | 支持文献数 | 代表文献 | 争议 / 反对 | 研究空白 / 后续价值 |
|---|---:|---|---|---|
| A. 整体效应 | 13 篇 | [1][2][3][4] | 基本无重大争议,但异质性来源仍未完全解释 | 缺少长期追踪和跨场景比较 |
| B. 调节因素 | 10 篇 | [3][5][6] | 不同样本和实施条件下结论波动较大 | 需要更细的情境分层 |
| C. 公平效应 | 1 篇 | [15] | 目前尚无稳定反对证据,但样本过少 | 是明显研究空白 |
不要再创建 .workflow/literature_map.json,不要运行 research_literature_map.py,不要在飞书文档里为文献地图插入 <whiteboard>。
核心逻辑图(Python 生成)
这张图必须画出研究之间的脉络——各主题/流派如何一步步推进、扩展、分化、争议,而不是把一堆证据节点各自孤立地指向中心问题(那种放射图信息量极低,等于没画)。因此 research_visuals.json 除了节点,必须给出 edges:用节点到节点的有向边表达它们之间的关系。
默认必须创建 .workflow/research_visuals.json,字段如下:
{
"logic_title": "核心逻辑图标题",
"core_question": "核心研究问题或机制",
"nodes": [
{"id": "M1", "label": "主题/流派标签", "evidence": ["R1", "R3"]},
{"id": "M2", "label": "另一主题/流派", "evidence": ["R5"]}
],
"edges": [
{"source": "core", "target": "M1", "relation": "引出"},
{"source": "M1", "target": "M2", "relation": "扩展"},
{"source": "M2", "target": "M1", "relation": "反驳"}
]
}
nodes:每个节点是一个主题/研究流派/机制路径(不是单篇论文),label给流派名,evidence列该流派对应的已核验文献编号(如["R1","R3"]),编号会嵌进节点标签保证可追溯。edges:脉络的核心。source/target用节点id(或core指中心问题),relation说明二者关系。至少要有节点到节点的边(不能只有core→各节点的边,那又退化成放射图)。relation枚举:引出、支持、反驳、限定、扩展、沿用、分化、融合、补充。- 节点和边都必须来自已核验文献和综合分析里真实存在的关系,不得凭记忆编造脉络;两个流派之间若文献里没有明确的启发/争议/扩展关系,就不要硬连边。
- 若某方向文献稀疏、确实连不成脉络,可如实减少节点,但仍需用中心问题与现有主题之间的关系组织,不允许以"文献不足"为由跳过整张图(除非用户明确允许本次不生成图)。
nodes/edges 是强制字段名;脚本不再接受无 edges 的旧式放射图输入。缺少 edges、没有有效边,或只有 core→各节点 而没有节点到节点的脉络边,都会直接失败。
生成命令:
python scripts/research_visuals.py --input .workflow/research_visuals.json --output .workflow/figures
该命令生成:
.workflow/figures/logic_graph.whiteboard.xml
生成的 Mermaid 白板放在最终报告的"四、研究视角与本文结构"之后、"六、主题章节"之前;若生成飞书云文档,使用 <whiteboard type="mermaid">...</whiteboard> 插入。不生成 PNG,不生成旧的研究发展脉络图。不要用 docs +media-insert 把图当普通 image 上传。
模型自供知识的边界
- 基础背景(公认事实)→ 直接使用
- 具体方法细节、数据、发现 → 必须来自文献清单或已解析的论文全文,不从记忆补充
- 不确定的背景 → 用
scholar_search确认后再用,或标[待确认] - 时间先后 / 新旧 / 因果次序("A 使能 B""最新""目前最好")→ 从文献年份核对,不凭语感。核不了就 hedge 或不写,方法见
../../references/hedge-calibration.md的"时间完整性"。