Browse this library

Chinese source article

1.2 · ReAct与闭环推理

分析推理、行动和观察交替如何改善决策,以及自然语言轨迹的工程边界。

View original Markdown ↗

1. 交替结构

1.1. 推理连接观察与动作

ReAct 把中间推理与环境动作交替生成,使后续决策可以利用搜索或工具返回的新增信息。其关键贡献是让推理受环境反馈约束,而非一次生成完整答案后再补证据。

在开放任务中,观察会改变问题表述、候选方案和剩余步骤。模型据此修正动作,比预先生成不可变长计划更能适应未知环境。

ReAct 的提示轨迹把三种记录交替排列:Thought 表示当前决策依据,Action 表示环境可执行命令,Observation 表示工具或环境返回。用于知识问答时,原论文提供 Search[entity] 与 Lookup[string] 等 Wikipedia API 动作;用于 ALFWorld 时,动作变成进入位置、拾取物品、打开容器和使用物品;用于 WebShop 时,动作对应搜索、选择商品与点击页面。共同点是 observation 来自模型之外,下一段推理必须在它返回之后生成。

可以把交替策略写成 at∼πθ(⋅∣q,ht)a_t\sim\pi_\theta(\cdot\mid q,h_t),其中 qq 是任务,ht=(r0,a0,o1,…,rt)h_t=(r_0,a_0,o_1,\ldots,r_t) 是当前轨迹,rtr_t 是面向决策的推理文本。环境按 ot+1∼P(⋅∣st,at)o_{t+1}\sim P(\cdot\mid s_t,a_t) 返回观察。ReAct 本身没有改变模型参数,也没有规定 Runtime 如何授权与执行;它改变的是提示中的轨迹格式,使策略能在观察后再次条件生成。

1.2. 动作产生新信息

一个有效动作应减少某类不确定性或推进环境状态。搜索动作获得证据,读文件动作获得当前实现,执行测试动作获得行为反馈。若连续动作没有增加状态差异,循环正在消耗预算而未推进任务。

因此控制器可以统计重复调用、相同错误和无新增观察,触发重规划或停止。该规则依赖结构化事件,不应靠匹配模型自然语言中的“我好像重复了”。

“动作产生信息”与“动作改变世界”要分开。搜索、读取和检查主要减少认知不确定性,写文件、提交订单和发送消息会改变外部状态。前一类动作通常可以自动执行并缓存,后一类动作需要权限、版本、审批和提交确认。ReAct 轨迹把两者都写成 Action,但生产 Runtime 不能因此采用相同风险策略。

动作价值还取决于观察能否区分候选假设。若模型怀疑错误来自配置或代码,读取同一段错误摘要不能减少不确定性;分别检查配置值与运行时调用栈才有判别力。可以用预期信息增益描述读取动作,用完成谓词的状态变化描述写动作。实践中无需精确计算,但进展检测至少要识别连续 observation 是否提供了新实体、新版本、新错误或新验证结果。

下面是一条简化的跨来源问答轨迹。问题要求判断某位导演的出生城市与一所大学所在地是否相同。模型先拆出导演身份与出生地两个缺口,执行 Search[影片名],观察返回导演姓名;再执行 Search[导演姓名],观察返回出生城市;随后查询大学官方页面获得所在地。只有三个来源字段都进入状态后,模型才比较城市并回答。若第一条搜索已经得到影片简介,直接凭参数知识补出生地会缩短轨迹,却失去外部证据带来的纠错能力。

2. 自然语言轨迹的限制

2.1. 推理不是权威状态

模型推理可能包含假设、临时方案和已被后续观察否定的判断。把全部推理当作记忆写回,会让错误前提持续占用上下文。权威状态应只提交经过工具或验证器确认的事实。

模型也可能在文本中描述一个动作,却没有输出可执行调用。Runtime 必须以结构化动作通道为准,不能从普通回复猜测是否需要执行副作用。

原始 ReAct 使用文本标记区分动作与观察,这在研究提示中便于展示,但生产系统更适合把动作放进结构化通道。模型生成工具名和 JSON 参数,Host 校验后执行,再以工具角色返回 observation。自由文本推理可以省略、压缩或仅在当前调用中保留,动作事实仍由工具事件记录。这样的实现保留了“推理—行动—观察”的条件关系,同时避免从自然语言正则解析高风险操作。

推理文本也不应直接覆盖计划状态。模型可能先写“商品 A 满足预算”,随后页面观察显示运费使总价超限。控制器应把前一句保留为已否定假设,或在压缩时删除;当前计划则根据新总价更新。若把所有 thought 无差别追加到上下文,模型会同时看到互相矛盾的旧判断和新事实,长轨迹中尤其容易回到已经排除的路线。

2.2. 隐藏推理与可审计事件

系统无需保存完整私有推理才能审计行为。动作参数、工具结果、状态差异、验证结果与简短决策理由已经能够说明外部行为链。

这种记录方式还降低了训练与生产日志中的敏感信息风险。需要分析策略时,可保存面向操作的摘要,而不是把自由文本推理直接当成稳定接口。

面向操作的理由可以采用有限字段,例如 goal、evidence_used、uncertainty 与 next_action_reason。它们帮助审查者理解动作依据,却不承诺完整复现模型内部计算。理由字段本身仍由模型生成,不能作为环境证据;审计时需要回到它引用的 observation 和实际动作。

隐藏推理不会妨碍多数轨迹指标。工具选择正确率、参数有效率、重复动作率、错误恢复率、任务完成率和成本都可从结构化事件计算。研究模型内部推理时可以在受控实验采集额外文本,但不应把该实验接口扩张为生产系统的状态协议。

3. 从范式到系统

3.1. 与计划执行的组合

ReAct 适合在每一步吸收新观察,计划执行适合维持跨步骤目标。系统可以保存可修订计划,同时要求每个动作仍经过观察闭环。计划是状态的一部分,不是绕过反馈的脚本。

当环境稳定且步骤已知,固定工作流通常更便宜可靠。只有动作选择确实依赖运行时信息时,才需要让模型在每一步重新决策。

计划与 ReAct 的结合可以有两层时间尺度。高层计划保存子目标与依赖,例如“确定需求—定位实现—修改—验证”;低层循环在当前子目标内选择具体搜索、读取或执行动作。观察若只影响当前节点,局部修正即可;观察若否定高层前提,则重新生成受影响部分计划。这样既保持目标,又避免每一步都重新生成整份长计划。

是否需要开放循环可以由三项条件判断。第一,环境中是否存在设计时未知信息;第二,观察是否会改变后续动作;第三,错误是否需要基于运行结果选择不同恢复路径。三项都不满足时,用确定工作流更合适。把审批、计费或数据迁移改成自由循环,不会增加能力,只会扩大不可预测状态空间。

3.2. 验证闭环

推理与行动交替仍可能产生自洽错误。加入独立验证器后,系统根据测试、约束检查或来源核验产生反馈,再决定接受、修正或回滚。

验证器应尽可能读取环境结果而非复述模型答案。这样闭环的进展由可观察状态定义,模型能力提升与 Runtime 改进也能分别评估。

例如在 ALFWorld 的“把清洁后的物品放入指定位置”任务中,模型可能完成拾取和移动,却漏掉清洁动作。自然语言总结可以声称目标已经达成,环境奖励仍为零。验证器读取模拟器中的物体属性和位置,能指出缺失谓词;新的 observation 使策略回到水槽执行清洁,再重新放置。这个反馈比“再检查一下”包含更明确的状态差异。

验证也可能出错。网页中的成功提示可能由前端缓存产生,测试套件可能没有覆盖用户要求,检索答案的引用可能只支持相邻背景句。高风险任务使用多个互补验证器,并把验证器版本写入轨迹。若验证结论冲突,运行进入待检查状态,而不是让模型挑选有利结果。

4. ReAct实验怎样阅读

4.1. 四类任务与对照组

ReAct 原论文在 HotpotQA、FEVER、ALFWorld 与 WebShop 四个基准上实验。前两者是需要外部知识的问答与事实核验,后两者是多步交互环境。论文构造了 Standard、Chain-of-Thought、Act-only 和 ReAct 等对照:CoT 保留推理而去掉环境动作,Act-only 保留动作与观察而去掉推理,ReAct 同时保留两者。这一消融比只与另一个完整 Agent 比较更能说明两个部件各自贡献。

知识任务中,CoT 可以生成连贯推导,却可能在早期事实错误后继续传播;Act-only 能取得页面内容,却缺少在多个 observation 之间维护目标与合并证据的显式轨迹。交互任务中,动作是完成目标的必要条件,推理则帮助跟踪子目标、处理例外和决定何时探索。两类环境因此检验了“行动帮助推理”与“推理帮助行动”的两个方向。

4.2. 数字与适用范围

论文报告,在 ALFWorld 和 WebShop 上,少量上下文示例的 ReAct 相比当时的模仿学习或强化学习方法,绝对成功率分别提高 34 与 10 个百分点。原文的一组 ALFWorld 结果中,ReAct 最佳试验平均成功率为 71%,Act-only 为 45%,BUTLER 为 37%。这些数字对应论文使用的模型、提示示例、动作格式和环境版本,说明交替轨迹在该设置下有效,不代表任何新模型套用 Thought/Action 字样都会得到同样提升。

问答任务也暴露互补关系。论文分析表明,ReAct 通过 Wikipedia 动作减少了纯 CoT 的幻觉与错误传播,但检索结果不佳时也会被不相关 observation 带偏。作者还组合 ReAct 与 CoT self-consistency,让前者提供有来源的候选,后者在 ReAct 未完成时补充答案。实验的价值在于展示失败模式互补,而不是宣布一种固定提示在所有任务上占优。

5. 失效边界与后续工作

5.1. 循环、检索失败与上下文膨胀

ReAct 会因搜索词过窄、工具返回噪声或实体消歧错误进入错误分支。模型可能连续改写同义查询,却没有获得新证据;也可能在网页导航中来回点击同一页面。Runtime 应检测动作—观察对重复、设置工具与总步数预算,并在无进展时要求改变假设或停止。单靠提示中的“不要重复”无法构成强约束。

长轨迹还会让早期目标、最新观察和旧推理竞争上下文。系统应把任务约束、已确认事实、未决子目标与最近 observation 分层保存,完整轨迹留在外部存储。压缩时保留资源标识和来源,使模型同时知道检索动作与所得证据。

5.2. 从一次轨迹到跨尝试反馈

ReAct 主要描述单次尝试内的交替。Reflexion 在失败后生成语言反思,并把反思放入后续尝试的记忆。其 NeurIPS 2023 论文在 ALFWorld、HotpotQA 和 HumanEval 等任务上报告相对强基线的改进,分别包括 22、20 与 11 个百分点。结果表明,跨尝试保存经过反馈形成的经验可以改善后续行为,但这已经引入记忆写入与多次试验预算,不应归为原始 ReAct 自带能力。

Reflexion 也说明语言反馈的边界:反思来自模型,对失败原因的判断可能错误;重复尝试会增加环境成本;把任务特例写入长期记忆会干扰其他任务。生产系统需要验证反思是否对应实际轨迹,限制作用域与有效期,并以环境终局确认行为是否改善。第 3 章讨论记忆治理,第 4 章继续展开反馈与反思,本篇只用它标出单次行动循环向跨尝试学习延伸的位置。

5.3. 工具描述与动作语法

ReAct 实验中的动作空间较小,示例明确展示了合法命令。生产系统常有数十个甚至数百个工具,名称相近、参数复杂且权限不同。策略失败可能来自推理能力,也可能来自动作语法难以学习。工具描述需要交代用途、输入、前置条件、结果与典型错误;Host 在送入模型前还应按任务和权限筛选候选集。让模型看到无法调用的工具只会增加选择负担,并诱发权限拒绝。

结构化输出约束能减少括号、字段和类型错误,但无法判断动作是否满足业务语义。例如 transfer(amount=1000, currency="USD") 可以完全符合 schema,却转向错误账户。动作进入环境前仍要做实体解析、资源版本、风险和授权校验。ReAct 解决的是 observation 如何影响下一次生成,没有替 Runtime 提供事务与权限保证。

动作语法也影响实验可比性。一个环境提供 find_and_buy(product, constraints),另一个只提供搜索、点击和填写,前者把大部分规划藏进工具内部,轨迹更短并不表示模型更强。报告 ReAct 或其他 Agent 方法时,需要同时公开动作集合、observation 格式、最大步数、错误反馈与停止规则。否则成功率差异无法归因于策略。

5.4. 人类介入和不可逆动作

原始基准中的动作发生在模拟器或只读知识接口,失败可以重置。真实环境中的付款、发布、删除和外部通信具有不可逆影响。模型可以沿 ReAct 轨迹准备动作,但控制器要在提交前插入审批状态。审批输入应显示对象、参数、成本和预期差异;用户批准的是具体动作,不是“完成任务”这一抽象目标。

审批结果作为 observation 返回策略。拒绝可能表示缩小范围、修改参数或停止,不应被当作工具故障自动重试。批准后若参数变化,旧批准失效。这个过程保持行动循环:用户决定属于环境反馈,模型根据反馈选择后续动作;同时,权限边界由 Runtime 强制,而非依赖模型在 thought 中承诺询问。

人类介入还包括补充缺失需求和处理歧义。模型若无法从现有状态确定目标,最有价值的动作可能是提出一个具体问题。问题应说明缺少哪项决定、不同答案影响什么,并暂停有风险的执行。得到回答后,控制器把用户输入作为高权威 observation 提交。无休止地向用户追问实现细节会转嫁决策成本,因此只有缺失信息会实质改变结果时才适合暂停。

5.5. ReAct与现代工具调用的对应

现代模型常通过专门的 tool-call token 或结构化消息产生动作,工具结果以独立角色返回。表面格式与论文中的 Thought/Action/Observation 不同,控制关系仍相同:策略提出动作,Host 执行,环境 observation 再次进入策略。是否采用 ReAct 应依据这种条件依赖判断,而不是检查提示里有没有写出 Thought:。

在能够隐藏推理的模型上,Host 可能只看到工具调用和最终回答。系统依然可以维护可审计闭环,因为外部行为由动作、参数、结果和验证事件组成。需要计划可见性时,可以要求模型输出简短、面向任务的计划状态;计划不应冒充完整内部推理,也不应取代环境事实。

这种对应还提醒我们区分“模型原生工具调用”与“Agent 系统”。前者提供动作生成通道,后者还要负责工具发现、权限、执行、观察裁剪、状态、预算、验证和恢复。一个模型准确输出函数参数,只证明行动循环中的一环更稳定;是否形成可靠 Agent,仍取决于其余环节是否闭合。

5.6. 实验复现清单

复现 ReAct 类实验时,需要固定模型快照、解码设置和上下文示例。原论文在 HotpotQA 使用六个示例、FEVER 使用三个、ALFWorld 每类任务使用两个、WebShop 使用一个;示例数量与选择会改变结果。环境条件还包括 Wikipedia 接口、ALFWorld 与 WebShop 版本、允许动作、最大步数和无效动作处理。

对照组要从同一示例系统性消融。CoT 组去掉动作与 observation,Act-only 组去掉 thought,Standard 组只保留问答。若每组分别手写最佳提示,差异会混入示例质量。多次运行时报告平均值、方差和失败类别,不能只选取最顺畅的一条轨迹展示。

失败分析逐条检查知识任务中的检索无结果、错误实体、证据整合错误和过早作答,以及交互任务中的无效动作、状态跟踪错误、计划遗漏、循环与错误停止。这些类别用于判断推理和行动各自修复了什么。单一总分只说明系统在该配置下完成了多少任务,无法直接指导工具接口或 Runtime 的改进。

复现还要保存完整轨迹,而不能只保留最终答案和奖励。相同零奖励可能来自第一步就选择错误房间,也可能来自完成全部操作后漏掉终止命令;相同成功则可能分别消耗五步和五十步。轨迹使研究者能够重算步骤预算、重复率与恢复率,并在动作接口变化后判断旧结果是否仍可比较。

公开结果最好同时提供聚合表和代表性失败轨迹。聚合表展示多任务分布,轨迹解释机制差异。选择轨迹时依据预先定义的失败类别抽样,避免只展示符合方法叙事的案例。这样得到的结论才能从“ReAct 在某张表上更高”推进到“哪些 observation 改变了决策,哪些任务仍然缺少有效反馈”。

当模型、工具接口或上下文长度变化时,旧结论需要重新检验。更强模型可能减少显式推理需求,更好的检索接口可能降低无效动作,结构化工具调用也会改变解析失败率。复现实验的目标是隔离这些变量,确认收益来自推理与行动交替本身,而不是把多个系统升级共同产生的变化全部归给 ReAct 标签。 ReAct 的关键在于让新 observation 改变后继决策,交替排版“思考”和“行动”只是表面形式。若模型在调用工具前已经写完固定答案,工具返回只被附在末尾,形式上有循环,策略仍是开环。轨迹评估应检查参数、计划或结论是否对观察敏感。

