← 返回信息流
Agent SkillLINUX DO · AI·1 小时前

ReAct Agent 运行时动态干预研究

速览

该研究聚焦ReAct Agent架构在执行多步任务时的交互缺陷,提出运行时动态干预机制,允许用户在不中断执行流的前提下注入指令修正。现有方案包括LangGraph的中断-恢复、OpenClaw的运行中注入、SWE-PRM的自动纠偏等。该机制旨在提升Agent的实时互动性和任务执行效率,保留完整推理上下文。

AI 深度解读

背景

当前主流的 ReAct Agent 架构(Thought → Action → Observation 循环)在执行复杂多步任务时,存在一个根本性的交互缺陷:用户在 Agent 执行过程中产生的新想法、新需求或方向调整,无法被正在运行的 Agent 接收和处理。用户只能等待任务完成或终止重来,中途改变方向意味着终止当前会话、重新描述需求、重新理解上下文,已积累的思考链、中间结果和工具调用状态被完全丢弃,大量计算和推理被浪费。

理想状态下,用户应在 Agent 执行任务的任意时刻,向其注入一条消息(指令、修正、补充信息),Agent 在不中断当前执行流的前提下,将新信息融入正在进行的推理过程中,实时调整后续策略。类比于副驾驶轻拍飞行员肩膀,飞行员接收到信息后在不改变当前飞行状态的前提下调整航向。

该问题涉及的边界包括:适用架构(ReAct、Plan-and-Execute、Multi-Agent 等)、干预类型(方向修正、需求补充、优先级调整、紧急中止、局部回滚)、干预时机(Agent 思考中、工具调用中、多步执行间隙、子任务切换时)。不涉及纯粹的 Prompt Engineering 优化和模型能力提升。

核心内容

当前技术现状按成熟度和实现方式可分为五个层级,每个层级代表一种不同的运行时动态干预策略。

层级一:中断-恢复(Interrupt & Resume)

代表方案为 LangGraph 的 interrupt()Command(resume=...) 机制。Agent 执行到预设断点时,调用 interrupt() 暂停图执行,当前 State 通过 Checkpointer 落盘(内存/SQLite/Postgres),中断信号返回给调用方,前端展示给用户。用户做出决策后,通过 Command(resume=value) 恢复执行,从断点处继续,State 无缝加载。

优点:状态持久化成熟,支持跨会话恢复;断点精确可预测;社区生态完善。
局限:只能在预设断点暂停,不能在 Agent 推理的任意时刻注入;恢复后是从断点重跑节点,而非在思考中途插入新信息;本质上是“暂停→等待→继续”,而非“边跑边调整”。

层级二:运行中注入(Runtime Injection / Steer)

代表方案为 OpenClaw 的 /steer 命令,这是目前最接近用户理想状态的实现。Agent 正在执行任务时,操作员通过 /steer <message> 向当前会话注入实时指导,Agent 在执行过程中接收到指导信息后融入当前推理,会话状态、已积累的上下文、进行中的工具调用全部保持完整,Agent 不带节拍地调整方向。

关键特性

  • /steer 用于即时航向修正(当前 run);/queue steer 改变未来消息的默认行为。
  • 子 Agent 精准定向:/subagents steer <id> <message> 可单独纠正某个子 Agent。
  • ACP 会话支持:外部编排工具通过 /acp steer --session 进行航向修正。

优点:真正实现了“不打断、不重启、实时调整”;保留了完整的推理上下文;支持多 Agent 场景的精细控制。
局限:OpenClaw 生态相对小众;注入时机取决于 Agent 何时“读取”注入的消息(可能在当前步骤完成后);对于正在执行的 LLM 推理(token 生成中),注入可能需要等到下一个推理周期。

层级三:过程级自动纠偏(Process Reward Model)

代表方案为 SWE-PRM(Process Reward Model for Software Engineering)。Agent 在 ReAct 循环中执行任务,PRM 每 N 步(如每5步)分析最近 K 步的执行轨迹,基于分类法检测三类非效率:规范错误(忽略任务需求、重复动作)、推理错误(误判问题、选错工具)、协调错误(任务脱轨、验证失败)。生成自然语言反馈注入 Agent 上下文,Agent 在下一步推理中自动吸收反馈,调整策略。

关键发现:在 SWE-bench Verified 上,PRM 将解决率从 40.0% 提升到 50.6%(+10.6pp),额外推理成本仅 $0.2。基于分类法的 PRM 优于无指导或显式动作处方型变体。
与用户想法的关系:PRM 是“自动化的人类干预”——它替代了人类在过程中纠偏的角色,说明在 Agent 执行过程中注入信息是技术上可行的。
局限:PRM 的反馈是自动生成的,不支持人类实时输入。

层级四:AbortController 模式(可中断循环)

代表方案为手写 ReAct Loop + AbortSignal。Agent 主循环每步检查 signal.aborted,LLM 请求和工具调用都接收 signal 参数,外部可随时调用 controller.abort(reason) 中断。中断后做“干净退出”:补齐未完成的 tool_result,保持 messages 自洽,下次恢复时模型看到完整的对话历史。

优点:实现简单,不依赖特定框架;中断粒度可控(步骤级、工具级)。
局限:只是“停止”,不是“注入新指令后继续”;需要额外实现消息注入 + 恢复逻辑。

层级五:Harness 工程优化(编排层动态演化)

代表方案为 Hugging Face LAB 的实证研究——“Don’t Train the Model, Evolve the Harness”。核心发现:不修改模型权重,仅优化 Agent 的外部编排层(Harness),就能将 SWE-bench Verified 通过率从 3.5% 提升到 80.1%。

Harness 的定义:编排框架是 Agent 与外部世界交互的完整基础设施层,包括流程编排、工具调用、分层存储、上下文管理、错误处理与重试、压缩历史记录、屏蔽旧输出、动态摘要、文件处理自动化、Schema 验证、结果路由、状态管理等12个核心组件。

实验数据

  • mini-swe-agent(最简编排):3.5%
  • Goose (Block,增加上下文管理):23.2%
  • Pi (Seed,增强工具调用和状态管理):45.4%
  • 原始 LAB harness:63.4%
  • 优化后 LAB harness:80.1%(约22轮自动迭代优化)
  • Claude Sonnet 4.6(参考):~80%

关键发现

  • Harness 优化可跨模型迁移:同一套优化后的 Harness 从 DeepSeek-V3 迁移到 DeepSeek-V4-Flash 后,得分额外提升 +14.4 分,说明编排层的改进具有通用性。
  • 成本优势显著:优化后的 Harness + 开源模型达到与 Claude Sonnet 4.6 相当的性能,但
查看原文 →linux.do