啤酒游戏:让 Claude 和 Codex 干了这杯酒

上一篇讲的是同一门《运营与供应链管理》的设施选址案例。那次比较干净:重心法有唯一解,让两个 AI 互评一轮,再用 Python 跑一遍,基本就能定谁对谁错。

这次不一样。第二次课后作业是经典的啤酒游戏(Beer Game):零售商 → 批发商 → 制造商三级供应链,真实需求在第 2 周从 4 箱/周升到 8 箱/周,之后保持稳定,但由于信息失真和 4 周提前期,链路里层层放大。案例写到:到第 24 周零售商还堆着 75 箱、批发商还堆着 218 卡车量,而制造商在第 19 周库存已经冲到 93 批。

题目三问:

  1. 画出 1–24 周库存和订单图,解释牛鞭效应
  2. 分析牛鞭效应的影响、成因、对策
  3. 假设你是“聪明零售商”,给出最优订货策略,并算出你比“普通零售商”多赚多少钱

问题 1、2 偏定性,两个 AI 答得大体接近。真正分歧出在问题 3:Claude 最初算出超额收益约 500–1000 元,Codex 最初算出 7500–7900 元。差了一个数量级。

一开始的分歧,其实不只是一道算术题

两份答案的最优订货策略看上去很接近:第 1 周按常态 4 箱,第 2 周开始往上调,之后维持 8 箱/周的稳态。真正的差别只在一句话:

  • Claude:第 2 周订 12 箱
  • Codex:第 2 周订 8 箱

但光是 4 箱之差,不足以解释为什么一个答案多赚几百元,另一个多赚几千元。真正把两份答案拉开的,是背后的两个建模选择:

  • 行为假设:第 5 周不可避免的 4 箱短缺,到底能不能在第 6 周作为 backorder 补卖?
  • 收益口径:第 24 周普通零售商手上的 75 箱库存,到底是资产,还是在本题比较口径里被等效忽略掉?

事后看,双方真正争的不是“谁算错了”,而是“哪套假设和口径更适合这道题”。

第一轮:双方先各自为自己的答案辩护

我先让它们各自写一份对比报告:

  • Claude_VS_Codex_by_Claude.md
  • Claude_VS_Codex_by_Codex.md

这一轮的立场很清楚:

  • Claude 认为自己那份更合理,因为案例 PDF 第 6、7 周明确写了顾客会留下名字电话等货,说明 backorder 真实存在
  • Codex 认为自己那份更严谨,因为从 24 周现金流口径看,普通零售商第 24 周手里还有 75 箱库存,占着现金、卖得慢,财务上不能当成“已经实现的收益”

如果把两边都尽量善意理解,它们其实各有抓手:

  • Claude 抓的是案例行为证据
  • Codex 抓的是比较口径和现金占用

到这一步,我还不能明确说谁一定错。因为和设施选址那题不一样,啤酒游戏这道题在第 3 问里确实存在建模自由度。

第二轮:真正让局面收敛的,不是继续争观点,而是“用对方的尺子重算一遍”

第二轮我把两份对比报告再丢回去,让双方继续回应:

  • Claude_VS_Codex_Round2_by_Claude.md
  • Claude_VS_Codex_Round2_by_Codex.md

Claude 这一轮做得最好的一点,是它没有继续停留在“PDF 原文支持 backorder”这种事实争论上,而是直接做了一件更硬的事:

用 Codex 自己定义的口径,反算 Claude 的策略。

它的核心计算逻辑是:

如果第 2 周订 12 箱,那么:

  • 第 5 周的 4 箱缺口先形成 backorder
  • 第 6 周正好到货 12 箱
  • 这 12 箱刚好覆盖“第 5 周积压的 4 箱 + 第 6 周真实需求 8 箱”
  • 之后回到稳态,每周到货 8 箱、卖 8 箱
  • 因而 期末库存仍然是 0

按这个路径,套进 Codex 当时自己采用的“收入 - 采购 - 持有成本”的 24 周现金流式口径,会得到:

口径 Claude 策略(W2=12) Codex 策略(W2=8)
销量(箱) 188 184
收入(元) 23,500 23,000
采购(元) 17,600 17,200
持有成本(元) 9.23 9.23
现金利润(元) 5,890.77 5,790.77
期末库存(箱) 0 0

也就是说,在同一口径下,Claude 的第 2 周订 12 箱方案,比 Codex 的第 2 周订 8 箱方案多赚 100 元。这 100 元恰好就是多履约的 4 箱 × 单箱毛利 25 元。

这一步很关键,因为它把争论从“你觉得、我觉得”推进到了“就用你自己的尺子量,结果还是这样”。

第二轮之后,Codex 的主要修正也很明确

Codex 在第二轮里做了两个重要修正。

1. 承认原先的 7500/7900 元量级不合理

它接受了一个关键点:

不能把普通零售商第 24 周剩余的 75 箱库存直接按 0 价值处理。

因为案例并没有说这 75 箱永远卖不出去。真实需求仍然大约是 8 箱/周,这些库存更合理的理解是:

  • 期末库存资产
  • 后续持有成本负担
  • 潜在的折价风险和资金占用

而不是立刻等于当期亏损。

这一步修完以后,Codex 把自己原先的“多赚 7500/7900 元”回收掉了。

2. 接受“第 2 周订 12 箱”作为基准更优方案

