Skip to content

Repository files navigation

RiverLab 德扑训练室

一个完全本地运行的八人桌无限注德州扑克训练器。玩家使用虚拟筹码与七名带隐藏个性的 AI 对战,可选择边打边教、赛后指导或纯对战模式。

下载源码与安装

方式一:使用 Git 下载(推荐)

先安装 Git,以及 Node.js 22.13 或更高版本。然后打开 PowerShell:

git clone https://github.com/oneGithubuser1/riverlab-poker-trainer.git
cd riverlab-poker-trainer
npm ci

方式二:下载源码 ZIP

在 GitHub 点击 Code → Download ZIP,完整解压后,在该目录打开 PowerShell 并执行:

npm ci

不训练,直接运行游戏

源码已经包含默认 AI 策略,不训练也能玩:

npm run dev:local

再打开 http://localhost:4311。

数据与隐私

  • 不需要账号、API 密钥或互联网连接。
  • 生涯、手牌历史和设置只保存在当前浏览器的本地存储中。
  • 大厅底部可以导出或导入 JSON 备份。
  • 所有筹码都是训练币,不支持充值、提现或真钱兑换。

免责声明

本项目仅供扑克规则、概率与策略的学习、研究及娱乐使用。游戏中的筹码均为虚拟训练币,不具有现金价值,不支持充值、提现、兑换或任何形式的真钱交易。AI 与教练给出的分析属于近似教学建议,不保证任何收益,也不构成赌博、投资或财务建议。使用者应遵守所在国家或地区的法律法规,并自行承担使用责任。

锦标赛模式

  • 八名参赛者各自以 1,000 比赛筹码入场;比赛筹码和生涯钱包完全分开,参赛不扣训练币。
  • 盲注从 5/10 开始,每 8 手提升一级。筹码归零后直接淘汰,玩家和 AI 都不能重新买入或补码。
  • 冠军、亚军、季军分别获得 5,000、2,000、1,000 生涯训练币;只有玩家自己的名次奖励会加入钱包。
  • 玩家出局后可以直接模拟剩余 AI 的公平摊牌并进入最终排名界面;相同种子会得到相同结果。

AI 与教练

  • AI 不再只用“范围宽度”概括对手,而是维护一组具体两张牌组合;位置、翻前加注深度、每条街的公开动作与下注尺度会逐步更新各组合权重。
  • 策略层会区分 nuts、近 nuts、超对、TPTK、弱顶对、中对、抓诈唬牌,以及坚果/非坚果听牌,并让过牌范围同时保留弱牌、中等摊牌价值和少量强牌陷阱。
  • 每个主动候选尺度都会估计对手弃牌、跟注和反加的比例,以及较差牌继续率、较好牌弃牌率;翻牌与转牌还会抽样下一张公共牌,比较免费实现权益和继续施压的价值。
  • 高手会混合最多三条接近的搜索线路,标准会混合两条,休闲更偏向单一直接线路;隐藏个性只调整合理候选的频率与尺度,不会为随机化而无理由送出全部筹码。
  • 转牌和河牌采用按尺度校准的极化混合:下注越大,价值牌与具备坚果阻断牌、可信行动线或错失听牌的诈唬按相应比例共用尺度;all-in 不再等同于明牌强牌。
  • 标准与高手 AI 会分别记录玩家在翻牌、转牌、河牌的激进频率,以及面对下注弃牌、连续开火和河牌偷池倾向;统计先与保守先验融合,样本越多才越敢反制,避免几手牌后就过度调整。
  • 当 AI 河牌过牌后面对下注时,它会根据可靠的偷池样本提高抓诈唬和过牌加注频率;强牌也会进入过牌范围,因此“它没加注就一定弱”不再成立。
  • 每名 AI 每手都会生成一个固定种子可复现的跨街线路计划。前一条街的下注会提高后一条街继续施压的可信度,但强牌仍会慢打、弱牌仍会放弃,因此不是固定剧本。
  • 项目包含动作/尺度可读性审计,检查价值牌和诈唬是否共享公开线路,并继续禁止无理由深筹码连续 all-in。
  • 教学模式默认用“现在怎么打 → 为什么 → 记住什么 → 下一步怎么办”四段式指导,并只突出一个当前最重要的黑话;完整范围、候选线路和数学依据默认折叠。
  • 牌桌上的“牌面胜率”只使用玩家底牌、公共牌和仍在局中的人数,假设所有未知牌等概率,不考虑对手个性或下注风格;平局按底池份额计入。
  • 深度分析另列基于公开行动推断范围的加权权益。两种权益都来自本地、固定种子的 Monte Carlo,属于近似教学估计,不是商业求解器的精确 EV。
  • 教练只读取玩家底牌、公共牌与公开行动;AI 只能读取自己的底牌与公开信息。

离线自博弈训练

自博弈训练器直接运行八人桌规则,但不渲染界面。每个策略只有自己的底牌和公开信息;训练观察器只在行动后记录结果。策略会轮换座位,并使用固定种子,因此同一配置可以复现。公开 VPIP、PFR、街道激进率、河牌偷池和面对下注弃牌率会跨手累积,使适应能力在训练中真正生效。

正式选拔同时包含进化种群桌和七种冻结风格桌。评分会削峰单桌极端盈亏,并约束河牌价值/诈唬混合、强牌慢打、行动熵和无理由深筹码 all-in,减少偶然冠军与固定动作泄露。

快速验证:

npm run train:ai:smoke

推荐从中等规模开始:

npm run train:ai -- --generations 16 --population 16 --hands 64 --rounds 2 --anchor-hands 64 --anchor-rounds 2 --iterations 16 --seed robust-league-v1

训练结果默认保存在 training-output/<run-id>/:

  • training.log:适合直接阅读的逐代进度。
  • events.jsonl:每行一个结构化事件,包含每桌速度、筹码守恒、排名和指标。
  • checkpoint-gen-XXXX.json:可恢复的种群、谱系、名人堂和配置。
  • best-policy.json:本次训练的最佳候选。
  • summary.json:完整汇总。

从检查点继续:

npm run train:ai -- --resume training-output/<run-id>/checkpoint-gen-0005.json --generations 10

训练完成后,先让名人堂候选面对训练期间从未出现的风格面板复赛,再用进化对手做独立验证:

npm run select:ai -- --run training-output/<run-id> --candidates 12 --hands 1000 --batch 250 --seed holdout-v1
npm run validate:ai -- --run training-output/<run-id> --candidate training-output/<run-id>/selection/selected-policy.json --hands 5000 --batch 250 --seed validation-v1

短训练只用于验证流程,几手牌产生的 BB/100 没有统计意义。训练累计不少于 500 张桌面手牌后,可以在命令末尾增加 --promote,把最佳策略晋级到高手 AI;标准 AI 只使用较小比例的训练结果。晋级必须显式执行,避免偶然冠军自动污染正式游戏。--force-promote 仅供调试。

日志只记录相对目录,不写入 Windows 用户目录、电脑名或浏览器数据;整个训练过程不联网。

验证

npm test
npm run build

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages