第 3 章:ReAct 循环 —— Agent 的心脏

151 阅读6分钟

第 3 章:ReAct 循环 —— Agent 的心脏

0001页.png

“LLM 天生是‘快思考’的直觉机器,而 ReAct 强行给它装上了‘慢思考’的刹车。”

🔖 商业洞察:从商科视角看,ReAct 是一场 ROI(投资回报率) 的博弈。没有 止损线 (Stop-Loss)审计机制 (Audit) 的 Agent,终将成为吞噬算力的黑洞。

如果说 LLM(大语言模型)是 Agent 的大脑,那么 ReAct (Reasoning + Acting) 就是它的心跳。

诺贝尔奖得主丹尼尔·卡尼曼在《思考,快与慢》中提出双系统理论:

  • System 1(快思考) :依赖直觉、联想,毫秒级反应,但容易掉入陷阱。
  • System 2(慢思考) :依赖逻辑、推理,耗能高,但严谨精准。

LLM 是极致的“系统 1” 。它是一个概率预测机,能在瞬间接话,但它从不反思“我是对的吗”。 ReAct 的本质,就是通过代码工程,强行逼迫 LLM 开启“系统 2”

答案就在这个循环里:思考 (Reason)行动 (Act)观察 (Observe)

0005页.png

3.1 逆向剖析:为什么 LLM 是“自信的骗子”?

心理学中的 达克效应 (Dunning-Kruger Effect) 指出:能力越低的人,往往越自信。LLM 完美符合这一特征——因为它不知道自己不知道。

🚫 Mode A:纯 LLM 模式(直觉陷阱)

任务: “帮我调查竞争对手 A 的企业版定价。”

如果你直接问 ChatGPT(无插件),它会启动“系统 1”,调用记忆中的概率分布:

用户:竞争对手 A 多少钱?

LLM (潜意识)我的权重里没有这个数字,但根据概率,这类问题通常这样回答...

LLM (输出) :竞争对手 A 采用灵活定价策略...据推测,其企业版约为 $19/月。 (纯属虚构)

📉 痛点诊断

  • 幻觉 (Hallucination) :缺乏 元认知 (Metacognition) ,无法区分“事实”与“想象”。
  • 时效性熵增:训练数据截止的那一刻,它的世界就停止了转动。

✅ Mode B:ReAct 模式(慢思考循环)

ReAct 借鉴了科学实验的 “假设-验证” 逻辑,将一次性生成重构为 PDCA 循环 (Plan-Do-Check-Act)

🔄 Phase 1: Plan & Do (假设与行动)
  • [Reason] 直觉告诉我直接搜名字可能不准。我需要先做一次 “尽职调查” (Due Diligence) ,确认官网。
  • [Act] GoogleSearch("竞争对手 A 官网")
  • [Observe] 找到官网链接 www.comp-a.com
🔄 Phase 2: Check (验证与修正)
  • [Reason] 官网找到了,通常定价在 /pricing。就像审计员查账一样,我要去读取源文件。
  • [Act] Browse("www.comp-a.com/pricing")
  • [Observe] 页面显示:Enterprise "Contact Sales"。
🔄 Phase 3: Deliver (交付)
  • [Reason] 没有直接价格,不能瞎编。基于现有证据,给出定性分析,并标注“需询价”。
  • [Act] 生成最终报告。

✨ 哲学升维 ReAct 不是让 AI 变聪明了,而是赋予了它 “审视自我” 的机会。从“猜答案”到“查证据”,这是从 文学创作科学研究 的范式转移。

3.2 解剖 ReAct:控制论视角

ReAct 源自 Google Research 2022 年的论文。从 控制论 (Cybernetics) 的角度看,这是一个经典的 负反馈调节回路

“脑子(推理)输出控制信号,手(行动)执行,眼睛(观察)提供反馈以修正误差。”

📐 循环的三大支柱

阶段符号职责心理学/管理学隐喻
Reason💭决策中枢元认知。思考“我在思考什么”,决定下一步策略。
Act执行器MVP (最小可行性产品) 。一步一个脚印,避免大跃进。
Observe📡传感器客观事实。不仅看成功的 log,更要看失败的 error。

3.3 商业风控:如何优雅地“止损”?

