ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

《深入理解 AI Agent》之学习笔记-DAY 2(ReAct 循环 + Harness 工程 )

2026/8/5 8:59:14 拓冰建站 浏览量
《深入理解 AI Agent》之学习笔记-DAY 2(ReAct 循环 + Harness 工程 ) Day 2ReAct 循环 Harness 工程核心知识点1. ReAct 循环Agent 的心跳Day 1 学了 Agent LLM 上下文 工具但这三个东西怎么协同工作答案就是ReAct 循环Reasoning Acting。名字只有两个词但实际循环是三个环节想Reasoning→ 做Acting→ 看Observing→ 想 → 做 → 看 → …直到任务完成。具体来说想模型先思考当前应该做什么做模型调用工具执行行动看观察工具返回的结果继续思考下一步工具调用的四步流程这是 ReAct 循环中做这个环节的展开步骤做什么谁来做① 声明工具在上下文里告诉模型有哪些工具可用名称、用途、参数开发者② 模型决定调用模型自主判断要不要调调哪个传什么参数模型③ 结果追加工具执行完毕结果被追加到上下文中框架④ 模型继续决策根据结果决定下一步模型书中用了一个查天气的例子伪代码表示如下第一步声明工具 第二步模型决定调用 tools: [{ assistant: { name: get_weather, tool_calls: [{ parameters: { function: get_weather, city: string arguments: {city: 北京} } }] }] } 第三步结果追加到上下文 第四步模型基于结果回复 tool: { assistant: { tool_call_id: call_1, content: 北京今天 28°C晴。 content: {temp:28} } }关键洞察开发者只需要定义工具和执行工具调用要不要调用、调哪个、传什么参数的决策完全由模型自主完成。轨迹TrajectoryAgent 的记忆轨迹是 ReAct 循环中最重要的概念——它是 Agent 执行过程中不断积累的消息历史。Agent 的上下文 静态前缀系统提示词 工具定义 轨迹动态消息历史书中用了一个多币种收入汇总的例子来演示轨迹轨迹 [ {role: user, content: Q1 2.5M美元, Q2 2.1M欧元, Q3 1.8M英镑, Q4 380M日元, 计算年度总收入}, # 第1轮 - 模型看到轨迹决定并行调3个货币转换工具 {role: assistant, reasoning: 需要将所有货币转换为USD..., tool_calls: [ {name: convert_currency, args: {amount: 2100000, from: EUR, to: USD}}, {name: convert_currency, args: {amount: 1800000, from: GBP, to: USD}}, {name: convert_currency, args: {amount: 380000000, from: JPY, to: USD}} ]}, # 工具执行结果追加 {role: tool, content: EUR-USD: 2282608.7}, {role: tool, content: GBP-USD: 2278481.01}, {role: tool, content: JPY-USD: 2541806.02}, # 第2轮 - 模型看到完整轨迹含工具结果调代码解释器汇总 {role: assistant, reasoning: 已获得转换结果现在需要汇总计算..., tool_calls: [{name: code_interpreter, args: {code: total 2500000 2282608.7 ...}}]}, {role: tool, content: Total: $9,602,895.73, Average: $2,400,723.93}, # 第3轮 - 所有计算完成生成最终答案 {role: assistant, reasoning: 所有计算完成总结结果..., content: FINAL ANSWER: 总收入$9,602,895.73...} ]注意轨迹里没有显示系统提示词和工具定义——它们作为静态前缀在每次 LLM 调用时自动拼接在轨迹前面。这个例子只用了3 次迭代、4 次工具调用就完成了复杂的多步骤任务。精妙之处在于上下文的累积性——每次 LLM 调用都能看到完整的轨迹这让模型理解当前在任务的哪个阶段、之前做了什么、得到了什么结果。2. Harness 工程模型之外的竞争力Demo 公式Agent LLM 上下文 工具生产公式Agent LLM [上下文 工具 约束 验证 纠正] Model Harness为什么需要后面三项因为一个能跑的 Demo 和一个可靠的产品之间有巨大的鸿沟。模型可能产生幻觉编造不存在的工具或参数选错工具遇到错误时无法自我恢复书里用退订单的例子说明没有 Harness有 Harness上下文看不到退款政策系统提示词写明7天退款政策工具不知道该调哪个API调用 query_order 和 process_refund约束无校验退款金额不超过订单金额验证无校验数据库状态确认退款成功纠正无API超时则自动重试同一个模型有无 Harness结果天壤之别。Harness 五要素功能一句话职责核心原则实际例子上下文提供感知信息信息充分性每个决策点都有足够信息系统提示词、知识库、Agent状态栏工具提供行动手段接口清晰命名直观、参数有例子MCP工具、代码解释器、搜索工具约束设定行为边界故障安全默认值默认关闭显式开放Claude Code每个工具默认需用户授权验证判断操作结果对错输入隔离只看结构化数据不看模型自由文本Linter检查、类型系统、结果校验纠正发现问题时自动修正不暴露中间态先静默重试失败再回退静默重试、接续生成、熔断机制五个功能构成一个闭环上下文与工具支撑决策 → 约束预防错误 → 验证发现偏差 → 纠正闭合循环。为什么 Harness 才是竞争力“当各家模型的能力越来越接近、不再是决定性的差异因素时竞争优势就转移到了模型之外的工程实践。”LangChain 的实践是很好的例证Coding Agent 从 52.8% 提升到 66.5%改变的不是模型而是 Harness——让 Agent 自动检查执行结果、检测是否陷入重复循环、优化思考策略。3. 上下文适应的三层机制Agent 的学习/适应不止发生在训练阶段。按更新的位置和持续时间有三条互补路径层次发生位置持续时间优势局限对应章节上下文适应当前任务内仅本次会话快速、低成本受窗口限制第2章外部产物更新跨任务持久保留可审计、可修订需通过上下文使用第3-5、8章模型参数更新训练周期永久广泛泛化部署成本高第7章三者协同上下文负责临场产物负责积累参数负责内化。4. 工作流 vs 自主 Agent选择原则从简单到复杂单个 LLM 调用 → 工作流 → 自主 Agent ↑ ↑ ↑ 能解决就别加复杂度 可分解为固定子任务 需要动态决策才用工作流自主 Agent执行路径预定义代码路径确定性的根据反馈实时决定优势严格控制、安全灵活、能处理未预料情况局限缺乏变通成本高、复合错误风险适用有严格合规要求的流程开放式问题实践中常混合使用关键流程用工作流确保可靠性灵活决策部分切换到自主模式。比如 n8n 可以在同一个系统中同时使用工作流节点和自主 Agent 节点。