过去一年,"agent"大概是 AI 行业被滥用最严重的词。
套个 API 调用叫 agent,加个搜索工具叫 agent,多模型串联也叫 agent。风投 deck 里不写 agent 都不好意思融资。这个词已经被稀释到几乎失去意义。
然后 OpenAI 自己下场了。
他们发布了一份 34 页的 PDF——《A practical guide to building agents》,来自真实客户部署经验的提炼。标题很朴素,内容也克制。但读完之后你会发现,整份文档的核心论点极其直白:
Agent 就是一个 while 循环。




▲ 开发者 @shmidtqq 在 X 上总结这份指南的核心要点,获得 172 赞、165 收藏
先搞清楚:什么算 Agent,什么不算
OpenAI 在文档第 4 页给出了一个干脆利落的定义:
"Agents are systems that independently accomplish tasks on your behalf."
「Agent 是代替你独立完成任务的系统。」
关键词是独立。
一个只会单轮回答问题的 ChatBot——不算。一个做情感分类的 LLM pipeline——不算。你问它一句、它答一句、对话结束——不算。
要算 agent,必须满足两个条件:
第一,用 LLM 驱动整个工作流的执行和决策。模型自己判断下一步做什么,遇到错误能自主纠正,搞不定的时候知道把控制权交还给人。
第二,能动态调用工具。查数据库、读 PDF、发邮件、更新 CRM——这些都是"工具"。OpenAI 把工具分成三类:Data(读取数据)、Action(执行动作)、Orchestration(把另一个 agent 当工具调用)。
听起来还是有点抽象?别急,重点在下面。
拆开 Agent 的引擎盖:一个 while 循环
整份 34 页文档最核心的段落出现在第 14-15 页。OpenAI 用黑体字强调了这句话:
"This concept of a while loop is central to the functioning of an agent."
「while 循环的概念是 agent 运作的核心。」

▲ OpenAI 官方指南第 14-15 页,明确指出 agent 的核心是 while 循环编排模式
具体怎么运转?流程其实清晰得令人意外:
运行模型 → 决定调用工具 → 拿到结果 → 喂回模型 → 重复 ↓ 直到满足退出条件 → 停止 在 OpenAI 的 Agents SDK 里,这个循环通过Runner.run()方法启动。循环在两种情况下停止:
模型调用了一个final-output tool(最终输出工具),表示"任务完成了" 模型直接返回回复,没有发起任何 tool call
就这样。没有什么深度学习的魔法,没有涌现的神秘能力。模型跑一轮、调工具、拿结果、再跑一轮。循环往复,直到触发退出条件。
同一个 GPT-4o 模型,调用一次就是聊天机器人。放进 while 循环、配上工具和退出条件,就变成了 agent。
模型没变,架构变了。
SDK 源码证实:Agent Loop 就长这样
这不只是文档里的说法。打开 OpenAI Agents SDK 的官方运行文档,白纸黑字写着"The agent loop":

▲ OpenAI Agents SDK 文档页面,详细列出 agent loop 的完整运行逻辑
翻译成伪代码,核心逻辑大概 6 行:
while True: response = call_llm(agent, input) if is_final_output(response): return response # 退出 elif is_handoff(response): agent = new_agent # 切换 agent elif has_tool_calls(response): results = execute_tools(response) input.append(results) # 结果喂回,继续循环 注意第三个分支:执行完工具之后,结果被 append 回输入,然后继续循环。这就是 agent 能"持续工作"的全部秘密——每一轮的输出成为下一轮的输入,模型在累积的上下文中不断推进任务。
SDK 还支持 handoff(交接):一个 agent 可以把任务转交给另一个 agent,本质上就是在循环里切换当前执行者。多 agent 系统,归根到底还是 loop 套 loop。
读完 6 个框架的源码,发现底层是同一段代码
如果你觉得这只是 OpenAI 一家的设计思路,那就看看独立开发者 Steve Kinney 做的事情。
他花了大量时间阅读 6 个主流 agent 框架的源码——OpenAI Agents SDK、Claude Code(以及它封装的 Claude Agent SDK)、Codex、Cursor、Vercel AI SDK、LangGraph、smolagents。
结论?