可把 belief 更新写成 bt+1=U(bt,at,ot)b_{t+1}=U(b_t,a_t,o_t),策略为 at+1∼π(⋅∣bt+1,g)a_{t+1}\sim\pi(\cdot\mid b_{t+1},g)。btb_t 是根据任务历史形成的可行动摘要,无法容纳完整世界状态。更新函数要保留来源与不确定性;观察冲突时不能用最近到达的文本静默覆盖已有证据。

动作选择可以比较预期信息价值。候选动作 aa 的效用近似为 E[ΔV∣a]−C(a)−R(a)E[\Delta V\mid a]-C(a)-R(a),其中 ΔV\Delta V 表示观察可能改善终局决策的程度,CC 是成本,RR 是副作用风险。读取本地配置可能便宜但无关,运行集成测试较贵却能消除关键不确定性。模型无需精确计算数值,但系统可以用这些项约束排序。

信息动作和效果动作要分开。搜索、读取、测试主要改变认知状态;编辑、发送和付款改变环境。前者也可能有隐私和费用,后者则需要更强前置验证。计划若尚未确认目标对象,就不应通过效果动作“试试看”。

观察噪声是闭环推理的常态。搜索结果可能遗漏,测试可能不稳定,工具可能截断输出,网页可能显示旧缓存。Agent 为 observation 保存可靠性、时间、资源版本和截断标记,并用独立观察消除关键冲突。单条工具文本的肯定语气不提高可信度。

当 observation 与预期冲突时,有三种可能:原假设错误、工具或环境故障、观察映射错误。直接接受或拒绝都太早。策略选择一个能区分这些解释的低成本动作,例如读取权威状态、重复无副作用检查或换用独立工具。这个诊断动作比继续执行原计划更有价值。

ReAct 轨迹中的语言推理不等于可信因果解释。模型可能事后合理化已经采样的动作,也可能写出正确理由却调用错误参数。系统评测聚焦可观察状态、动作和环境效果,私密推理只作为临时计算,不承担审计证据。

工具结果需要结构化边界。调用 ID 把请求与结果配对,错误类型区分校验、权限、暂时故障与未知提交,资源版本限定 observation 的适用范围。把工具输出拼成普通用户消息,会让模型混淆来源,也给提示注入留下升级通道。

长轨迹会积累无关历史。上下文构造保留当前目标、未解决问题、已提交效果、关键证据和最近错误,旧工具全文进入外部产物。压缩摘要若遗漏未完成提交或否定证据,下一轮会重复动作或恢复被否定假设。压缩后要用约束保持测试核对关键字段。

停止策略有三种正常终局:完成谓词满足、确定阻塞、继续获取信息的边际价值低于成本。预算耗尽是系统终止,不应被模型包装为完成。开放研究任务可以在证据充分时停止并披露缺口,写操作任务则需环境 verifier 明确确认。

考虑一个依赖升级任务。模型先读取清单和锁文件,假设新版本只改 API 名称,于是搜索调用方。编译 observation 却出现平台二进制缺失。此时继续批量改 API 是错误路径;Agent 检查包发布信息与当前架构,发现该版本没有目标平台构建,根因从代码适配变成版本不可用。

策略改为选择仍受支持的次新版本,更新锁文件并运行单测。单测通过后,端到端测试出现时间格式差异。Agent 对比依赖 changelog 和失败输出,新增显式时区配置,而非放宽断言。最终 verifier 在干净环境重装并复现通过,闭环中两次 observation 都实质改变计划。

若是开环 Chain-of-Thought,模型可能在首次假设后生成完整修改清单,然后把编译失败解释成“还需继续修”。ReAct 的优势来自允许行动结果推翻假设。但频繁行动也不是天然更好:每读一个文件都重新长篇推理会增加成本,局部确定步骤可以批处理。

另一个反例是观察成瘾。Agent 不断搜索更多资料,却没有明确哪个结论仍不确定;结果数量增加,信息家族没有变化。系统维护 evidence gap 和最近动作带来的新信息,连续低增益后要求停止或改变查询轴。

过度反思也会破坏执行。模型每一步都重新考虑全部计划,可能撤销已验证决定、扩大范围和消耗上下文。分层控制保留稳定目标与已提交事实,只对受新 observation 影响的节点重规划。没有新证据时,不应仅凭采样波动改变计划。

闭环推理还受工具延迟影响。并行只读调用返回顺序不确定,策略应等待明确依赖,而非把最早响应当最重要证据。部分结果足以推进时,记录仍未返回的依赖;迟到结果与当前资源版本冲突时进入审计,不自动覆盖新 belief。

