ReAct (2210.03629) — L3 Per-Paper Synthesis #
目标实体 ReAct 是 category=model 里最"老"的一篇(2022-10),却是全 cluster 的范式源头:它第一个把"推理"降格为动作空间里的一等公民($\hat{A}=A\cup L$),让冻结 LLM 在闭环里交替 Thought/Action/Observation。本 L3 把它放到 8 篇 peer 中做横向审视——这些 peer 分成三条互不相交的线(agent 范式源头、instruction/data 安全、长上下文/model-release),ReAct 与它们的关系深浅差异极大,正好用来暴露"什么才是 ReAct 真正的对话对象"。
1. 相关论文 #
给定的 8 篇 related 并非同质。按与 ReAct 的实际概念距离分三组:
A 组 · 直接同谱系(agent / reasoning-in-the-loop) #
- 2412.10079 (Lost in the Middle, and In-Between) — 最近的一篇:它把 ReAct 反复依赖的 few-shot CoT 直接当研究对象,并报告了一个对 agent 极关键的负面结论——CoT 在非 instruction-tuned 模型上会崩溃到 ~0%(Llama-2-longlora HotpotQA 51.9%→0.6%)。它与 ReAct 共享 HotpotQA / 多跳推理 / CoT 三个交点,是本 cluster 里唯一在推理 prompting 行为上与 ReAct 正面接触的 peer(该负面结论见 [2412.10079])。
B 组 · 安全/指令层(ReAct 打开的攻击面的"解药") #
- 2403.06833 (Can LLMs Separate Instructions From Data?) — 形式化定义"指令/数据隔离度"并给出 SEP 基准 [2403.06833]。
- 2404.13208 (The Instruction Hierarchy) — 用合成数据把 System>User>Tool 特权层级微调进 GPT-3.5 [2404.13208]。
- 2410.09102 (Instructional Segment Embedding, ISE) — 加一张 $H{\times}D$ 的 role 嵌入表,把优先级信号送进 self-attention [2410.09102]。
这三篇都在处理同一个 ReAct 亲手放大的问题:ReAct 让 LLM 与外部环境(Wikipedia、WebShop)闭环交互,observation 被原样拼进上下文,于是"数据里藏的指令"能直接污染 agent 的下一步动作。ReAct 的 Ethics Statement 自己就点了这个隐患("looking up inappropriate or private information, or taking harmful actions")。B 组是"ReAct 式 agent 一旦投产就必须补的安全洞"。
C 组 · 仅 category 同类,概念远(model-release / 长上下文 decode) #
- 2405.04434 (DeepSeek-V2 / MLA) — MoE + KV 压缩的 model release [2405.04434]。
- 2404.16811 (FilM-7B / IN2 Training) — 用位置均匀合成数据治 lost-in-the-middle [2404.16811]。
- 2506.08371 (PCD / Positional Contrastive Decoding) — training-free 对比解码缓解长上下文排序失败 [2506.08371]。
- 2509.17765 (Qwen3-Omni) — Thinker–Talker 多模态 MoE [2509.17765]。
C 组与 ReAct 只共享 category: model 这个标签,方法论上几乎无交集(它们改权重/改 KV/改 decode/改架构,ReAct 一个参数都不改)。但它们提供了 ReAct 缺失的底层能力基座——ReAct 的多步 Thought/Action/Observation 会把上下文越拉越长(§8 部署墙),而 C 组恰好是"长上下文利用"和"高效服务"的三种正交解法。这层关系是互补而非竞争,在 §5 生态位里展开。
2. 本篇 vs 相关论文的 delta #
相对 A 组(推理 prompting) #
ReAct 的核心 delta 是把推理接地(grounding):CoT 是"静态黑箱",只用内部表示推理;ReAct 用 observation 纠偏,把 HotpotQA 幻觉率从 CoT 的 56% 压到 0% [2210.03629]。2412.10079 则揭示了 ReAct 所依赖的 CoT 组件的脆弱性边界——CoT 收益强绑定 instruction tuning [2412.10079]。这构成一个继承+补充关系:ReAct 假设 base LLM 能用 CoT,2412.10079 说"这个假设在某类模型上直接失效"。ReAct 自己也观察到互补现象——prompt 时 ReAct 在小模型(PaLM-8/62B)四法最差,微调后反超 [2210.03629],暗示"同时学推理+行动"对弱模型太难,与 2412.10079 的"弱模型 CoT 崩溃"是同一枚硬币的两面。
相对 B 组(指令/数据安全) #
ReAct 与 B 组是因果关系而非改进关系:ReAct 定义了"observation 直接进上下文并驱动下一动作"的范式,B 组则回答"如何不让 observation 里的恶意指令劫持动作"。三篇 B 组的解法层次递进,全都指向 ReAct 未解决的洞:
ReAct 对这一切的"贡献"是反向的:它是问题的制造者。ReAct 的可编辑 thought(改两句救活轨迹,Appendix A.3)[2210.03629] 反而暗示了一条 B 组没走的路——用"可读可编辑的显式推理轨迹"做安全审计,而非靠 role 标签硬隔离。
相对 C 组(能力基座) #
ReAct 相对 C 组的 delta 是层次不同:C 组改的是"模型能不能用长上下文/能不能高效服务",ReAct 改的是"给定一个能用的模型,如何组织它的动作循环"。三篇 C 组反而是 ReAct 的下游依赖:
- FilM-7B 的 IN2 训练让模型在任意位置都能取信息 [2404.16811]——ReAct 每步追加 observation 后,gold 段落被推到上下文中段的概率越来越高,正撞 lost-in-the-middle;
- PCD 缓解长上下文"排序失败"[2506.08371],training-free,可直接叠在 ReAct 的 decode 上;
- DeepSeek-V2 的 MLA 把 KV cache 压 93.3% [2405.04434],正是 ReAct 长 horizon 决策任务的成本墙的解药。
delta 结论:ReAct 是范式(paradigm),A 组是它的推理组件的边界研究,B 组是它引入的攻击面的补丁,C 组是它运行所需的能力基座。四者不在同一抽象层。
3. 可攻击面 #
针对 ReAct L2 的具体断言,用 peer 证据发起反驳:
攻击 1 — "接地消除幻觉"被过度概括。
ReAct 声称通过 Wikipedia API 接地把 HotpotQA 幻觉率压到 0% [2210.03629]。但 2403.06833 的核心发现直接反噬这个乐观叙事:让 LLM 与外部数据交互恰恰打开了指令/数据混淆的攻击面,9 个模型隔离度全线偏低(最差 13.3%),且模型越大越差(GPT-4 20.8 < GPT-3.5 56.6)[2403.06833]。ReAct 的 observation 是原样拼接进上下文的——按 2403.06833 的定义,这是"拼接模型 ⇒ 隔离度恒为 0"的最坏情形 [2403.06833]。矛盾根源:ReAct 把"幻觉"(内部编造事实)当作唯一敌人,度量的是 factual accuracy;2403.06833 指出还有"注入"(外部数据冒充指令)这个正交敌人,度量的是 source separation。ReAct 消灭了前者,却系统性放大了后者且全程未测。两者在各自度量下都成立,但 ReAct 的"grounding is trustworthy"表述在有对抗 observation 时失效。
攻击 2 — "1–2 shot 反超 RL"的可迁移性未经检验。
ReAct 报告 WebShop 上 1-shot 反超训了 10^4 轨迹的 IL+RL [2210.03629]。但这全部建立在文本 observation + 强 base LLM 能做 CoT 两个前提上。2412.10079 击穿第二个前提:CoT 收益强绑定 instruction tuning,非 inst-tuned 模型上 few-shot CoT 反而引发 primacy bias 崩溃到 ~0% [2412.10079]。ReAct 用的 PaLM-540B / GPT-3.5 都是强 inst-tuned 模型,其"少样本泛化"很可能是base 模型能力的伪装,而非 ReAct 范式本身的功劳——换弱 base,ReAct 的交替结构(更长 prompt + few-shot exemplar)会比纯 Act 更容易触发 2412.10079 描述的崩溃。
攻击 3 — "长 horizon 可行"与上下文利用现实冲突。
ReAct 自陈复杂大动作空间任务会撞输入长度上限 [2210.03629]。更尖锐的是:ReAct 每步把 observation 追加进上下文,gold 信息被不断推向中段,正是 lost-in-the-middle 的高发区。2404.16811 证明未经 IN2 训练的模型(Mistral-v0.2)在中段位置准确率塌到 5%–40%(U 形)[2404.16811];2412.10079 进一步证明多个证据分散时还有独立的 lost-in-between 退化(adjacent > separated 1–7 pp)[2412.10079]。推论:ReAct 的长轨迹里,早期 thought/observation 会落进"中段死区",理论上会随步数增加而加速遗忘早期推理——这恰好可以解释 ReAct 观察到但归因于贪心解码的"重复循环失败"[2210.03629],真正根因可能是位置偏置导致模型看不见自己早先的 thought,而非 decoding 本身。ReAct 把这个失败归给 decoding(footnote 4)是误诊。
攻击 4 — "无需训练"的普适性叙事被 finetune 结果自我拆台。
ReAct 主打冻结 LLM + prompting,但其最强结果(HotpotQA 上 PaLM-62B-FT ReAct > 所有 540B prompting)恰恰来自微调[2210.03629]。这与 B 组结论一致:2404.13208 明确证明指令层级"必须训练进权重,靠提示词远不够"[2404.13208],2410.09102 也靠 SFT 才让 segment 表学到优先级语义 [2410.09102]。矛盾根源:ReAct 的卖点是 prompting(省训练),但可靠性上限在 finetune。ReAct 的"prompting 范式"更像是演示可行性,投产强 agent 仍要回到训练——这条线与 B 组殊途同归。
4. 生态位 #
范式定位:ReAct 是 agentic LLM 的奠基性范式(paradigm-defining),而非增量方法。
- 它开创的抽象(thought = 环境无副作用、只重写上下文的一等公民动作,$\hat{A}=A\cup L$)[2210.03629] 已成为几乎所有 tool-use / agent 框架的默认心智模型。本 cluster 里 B 组三篇的问题设定——"System/User/Tool 三层来源"[2404.13208]、"指令 vs 数据"[2403.06833]——之所以成立,前提正是 ReAct 式"observation 进上下文驱动动作"的闭环已成事实标准。ReAct 定义了后续所有人要防御的攻击面拓扑。
- 采纳证据(间接):2403.06833 的动机图是"邮件助手把数据里的请求误当指令执行"[2403.06833],2404.13208 的动机是"间接注入劫持 forward() 工具调用"[2404.13208]——这些都是 ReAct 式 agent 的直接后代场景。换言之,B 组整条研究线的存在本身,就是 ReAct 范式被广泛采纳后的倒逼产物。
- 与 C 组的生态互补:ReAct 处于"应用/编排层",C 组处于"模型/系统层"。一个生产级 ReAct agent = ReAct 编排 + FilM-7B 式位置鲁棒 base [2404.16811] + DeepSeek-V2 式低 KV 服务 [2405.04434] + B 组式指令层级防护。ReAct 不与它们竞争生态位,而是坐在它们之上。
- 历史坐标:2022-10 的 ReAct 早于本 cluster 所有 peer(最近的 2509.17765 晚了近三年)。它的"惊讶点"——GPT-3 反超 PaLM-540B、prompting→finetune 的规模反转 [2210.03629]——在今天看是"能力随 base 模型演进"的早期信号,也解释了为何它作为范式长青、而其具体数字早已被超越。
5. 未探索方向 #
从 cluster 的交叉点提炼 ReAct 未做、但技术上可做的 hybrid / adaptive 方向:
- ReAct × 指令层级(A/B 组融合):把 2404.13208 的 System>User>Tool 特权层级 [2404.13208] 或 2410.09102 的 role segment 嵌入 [2410.09102] 显式接进 ReAct 的 observation 通道——给每条 observation 打上 "Tool/Lowest" 标签,让 agent 天然把工具返回内容当数据而非指令。这直接堵住 §3 攻击 1 的洞,且 2410.09102 的 role 嵌入对 KV cache/FLOPs 零开销 [2410.09102],适合叠在 ReAct 上。目前无人把"可编辑 thought"与"来源标签"结合做 agent 安全。
- 位置鲁棒的 ReAct(A/C 组融合):在 IN2 式位置均匀数据 [2404.16811] 上专门微调"长交互轨迹"的 agent,让模型对早期 thought/observation 不因位置漂移而遗忘——直接检验 §3 攻击 3 的假设(重复循环是位置偏置而非贪心解码)。或者更轻量:在 ReAct decode 时叠 PCD [2506.08371](training-free)看能否降低长轨迹的循环失败率。
- Adaptive thought density(自适应 dense/sparse):ReAct 手工区分 dense(推理任务)vs sparse(决策任务)thought [2210.03629]。可借 2506.08371 的 salience score [2506.08371] 作为在线信号——当 gold token salience 下降(模型"知道但说不出")时自动插入 thought,否则纯 act。把 thought 频率从固定超参变成 salience-driven 的动态量。
- 多模态 ReAct(C 组延伸):ReAct 的 thought-as-action 表征只在纯文本 observation 上验证过 [2210.03629]。Qwen3-Omni 的 Thinker–Talker 解耦 [2509.17765](Thinker 输出可被 RAG/safety 拦截)提供了一个天然载体——Thinker 做 ReAct 式 thought/action 交替、观测音视频 observation,Talker 做动作执行。把 ReAct 从文本环境迁到 observation 非纯文本的模态,是 cluster 里最大的空白格。
- 可诊断性作为隔离信号(B 组反向):ReAct 独有"可读可编辑思维轨迹"[2210.03629],B 组全部走"隐式硬隔离"(训练/嵌入)。未探索:用 ReAct 的显式 thought 做运行时注入检测——若某条 thought 突然引用了 observation 里的可疑指令,用轻量分类器在 thought 层拦截,而非在 token 层。这是 2403.06833 的黑盒见证词检测 [2403.06833] 与 ReAct 可解释性的自然联姻,无人尝试。
附:evidence-chain 备注 #
- A 组 (2412.10079) 是与 ReAct 概念最近的 peer——共享 CoT/HotpotQA/多跳,且提供对 ReAct 前提的直接反例,是 §3 攻击 2/3 的主要弹药源。
- B 组 (2403.06833 / 2404.13208 / 2410.09102) 与 ReAct 是"制造者—补丁"关系,构成 §3 攻击 1/4 与 §5 方向 1/5。
- C 组 (2405.04434 / 2404.16811 / 2506.08371 / 2509.17765) 与 ReAct 是跨抽象层互补关系,构成 §4 生态位与 §5 方向 2/3/4。
- 若后续 2412.10079 或 2403.06833 的 L2 结论被修正,本篇 §2/§3 的对应断言需回查(backward transition 路由已由上述
[ref:L2:...] 注册)。