OODA 循环:为什么迭代速度能打败“完美计划”
OODA 循环 / OODA Loop
中文:观察—定向—决策—行动,不停循环;赢的往往不是计划最完美的,而是循环转得最快的。
EN: Observe, orient, decide, act, on repeat—the winner is usually not the best plan but the fastest loop.
我们来聊一件做 AI 的人天天在跟它较劲、却很少有人点破的事:在一个变化快得离谱的领域里,赢家几乎从来不是那个计划做得最周密的团队,而是那个“观察—调整—再来一遍”的循环转得最快的团队。计划再完美,也架不住它在你落地之前就过期了。
为什么要问这个问题
先说一个你大概率亲历过的场景。
你给 Agent 设计了一套漂亮的流程:先规划、再分步执行。Demo 里跑得行云流水。可一上真实任务就露馅:它规划到第一步就把整条路线定死了,跑到第三步,工具明明返回了一个“文件不在这”“接口报错了”的信号,它却像没看见,继续按最初那张地图往前走,把一个早就该掉头的任务,一路执行到彻底失败。你回看 trace,最憋屈的是——它该拿到的信息全都拿到了,只是压根没拿这些新信息去改主意。
换个场景,同样别扭。两个团队做同一个方向,A 团队花三个月憋一个“考虑周全”的大版本,B 团队每周都拿真实数据小改一版、上线、看反馈、再改。三个月后 A 团队那个精心设计的方案,往往还没上线就已经不对了——基座模型升级了、用户的需求偏了、B 团队摸索出来的那条路它根本没料到。
这两件事,其实是同一件事:在一个不确定、还一直在变的环境里,决定胜负的不是你某一个决定有多聪明,而是你能多快地拿新信息推翻上一个决定。 慢,是原罪。
这套道理不新鲜,也根本不是 AI 独有的。一个美国空军的战斗机飞行员,早在半个世纪前就把它想透了,讲的还不是软件,是空战——两架飞机怎么互相咬尾巴。
它从哪来
约翰·博伊德(John Boyd),美国空军上校,一个传奇又难搞的战斗机飞行员。他有个外号叫“四十秒博伊德”——他敢跟任何飞行员打赌:模拟空战里,让对方先咬住他尾巴的有利位置,他能在四十秒内反过来反咬对方,赌注四十美元,据说从没输过。
博伊德最不安分的地方,是他不满足于“赢”,非要搞清楚“为什么赢”。朝鲜战争里,美军的 F-86 打苏制米格-15,打出了大约十比一的交换比。可按纸面参数,米格爬升更快、转弯更利、飞得更高,本该是更好的狗斗机。博伊德一辈子都在追问这个反常:一架更“差”的飞机,凭什么赢?
他后来把答案磨成了一套叫 OODA 的东西——Observe(观察)、Orient(定向)、Decide(决策)、Act(行动)四个词,接成一个不停循环的圈。这套东西从空战出发,最后渗进了美国海军陆战队的作战条令、商业竞争,甚至创业方法论。它简单到能画在餐巾纸上,却是少数几个“越用越觉得深”的模型。
核心直觉
OODA 的核心,一句话能说清:你面对的是一个会变的世界;活下来、赢下去的关键,不是想出一个完美方案然后照做,而是快速地“看一眼、理解、动一下”,再根据世界的反应马上重来一遍。
拆开这四步:
- 观察(Observe):从环境里拿新信息——雷达、报错、工具返回、用户反馈、监控曲线。你看不到的东西,就没法应对。
- 定向(Orient):把观察到的碎片,拼成一张“现在到底在发生什么”的图。这是四步里最关键、也最被忽视的一步,后面专门讲。
- 决策(Decide):基于这张图,选下一步怎么走。本质是提出一个假设。
- 行动(Act):把决定做出去。而行动会改变环境,于是产生新的观察——圈就这么转起来了。
graph LR
O[观察] --> R[定向]
R --> D[决策]
D --> A[行动]
A -.行动改变环境 于是重新观察.-> O
注意那条虚线——你每行动一次,世界就变一次,于是你得回到“观察”重新看。 OODA 不是一条从头走到尾的流水线,是一个永远在转的圈。谁的圈转得快,谁就掌握主动。
博伊德最锋利的那句话是:“钻进对方的循环里”(get inside the opponent’s OODA loop)。 意思是,如果我的圈比你转得快,那么每当你好不容易看清我上一个动作、做出反应时,我早就已经动了两三次了。你永远在应对一个已经不存在的局面,越打越乱,最后自己把自己逼进死角。赢的人未必更聪明,他只是让对方的世界观永远慢半拍。
还有一件事,博伊德反复强调,可几乎所有人转述 OODA 时都漏掉了:四步里,Orient(定向)不是平等的一步,它是整个循环的隐藏中枢。 你带着什么样的先验、经验、心智模型去“定向”,直接决定了你会注意到哪些观察、会做出什么决策、会采取什么行动。定向错了,观察得再多、行动得再快,都只是更快地奔向错误。
记住这把钥匙,后面反复用它:比的不是谁单步更强,是谁的循环转得更快、而且肯在中途推翻自己——而循环的质量,卡在 Orient 这一步。
现实中的例子
回到博伊德那个问题:一架纸面更差的 F-86,凭什么十比一地赢?答案藏在两个不起眼的细节里,跟“火力多猛、飞得多快”都没关系。
第一,F-86 有个水滴形的座舱盖,视野好得多,米格的座舱框架挡视线。这意味着 F-86 飞行员的 Observe 更强——他能更早、更全地看到对手在干什么。
第二,也是博伊德觉得最关键的:F-86 用的是液压助力操纵,从一个机动动作切到下一个动作,快得多。米格是机械操纵,单看某一个动作,米格甚至可能更利落;可一旦要连续地“换招”,F-86 就顺滑得多。
把这两点合起来:F-86 飞行员能更快地看清(Observe)、更快地在一连串动作之间切换(Act),于是他整个 OODA 圈转得比对手快。每一个单独的动作,米格也许都不输;可 F-86 是这么打的——虚晃一招,米格开始反应,还没反应完,F-86 已经换成了下一招。米格飞行员永远在应对三秒钟前那个已经消失的局面,越打越懵,最后往往是自己先犯致命错误。
这就是“钻进对方循环里”的实战样子:不是靠某一下更狠,是靠让对方永远慢半拍。
这故事听着是半个世纪前的空战,但你把“米格飞行员”换成“那个一年才发一次大版本、永远在追赶对手上一步的团队”,剧本一个字都不用改。
映射到 AI:一个 Agent 的主循环,本身就是 OODA
AI 大概是今天最适合谈 OODA 的地方,因为我们这行做的很多东西,本质就是一个在不确定环境里不停转圈的系统。
Agent 的主循环,就是一个 OODA。 这不是比喻,是字面意义上的重合。一个 Agent 干活的循环是:调工具、拿到返回结果(Observe)→ 理解这个结果意味着什么(Orient)→ 决定下一步调哪个工具(Decide)→ 把这一步执行出去(Act)→ 结果又变成新的观察。你现在最熟的 ReAct 框架,那个 Thought → Action → Observation → Thought…… 的循环,换个名字就是 OODA。它里面那一步,干脆就叫 Observation。
“肯不肯重新定向”,是好 Agent 和坏 Agent 的分水岭。 回到开头那个憋屈的场景。一个“先规划、再照着执行”(plan-then-execute)的 Agent,是把 Orient 和 Decide 全堆在最前面一次性做完,然后闷头 Act 到底。问题是——它的定向停在了第一步那一刻。跑到第三步,环境早变了(文件不在、接口挂了、上一步的假设错了),它却带着一张过期的地图往前冲。这就是那个“永远在应对已经消失的局面”的米格飞行员,只不过这次是你的代码。一个好 Agent 反过来:每观察到一个新结果,就重新定向一次。 工具报错?就地重新理解现在的处境,改计划。这正是为什么 ReAct 那种“想一步、做一步、看一步”的交错式循环,在真实的、乱糟糟的任务上,往往打得过那种把计划一次性想死的做法——不是因为它更聪明,是因为它的 OODA 圈没有卡死在开头。
Eval-driven 开发,也是一个 OODA。 你做模型/产品迭代的循环是:看 eval 和线上 trace 哪里挂了(Observe)→ 搞清楚为什么挂(Orient,最难的一步)→ 定一个改法,改 prompt、加工具、还是微调(Decide)→ 上线、重新跑 eval(Act)。这里藏着一个对团队生死攸关的量:你这个圈转一圈要多久? 如果你的 eval 要跑两周,你的 OODA 周期就是两周;隔壁团队两小时能跑完一圈,一个月下来他们比你多迭代几十倍——他们就“钻进了你的循环里”,把你甩开。
Orient 是最难、也最该投入的一步——可几乎所有人都在优化别的。 大家拼命加日志(把 Observe 做厚)、拼命提速部署和加工具(把 Act 做快),却很少有人认真打磨“理解这次观察到底意味着什么”这一步。但对 Agent 来说,Orient 的质量取决于它的先验——系统提示词、上下文里塞了什么、检索回来的知识对不对。同一个报错,Orient 强的 Agent 读出“哦是权限问题,换个路径”,Orient 弱的读成“任务失败”,直接放弃或者瞎试。这就是为什么 context engineering 这么要命:你不是在给模型喂料,你是在决定它那一步“定向”的底子。
所以开头那两个困惑,答案到这里就一句话:慢,和不肯重新定向,是同一种死法——你的循环要么转得太慢,要么在开头就卡死了,两种都会让你带着一张过期的地图,输给一个圈转得更快的对手。
工程师视角:先量一量,你的循环转一圈要多久
道理讲完,落到几个具体动作上。
先去量你的循环周期。 从“发现一个问题”到“改完、上线、看到结果”,墙上时钟走了多久?这个数字,而不是你模型多强,才是你迭代速度的真正上限。大部分团队从来没量过它,于是也从来不知道自己的瓶颈到底卡在哪一步。
把循环的每一步都做便宜。 Observe 依赖可观测性——你没打的日志、没存的 trace,就是你看不见的战场(你没法应对你观察不到的东西)。Orient 依赖你能不能快速定位根因。Act 依赖你敢不敢一天上线十次、能不能一键回滚。任何一步慢,整个圈就慢。
把 Agent 设计成会重新定向的。 别在开头憋一个大计划然后闷头执行。让它交错地观察和思考,尤其在每个工具返回之后,给它一个“要不要改主意”的机会。把“死守原计划”当成一种要防的 bug,而不是一种稳定。
但也要防止它把自己转晕。 这是硬币的另一面:一个每收到一丁点噪声就推翻全盘、重新规划的 Agent,会陷进原地打转,永远收敛不了。重新定向要够勤,勤到不脱离现实;但别勤到一惊一乍。这个度,是 Agent 工程里最难调的东西之一。
一句话总结这节的姿势:别再盯着“把某一个决定做到完美”,去盯着“把整个循环转快、并且让它对新信息敏感”。 前者是米格,后者是 F-86。
投资视角:你评估的不是它现在多强,是它多快变强
把视角拉到公司层面,OODA 换了身衣服又出现了,而且它和“谁家现在的模型分数最高谁就赢”那种直觉正好相反。
一家一周能发一版、还能从真实用户身上学到东西的公司,会系统性地“钻进”一家一个季度才动一次的公司的循环里。等那个大公司终于对你上一个功能做出反应,你已经又发了三个了——它永远在追你的上一步,就像那个越打越懵的米格飞行员。竞争里真正的护城河,很多时候不是某一个功能有多强,是你迭代的节奏比对手快一个数量级。
绕回到我们做 AI 这件事,这条给工程师的启示特别直接:当你要判断一个 AI 系统、甚至一家 AI 公司值不值得押注时,别只盯它今天的模型有多强——那是个快照,会过期。真正该看的是它的 OODA 周期:多久发一次版、多快能从线上学到东西、出了问题多快能改回来。 在一个基座模型每几个月就翻一遍篇的领域里,循环速度就是复利,当下的领先只是本金。别用一张快照,去赌一场长跑。
生活视角:你学任何东西,靠的都是这个圈
这套机制也根本不待在机房里。
你学会任何一样真东西——写代码、弹琴、做饭、讲一门外语——靠的都不是先把理论读完美再开始,而是这个圈:试一下(Act)、看结果怎么样(Observe)、搞明白哪儿不对(Orient)、调整(Decide)、再试。反馈越快、圈转得越紧,你长得越快。那个上来就下场、不停吃反馈的人,几乎总能赢过那个抱着完美计划迟迟不敢动手的人。这也是为什么“先做个能跑的丑版本”往往比“在脑子里憋一个完美方案”强——不是因为丑版本好,是因为它让你的圈转起来了。
把这个想明白,对你设计 AI 产品其实很要命:一个好的 AI 工具,本质是在帮用户把他的 OODA 圈转得更快——更快看到结果、更快理解为什么、更快试下一版。一个 AI 编程助手真正的价值,不只是替你敲字,是把你“写一版、看报错、改一版”的循环,从几分钟压到几秒钟。所以做这类产品时,值得反复问自己一句:我到底是在帮用户把循环转快,还是只是在某一步塞了个花哨功能,反而让整个圈更慢了? 这个问题的答案,往往决定了这个功能是被爱,还是被卸载。
常见误解
第一个,也是最常见的:把 OODA 读成“就是要快、天下武功唯快不破”。不全对。 OODA 说的是整个循环快,尤其是重新定向快——是学得快,不是手快。如果你的 Orient 是错的,转得越快,只是让你更自信、更高效地冲向错误答案。一个 Orient 坏掉的 Agent 疯狂循环,只会更快地把自己绕进死胡同。快,得建立在肯改主意的基础上,才有意义。
第二个:以为 OODA 是一条规规矩矩走四步的流水线。不是。博伊德画的那张真实的 OODA 图,比干净的四步圈复杂得多——Orient 是中间一个连着所有东西的大枢纽,前后还挂着一堆反馈线。实战里,高手经常跳步:因为他的 Orient 太成熟了,看一眼(Observe)几乎能直接动手(Act),中间的 Decide 被“肌肉记忆”短路掉了。OODA 是个连续流动的东西,不是打卡式的四个格子。
第三个:以为“圈转得快”永远是好事。不是。快只在环境会变、对手会动的时候才值钱;而且它有个前提,就是你的每一次行动都足够便宜、能回滚。这个下面单独说。
什么时候不成立
知道一个模型什么时候失效,比记住它本身更值钱。OODA 要成立,靠的是“环境在变 + 行动便宜可回滚 + 定向大致靠谱”。把这几条反过来,就是它不成立的地方:
你的定向是错的。 这是最危险的情况。Orient 错了,循环不会拯救你,只会加速你翻车——你是在更快地把错误决定做出去。一个把世界模型幻觉掉的 Agent,转得越快,跑偏得越远。这种时候该做的是停下来修 Orient,而不是转得更快。
环境是稳定的、问题是确定的。 OODA 是为“对手会动、局势在变”准备的。如果问题固定、边界清楚(一道确定的数学题、一条纯确定性的流水线),一个想清楚的一次性方案,往往打得过手忙脚乱的反复试。迭代速度值钱,是因为有不确定和变化;没有这两样,它就不值钱。
每一次行动都很贵、或者不可逆。 这是“别废话赶紧迭代”这句话真正的边界。OODA 默认你的动作是便宜、可回滚的——飞行员可以试一个机动,你可以上线再回滚。可如果每一次“行动”都要烧掉几百万(一次大规模预训练),或者根本没法撤回(一个单向门决策),你就不能靠“多转几圈”来试错,只能把思考尽量前置。行动便宜可回滚 → 靠循环;行动昂贵不可逆 → 靠深思。 这也正好接上上面那条:Agent 里凡是不可逆的操作(删库、发钱、对外发消息),都该从“快速循环”里单拎出来,加一道人类确认。
判断方法还是那把钥匙,反过来用:“我现在这个圈,是转得不够快,还是定向就错了?环境到底变不变?我这一步撤得回来吗?” 想清楚这三问,你就知道该踩油门(转快循环),还是该踩刹车(先修定向、或先想清楚再动)。
相关模型
OODA 不是孤岛,它挂在一张网里。下面这些是同一张网上的邻居(这些文章我会陆续补上):
- 贝叶斯思维 / Bayesian Thinking:Orient 这一步,本质就是贝叶斯更新——拿新证据去修正你对世界的判断。那个不肯重新定向的 Agent,就是那个不肯更新先验的人。
- 古德哈特定律 / Goodhart’s Law:你的整个循环,是架在你 Observe 到的那个指标上的。如果那个指标已经被 Goodhart 了,你就是在拿一个被污染的观察拼命定向——圈转得再快,也只是快速地错。
- 二阶效应 / Second-order Effect:Act 会改变环境,改变后的环境又变成你下一次的 Observe——OODA 本身就是一个充满二阶效应的系统,你每一次行动都在重塑下一次要面对的局面。
- PDCA 循环 / PDCA:Plan–Do–Check–Act,OODA 在制造业和质量管理里的稳态表亲。一个偏“打仗、抢速度、争主动”,一个偏“改进、求稳定、可复用”——都是同一个“闭环迭代”家族的成员。
一句话记住
中文:世界一直在变,所以别爱上你的计划——赢的从来不是那个方案最完美的人,是那个“看一眼、改一下、再来一遍”的循环转得最快、还肯在半路推翻自己的人。
EN: The world keeps moving, so don’t fall in love with your plan—the winner is never the one with the most perfect plan, but the one whose observe-adjust-repeat loop turns fastest and who’s willing to overturn it midway.