在生产环境里,ReAct 循环不仅仅是代码逻辑,更是 成本管理。 每一个 Token 都是真金白银。让 Agent 无限循环下去,就像让员工在零产出的项目上无限加班。

我们需要引入 金融交易中的“止损” (Stop-Loss) 思维

🛡️ 风控仪表盘 (Risk Control)

我们将终止条件映射为不同的风控等级:

■ 硬风控:熔断机制 (Circuit Breaker)
  • 硬预算耗尽Cost > Budget。就像股票跌破止损线,不管你觉得下把能赢,必须强制平仓
  • 超时 (Timeout) :服务 SLA 的绝对底线。
■ 软风控:边际效用递减
  • 原地打转 (Looping) :连续 3 次观察结果相似。

    • 心理学解释功能性固着 (Functional Fixedness) 。Agent 陷入了思维死胡同,此时继续尝试的边际收益为零,必须打断。
  • Max Iterations:兜底策略。

💻 工程实现:把风控写进代码

func shouldStop(state *ReactState) bool {
    // 1. [熔断] 严控沉没成本
    if state.TokensUsed >= state.Config.TokenBudget {
        return true // 止损离场
    }

    // 2. [检测] 防止思维死循环 (功能性固着)
    if isResultConverged(state.Observations) {
        return true // 承认失败,也是一种止损
    }

    // 3. [验收] 只有拿到结果才算赢
    if containsCompletionSignal(state.LastThought) {
        // 防惰性:至少得动过手 (MinIterations)
        // 就像老板不仅看日报,还要看 Git 提交记录
        if state.Iteration >= state.Config.MinIterations {
            return true
        }
    }
    
    return false
}

3.4 Shannon Lab:工程美学

在我们的开源框架 Shannon 中,我们采用 关注点分离 (Separation of Concerns) 的设计哲学来管理配置。

1️⃣ 战术层:ReactConfig

管这一仗怎么打

  • MaxIterations: 战役的持续时间上限。
  • MinIterations: 反惰性机制。防止 LLM 还没干活就说“搞定了”。
  • ObservationWindow: 认知带宽管理。人的工作记忆只能容纳 7±2 个单位,Agent 同理。我们只保留最近 N 轮观察,丢弃噪音。

2️⃣ 战略层:Options

管整个公司的资源

  • BudgetAgentMax: 全局预算。无论战术怎么变,财务底线不能破。

2.5 避坑指南:认知偏差的陷阱

0010页.png

开发 Agent 时遇到的 Bug,本质上是 人类认知偏差 在 AI 身上的投射。

🕳️ 陷阱 1:刻板印象 (Stereotype / Looping)
  • 案发现场:Agent 反复搜同一个词,死不悔改。
  • 诊断确认偏误 (Confirmation Bias) 。它只在乎强化已有的想法,忽略报错信息。
  • 解法:引入“批判性思维”。在 Prompt 中强制要求:“如果结果未变,必须改变策略”。
🕳️ 陷阱 2:达克效应复现 (Premature Completion)
  • 案发现场:问“明天天气”,秒回“晴”。
  • 诊断过度自信。直接动用直觉 (System 1),跳过了查证 (System 2)。
  • 解法MinIterations = 1。强制进入流程。
🕳️ 陷阱 3:遗忘曲线 (Context Amnesia)
  • 案发现场:做到第 10 轮,忘了第 1 轮的目标。
  • 诊断工作记忆过载
  • 解法外部脑 (Scratchpad) 。搞个独立变量区,把关键事实(KPI、Target URL)“纹”在身上,每轮都看一遍。

2.6 总结

ReAct 的成功,不是代码的胜利,而是 认知心理学 的胜利。

它承认了 LLM 作为“直觉机器”的缺陷,并通过工程手段强行插入了一个 “反思回路”

作为开发者,你的角色不再是写死逻辑的程序员,而是设计思考框架的 架构师。你需要在这个循环中,平衡 探索的收益计算的成本

⏭️ 下一章预告

ReAct 只是给了 Agent 一个“理性的脑子”。但光有脑子没有手,那就是个“瘫痪的哲学家”。 下一章,我们将深入 Agent 的手脚 —— 工具 (Tools) 。 怎么让 AI 学会使用人类创造的 API?这不仅是技术对接,更是 跨物种的语言教学