Skip to main content

SVO语义检索的系统化方案

SVO 3.2 语义检索的系统化方案

本版修订:检索架构由原"四层索引 + 多路召回 + 学习排序"改为脑启发的扩散激活模型:单一概念向量索引作入口,SVO 3.2 的全部结构化关系(槽位、PropRef、逻辑前后件)降级为类型化有向图的边,检索 = 多入口并行扩散 + 能量汇聚叠加 + 阈值触发 + 情境快照回放。详细决策过程见 docs/superpowers/specs/2026-04-14-svo-spreading-activation-design.md

零、一句话概述

把 SVO 3.2 表达式分解成"概念簇 / 动作命题 / 逻辑命题"三类语义原子——所有作用域关系通过 : 绑定或 PropRef 引用表达——仅为"概念簇"建向量索引作为检索入口,其余原子与引用关系编织成一张类型化有向图;查询时 SVO 解析出多个概念簇作多路入口,在图上并行扩散激活,累积能量超过阈值的节点回放为完整语义单元返回。

核心设计哲学

  • 语义是连续的,交给向量(入口);结构是离散的,交给图(扩散)。 两者解耦,各尽其职。
  • 用软权重模拟硬过滤。 极性/量词/模态/连词作为节点门控属性,冲突时衰减能量而非一刀过滤——保留"话到嘴边"的脑式容错。
  • 扩散 = 模糊检索。 多入口激活在目标节点叠加、噪声相互抵消,是 大脑记忆的核心机制.md §四 扩散激活的直接映射。

SVO 3.2 取消了 >> 算子,把原本混在"情境"里的两类东西——非命题性作用域(话题/身份/范围/句子级副词)与命题性推导(条件/让步/因果/推论)——彻底分开。前者归入 :(属性),后者归入 >(力)。检索系统同步这个切分:前者对应图中的"修饰边",后者对应图中的"逻辑边",扩散时走不同权重分支。


一、第一性原理:定义"语义相关"

脱离对"相关"的精确定义去谈检索,必然做出一锅粥式的系统。SVO 检索服务的相关性是分层的,不同层级由图中的不同元素承担。

  • L1 · 概念相关:词项语义相似;示例是查"汽车"召回"轿车""SUV";承担者为概念向量索引(检索唯一入口)。
  • L2 · 命题相关:主谓宾整体相似,角色对齐;示例是查"K 表示 AGI 还远"召回同义改写;承担者为入口概念经 1 跳槽位边激活动作命题节点
  • L3 · 作用域相关:话题/身份/范围属性匹配;示例是查"低资源场景下的模型压缩";承担者为入口 scope 概念经修饰边激活命题
  • L4 · 推导相关:条件/让步/因果链的前件或后件匹配;示例是查"如果模型开源会怎样"命中条件链的前件;承担者为扩散至逻辑命题节点 + 沿逻辑边双向展开
  • L5 · 蕴含相关:逻辑等价与否定/量词/模态的正确区分;示例是"所有学生通过" ≡ "没有学生没通过";承担者为节点门控属性的能量衰减(软约束)。
  • L6 · 结构类比:骨架相同、实体不同;示例是"A 促使 B 认识到 C" 类比检索;承担者为扩散的自然副产物——结构同构的命题在图上距离近,激活自然接近。

关键洞察:相对于原四层索引方案"每层一个专用索引",扩散架构把 L2-L6 统一交给同一张图上的类型化扩散,仅 L1 保留独立向量索引。这是真正奥卡姆式的收敛。


二、语义原子化:入库时的分解

一条 SVO 3.2 表达式入库时,不作为整体被索引,而是分解成三类独立节点,通过 ID 保留原始关系。这一节与旧架构完全一致——入库分解与检索架构解耦。

2.1 三类原子(3.2 版)

① 概念簇 (Concept)

: 链坍缩出的复合单位,代表实体、概念或作用域属性。

  • 实体型:(OpenAI:创始:元老):Karpathy
  • 概念型:(协作式:中间态)
  • 作用域型:(AI:辅助:编程:方面)(前:负责人)
  • 句子级修饰型:显然(不幸:的是)

② 动作命题 (Action Proposition)

施事 > 动词 > 受事 三元组。> 的两端都是词项或概念簇(而非完整命题)。

  • 示例:Karpathy > 表示 > [PropRef]论文 > 促使 > Tishby

③ 逻辑命题 (Logical Proposition)