▲ Steve Kinney 博客《The Anatomy of an Agent Loop》,对比多个框架源码后发现底层架构完全一致
"Every agent framework I've looked at converges on the same architecture. Not similar. The same. A while loop that calls an LLM, checks if the response contains tool calls, executes them if it does, and stops if it doesn't."
「我看过的每一个 agent 框架都收敛到了同一个架构——完全相同的架构。一个 while 循环,调用 LLM,检查回复是否包含 tool call,有就执行,没有就停止。」
他本来期待找到什么"秘密武器"——也许某个框架有独特的编排逻辑,也许有人发明了全新的执行范式。结果翻遍源码发现:同样 6 行逻辑,穿着不同的外衣。
差异在哪?全在loop 周围的工程:
- LangGraph
用 graph + checkpoint 机制换取可恢复性 - smolagents
用 code-as-action(让模型写代码执行动作) - Claude Code
把 loop 藏在编译后的二进制里 - Vercel AI SDK
暴露 stopWhen组合条件让开发者自定义退出逻辑
循环本身?已经是一个"已解决的问题"。
真正的难题藏在循环外面
如果 agent 就是 while 循环,那为什么 OpenAI 要写 34 页?
因为loop 好写,刹车难装。
OpenAI 在文档中用了将近 10 页篇幅讲Guardrails(护栏),占全文近三分之一。这个比重说明了一切。
护栏分好几层:
- LLM-based
:用分类器判断用户请求是否相关、是否安全、是否试图越狱 - Rules-based
:黑名单、正则匹配、长度限制 - 工具风险分级
:低风险(查询天气)、中风险(发邮件)、高风险(大额退款) - Human tripwire
:超过某个风险阈值,强制转人工审核
SDK 把 guardrail 做成了 first-class 特性——护栏和 agent 并行运行,采用"乐观执行 + 并发检查"模式。agent 在往前跑,护栏在旁边盯着,一旦触发 tripwire 就抛异常、中断执行。
还有一个经常被忽视的细节:退出条件的设计是产品决策,跟 prompt 工程没关系。
你得想清楚:什么时候算"完成"?什么时候该放弃?什么时候该找人帮忙?
没想清楚会怎样?社区里流传着一个真实案例:某个 agent 跑了11 天,烧掉$47,000。因为没有设置明确的退出条件和预算上限,agent 在循环里"礼貌地互相请求更多工作",直到账单把人吓醒。
社区的共识:先搞好一个循环,别急着上 swarm
这份指南在 X(Twitter)和 Reddit 上引发了大量讨论。有意思的是,社区的反应高度一致。


▲ @AnatoliKopadze 把 34 页指南压缩成一页,6 个阶段 + 1 个循环,获得 601 赞、126 转发
X 上高赞评论几乎都在说同一件事:
"The agent is not the model, it is the loop around it."
「Agent 的核心在模型外面——在那个循环里。」
"The same model in one call is a chatbot. The same model in a loop, with tools and an exit condition, is an agent."
「同一个模型调用一次是聊天机器人。同一个模型放进循环、加上工具和退出条件,就是 agent。」
"Built multi agents day one. Biggest waste of a weekend ever..."
「第一天就搞了多 agent 系统。这辈子最浪费的一个周末……」
OpenAI 在文档里也明确建议:先用单个 agent + 逐步添加工具,尽可能推迟拆分。只有当逻辑变得极其复杂(大量 if-then-else 嵌套),或者工具数量超过 10-15 个且互相重叠的时候,才考虑拆成多 agent。
拆分有两种模式:Manager pattern(经理 agent 把其他 agent 当工具调用)和Decentralized handoff(agent 之间直接交接)。但无论哪种,底层还是 loop。
有人替你算过成本:单 agent 循环的 token 消耗大约是普通对话的4 倍。多 agent?15 倍。很多场景并不值得付这个价格。
34 页浓缩到底
OpenAI 这份指南做了一件事:把 "agent" 从营销词汇翻译成了工程规范。
翻译结果就是——
Agent = while 循环 + 工具 + 退出条件 + 护栏。
循环本身可能只有 6 行代码。但围绕循环的工程——上下文管理、工具幂等性、成本预算、失败检测、人工兜底——这些才是区分玩具和生产系统的关键。
先造引擎,再装刹车?不,刹车要和引擎一起造。
34 页读完,最值得记住的或许是那条 X 上的评论:
"It moved my work from tuning prompts to designing the loop."
「这让我的工作从调优 prompt 转变为设计循环。」
从调参数到设计系统。这才是 agent 真正的起点。
夜雨聆风