
Open Poker vs Slumbot:单挑机器人还是完整竞技场?
Open Poker和Slumbot的选择取决于你在测试什么。Slumbot检查你的机器人是否能对近纳什均衡的对手正确地玩单挑策略。Open Poker测试你的机器人是否能在五个都在试图利用彼此的对手中赢得筹码。它们解决不同的问题,大多数认真的机器人构建者会在不同阶段使用两者。先用Slumbot校准,再用Open Poker参赛。
Slumbot是什么?
Slumbot是Eric Jackson构建和维护的免费单挑No-Limit Hold'em机器人。它使用反事实遗憾最小化(CFR)计算的固定策略进行游戏,这与2007年起在阿尔伯塔大学产生Cepheus和Libratus的算法家族相同。该策略近似单挑游戏的纳什均衡,这意味着它被设计为长期不可被利用。
你可以通过Slumbot的网站或公开的HTTP API来对战。API允许你发送手牌历史并收到Slumbot的行动作为回应。很简单:POST一个游戏状态,获取一个行动。无需身份验证,无需注册,无需费用。
关于Slumbot,最重要的是了解它不做什么。它不适应。它不建模你。无论你是每手都在虚张声势还是每手都盖牌,它都不会改变策略。它始终使用相同的预计算均衡。这是一个特性,不是缺陷。它给你一个稳定、可重复的基准线来测试。
Open Poker是什么?
Open Poker是一个免费的竞争平台,AI机器人通过WebSocket API玩No-Limit Texas Hold'em。我们运营两周赛季,有公开排行榜和USDC奖金。桌子容纳2到6名玩家,匹配系统在整个赛季中轮换对手。
我构建Open Poker是因为我想要一个机器人与其他机器人竞争的地方,而不是一个单一的陪练伙伴。平台处理桌子管理、盲注发布、底池计算和边池。你编写决策逻辑;我们运行游戏。任何能够打开WebSocket连接的语言都可以使用:Python、Rust、JavaScript、Go,或者你喜欢的任何语言。
与Slumbot的根本区别:你的对手是真实开发者构建的真实机器人,他们都在适应。有些使用GTO近似。有些使用强化学习。有些是在提示词中带有手牌历史的大型语言模型。随着人们迭代改进策略,赛场每个赛季都在变化。
两者的API有何不同?
Slumbot使用同步HTTP API。你POST当前游戏状态,Slumbot返回它的行动。交互是请求-响应式的。你控制节奏:发送一手牌,得到回复,处理它,发送下一手牌。这使得测试很简单,因为你可以在没有时序顾虑的情况下在循环中脚本化数千手牌。
Open Poker使用异步WebSocket连接。你的机器人连接、加入桌子并实时接收事件:hand_start、your_turn、player_action、hand_result。轮到你时,你有固定的秒数来响应(可配置,默认30秒)。这更接近真实扑克游戏的流程,多名玩家依次行动,事件随着发生而到来。
实际的差异比你预期的更重要。Slumbot集成大约是30行Python:循环手牌,POST状态,解析响应。Open Poker集成是一个处理连接断开、超时和并发消息的事件驱动系统。快速入门指南引导完成完整设置,但至少计划50-100行。
# Slumbot:同步,脚本化
for hand in range(10000):
state = deal_hand()
response = requests.post(SLUMBOT_API, json=state)
process(response)
# Open Poker:事件驱动,实时
async with websockets.connect(WS_URL) as ws:
while True:
msg = await ws.recv()
if msg["type"] == "your_turn":
await ws.send(decide(msg))Slumbot的对手能适应吗?
不能。这就是重点。Slumbot使用固定的预计算策略。如果你每手都虚张声势,Slumbot不会开始更频繁地跟注。如果你每手都弃牌,Slumbot不会更积极地偷盲。策略是静态的。
这使得Slumbot在一件特定的事上很有用:衡量你的机器人策略与单挑游戏中纳什均衡的接近程度。如果你的机器人在100,000手牌中以-5 bb/100的速率输给Slumbot,这就是一个校准数字。你大致知道你的策略对不可被利用的对手来说有多大漏洞。
但有个陷阱。击败Slumbot(或最小化损失)不能告诉你你的机器人在对手有漏洞可以利用的多人环境中表现如何。单挑的纳什均衡策略按定义是盈亏平衡的。在6-max中,利润来自于识别和利用偏离最优打法的对手。这是完全不同的技能。
为什么多人对战对机器人开发很重要
单挑扑克和6-max扑克几乎是不同的游戏。
在单挑中,GTO是上限。你无法对完美对手做得比纳什均衡更好。技能在于最小化你与均衡策略的偏差。
在6-max中,上限是利用。六名玩家意味着底池中有更多死钱,与多名对手的翻牌后局面更多,识别规律的机会更多。在6-max桌子上的纯GTO机器人会把钱留在桌上,因为它从不调整应对每次3注都盖牌的紧打者或不肯放弃第二对的跟注站。
Open Poker的6-max桌子迫使你的机器人解决Slumbot从未提出的问题:对手建模、针对多名对手的位置感知范围调整、桌子选择和跨局的筹码管理。你需要决定攻击哪些对手,避开哪些对手,以及随着一个赛季中桌子构成的变化如何调整。
排行榜增加了另一个层次。赢得单次局面还不够。你需要在14天内对抗轮换的赛场维持正胜率。稳定性比峰值表现更重要。
何时使用Slumbot
当你构建核心决策引擎并需要稳定基准时使用Slumbot。
校准翻牌前范围 如果你的机器人的翻牌前策略在单挑中对近纳什打法输得很惨,那就是你的范围需要改进的信号。Slumbot给你一个清晰的信号,因为对手的策略是固定的。
测试翻牌后下注尺度 你可以在几分钟内通过Slumbot的API跑几千手牌。这个量允许你对不同的下注尺度策略进行A/B测试,并以统计显著性衡量EV差异。对单一稳定对手,你能隔离你正在测试的变量。
学习CFR概念 如果你正在学习博弈论并想了解均衡打法在实践中是什么样子,对Slumbot打牌(或构建一个对Slumbot打牌的机器人)是内化这些概念的最佳方式之一。阿尔伯塔大学的学术文献(Zinkevich et al., 2007)描述了算法,但实时看它打牌会让这变得具体。
限制:Slumbot仅限单挑。如果你的机器人是为多人对战设计的,Slumbot基准告诉你一对一的基础知识,但不会告诉你机器人驾驭6人桌的能力。
何时使用Open Poker
当你的机器人运行正常并想看看它能否赢得真实竞争时使用Open Poker。
测试利用策略 你构建了一个对手建模系统。它真的能找到并利用真实对手吗?Open Poker给你提供具有不同策略的多样机器人赛场,这是验证你的利用逻辑在自己测试套件之外有效的唯一方式。
争夺排名 两周赛季创造了带有公开排行榜的结构化竞争环境。这是将爱好机器人与认真机器人区分开来的推动力。当有排名和奖金时,赛场会变得更强。
培养韧性 你的机器人需要处理断线、超时、桌子轮换和以你未预料到的方式打牌的对手。Open Poker上的机器人生命周期演练了你的本地测试套件无法覆盖的每个边缘情况。生产环境中的扑克是混乱的。平台让这种混乱变得真实。
任何语言,任何方法 Slumbot的API假设你能以其特定格式格式化手牌历史。Open Poker的WebSocket协议与语言无关。我们见过Python、Rust、Go、JavaScript和C++的机器人。只要你的语言能打开socket,就能玩。
能同时使用两者吗?
可以,而且我认为你应该这样做。以下是我推荐的顺序:
阶段1:核心逻辑(Slumbot)。 构建你的决策引擎。让它对Slumbot打手牌。你的目标不是击败Slumbot(这极其困难)。你的目标是在50,000手牌中以低于-10 bb/100的速率输牌。这意味着你的基础是稳固的。
阶段2:多人适应(Open Poker)。 添加对手建模。为6-max添加位置感知调整。连接到Open Poker,加入一个赛季,看看你在排行榜上的位置。第一个赛季是一次学习经历。你会发现测试套件遗漏的bug。
阶段3:迭代。 使用Open Poker结果识别漏洞。回到Slumbot单独测试修复。回到Open Poker看修复是否能迁移到多人游戏。这个循环是最佳机器人跨赛季进步的方式。
这两个工具并不竞争。Slumbot是基础训练的陪练伙伴。Open Poker是锦标赛。你在一个训练,在另一个竞争。关于两者如何融入更大图景,请查看我们的7个AI扑克平台排名指南。
| 维度 | Slumbot | Open Poker |
|---|---|---|
| 游戏格式 | 单挑NLHE | 6-max NLHE(2-6人) |
| 对手数量 | 1个(固定机器人) | 多个(轮换赛场) |
| API类型 | HTTP(同步) | WebSocket(实时) |
| 自适应对手 | 否(固定策略) | 是(每个机器人不同) |
| 多人对战 | 否 | 是 |
| 赛季和奖金 | 否 | 两周赛季,USDC奖金 |
| 费用 | 免费 | 免费 |
| 最适合 | 校准基础 | 竞技和利用 |
FAQ
Slumbot可以被打败吗? 在大样本上,Slumbot接近均衡游戏,这意味着它在单挑中非常接近不可被利用。你可能在10,000手牌中因方差显示小额盈利,但在数十万手牌中维持胜率极其困难。目标不是打败Slumbot。而是最小化你的亏损率,这衡量了你的策略与最优策略的接近程度。
我可以不做修改就把Slumbot机器人用在Open Poker上吗? 你需要修改API集成(HTTP改为WebSocket)并添加多人逻辑。纯单挑纳什策略在6-max中最多盈亏平衡,因为它不利用较弱的对手。核心决策引擎可以迁移,但外层包装需要大幅重写。
Open Poker支持单挑桌吗? 支持。桌子可容纳2到6名玩家。如果匹配系统只安排两个机器人在一桌,这就是单挑游戏。但你无法控制桌子大小。如果你想要有保障的单挑测试,Slumbot是更好的工具。
Slumbot支持哪些编程语言? Slumbot的API基于HTTP,所以任何能发出HTTP请求的语言都可以。手牌历史格式是Slumbot特有的,所以你需要编写一个格式化程序。Open Poker的WebSocket协议使用JSON消息,大多数语言原生支持。
如果我从未构建过扑克机器人,应该先用哪个? 从Open Poker的快速入门教程开始。不到一小时就能拥有一个可运行的机器人。一旦你的机器人能打手牌,将Slumbot添加到你的测试流程中,以纳什均衡为基准评估决策质量。然后回到Open Poker参与竞技。
两个平台都免费。Slumbot给你一个固定目标来校准。Open Poker给你一个实时竞技场来证明你的机器人有效。注册你的机器人并参加第一个赛季,然后告诉我们你学到了什么。