第3章:Construction Trigger Primitive 全景——把「创新」翻译成可证伪假设
6 类 trigger primitive (input-driven / output-driven / failure-driven / scheduled / hybrid / oracle) 的工作原理、典型实现、可证伪假设模板与对应的 ablation 设计;以 H1a (ephemeral failure-triggered) 与 H1b (persistent cache) 为例展示如何把营销词写成假设
“在低置信度时触发记忆构建”听起来很 agentic,但作为一个工程主张,它的可证伪形式应该是:在配对二元 acc 上,触发版本相对零构建版本提升 ≥ 2 pp,且 95% CI 排除 0。本章把 6 类 trigger primitive 各自翻译成这样的形式——什么时候写、写什么、写到哪——并给每类一个可证伪假设模板和对应的 ablation 设计。读完这章,你不再用”adaptive”、“intelligent”、“selective”这种营销词写论文,而是写”H_X: Δ binary acc ≥ +2 pp on n=N paired with McNemar p<0.05”。
📑 目录
- 1. 为什么需要把 trigger 写成假设
- 2. 六类 trigger primitive 总览
- 3. 可证伪假设的三件套模板
- 4. 案例:H1a 与 H1b 的写法
- 5. ablation 应该排除什么变量
- 6. SESOI(最小关心效应)的取值
- 7. 把营销词翻成假设:实操练习
- ✅ 自我检验清单
- 📚 参考资料
1. 为什么需要把 trigger 写成假设
1.1 营销词 vs 假设
| 论文里的话 | 翻成可证伪假设 |
|---|---|
| ”adaptive memory writing” | H: 关掉自适应路由后,paired Δ binary acc 下降 ≥ 2 pp |
| ”selective extraction” | H: 写率 100% vs 当前比例的 paired Δ ≥ 2 pp |
| ”intelligent caching” | H: cache 持久化(C4)相对 ephemeral(C3)paired Δ ≥ 2 pp |
| ”cognitive-inspired” | (这不是命题,忽略) |
| “self-organizing structure” | H: 锁定固定结构相对动态结构 paired Δ ≥ 2 pp |
🍎 直觉:营销词是”某种主张”,假设是”在数据上能被证伪的具体语句”。你的论文必须能让 reviewer 用一句话回答”如果 H 错了,你应该看到什么数据”。
1.2 不可证伪的”假设”长啥样
❌ “Our system improves agent memory.” → 没有量化、没有 baseline、没有 sample size
❌ “We expect adaptive routing to help.” → “help”是什么?多少 pp?
❌ “Cache should generalize across queries.” → “generalize”怎么测?
✅ “Persistent caching (C4) improves paired binary accuracy by ≥ 2 pp over ephemeral caching (C3) on LoCoMo, with conversation-clustered McNemar p < 0.05, on n=764 paired QA.”
🌟 核心:可证伪假设 = 方向 + 大小 + benchmark + sample size + 显著性阈值 五件齐。
2. 六类 trigger primitive 总览
把 G3 时代所有 Agent Memory 系统的写触发器归为 6 类(前 5 类是显式的,第 6 类是隐藏陷阱):
2.1 Input-Driven(输入驱动)
定义:每接收一段用户/agent 输入,无条件写入 memory。 典型:Mem0、SimpleMem、LiCoMemory、EMem(gated 版属于子集) 伪代码:
def on_input(message):
facts = llm_extract(message)
memory.add(facts)
优点:实现最简单、覆盖率最高(不会漏存信息)。 缺点:build cost 与对话长度线性增长;大量低密度内容浪费 token。
2.2 Output-Driven(输出驱动)
定义:每生成一段 agent 回答后,回看 input + output 写入 memory。 典型:A-Mem、Memori、Nemori 伪代码:
def on_output(message, response):
facts = llm_extract(message + response)
memory.add(facts)
优点:抓住”对话中真正发生的事”(含 agent 推理);适合 reflection trigger。 缺点:build 频率仍高;推理过程可能引入幻觉进 memory。
2.3 Failure-Driven(失败驱动)
定义:仅在 retrieval 置信度低或任务失败时触发写入。 典型:本模块作者论文的 H1(被证伪) 伪代码:
def on_query(question):
chunks, conf = memory.retrieve(question)
if conf < tau: # 低置信度
artifact = llm_synth(chunks, question)
memory.add(artifact)
return llm.answer(chunks + [artifact], question)
优点:build cost 最低;只在”真正需要”时写。 缺点:触发信号本身要可靠(M2 AUC 决定);artifact 生成基于已经低质量的 retrieval,存在”低质量进、低质量出”的内生缺陷。
2.4 Scheduled(调度驱动)
定义:按 buffer 大小 / 时间窗 / token 预算固定触发。 典型:LightMem(512-token buffer)、MemoryOS(FIFO) 伪代码:
buffer = []
def on_input(message):
buffer.append(message)
if total_tokens(buffer) >= 512:
facts = llm_extract(buffer)
memory.add(facts)
buffer.clear()
优点:build 频率可预测、可控;摊薄 LLM 调用成本。 缺点:buffer 大小是 hyperparameter,跨 dataset 不可移植。
2.5 Hybrid / RL(混合或学到的触发)
定义:多信号融合或 RL 学习触发策略。 典型:D-MEM(dopamine-gated)、Selective Memory(write-time gating) 伪代码:
def on_event(event):
signals = [retrieval_conf, novelty, recency, ...]
if rl_policy(signals) == "write":
memory.add(llm_extract(event))
优点:理论上可学到最优策略;与 input/output/failure 不互斥。 缺点:RL 奖励信号高度任务依赖;跨任务泛化不可知。
2.6 Oracle(隐藏的”作弊”触发)
定义:用 benchmark 提供的标签(如 question_type、answer_id)决定写策略。 问题:这不是真正的 agentic,是隐藏 oracle access。论文若不声明,等于刷分。
⭕ 审计提示:扫描 query / write 函数签名是否含 question_type / category / answer_id 等参数;扫描 evaluation 脚本是否把这些字段直接喂给系统。
3. 可证伪假设的三件套模板
每个 trigger primitive 对应的假设都需要三件套:
3.1 三件套结构
H_X:方向 + 大小 + 显著性
在 N 题配对样本上
用 [test 名称] 显著
端点为 [endpoint 名称]
3.2 通用模板
H_X: {triggered_condition} 相对 {baseline_condition}
在 paired binary accuracy 上提升 ≥ {delta_pp} pp,
且在 n = {N} 题 paired 样本上,
{test_name} p < {alpha},
95% CI 排除 0。
3.3 实例化(按 6 类)
| Trigger 类型 | H 实例化 |
|---|---|
| Input-driven | ”C_IN(每输入必写)相对 C1(zero-build)paired Δ ≥ 2 pp on n=500 LongMemEval-S, McNemar p<0.05” |
| Output-driven | ”C_OUT(每输出回写)相对 C1 paired Δ ≥ 2 pp” |
| Failure-driven | ”C3(低置信度触发)相对 C1 paired Δ ≥ 2 pp” |
| Scheduled | ”C_SCH(buffer 满触发)相对 C1 paired Δ ≥ 2 pp” |
| Hybrid/RL | ”C_RL(RL 学到的策略)相对 C_SCH paired Δ ≥ 2 pp” |
| Oracle(揭穿) | “C_ORACLE(用 question_type 路由)相对 C_BLIND(不用)paired Δ ≥ 5 pp”(这是验证 oracle 偷分多少的对照) |
4. 案例:H1a 与 H1b 的写法
本模块作者论文给出的两个完整可证伪假设,可作为模板。
4.1 H1a(failure-driven, ephemeral)
H1a: ephemeral failure-triggered synthesis (C3) improves paired
binary accuracy by ≥ 2 pp over zero-build retrieval (C1) on
LongMemEval-S, with McNemar p < 0.05.
主端点: paired binary accuracy
secondary: token-F1
sample: n=500 (full LongMemEval-S, paired against C1)
test: McNemar exact (scipy.stats.binomtest)
SESOI: ±2 pp
结果:4 backbone 全部不达 +2 pp,方向均负。H1a 被证伪。
4.2 H1b(output-driven persistent vs ephemeral)
H1b: persistent caching (C4) improves paired binary accuracy by
≥ 2 pp over ephemeral (C3) on LoCoMo, with conversation-
clustered McNemar p < 0.05.
主端点: paired binary accuracy
secondary: token-F1
sample: n=764 (5 conversations × all QA, paired)
test: clustered McNemar (conversation-level resampling)
SESOI: ±2 pp
结果:Δ = +0.00 pp on binary acc, p=0.55, n=764。H1b 被证伪。
🌟 关键:两个假设在跑实验前就锁死了”成功阈值”。结果失败但论文仍可发——因为预先承诺的失败仍是科学发现。
5. ablation 应该排除什么变量
把 trigger primitive 当成”自变量”测它对 acc 的”因变量”影响时,必须控制混杂变量。
5.1 必须固定的变量
| 变量 | 怎么固定 |
|---|---|
| Backbone(LLM) | 主实验单一 backbone;多 backbone 仅作 sanity |
| Retrieval pipeline | embedder + 稀疏检索 + reranker + top-K 全锁死 |
| Judge | 用 benchmark 官方 prompt |
| Prompt 模板 | 答题 prompt 不能因 condition 切换 |
| τ 阈值 | 在 dev split 上预选定,主实验不调 |
5.2 应该测的 ablation
| Ablation 名 | 关掉的组件 | 测的问题 |
|---|---|---|
| C1 zero-build | 关掉所有 trigger 与 cache | trigger primitive 的 baseline |
| C3 ephemeral | 关掉持久化(仅当前 query 用) | 持久化是否有用 |
| C4 persistent | 完整版 | 主条件 |
| C5 separate-channel | 把 cache 和 raw chunks 分两个 retrieval channel | 是否 displacement 是问题 |
| C6 budget-matched | C5 但总 chunks 数等于 C4 | 是否上下文容量是问题 |
🌟 本模块作者论文 P2:C4 / C5 / C6 paired bootstrap 95% CI 全部跨过 0 → “no design knob 解决问题”。
5.3 不应该当 ablation 的”创新”
❌ “我们换了 RL 算法 PPO → SAC,看 acc”——这是 RL 内部对比,不是 trigger primitive 的 ablation ❌ “我们把 LLM 从 GPT-4 换成 Claude 3.5,看 acc”——这是 backbone robustness,不是 ablation ❌ “我们换了 embedder MiniLM → bge-large”——这是 retrieval 强度,应固定
6. SESOI(最小关心效应)的取值
6.1 SESOI 是什么
Smallest Effect Size of Interest:你认为”小到什么程度的效应可以被忽略”。
🍎 直觉:你不会因为 +0.1 pp 就上线一个新算法(运维成本远大于收益)。SESOI = 你愿意为之上线的最小提升。
6.2 SESOI 怎么选
| 场景 | 建议 SESOI |
|---|---|
| 学术 paired-internal 研究 | ±2 pp(同本模块作者论文) |
| 工业生产部署 | ±5 pp(考虑运维成本) |
| 跨 backbone 普适性主张 | ±1 pp(要求严苛) |
| 探索性研究 | ±3 pp |
6.3 SESOI 的两个用途
- 设定 H 阈值:H 写”Δ ≥ SESOI” → +2 pp 是 SESOI,对应 “H 通过”
- TOST 等价检验:90% CI 完全在 [-SESOI, +SESOI] 内 → 接受等价
⭕ 预注册铁律:SESOI 跑实验前定,跑完不能改。如果跑出 +1.5 pp 就把 SESOI 调到 1.0 pp 让 H 通过——这是 cherry-pick。
7. 把营销词翻成假设:实操练习
下面 5 个真实论文里出现过的句子,你来翻成可证伪假设。答案在表格右列。
| 营销词原句 | 翻成假设 |
|---|---|
| ”Our system uses adaptive memory routing.” | H: 关掉路由(单一 channel)相对原版 paired Δ binary acc 下降 ≥ 2 pp on n=500 |
| ”We propose selective fact extraction.” | H: 写率 100%(全写)相对当前选择性写率 paired Δ ≥ 2 pp(方向不限) |
| “Memory is consolidated through reflection.” | H: 关掉 reflection consolidation 后 paired Δ ≥ 2 pp |
| ”Self-organizing memory structure.” | H: 用固定 chunk 结构(K=3 turns)相对动态结构 paired Δ ≥ 2 pp(方向不限) |
| “Cognitive-inspired three-layer architecture.” | (cognitive-inspired 是叙事 hook,不是假设;真正的假设是”三层 vs 单层” paired Δ ≥ 2 pp) |
🌟 练习收获:每个营销词都有对应的 ablation——把 ablation 写成假设,论文从”展示新方法”升级成”测试可证伪命题”。
✅ 自我检验清单
- 6 类命名:能列出 input-driven / output-driven / failure-driven / scheduled / hybrid / oracle 并各举一例
- 三件套模板:能写出”effect direction + magnitude + 显著性 + sample size”齐全的假设
- SESOI:能为自己的 pipeline 选一个合理的 SESOI 值并解释为什么
- ablation 排除变量:知道在测试 trigger primitive 时应该控住 retrieval / judge / prompt 哪些变量
- “adaptive” 翻译:能把任何论文里的”adaptive memory”翻译成可证伪形式
- 6 类对应 ablation:能为每类 trigger 设计对应的 C_X ablation 条件
- oracle 识别:能在一段代码里识别 question_type oracle 路由
📚 参考资料
概念入门
- 本模块第 2 章 §3 atlas —— 6 类 trigger 在 11 系统中的分布
- 本模块第 4 章 —— 假设写完后跑统计三件套的工具
关键论文
- 本模块作者论文 EXPERIMENTS_PREREG.md —— H1a / H1b 完整可证伪假设的真实样本
- A-Mem(Xu et al., NeurIPS 2025):arXiv 2502.12110 —— output-driven 代表
- Mem0(Chhikara et al., 2025):arXiv 2504.19413 —— input-driven 代表
- LightMem(Fang et al., ICLR 2026):arXiv 2510.18866 —— scheduled 代表
- D-MEM(Song & Xin, 2026):arXiv 2603.14597 —— RL trigger 代表
- Selective Memory(Zahn & Chana, 2026):arXiv 2603.15994 —— hybrid trigger 代表
行业讨论
- “Falsifiability in NLP” 讨论 —— ACL 2024-2026 多个 panel 关于 NLP 实证研究可证伪性的讨论
框架文档(如适用)
- 本模块作者论文 motivation/persistence_ablation.py —— C1/C3/C4/C5 6 类 trigger 的真实 Python 实现