| name | structural-integrity-scan |
| description | Use when an article compares multiple entities (companies, approaches, strategies) in parallel and you suspect the comparison may be artificial, unequal, or evidence-driven by narrative rather than fact. Symptoms include "A took route X, B took route Y, C took route Z" structures, one entity credited with a feature others quietly share, comparing a specific tactic against a strategic principle, or conclusions that exist to make the story prettier. |
结构完整性扫描
概述
并列对比是深度叙事的基本结构,也是最容易引入隐性错误的地方。这个工具扫描四类结构性问题,帮助写作者在"叙事合理"和"逻辑准确"之间找到对齐点。
核心原则: 叙事对称不等于逻辑准确。文章的结构应该从事实归纳出来,而不是为了讲故事的需要反向填充。
四类问题定义
1. 伪分类(Pseudo-Classification)
定义: 并列呈现的几条"路线",在更高一层抽象上其实是同一件事的不同实例。
检测问题: X、Y、Z 在高一级抽象上是否共享同一个底层策略?
症状:
- 文章给三家公司各贴了一个标签("外部记忆" / "环境结构" / "流程约束"),但这三个标签其实描述的是同一个底层动作
- 文章自己说"其实三家做的是同一件事",但上一段却说"三条不同的路"
- 读者看完后无法说出这三条路的本质区别,只能复述标签
正确写法:
先确认共享的底层策略,再在同一策略内部比较各家的侧重点、精细度或实现差异。
❌ "A 走外部记忆路线,B 走环境结构路线,C 走流程约束路线——三种哲学。"
✅ "三家都在做同一件事:把可靠性从 agent 内部转移到外部持久化存储。
区别在于各自选择了哪一层作为锚点:A 锚定记忆层,B 锚定代码仓库,C 锚定任务协议。"
2. 虚假独占(False Exclusivity)
定义: 某个特征或策略被归给一家,但其他家也在做同样或功能等价的事情。
检测问题: 文章说"X 是 A 的特色做法"——B 和 C 有没有功能等价的实现?
症状:
- "A 独创了外部记忆机制",但 B 的做法在功能上完全等价,只是用了不同名词
- 文章把一家的具体操作名称当作独有特征,而非把该功能当作共享策略的一个实例
- 某个判断("只有 A 完成了从加到拆的完整周期")依赖的是文档记录行为,而不是工程现实
正确写法:
如果多家共享某策略,就明确说这是行业共识;如果有真正的差异,聚焦在那个差异上。
3. 抽象层级滑移(Abstraction Level Drift)
定义: 并列对比时,各项不在同一个抽象粒度上——有的是具体操作,有的是系统架构,有的是设计哲学。
检测问题: A 的描述是操作级,B 的描述是架构级,C 的描述是哲学级——它们能放在同一张表里比吗?
症状:
- 对比表格里:A 行写"多数投票"(具体机制),B 行写"分层互审"(工作流),C 行写"对抗循环"(系统结构)
- 读者感觉每家都"做了不同的事",但说不清这些事在同一个维度上的差异
- 某家的描述明显更宏观或更微观,与其他家不对称
正确写法:
选择一个固定的抽象层级进行对比。如果信息不对称,要么补齐缺失的那层,要么显式说明层级差异。
4. 叙事驱动归因(Narrative-Driven Attribution)
定义: 某个结论或判断不是从证据推导出来的,而是为了让文章结构更漂亮、更对称、更有冲击力而"填进去的"。
检测问题: 这个判断是数据/事实推出来的,还是为了让文章结构更好看硬凑的?
症状:
- "只有 A 完成了从加到拆的完整周期"——这是因为 B 和 C 没做,还是因为 B 和 C 没有公开写过?
- 第三幕"做减法"被完全归于一家,使文章有了漂亮的三段论,但这个独占是文档行为差异造成的,不一定是工程现实
- 某个对比判断的存在,主要功能是让文章结构"工整",而不是传递新信息
正确写法:
把"无法证实"和"已证伪"区分开来。前者应该加限定语("至少从公开资料看"),后者才能做断言。
扫描 SOP
用 Agent 团队执行。初扫和二次核查分开,由不同 Agent 独立完成。
digraph structural_scan {
rankdir=LR;
"读取全文" -> "Agent A: 初扫(Step 1-4)";
"Agent A: 初扫(Step 1-4)" -> "Agent B: 二次核查(Step 5)";
"Agent B: 二次核查(Step 5)" -> "输出终审报告";
}
Step 1:标记所有并列结构
通读全文,用以下信号词定位:
- "A 走了 X 路线,B 走了 Y 路线"
- "三家分别……"
- "与此不同的是……"
- "A 的做法是……B 则选择了……"
Step 2:逐一测试四类问题
对每一个并列结构,依次问:
| 问题 | 判断 |
|---|
| 这几条"路线"在高一层是否是同一件事? | 是 → 伪分类 |
| 某特征被归给一家,其他家有无等价实现? | 有 → 虚假独占 |
| 各项对比是否在同一抽象粒度上? | 否 → 抽象层级滑移 |
| 这个结论是事实推出的还是结构需要填的? | 填的 → 叙事驱动归因 |
Step 3:按严重性分级
- ★★★ 会让读者得出错误判断的问题(优先修)
- ★★ 会让逻辑显得武断但不影响核心判断的问题(建议修)
- ★ 可接受的叙事简化(选择性修)
Step 4:给出修改方向
对每个问题:
- 说明哪里出了问题(引用原文位置)
- 说明正确的逻辑应该是什么
- 给出最小修改路径(不要求重写全文)
Step 5:二次核查(独立 Agent)
初扫完成后,将初扫报告交给一个未参与初扫的独立 Agent 做二次核查。二次核查 Agent 同时拿到原文和初扫报告,执行以下三项任务:
5a. 逐条复审(过滤误报)
对初扫报告中的每条 ★★★ 和 ★★ 问题:
- 回到原文,读取该并列结构的完整段落(不只是被引用的句子)
- 尝试为作者辩护:是否存在合理的叙事理由使得这个简化可以接受?
- 给出裁定:确认 / 降级(★★★→★★ 或 ★★→★)/ 撤销(误报)
- 撤销必须说明理由(如:「作者在下一段已经承认了这个简化,不需要再改」)
5b. 反向测试(查漏报)
初扫可能因为关注已标记的并列结构而忽略了隐含的并列。二次核查 Agent 需要:
- 扫描文章中未被初扫标记的段落,找出是否有隐含的并列对比(如:没有用信号词但实际在对比两种做法)
- 对这些隐含并列执行 Step 2 的四类测试
- 如果发现新问题,按 Step 3 分级后追加到报告
5c. 交叉验证核心判断
对初扫中标记为「叙事驱动归因」的问题,二次核查 Agent 需要额外判断:
- 这个归因如果去掉,文章的核心论点是否还能成立?
- 如果能成立 → 归因确实是为了结构好看,确认初扫判断
- 如果不能成立 → 归因虽有叙事成分但承担论证功能,降级为 ★
Agent B(二次核查)Prompt 模板:
你是独立审查员,负责对结构完整性初扫结果做二次核查。你没有参与初扫,立场中立。
你拿到的材料:原文 + 初扫报告。请执行:
1. 逐条复审:对每条 ★★★/★★ 问题,读完整段落上下文,尝试为作者辩护,然后裁定(确认/降级/撤销+理由)
2. 反向测试:扫描初扫未标记的段落,找隐含的并列对比,测试四类问题
3. 交叉验证:对「叙事驱动归因」类问题,判断去掉该归因后核心论点是否还能成立
输出:
- 每条初扫问题的裁定
- 补扫发现的新问题(如有)
- 终审修复清单(合并确认项 + 新增项,按严重性排序)
为什么需要二次核查:
| 初扫常见偏差 | 二次核查如何纠正 |
|---|
| 过度标记:合理的叙事简化被当作逻辑错误 | 读完整段落上下文后重新判断 |
| 聚焦偏差:只检查有信号词的显式并列 | 反向扫描隐含并列 |
| 严重性失准:★★★ 和 ★ 的界限模糊 | 用「去掉后论点是否成立」做硬判断 |
| 叙事归因扩大化:所有为结构服务的判断都被标记 | 区分「纯装饰」和「承担论证功能」 |
常见误区
| 误区 | 现实 |
|---|
| "三家方向不同才有对比价值" | 共享底层策略 + 实现差异 = 更有深度的对比 |
| "只有 A 做了,所以归给 A" | 需区分"只有 A 公开记录了"和"只有 A 实际做了" |
| "用了不同词就是不同策略" | 功能等价性比名词更重要 |
| "文章结构需要三条路" | 如果只有一条路,诚实说就是一条路 |