ReAct 的训练样本要包含错误观察后的正确分支,而不只是顺利成功轨迹。参数校验失败应修字段,权限拒绝应请求批准或降权,空结果应调整查询,未知提交应查询状态。若所有示范工具都成功,部署中的第一个异常就会把策略推出训练分布。

评测可以构造 observation counterfactual:保持任务与前缀不变,替换测试失败、搜索证据或权限状态,检查后继动作是否合理变化。动作完全不变说明模型忽略反馈;变化过度则说明对无关文本敏感。配对反事实比单看最终成功更能测闭环能力。

过程指标包括观察利用率、首个有效动作、计划修订准确率、重复调用、恢复成功、停止校准与单位成功成本。终局成功仍是主指标,因为一条“看起来很会反思”的轨迹可能没有完成任务。过程分用于解释差异,不用于覆盖失败终局。

系统消融分别移除结构化错误、资源版本、观察摘要、计划状态和停止规则。若去掉版本后重复动作增加,说明状态绑定有效;若加入长推理却不改善成功,只增加 token,说明瓶颈在环境反馈或 verifier。机制结论需要多任务与置信区间支持。

由此,ReAct 是一个环境反馈控制模式:动作产生可验证观察,观察更新 belief,策略据此选择下一动作,完成谓词决定停止。它可以用不同提示、模型或工具实现,可靠性最终取决于观察质量、状态约束和反馈是否真正进入决策。

完整评测还要扰动工具顺序、观察措辞和环境延迟。若语义相同但格式变化就使策略失效,系统学到的是模板;若无关延迟改变最终决定,编排可能依赖时序。稳定闭环应对等价观察保持行为一致,对真正状态变化及时调整。

在成本受限场景,策略可先执行便宜且区分度高的检查,再决定是否调用昂贵工具。顺序由预期信息增益驱动,不固定为“搜索—读取—执行”。任务简单时直接回答,风险较高时增加独立验证,体现同一控制框架对不同条件的适应。

多主体协作还要避免 observation 被转述多次后失真。执行者将结构化结果写入共享状态,规划者引用结果 ID,评审者读取相同证据;自然语言报告只做摘要。这样即使角色切换或上下文压缩,原始错误码和资源版本仍可核对。

流式生成带来一个特殊边界。模型可能在工具调用 JSON 尚未闭合时被取消,或者已经输出工具名却没有完整参数。解析器只接受通过 schema 的完整动作,半截输出作为中断产物保存,不进入执行队列。继续生成时使用新的调用 ID,避免两段 token 被错误拼成一个动作。

约束解码可以提高语法合法率,却不能证明业务参数正确。枚举值、必填字段和 JSON 结构适合在解码阶段限制;路径权限、账户余额和资源版本仍由执行前校验。把业务状态塞进庞大语法会快速过期,也难以处理并发变化。

模型有时会在 observation 中找到多个可行后继动作。策略可以保留候选及其证据,通过低成本 verifier 或小规模搜索选择;不必把第一次采样当成唯一计划。候选扩展受预算限制,效果动作仍只提交一个经过授权的分支。

对失败任务的分析从首次偏离开始。若错误查询导致后续缺少证据,末尾回答错误只是症状;若查询正确而工具截断关键段落,责任在观察管道。反事实重放替换一个 observation 或动作,再比较续跑成功率,可以检验归因。

跨任务学习使用这些结构化轨迹提炼模式:哪类错误值得重试,哪些工具组合容易循环,哪些完成谓词最常被误判。提炼结果进入训练或技能前要在独立任务验证,避免把单次偶然路径固化成通用规则。

ReAct 也可以在没有显式文字“Thought”的模型中实现。隐藏状态、计划数据结构或控制器都能承担 belief 更新;外部只需保存动作、观察和必要决策证据。是否展示推理属于产品与隐私选择,不决定闭环是否成立。

当用户中途补充目标时,系统把它作为新事件与旧目标比较。兼容的约束更新影响尚未执行节点,冲突目标则暂停并显示已提交效果。简单把新消息拼到上下文末尾,可能让模型忘记哪些动作已经不可逆。

这些机制共同限制了闭环的错误放大:语法问题停在解析,业务冲突停在校验,权限问题停在授权,环境不确定停在查询,任务完成由 verifier 确认。模型仍承担开放决策,但每类错误尽可能在最近的可靠边界暴露。