Agent 和聊天机器人的分界线在哪?一个词:循环。聊天是一次请求一次响应,Agent 是在循环里反复"推理→调工具→看结果",直到任务完成或触发停止条件。Anthropic 工程团队的说法很到位:Agent 通常就是 LLM 在一个循环里基于环境反馈使用工具。
循环的最小实现
去掉包装,核心就一个 while:
while not done:
response = call_llm(messages) # LLM 想一步
if response.tool_calls: # 决定调工具
results = execute_tools(...) # 执行
messages.append(results) # 结果塞回上下文
else:
done = True # 不调了,输出答案
每轮内部五个阶段:感知(输入进上下文)→ 推理(判断现状与下一步)→ 规划(复杂任务拆子步骤)→ 行动(调工具)→ 观察(结果回填)。推理是大脑,观察是回路——少了观察,循环变成空转。
两种干法的取舍
ReAct:边想边做。 每步先 Thought 再 Action 再 Observation,灵活、能随时纠偏,代价是每轮都调 LLM,token 和延迟双高。适合路径不确定的探索性任务。
Plan-and-Execute:先想好再做。 先生成完整计划,再逐步执行。省 token、延迟低,但计划错了纠偏成本大。适合结构清晰、步骤可预知的任务。
选型的判断标准不是哪个更先进,而是任务的确定性:能预判步骤的选 Plan-and-Execute,不可预知的选 ReAct,混合任务用"计划骨架 + 局部 ReAct"。
一个真实任务的循环轨迹
"找 2026 年引用量最高的 Agent Memory 论文并总结":第一轮推理"先搜论文"→调学术搜索→15 篇结果;第二轮推理"最高那篇要全文"→调文档检索→拿到摘要;第三轮推理"信息够了"→不调工具直接生成→退出。三轮、两次工具调用、一个答案。单轮响应做不了这事——你无法在一次 LLM 调用里完成搜索加检索加总结。
停止条件:生产环境必须补的一课
Demo 里循环靠"模型自己说完成"就够了,生产环境必须显式加三道闸:最大迭代轮数(防死循环烧 token)、token 预算上限(防单任务成本失控)、工具失败熔断(连续失败 N 次终止并告警)。三道闸全部落在代码层而不是提示词层——提示词约束不可靠,模型偶尔会忽略。
验证自己写的循环是否正确
三条检查:日志能看到完整的推理-工具-观察序列(不是黑箱跑完);人为让一个工具返回错误,确认下一轮推理真的消费了这个错误信息;设一个小轮数上限跑一个复杂任务,确认循环按上限停止而不是静默截断。三条过了,这个循环才配叫 Agent,而不是套壳的 while。

评论0