(前件) > 逻辑连词 > (后件) 结构。> 的两端都是封装的完整命题。连词为 / 尽管 / 导致 / 因此 / 促使 / 以便 等有限集合。

  • 示例:(该计划 > 不:公开) > 则 > (该计划 > 无法:获得 > 认可)

2.2 原子间的三种引用关系(PropRef 机制扩展)

3.2 中 PropRef 不再只表达"言说嵌套",而是统一表达三种命题级引用。每种引用类型在图中对应一类有权重的边。

  • 言说引用ref:utterance):源字段为动作命题的宾语槽,指向另一个命题;典型 SVO 形式 K > 表示 > (P);在图中体现为"言说边"(权重 0.5)。
  • 修饰引用ref:modifier):源字段为作用域概念的修饰对象,指向一个命题;典型 SVO 形式 显然 : (P)(AI:方面) : (P);在图中体现为"修饰边"(权重 0.6)。
  • 推导引用ref:logical):源字段为逻辑命题的前件/后件槽,指向两个命题;典型 SVO 形式 (P1) > 则 > (P2);在图中体现为"逻辑前件边 / 逻辑后件边",权重按连词分化(详见 §三)。

2.3 分解示例(3.2 版)

原始 3.2 表达式

(前:负责人) : Karpathy > ((今天 & 明确 & (向:团队)) : 表示) > ((该计划 > 不:公开) > 则 > (该计划 > (无法:获得) > 认可))

分解结果

概念簇:
  C1 = (前:负责人)                    role=scope
  C2 = Karpathy                      role=entity
  C3 = 今天                           role=scope  (时间状语)
  C4 = 明确                           role=scope  (方式状语)
  C5 = (向:团队)                      role=scope  (对象状语)
  C6 = 该计划                          role=entity
  C7 = 认可                            role=concept

动作命题:
  P1: [C2] > 表示 > [PropRef→L1]
      谓词修饰: [C3, C4, C5] (通过 ref:modifier 指向 P1)
      实体修饰: C1 修饰 C2 (通过 ref:modifier,绑定到 P1 的 subject 槽)
  P2: C6 > 不:公开
      (这里的"不"作为极性标记记在 P2 的 polarity 字段)
  P3: C6 > 无法:获得 > C7
      (这里的"无法"作为模态标记记在 P3 的 modality 字段)

逻辑命题:
  L1: [P2] > 则 > [P3]
      connector = 则
      (P2、P3 通过 ref:logical 被 L1 引用)

根节点:
  P1 是表达式的入口,整句被 P1 索引

三、图模型(替代原四层索引)

整个检索系统只有两个数据结构:一个概念向量索引 + 一张类型化有向图

3.1 节点(3 类,复用 §二 的原子分类)

节点类型 对应 SVO 原子 承担的语义相关层
概念簇节点 Concept(entity / concept / scope / sentence_mod) L1 入口、L3 作用域
动作命题节点 Action Proposition(S>V>O) L2 命题相关
逻辑命题节点 Logical Proposition(前件>连词>后件) L4 推导相关

3.2 节点门控属性(不是边,是节点自带的调节器)

字段 取值 作用
polarity +1 / -1 极性翻转检测
quantifier 所有 / 某 / 没有 / NULL 量词强度匹配
modality 必须 / 可能 / NULL 模态匹配
connector 则 / 尽管 / 导致 / 因此 / 促使 / 以便(仅逻辑命题) 连词类型区分

门控语义:扩散时源节点与目标节点的门控属性冲突(两端都有值且不等),能量乘以 gate_penalty(默认 0.1)。NULL 视为"未指定"不触发惩罚。

这对应 大脑记忆的核心机制.md §2.3 的神经调质动态调节——不改变拓扑,只调节能量传递。