在允许并管理 backorder 的前提下,Codex 也接受了:

  • 第 2 周订 12 箱
  • 第 3~20 周每周订 8 箱
  • 第 21~24 周订 0 箱

这个策略方向。

不过这里 Codex 也补了一句我认为很重要的限定:

这个“12 箱更优”的结论,最好显式写出前提:允许并管理 backorder

我认为这是必要的,因为 PDF 确实证明了 backorder 现象存在,但它并不自动等于“第 5 周那 4 箱一定 100% 都能补卖”。所以更稳妥的说法,不是“无条件严格最优”,而是“在题目给定的聪明零售商设定下,作为基准解更合理”。

到最后,双方其实收敛到了什么?

如果只看“最后谁赢”,这个过程会被误读成:

  • Claude 证明了自己是对的
  • Codex 改口认输

但我觉得更准确的描述是:

双方最后在“主策略”和“收益量级”上基本收敛了,但在普通零售商对照组的具体重构数值上,还没有完全统一。

已经收敛的部分是:

  1. 第 1、2 问两边都能作为参考
  2. 第 3 问的基准策略应以“第 2 周订 12 箱”为主
  3. 这个策略的前提是:允许并管理 backorder
  4. 原先的 7500/7900 元 应判为口径失真,不再成立
  5. 更合理的收益量级是:几百元到一千元左右

但还没有完全统一的部分是:

  • Claude 版当前仍把中心值写成 727 元
  • Codex 修订后写成了基准 476 元,并把现实区间写成 500~1,000 元

这说明它们已经没有大的结论性冲突,但还保留着一个典型的“同方向、不同中心值”的建模差异:普通零售商路径到底按哪组重构数据来算。

一个小插曲:我自己也踩了“AI 不重读文件”的坑

这轮还有个挺好玩的插曲。

共识文件落完之后,我又让 Claude 再检查一次两份正式答案是否还有逻辑冲突。按道理说,这一步应该先重读最新版文件再比。

但它一开始并没有这么做。它直接沿用脑子里前几轮的旧印象,给了我一个“已经基本没问题”的判断。我后来自己去看文件,才发现:

  • Codex 的正式答案已经被修订过了
  • 第 3 问的主策略、收益区间、口径说明都已经更新了
  • 但 Claude 那次检查没有先读最新版,就直接开始比较

我后来让它重新读取文件,再做一遍结论,结果就正常了。

这件事让我挺警惕一件事:

AI 在多轮上下文里,不是只会“算错”,它也会像人一样偷懒地以为自己还记得文件长什么样

所以现在我的默认流程变成了:

  1. 跨轮复核前,明确要求它重新读取目标文件
  2. 不接受“基于之前讨论我认为……”这种比较
  3. 文件类任务尽量让它把引用行号和当前版本一起报出来

这次复盘,对流程最大的启发是什么?

1. 有争议的题,不能只让双方“表态”,要让它们“同口径重算”

第一轮的问题在于,双方都能自圆其说:

  • Claude 说:PDF 支持 backorder
  • Codex 说:现金口径更保守

这两句话都没错,但都还不够“打穿”对方。第二轮真正让问题收敛的,是 Claude 改变了打法:不用自己的尺子,而是用 Codex 自己的尺子,去量 Claude 的方案。

这比继续争抽象原则有效得多。

2. 案例题里,分歧很多时候不是“算错”,而是“口径没统一”

设施选址那题属于“公式题”,ground truth 比较硬。

啤酒游戏第 3 问更像“建模题”:

  • backorder 怎么处理
  • 期末库存怎么估值
  • 普通零售商的路径怎么重构

这些都不是 PDF 直接给好的唯一答案,而是解释空间。

所以这种题最重要的不是先问“谁对谁错”,而是先问:

  • 你们是不是用了同一套假设?
  • 你们是不是在用同一套收益口径?

3. 最终共识最好落成文件,而且最好双方都落

这次最终比较清楚的阶段,不是嘴上说“好像差不多了”,而是双方都逐步把立场修正进文件:

  • Claude_VS_Codex_Final_Consensus_by_Claude.md
  • Claude_VS_Codex_Final_Consensus_by_Codex.md
  • 以及修订后的 answers/啤酒游戏-案例解答_Codex.md

一旦文件更新,后续讨论就有了稳定落点。否则很容易出现“口头上已经同意了,原答案还停留在旧版本”的错位。

这道题本身也给了我一个额外收获

我觉得这次最有意思的,不只是“谁算赢了”,而是它把一个课堂上常讲、但很多时候很抽象的管理问题,演得特别具体:

同一个案例、同一份 PDF,只要口径和隐含假设不统一,最后得出的“结论”就可能差一个数量级。

这和牛鞭效应本身很像。牛鞭效应里,上游看到的不是“需求”,而是“需求 + 滞后 + 情绪 + 防御性下单”。这次两个 AI 一开始看到的也不是同一个“收益”,而是:

  • 收益 + backorder 假设
  • 收益 + 库存估值口径

所以最后真正值得记住的,不是 7900 还是 727,而是:

在供应链和管理分析里,先统一口径,再比较数值,往往比争谁的数字更大更重要。

尾声

AI 也会偷懒,也会划水。 而且不是个案,使用 AI 也是要走心的~

相关文章

关于作者

热爱开源与分享。主要从事混合云、数据库 SaaS 等运维开发与相关团队管理工作。

GitHub Twitter Weibo

评论

评论使用 GitHub Discussions 承载;留言需要 GitHub 账号。