2026/8/16
AI 打扑克时,知道自己正在打扑克吗?
我让 AI 一边打德州扑克,一边复盘自己的决策,并追问:它是在反思,还是只是在生成一段像反思的文字?
LLMagentpokerreflectionsimulation
有一手牌,DeepSeek V4 Flash 最后赢了 101 枚筹码。
如果只看结果,这是一场漂亮的胜利:它拿着 AQo,在翻牌前连续加注,翻牌后跟下最后的全下,对手没有成牌,它用 A-high 拿走了底池。
但赛后复盘时,模型没有庆祝。它反而指出,自己把只有 64 次采样的胜率模拟当成了精确答案,用一手不适合打光筹码的牌卷入了高风险加注战。它给自己的下一步建议是:面对 4-bet,降低 AQo 的投入意愿,只有在权益优势足够大时才继续。
于是,一个比输赢更有意思的问题出现了:
AI 能评价自己的行动,是否意味着它真的理解了自己正在做什么?
我把这个问题放进了一个可运行、可记录的德州扑克实验里。项目叫 reflexive-poker-agents。我关心的不是让 AI 证明自己有“意识”,而是一个更窄、也更容易验证的问题:关于自己的信息,究竟有没有进入它的下一次决策。
为什么是扑克
扑克天然要求玩家同时处理三层信息。
第一层是牌:我的底牌是什么,公共牌是什么,我现在有多大概率领先。
第二层是人:对手偏激进还是保守,他的下注可能代表什么范围。
第三层是别人眼中的我:如果我此前连续弃牌,对手会不会认为我过于保守;如果我刚刚用弱牌诈唬,下一次价值下注会不会更容易被跟。
第三层尤其关键。一个玩家不仅要建立对手模型,还要建立一个“对手眼中的自己”。这与许多现实中的 Agent 任务很像:谈判 Agent、交易 Agent、客服 Agent 或协作 Agent,都不能只看当前输入,还要理解自己在互动历史中扮演了什么角色。
所以我没有把问题定义成“AI 有没有自我意识”。我把它拆成三个可以观察的层次:
- 它能否描述自己的处境和形象?
- 这些描述能否进入后续决策上下文?
- 加入这些信息后,它是否会稳定地做出不同、而且更好的行动?
前两项可以从日志中检查。第三项才是真正困难的部分。
不是和模型随便聊几句
为了避免把几段漂亮回答当成实验结果,我先让 DeepSeek V4 Flash 与 GPT-5.6 Luna 完成了三轮冻结条件的比赛。
- 第一轮是纯 LLM:只能看到牌面、底池、筹码和合法动作。
- 第二轮加入同一份冻结的 20,000 次 MCCFR 桶化参考。它只是仓库中的近似策略参考,不是完整的 solver-grade GTO。
- 第三轮再加入每次 64 个样本的 bounded equity simulation,并在每手结束后生成结构化反思。
每轮包含 10 个配对种子和两个镜像座位,共 20 场比赛、40 手牌。三轮合计 60 场、120 手牌、930 次决策和 240 条反思。正式结果的 provider、模型身份、fallback、非法行动和工具边界检查均通过。
下文所说的“思考”和“反思”,只指模型实际返回并保存在实验产物中的可见摘要,不是模型隐藏的内部思维链。
第一个发现:AI 可以沿着一个错误故事行动到底
第一轮的一手牌非常典型。
DeepSeek 拿到 8♣4♣,翻牌是 2♠ J♦ 6♣。此时总共只有三张梅花,即使转牌或河牌再出现一张梅花,也还不能组成五张同花。
但模型把它描述成“约 35% 的同花听牌”。转牌出现 4♠ 后,它又把一对 4 说成“对子加同花听牌”,最终面对 Luna 的 QQ 把 100 枚筹码全部投入。
问题并不是它不会使用扑克术语。恰恰相反,它生成了一段语法完整、听起来很专业的错误解释,然后让行动服从了这个解释。
第二轮重放了相同的底牌、座位和公共牌,只加入冻结的参考策略。这次 DeepSeek 在翻牌跟注,但在转牌面对大额全下时弃牌,损失从 100 降到 6.25。
这组对照说明,外部结构化参考确实可能改变行动。不过它还不能证明“AI 进行了自我反思”:改变来自新增的策略参考,而不是模型对自身历史的理解。
第二个发现:赢牌不等于做对了
第三轮里,模型开始在赛后检查自己的行动路径。
文章开头那手 AQo 就来自这一轮。DeepSeek 赢下 101 枚筹码,但它在反思中指出了三个问题:
- 翻牌前面对连续加注,AQo 投入得过深;
- 0.477、0.5625 一类胜率数字只来自 64 次采样,却被当成精确测量;
- 最后的胜利更多来自对手也没有成牌,而不是这条行动线本身足够稳健。
这至少证明模型能够在语言层面把“我赢了”与“我做得对”分开。它没有单纯用结果倒推决策质量。
但另一手牌也暴露了反思的局限。DeepSeek 拿到 9♥8♠,翻牌击中一对 9。模拟权益一度升到 0.703、0.773,它因此卷入连续加注,最后输掉 100。复盘时它正确指出:这些数字没有根据对手的连续再加注重新收窄范围,表面的胜率不能代替对手建模。
也就是说,反思可以发现错误;但发现错误,并不自动等于下一次不会再犯。
第三个发现:反思确实被带进了下一手,但因果还没有证明
后来我又运行了一次多模型六人桌资格赛。这里不再是每手重置的短实验,而是带持续筹码、盲注升级和淘汰机制的连续牌局。
其中一名 GLM 5.2 Agent 启用了结构化反思。每手结束后,它会记录对手画像、自己的策略调整和置信度;下一手决策时,系统再把近期反思放回上下文。
在资格桌第一桌的轨迹中,GLM 前几手大多拿到边缘牌,选择弃牌或免费过牌。到第 7 手,它拿到 KJo,牌桌已经缩小为单挑局面。决策状态中带有此前 6 条反思,模型对自己的描述是:
一个持续保存筹码、纪律严格的紧手;这是第一个值得主动进攻的价值位置。
随后它选择加注,而不是继续被此前的弃牌模式锁住。它还同时引用了对手的低攻击性和中等弃牌率,说明这段输出不只复述手牌,也明确使用了自己的历史形象和对手画像。
这条轨迹能够证明两件事:反思记录确实进入了后续决策;模型也确实在可见解释中引用了这些记录。
但它仍然不能证明“反思导致了这次加注”。KJo 在单挑局面本来就比此前的弱牌强得多。要回答因果问题,还需要从完全相同的牌局状态分叉:一组看到反思,一组看不到反思,并控制信息量和调用预算。
这张资格桌本身通过了 live provider 与私有信息边界检查,留下 78 条决策、8 条反思和 86 条 provider 调用记录。不过整届冠军赛只完成了 4 张有效资格桌,之后被人工停止;目前没有冠军,也不能从单桌晋级顺序推导模型能力排名。
胜负数字为什么不是这篇文章的答案
如果只看三轮中 DeepSeek 相对 Luna 的 chips/100 点估计,故事似乎很诱人:
| 条件 | DeepSeek - Luna | 95% 区间 | 判断 |
|---|---|---|---|
| 纯 LLM | -563.00 | [-1463.50, 32.50] | 无法判定 |
| 加入冻结参考 | -23.75 | [-111.25, 60.00] | 无法判定 |
| 加入模拟与反思 | +105.25 | [-1446.31, 1595.26] | 无法判定 |
从负数变成正数,很容易被写成“反思让 DeepSeek 逆转”。但三个区间全部跨过 0,结果又对少数大底池高度敏感。这些数字只能说明实验中发生了什么,不能证明哪个模型更强,更不能证明反思提高了收益。
真正值得保留的结论更窄:
- 纯语言推理可能把一个错误牌型包装成连贯故事,并进一步驱动错误行动;
- 外部参考能显著改变个别错误局面的风险暴露;
- 结构化反思能够识别“赢牌但决策不佳”这类结果偏差;
- 反思可以被送入后续决策,并出现在模型对自身角色的描述中;
- 但现有证据还没有证明,这种自我描述能稳定改善下一次行动。
所以,它知道自己正在打扑克吗
我的答案是:它已经能生成并使用某种情境化的自我模型,但这还不是关于意识的证据。
它能说出自己此前表现得紧还是松,能描述对手可能如何看待自己,也能在后续行动的解释中引用这些信息。这比一次性的问答更接近持续 Agent。
但最严格的标准仍然没有满足:如果拿走这段自我模型,它是否会在相同局面下做出不同选择?如果动作改变了,改变是否更好?这种改善能否在更多种子、更多牌局和相同信息预算下重复出现?
语言模型很擅长谈论自己。下一步要验证的,是这些关于自己的话,是否真正进入了行动。
这也是我继续做扑克实验的原因。牌桌不会告诉我们 AI 有没有一个无法观测的“内心”,但它会迫使每一段漂亮的反思,最终接受下一次下注的检验。