3.3 边(5 类,带静态权重,全部写入 config.yaml

边类型 数据来源 方向 基础权重 承担层
槽位边 action_prop.subject_id/object_id concept ⇄ action_prop 0.8 L2
言说引用边 prop_ref.ref_type = utterance action_prop → action_prop 0.5 L2 嵌套
修饰引用边 prop_ref.ref_type = modifier scope_concept → proposition 0.6 L3
逻辑前件边 logical_prop.antecedent_id logical_prop → action_prop 按连词分化 L4
逻辑后件边 logical_prop.consequent_id logical_prop → action_prop 按连词分化 L4

连词分化权重(初值,阶段一手调,阶段二上学习权重):

  • 0.7、导致 0.8、因此 0.7、促使 0.75、以便 0.5
  • 尽管 0.3(反预期,能量传递弱)

3.4 概念向量索引(唯一的独立索引)

作用:扩散的起点。查询 SVO 解析后得到的每个概念簇,在此索引上取 top-K 作为图入口。

编码策略(与旧方案一致,继续分两阶段):

阶段一:加性组合(零训练)

v(concept) = v(核心词) + Σ α_i · v(修饰词_i)

其中 α_i 按绑定深度衰减(如 0.8^depth)。

阶段二:Transformer + 绑定深度位置编码

  • 线性化为 [CLS] 修饰1 : 修饰2 : ... : 核心词 [SEP]
  • 绑定深度作为位置编码
  • CLS 池化输出向量
  • 按 role 字段训练四个 LoRA 适配器,不强行统一编码空间

训练数据(五类对比对):

  1. 同指正例:同实体不同描述(Wikidata 对齐)
  2. 属性敏感正例:同实体不同属性强调点
  3. 混淆负例:同属性不同核心词(强迫模型关注核心词)
  4. 属性翻转负例:(前:CEO):X vs (现任:CEO):X
  5. role 混淆负例:(AI:方面) vs AI(强迫模型识别"方面"这个尾缀改变了 role)

按 role 分流:查询时按查询词类型选择召回的子索引集合:

  • 查询实体 → entity + concept 子索引
  • 查询场景 → scope 子索引
  • 查询谓词修饰语 → sentence_mod 子索引

四、扩散激活检索流程

4.1 流程图

           用户查询(自然语言或 SVO 3.2 表达式)
                      │
                      ▼
           ┌── 步骤 1: SVO 解析 ──┐
           │ 解析成 SVO 3.2 树      │
           │ 抽取所有概念簇作入口 │
           │ 解析失败 → 整句向量降级│
           └──────────┬───────────┘
                      │
                      ▼
           ┌── 步骤 2: 入口激活 ──┐
           │ 每个概念簇 →          │
           │ 概念向量索引取 top-K  │
           │ 初始能量 = 余弦相似度 │
           └──────────┬───────────┘
                      │
                      ▼
           ┌── 步骤 3: 并行扩散 BFS ──┐
           │ 最多 2 跳                  │
           │ 沿类型化边,按边权重衰减 │
           │ 节点门控软过滤            │
           │ 多源能量求和(汇聚叠加) │
           │ 扇出归一化(ACT-R fan)  │
           │ 能量 < 阈值不再扩散       │
           └──────────┬────────────────┘
                      │
                      ▼
           ┌── 步骤 4: 三层输出组装 ──┐
           │ conclu: 表达式级聚合 top-M│
           │ info:   原子级 top-N + 路径│
           │ output: 逻辑链补齐        │
           └───────────────────────────┘

4.2 能量传播公式

a_j(t+1) = Σ_i [ a_i(t) · w_type(i→j) · gate(i, j) · fan_norm(i) ] · global_decay

其中:
  w_type(i→j) = 边类型基础权重(逻辑边用连词分化权重)
  gate(i, j)  = 1.0           门控一致
              = gate_penalty  门控冲突
  global_decay = 0.7
  fan_norm(i) = 1 / sqrt(fan_out(i))  当 fan_out(i) > fan_trigger
              = 1                     否则

fan_norm 作用于源节点 i:高出度节点的能量均摊到所有出边,防止 hub 节点("AI""机器学习"等)吞掉全图能量。这是 ACT-R fan effect 的实现(大脑记忆的核心机制.md §5.2)。

4.3 关键默认参数(全部写入 config.yaml,阶段一手调校准)

activation:
  entry_top_k: 5              # 每个入口概念召回的候选数
  max_hops: 2                 # 最大扩散跳数
  global_decay: 0.7           # 每跳全局距离衰减
  threshold: 0.05             # 节点最低保留能量
  gate_penalty: 0.1           # 门控冲突时的能量乘数
  fan_normalizer: sqrt        # sqrt / linear / none
  fan_trigger: 20             # 出边数超过该值启用归一化
  max_visited_nodes: 10000    # 防退化上限

output:
  conclu_top_m: 10            # 结论层表达式数
  info_top_n: 30              # 证据层原子数
  logic_chain_max_depth: 4    # 逻辑链最多展开深度

4.4 三层输出契约

与当前 BuildContextFragments 返回值向下兼容:

def SpreadingActivationSearch(query: str) -> tuple[str, str, str]:
    """返回 (conclu, info, output)"""
    return conclu, info, output
  • conclu(结论层):top-M 源表达式(SVO canonical + 自然语言回译),按聚合能量排序。一个表达式的总能量 = 其内部被激活原子的能量之和,去重,带长度惩罚。LLM 的主要生成依据。
  • info(证据层):top-N 激活原子,每条带 (atom, energy, entry_sources, hop_path)。用于调试、人工排错、LLM 定位命中点。
  • output(推导层):扫描激活到的逻辑命题,沿 ref_logical 链前后向各展开至 logic_chain_max_depth 跳,即使链上节点未达阈值也补齐。保证 LLM 看到完整因果/条件链。

4.5 典型场景下的扩散行为

查询 扩散行为 结果
(模型 > 开源) > 则 > (?) 入口激活 模型开源;经槽位边 1 跳到命题 模型>开源;经逻辑前件边到 (模型>开源)>则>X connector=则 的后件 X 能量高
所有:学生 > 通过 > 考试 入口激活 学生通过考试;候选命题 某:学生 > 通过 > 考试 因量词冲突能量 × 0.1 量词匹配的命题排前
现有:框架 > 适用 候选 现有:框架 > 不:适用 因 polarity 冲突能量 × 0.1 反义命题几乎不达阈值
(AI:方面) : (K > 偏向 > X) scope 入口 AI:方面 经修饰边激活命题;其他作用域的命题得不到这条路径的能量 作用域外的相关命题降权
类比查询"A 促使 B 认识到 C" 结构同构的命题在图中拓扑接近,扩散自然汇聚 L6 类比无需专门结构哈希

五、核心技术挑战与解法

5.1 SVO 3.2 解析器的稳定性(最关键风险点)

3.2 把消歧责任从算子级推到了操作数形态级。扩散架构对解析器的依赖比旧架构更重——解析结果直接决定入口概念集合。

行动指引

  1. 建立解析稳定性基准测试。准备 500 句带歧义的自然语言,每句 10 个人工改写,跑解析器。统计同语义句的 SVO 3.2 树一致率(以结构指纹为准)。
  2. 一致率门槛:低于 85% 不得投入检索系统生产环境。
  3. 双轨降级机制:解析成功走多入口;解析失败整句向量化作单入口。保证服务可用性不受解析器抖动影响。
  4. 优先稳定"作用域 vs 条件"的识别——这是 3.2 解析器最容易出错的地方。中文里"在 X 的情况下"既可能是话题((X) : (...))也可能是条件((X) > 则 > (...)),必须用上下文特征分类,不能靠正则。

5.2 编码器必须"懂算子 + 懂连词"

要求编码器对 > 的两种承载(动作流 vs 逻辑流)通过两端操作数形态自动区分,且对连词词项( / 尽管 / 导致)敏感:

  • 角色翻转A > 杀 > B vs B > 杀 > A ——期望距离
  • 同义动作A > 喜欢 > B vs A > 爱 > B ——期望距离
  • 极性翻转不:适用 vs 适用 ——期望距离(但注意:这部分主要靠门控而非向量区分)。
  • 作用域翻转(战时):(军队>训练) vs (和平):(军队>训练) ——期望距离
  • 连词翻转(P) > 则 > (Q) vs (P) > 尽管 > (Q) ——期望距离(但注意:这部分主要靠边权重分化)。

5.3 参数校准(扩散架构特有)

旧架构的学习排序被扩散能量直接定序替代,但引入了新的调参挑战:

  • gate_penaltythreshold 的交互:0.1 的惩罚 × 1.0 初始能量 × 0.7 衰减 ≈ 0.07,勉强过 0.05 阈值。需用标注集校准,不能拍脑袋。
  • 连词权重的相对值=0.7 vs 尽管=0.3 的比值直接决定反预期召回率。
  • 扇出归一化触发点fan_trigger=20 是经验初值,在实际数据集上需监控 hub 能量占比。

方法:阶段一准备 100 条 query → expected 标注集,脚本化 grid search;阶段二改为小规模监督学习。

5.4 双重本体在向量空间中的投影

3.2 的二元本体(属性 / 力)在向量空间里建议显式投影到两个子空间:

  • 属性子空间:编码概念簇、作用域修饰
  • 力子空间:编码动作命题、逻辑命题(仅用于训练对比,不参与在线扩散)

同一个 BGE-base 主干 + 两个投影头(projection head)。训练时在两个子空间分别做对比学习。扩散在线检索只用属性子空间(因为入口是概念簇);力子空间主要用于离线诊断和未来扩展。


六、数据模型(3.2 核心表结构)

-- 概念簇表
CREATE TABLE concept (
  id            BIGSERIAL PRIMARY KEY,
  canonical     TEXT NOT NULL,              -- SVO 线性形式
  core_word     TEXT NOT NULL,              -- 核心词
  modifiers     TEXT[] NOT NULL,            -- 修饰链
  role          VARCHAR(16) NOT NULL,       -- entity|concept|scope|sentence_mod
  vector        VECTOR(768)                 -- 唯一的向量索引
);

-- 动作命题表(扩散图节点)
CREATE TABLE action_proposition (
  id            BIGSERIAL PRIMARY KEY,
  subject_id    BIGINT REFERENCES concept(id),
  verb          TEXT NOT NULL,
  object_id     BIGINT REFERENCES concept(id),   -- NULL 表示宾语是 PropRef
  object_ref    BIGINT,                          -- PropRef:指向另一命题
  polarity      SMALLINT NOT NULL DEFAULT 1,     -- 节点门控
  modality      VARCHAR(16),                     -- 节点门控
  quantifier    VARCHAR(16),                     -- 节点门控
  source_expr_id BIGINT NOT NULL                 -- 指向源 SVO 表达式(conclu 聚合用)
);

-- 逻辑命题表(扩散图节点)
CREATE TABLE logical_proposition (
  id            BIGSERIAL PRIMARY KEY,
  antecedent_id BIGINT NOT NULL REFERENCES action_proposition(id),
  connector     VARCHAR(16) NOT NULL,       -- 节点门控 + 边权重来源
  consequent_id BIGINT NOT NULL REFERENCES action_proposition(id),
  source_expr_id BIGINT NOT NULL
);

-- 引用关系表(扩散图边)
CREATE TABLE prop_ref (
  id            BIGSERIAL PRIMARY KEY,
  source_type   VARCHAR(16) NOT NULL,       -- action|logical|concept
  source_id     BIGINT NOT NULL,
  target_type   VARCHAR(16) NOT NULL,       -- action|logical
  target_id     BIGINT NOT NULL,
  ref_type      VARCHAR(16) NOT NULL        -- utterance|modifier|logical
);

CREATE INDEX idx_ref_target ON prop_ref(target_type, target_id, ref_type);
CREATE INDEX idx_ref_source ON prop_ref(source_type, source_id, ref_type);

-- 源表达式表(供 conclu 聚合层回溯)
CREATE TABLE source_expression (
  id            BIGSERIAL PRIMARY KEY,
  canonical     TEXT NOT NULL,              -- SVO 3.2 canonical 形式
  natural       TEXT NOT NULL,              -- 自然语言回译
  doc_id        BIGINT,                     -- 源文档
  line_no       INT                         -- 源文档行号
);

相对旧架构的关键变化

  1. 移除 action_proposition.vector 字段:动作命题不再独立建向量索引,扩散完全依靠图结构。
  2. 移除 action_proposition.fingerprint 字段:结构哈希索引废弃。
  3. 移除 logical_proposition.antecedent_vec / consequent_vec 字段:前后件向量索引废弃。
  4. 新增 source_expr_id 外键:供 conclu 聚合层按源表达式分组。
  5. 新增 source_expression:检索结果的最小可读单元。

不变的部分

  1. prop_ref 表同时服务三种引用类型,通过 ref_type 区分——这是扩散图的边表。
  2. polarity / modality / quantifier / connector 作为节点的头等字段——这是门控的前提。

七、工程落地路径

7.1 基础设施选型

  • 概念向量索引:Qdrant 或 Milvus;理由是支持带 metadata 的过滤(按 role 分流)。
  • 关系表 & 图边表:Postgres;理由是外键保一致,prop_ref 双向索引即扩散图邻接结构的持久化。
  • 内存图:启动时从 Postgres 加载成 numpy / scipy sparse 邻接表,百万节点量级约 500MB。
  • 编码器:BGE-base + LoRA;理由是中文效果好,微调成本低。
  • 扩散算法:纯 Python 实现(SpreadingActivation 模块),无需新服务。

废弃的基础设施

  • Elasticsearch(原 B1 倒排)——槽位边扩散替代
  • Redis(原 B2 结构哈希)——扩散自然实现 L6 类比
  • pgvector 的前后件向量列——逻辑命题作为图节点,不再独立向量化

7.2 三阶段演进

阶段一:MVP(2-4 周)

  • 完整跑通 SVO 解析 → 多入口 → 类型化边扩散 → 三层输出
  • 概念编码器用加性组合(零训练)
  • 参数全部手调,从 §4.3 的初值开始
  • 准备 100 条人工标注 query → expected,脚本化 grid search 校准 thresholdgate_penalty
  • 目标:跑通全链路,验证扩散能量排序能替代学习排序

阶段二:精度提升(1-2 月)

  • 编码器微调:概念按 role 分四个 LoRA
  • 扇出归一化从 sqrt 改为学习权重(按边类型 + 节点度数联合)
  • 连词权重从手调改为小规模监督学习(需要 500+ 标注对)
  • 门控系数按冲突类型细化(polarity / quantifier / modality / connector 分别调)
  • 目标:L3、L4 召回率显著提升,Hub 能量占比 < 30%

阶段三:持续优化

  • 全图 edge attention(类 GNN),端到端学习边权重
  • 激活缓存:高频查询结果缓存,类似 大脑记忆的核心机制.md §4.3 的启动效应(priming)
  • 多模态入口:图片/音频也作为入口激活源
  • 属性 / 力双子空间投影上线(在线查询仍只用属性子空间)

7.3 评估指标

沿用旧架构的指标

  • 角色准确率:施事/受事对齐
  • 极性准确率:是否错召反义
  • 量词一致率:量词强度匹配
  • 作用域覆盖率:话题/身份命中
  • 嵌套深度保持率:言说展开正确性
  • 连词一致率:条件/让步/因果的连词是否正确匹配
  • 逻辑链完整率:推导链被完整展开的比例

扩散架构新增指标

  • 扩散覆盖率:目标命题在 2 跳内被激活到的比例
  • 能量信噪比:top-K 结果的能量均值 / 第 K+1 位的能量(越高越好)
  • Hub 能量占比:top-20 最高出度节点被激活的能量占总能量的比例(应 < 30%,否则 fan 归一化失效)
  • 门控过滤准确率:冲突门控的命题被压至阈值以下的比例

八、快速操作查找表(扩散架构版)

  • 找含特定实体的表达式 → 以实体词为入口概念激活
  • 找含特定话题/场景的表达式 → 以 scope 概念为入口,走修饰边 1 跳
  • 找含特定句子级态度词(如"显然") → 以 sentence_mod 概念为入口
  • 找角色精确匹配的动作命题 → 入口概念 + 槽位边 1 跳(原 B1 倒排的功能)
  • 找结构相同的类比动作命题 → 多入口扩散自然实现(原 B2 结构哈希的功能)
  • 找语义模糊相似的动作命题 → 入口概念 top-K + 扩散 2 跳
  • 找满足"如果 X 则…"的推导 → 以 X 为入口,激活逻辑命题节点,沿后件边展开,connector=则 的权重最高
  • 找"…导致 X"的推导 → 以 X 为入口,反向沿前件边扩散,connector=导致 的权重最高
  • 找特定连词的推导链 → 连词权重直接分化,无需额外过滤
  • 找"在某作用域下"的命题 → scope 概念入口 + 修饰边扩散
  • 避免召回反义命题 → 节点 polarity 门控自动 × 0.1 衰减
  • 避免召回不同连词的逻辑 → 连词权重差异(=0.7 vs 尽管=0.3)自动压制
  • 追溯"谁说了这句话" → 沿 ref:utterance 反向边扩散
  • 展开"他说了什么" → 沿 ref:utterance 正向边扩散
  • 追溯"这个结论的前提是什么" → 沿 ref:logical 反向边扩散(或 output 层的逻辑链补齐)
  • 展开"这个条件会推出什么" → 沿 ref:logical 正向边扩散

九、参考

  • 详细设计决策记录:docs/superpowers/specs/2026-04-14-svo-spreading-activation-design.md
  • SVO 3.2 算子规范:Agent/SVO语义矢量算子手册.md
  • 生物学原型与设计灵感:Agent/大脑记忆的核心机制.md