[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-EricSteinberger--PokerRL":3,"tool-EricSteinberger--PokerRL":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":92,"env_os":93,"env_gpu":94,"env_ram":95,"env_deps":96,"category_tags":105,"github_topics":107,"view_count":32,"oss_zip_url":79,"oss_zip_packed_at":79,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":147},8682,"EricSteinberger\u002FPokerRL","PokerRL","Framework for Multi-Agent Deep Reinforcement Learning in Poker","PokerRL 是一个专为扑克游戏设计的多智能体深度强化学习框架，旨在帮助开发者和研究人员高效训练能在不完美信息博弈中做出最优决策的 AI。传统算法往往需要遍历庞大的游戏树，计算成本极高且难以扩展；PokerRL 则通过结合神经网络与反事实遗憾最小化（CFR）等先进算法，让 AI 仅需访问部分游戏状态即可学习到近似纳什均衡策略，从而大幅降低计算门槛。\n\n该工具特别适合从事博弈论研究、强化学习算法开发的专业人员使用。其核心亮点在于灵活的架构设计：不仅内置了最佳响应（BR）、局部最佳响应（LBR）等多种专业评估指标，还原生支持基于 Ray 的分布式计算。这意味着用户可以用同一套代码，轻松地在本地笔记本、多核服务器乃至 AWS 集群上扩展训练规模，有效解决了深度学习在大型博弈游戏中查询神经网络开销大的性能瓶颈。此外，PokerRL 还提供了便捷的对抗测试环境，支持 AI 之间自动锦标赛或与人类玩家互动，是探索不完美信息博弈解决方案的强大利器。","# PokerRL\n\nFramework for Multi-Agent Deep Reinforcement Learning in Poker games.\n\n\n## Background\nResearch on solving imperfect information games has largely revolved around methods that traverse the full game-tree\nuntil very recently (see\n[[0]](http:\u002F\u002Fmartin.zinkevich.org\u002Fpublications\u002Fregretpoker.pdf),\n[[1]](http:\u002F\u002Fpoker.cs.ualberta.ca\u002Fpublications\u002F2015-ijcai-cfrplus.pdf),\n[[2]](https:\u002F\u002Fpapers.nips.cc\u002Fpaper\u002F3713-monte-carlo-sampling-for-regret-minimization-in-extensive-games.pdf),\nfor examples).\nNew algorithms such as Neural Fictitious Self-Play (NFSP)\n[[3]](http:\u002F\u002Fdiscovery.ucl.ac.uk\u002F1549658\u002F1\u002FHeinrich_phd_FINAL.pdf),\nRegret Policy Gradients (RPG) [[4]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1810.09026.pdf),\nDeep Counterfactual Regret Minimization (Deep CFR) [[5]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1811.00164.pdf),\nand Single Deep CFR [[8]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1901.07621.pdf)\nhave recently combined Deep (Reinforcement) Learning with conventional methods like CFR and Fictitious-Play to learn\napproximate Nash equilibria while only ever visiting a fraction of the game's states.\n\n\n## PokerRL Framework\n\n### Components of a PokerRL Algorithm\n![FrameWork](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEricSteinberger_PokerRL_readme_ff6f240dc1da.png)\nYour algorithm consists of workers (green) that interact with each other. Arguments for a training run are \npassed through an instance of a _TrainingProfile_ (`...\u002Frl\u002Fbase_cls\u002FTrainingProfileBase`).\nCommon metrics like best-response or head-to-head performance can be measured periodically by separate\nworkers (red). Your trained agent is wrapped in an EvalAgent (`...\u002Frl\u002Fbase_cls\u002FEvalAgentBase`).\nYour EvalAgent can battle other AIs in an AgentTournament (`...\u002Fgame\u002FAgentTournament`)\nor play against humans in an InteractiveGame (`...\u002Fgame\u002FInteractiveGame`). All local workers (just classes)\ncan be wrapped with ~4 lines of code to work as an independent distributed worker. \n\nSome parts of PokerRL work only for 2-player games since they don't make sense in other settings. However,\nthe game engine itself and the agent modules are general to N>1 players.\n\n### Evaluation of Algorithms\nWe provide four metrics to evaluate algorithms:\n\n- **Best Response (BR)**  - Computes the exact exploitability (for small games).\n- **Local Best Response (LBR) [[7]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1612.07547.pdf)** approximates a lower bound of BR.\n- **RL Best Response (RL-BR)** approximates BR by training DDQN [[9]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1511.06581.pdf)\nagainst the AI.\n- **Head-To-Head (H2H)** - Let's two modes of an Agent play against each other.\n\nOur current implementation of Best Response is only meant to be run in small games, but LBR and QBR are optimized\nfor distributed computing in (very) large games. As a baseline comparison in small games, there are (unoptimized)\nimplementations of\nvanilla CFR [[10]](http:\u002F\u002Fmartin.zinkevich.org\u002Fpublications\u002Fregretpoker.pdf),\nCFR+ [[11]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1407.5042)\nand Linear CFR [[12]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1809.04040.pdf)\nthat can be run just like a Deep RL agent and will plot their exploitability to TensorBoard.\n\n### Performance & Scalability\nWhilst past algorithms had performance concerns mostly related to computations on the game-tree, these sampling \nbased approaches have most of their overhead in querying neural networks. PokerRL provides an RL environment and a \nframework ontop of which algorithms based on Deep Learning can be built and run to solve poker games. PokerRL provides\na wrapper for ray [[6]](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray) to allow the same code to run locally, on many cores, or\neven on a cluster of CPU and potentially GPU workers.\n\n\n\n\n\n\n## Installation\nThese instructions will guide you through getting PokerRL up and running on your local machine and\nexplain how to seamlessly deploy the same code you developed and tested locally onto an AWS cluster.\n\n### Prerequisites\nThis codebase is OS agnostic for local runs but supports only Linux for distributed runs due to limitations of\n [ray](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray).\n\n### Installation on your Local Machine\nFirst, please install Anaconda\u002FMiniconda and Docker. Then run the following commands (insert details where needed):\n```\nconda create -n CHOOSE_A_NAME python=3.6 -y\nsource activate THE_NAME_YOU_CHOSE\npip install requests\nconda install pytorch=0.4.1 -c pytorch\n```\nand then\n```\npip install PokerRL\n```\nNote: For distributed runs you would need Linux and also `pip install PokerRL[distributed]`. This is not required for\nlocal-only usage.\n\nThis framework uses [PyCrayon](https:\u002F\u002Fgithub.com\u002Ftorrvision\u002Fcrayon), a language-agnostic wrapper around\nTensorboard. Please follow the instructions on their GitHub page to set it up. After you have installed PyCrayon, you\ncan run and start the log server via\n```\ndocker run -d -p 8888:8888 -p 8889:8889 --name crayon alband\u002Fcrayon\ndocker start crayon\n```\nNow try to access Tensorboard in your browser at `localhost:8888`.\n\n#### Running some Tests\nRun this command in the directory containing PokerRL to check whether all unittests pass. \n```\npython -m unittest discover PokerRL\u002Ftest\n``` \nA more fun way to test whether your installation was successful, is running `examples\u002Finteractive_user_v_user.py` to\nplay poker against yourself and `examples\u002Frun_cfrp_example.py` to train a CFR+ agent in a small poker game.\n\n## Cloud & Cluster\nPokerRL provides an interface that allows the exact same code to run locally and on a cluster by utilizing\n[ray](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray). PokerRL supports two modes:\n1. _Distributed_: Run many worker processes on a single machine with many cores\n2. _Cluster_: Run many workers on many machines\n\nYou can enable\u002Fdisable distributed and cluster mode by switching a boolean in the TrainingProfile.\nThis section assumes you developed your algorithm using a pip-installed version of PokerRL.\n\nExamples of algorithms compatible with distributed PokerRL are this\n[implementation of Neural Fictitious Self-Play](https:\u002F\u002Fgithub.com\u002FTinkeringCode\u002FNeural-Fictitous-Self-Play) [8].\nand this\n[implementation of Single Deep CFR](https:\u002F\u002Fgithub.com\u002FTinkeringCode\u002FSingle-Deep-CFR) [3]\n\n### Local or Distributed Mode on an AWS instance\n1. Fire up any AWS instance that suits your needs over the management console. This tutorial assumes your base AMI is\n\"Amazon Linux 2 AMI (HVM), SSD Volume Type\". Note: It is important that you add the following allowance to your security group to be able to view logs:\n    ```\n    Custom TCP Rule   |   TCP   |   8888   |   Your_IP   |   Tensorboard\n    ```\n1. Run the following commands on the instance:\n    ```\n    sudo yum update -y\n    sudo yum install git gcc g++ polkit -y\n    sudo amazon-linux-extras install docker -y\n    sudo service docker start\n    sudo docker pull alband\u002Fcrayon \n    wget https:\u002F\u002Frepo.anaconda.com\u002Fminiconda\u002FMiniconda3-latest-Linux-x86_64.sh\n    bash Miniconda3-latest-Linux-x86_64.sh -b -p \u002Fhome\u002Fec2-user\u002Fminiconda\n    export PATH=\u002Fhome\u002Fec2-user\u002Fminiconda\u002Fbin:$PATH\n    conda create -n PokerAI python=3.6 -y\n    source activate PokerAI\n    pip install requests\n    conda install pytorch=0.4.1 -c pytorch -y\n    pip install PokerRL[distributed]\n    ```\n1. Grant your instance access to your codebase so that it can `git pull` later on.\n\n1. Create an AMI (i.e. Image of your instance) to be able to skip the past steps in the future.\n\n1. Every time you fire up a new instance with your AMI, execute\n    ```\n    sudo service docker start\n    sudo docker inspect -f {{.State.Running}} crayon || sudo docker run -d -p 8888:8888 -p 8889:8889 --name crayon alband\u002Fcrayon\n    sudo docker start crayon\n    \n    screen\n    export OMP_NUM_THREADS=1\n    export PATH=\u002Fhome\u002Fec2-user\u002Fminiconda\u002Fbin:$PATH\n    source activate PokerAI\n    source deactivate\n    source activate PokerAI\n    ```\n    You have to set `OMP_NUM_THREADS=1` because of a bug in PyTorch 0.4.1 that ignores core\u002Fprocess limits. This is\n    fixed in PyTorch 1.0, but 1.0 is actually slower for the recurrent networks than 0.4.1 in many cases.\n\n1. The usual syntax to start any algorithm run should be something like\n    ```\n    cd PATH\u002FTO\u002FPROJECT\n    git pull\n    python YOUR_SCRIPT.py\n    ```\n    \n1.  In your browser (locally), please go to `AWS_INSTANCE_PUBLIC_IP:8888` to view logs and results.\n\n### Deploy on a cluster\nThe step from distributed to cluster only requires changes as documented by [ray](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray).\nOnce you have your cluster specification file (`.yaml`) and your AWS account is set up, just enable the `cluster`\noption in your TrainingProfile and start your cluster via ray over the command line.\n\n## Notes\nAn optional debugging tool that can plot the full game-tree with an agent's strategy in tiny games.\nThe code for that (authored by Sebastian De Ro) can be downloaded from\n[here](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1Oo4OyKZuO46GGnTQgWTqvX9z-BW_iShJ\u002Fview?usp=sharing).\nTo install it, just drag the PokerViz folder directly onto your `C:\u002F` drive (Windows) or in your `home` directory\n(Linux). PokerRL will then detect that it is installed and export visualizations when you run Best Response on small\ngames. To view the trees, go into the `data` directory and rename the tree you want to view to `data.js` and then open\n`index.html`.\n\n\nNote that the Python code imports small bits of functionality exported from C++ to .dll and .so files, for Win and Linux\nrespectively. Only the binaries are included with this repository.\n\n## Citing\nIf you use PokerRL in your research, you can cite it as follows:\n```\n@misc{steinberger2019pokerrl,\n    author = {Eric Steinberger},\n    title = {PokerRL},\n    year = {2019},\n    publisher = {GitHub},\n    journal = {GitHub repository},\n    howpublished = {\\url{https:\u002F\u002Fgithub.com\u002FTinkeringCode\u002FPokerRL}},\n}\n```\n\n\n\n\n\n## Authors\n* **Eric Steinberger**\n\n\n\n\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\n\n\n\n## Acknowledgments\nI want to thank Alexander Mandt for getting ray to run on our local cluster of 64 workers and HTL Spengergasse for\nproviding it. Sebastian De Ro developed a game tree visualisation\n[tool](https:\u002F\u002Fgithub.com\u002Fsebastiandero\u002Fjs-visualize-best-response-tree) that we integrated into PokerRL and\ncontributed to our batched poker hand evaluator written in C++.\n\n## References\n[0] Zinkevich, Martin, et al. \"Regret minimization in games with incomplete information.\" Advances in neural information\nprocessing systems. 2008.\n\n[1] Tammelin, Oskari, et al. \"Solving Heads-Up Limit Texas Hold'em.\" IJCAI.dc 2015.\n\n[2] Lanctot, Marc, et al. \"Monte Carlo sampling for regret minimization in extensive games.\" Advances in neural\ninformation processing systems. 2009.\n\n[3] Heinrich, Johannes, and David Silver. \"Deep reinforcement learning from self-play in imperfect-information games.\"\narXiv preprint arXiv:1603.01121 (2016).\n\n[4] Srinivasan, Sriram, et al. \"Actor-critic policy optimization in partially observable multiagent environments.\"\nAdvances in Neural Information Processing Systems. 2018.\n\n[5] Brown, Noam, et al. \"Deep Counterfactual Regret Minimization.\" arXiv preprint arXiv:1811.00164 (2018).\n\n[6] https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray\n\n[7] Lisy, Viliam, and Michael Bowling. \"Equilibrium Approximation Quality of Current No-Limit Poker Bots.\" arXiv\npreprint arXiv:1612.07547 (2016).\n\n[8] Steinberger, Eric. \"Single Deep Counterfactual Regret Minimization.\" arXiv preprint arXiv:1901.07621 (2019).\n\n[9] Wang, Ziyu, et al. \"Dueling network architectures for deep reinforcement learning.\"\narXiv preprint arXiv:1511.06581 (2015).\n\n[10] Zinkevich, Martin, et al. \"Regret minimization in games with incomplete information.\" Advances in neural\ninformation processing systems. 2008.\n\n[11] Tammelin, Oskari. \"Solving large imperfect information games using CFR+.\" arXiv preprint arXiv:1407.5042 (2014).\n\n[12] Brown, Noam, and Tuomas Sandholm. \"Solving Imperfect-Information Games via Discounted Regret Minimization.\"\narXiv preprint arXiv:1809.04040 (2018).\n","# PokerRL\n\n用于扑克游戏中多智能体深度强化学习的框架。\n\n\n## 背景\n长期以来，解决不完美信息博弈的研究主要集中在遍历完整博弈树的方法上，直到最近才有所突破（参见\n[[0]](http:\u002F\u002Fmartin.zinkevich.org\u002Fpublications\u002Fregretpoker.pdf),\n[[1]](http:\u002F\u002Fpoker.cs.ualberta.ca\u002Fpublications\u002F2015-ijcai-cfrplus.pdf),\n[[2]](https:\u002F\u002Fpapers.nips.cc\u002Fpaper\u002F3713-monte-carlo-sampling-for-regret-minimization-in-extensive-games.pdf)，\n等文献）。\n近年来，一些新算法如神经虚构自我对弈（NFSP）\n[[3]](http:\u002F\u002Fdiscovery.ucl.ac.uk\u002F1549658\u002F1\u002FHeinrich_phd_FINAL.pdf),\n遗憾策略梯度（RPG）[[4]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1810.09026.pdf),\n深度反事实遗憾最小化（Deep CFR）[[5]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1811.00164.pdf),\n以及单次深度CFR[[8]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1901.07621.pdf)\n将深度（强化）学习与传统的CFR和虚构对弈等方法相结合，在仅访问博弈状态的一小部分的情况下，学习近似的纳什均衡。\n\n\n## PokerRL 框架\n\n### PokerRL 算法的组成部分\n![框架](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEricSteinberger_PokerRL_readme_ff6f240dc1da.png)\n您的算法由相互交互的工作者（绿色）组成。训练运行的参数通过一个 _TrainingProfile_ 实例传递（`...\u002Frl\u002Fbase_cls\u002FTrainingProfileBase`）。\n常见的指标，如最佳响应或人机对战表现，可以由独立的工作者（红色）定期测量。您训练好的智能体被封装在 EvalAgent 中（`...\u002Frl\u002Fbase_cls\u002FEvalAgentBase`）。\n您的 EvalAgent 可以在 AgentTournament 中与其他 AI 对战（`...\u002Fgame\u002FAgentTournament`），也可以在 InteractiveGame 中与人类玩家对战（`...\u002Fgame\u002FInteractiveGame`）。所有本地工作者（仅为类）只需约 4 行代码即可包装成独立的分布式工作者。\n\nPokerRL 的某些部分仅适用于两人游戏，因为在其他场景下没有意义。然而，游戏引擎本身和智能体模块则适用于 N>1 名玩家的通用场景。\n\n### 算法评估\n我们提供了四种指标来评估算法：\n\n- **最佳响应（BR）** - 计算精确的可利用性（适用于小型游戏）。\n- **局部最佳响应（LBR）[[7]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1612.07547.pdf)** 近似 BR 的下界。\n- **强化学习最佳响应（RL-BR）** 通过训练 DDQN [[9]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1511.06581.pdf) 对抗该 AI 来近似 BR。\n- **人机对战（H2H）** - 让智能体的两种模式相互对战。\n\n我们当前的最佳响应实现仅适用于小型游戏，而 LBR 和 QBR 则针对（非常）大型游戏的分布式计算进行了优化。作为小型游戏中的基准比较，我们还提供了未优化的\nvanilla CFR [[10]](http:\u002F\u002Fmartin.zinkevich.org\u002Fpublications\u002Fregretpoker.pdf),\nCFR+ [[11]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1407.5042)\n和线性 CFR [[12]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1809.04040.pdf)\n实现，这些实现可以像深度强化学习智能体一样运行，并将它们的可利用性绘制成 TensorBoard 图表。\n\n### 性能与可扩展性\n过去的一些算法主要受博弈树计算性能的限制，而基于采样的方法则主要消耗在查询神经网络上的开销。PokerRL 提供了一个强化学习环境和框架，基于此框架可以构建和运行基于深度学习的算法来解决扑克游戏。PokerRL 提供了 ray [[6]](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray) 的封装，使同一份代码可以在本地、多核机器上，甚至在包含 CPU 和可能 GPU 的集群上运行。\n\n\n\n\n\n## 安装\n本指南将指导您在本地机器上安装并运行 PokerRL，\n并说明如何将您在本地开发和测试的代码无缝部署到 AWS 集群上。\n\n### 先决条件\n该代码库在本地运行时与操作系统无关，但在分布式运行时仅支持 Linux，这是由于 [ray](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray) 的限制所致。\n\n### 本地机器上的安装\n首先，请安装 Anaconda\u002FMiniconda 和 Docker。然后运行以下命令（必要时请填写具体信息）：\n```\nconda create -n CHOOSE_A_NAME python=3.6 -y\nsource activate THE_NAME_YOU_CHOSE\npip install requests\nconda install pytorch=0.4.1 -c pytorch\n```\n接着：\n```\npip install PokerRL\n```\n注意：进行分布式运行时需要 Linux 系统，并且需执行 `pip install PokerRL[distributed]`。如果仅在本地使用，则无需此步骤。\n\n该框架使用 [PyCrayon](https:\u002F\u002Fgithub.com\u002Ftorrvision\u002Fcrayon)，它是 Tensorboard 的语言无关封装。请按照其 GitHub 页面上的说明进行设置。安装 PyCrayon 后，可以通过以下命令运行并启动日志服务器：\n```\ndocker run -d -p 8888:8888 -p 8889:8889 --name crayon alband\u002Fcrayon\ndocker start crayon\n```\n现在您可以在浏览器中访问 `localhost:8888` 查看 TensorBoard。\n\n#### 运行一些测试\n在包含 PokerRL 的目录中运行以下命令，以检查所有单元测试是否通过：\n```\npython -m unittest discover PokerRL\u002Ftest\n```\n另一种更有趣的方式来测试您的安装是否成功，是运行 `examples\u002Finteractive_user_v_user.py` 与自己玩扑克，以及 `examples\u002Frun_cfrp_example.py` 在一个小规模扑克游戏中训练一个 CFR+ 智能体。\n\n## 云与集群\nPokerRL 提供了一个接口，允许完全相同的代码在本地和集群上运行，这得益于 [ray](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray) 的支持。PokerRL 支持两种模式：\n1. _分布式_：在一台具有多核的机器上运行多个工作进程\n2. _集群_：在多台机器上运行多个工作进程\n\n您可以通过切换 TrainingProfile 中的一个布尔值来启用或禁用分布式和集群模式。本节假设您使用通过 pip 安装的 PokerRL 版本来开发算法。\n\n与分布式 PokerRL 兼容的算法示例包括这个\n[神经虚构自我对弈的实现](https:\u002F\u002Fgithub.com\u002FTinkeringCode\u002FNeural-Fictitous-Self-Play) [8]。\n以及这个\n[单次深度CFR的实现](https:\u002F\u002Fgithub.com\u002FTinkeringCode\u002FSingle-Deep-CFR) [3]\n\n### 在 AWS 实例上使用本地或分布式模式\n1. 通过管理控制台启动一个符合您需求的 AWS 实例。本教程假设您的基础 AMI 是“Amazon Linux 2 AMI (HVM), SSD Volume Type”。注意：为了能够查看日志，务必在安全组中添加以下规则：\n    ```\n    自定义 TCP 规则   |   TCP   |   8888   |   您的 IP   |   TensorBoard\n    ```\n1. 在实例上运行以下命令：\n    ```\n    sudo yum update -y\n    sudo yum install git gcc g++ polkit -y\n    sudo amazon-linux-extras install docker -y\n    sudo service docker start\n    sudo docker pull alband\u002Fcrayon \n    wget https:\u002F\u002Frepo.anaconda.com\u002Fminiconda\u002FMiniconda3-latest-Linux-x86_64.sh\n    bash Miniconda3-latest-Linux-x86_64.sh -b -p \u002Fhome\u002Fec2-user\u002Fminiconda\n    export PATH=\u002Fhome\u002Fec2-user\u002Fminiconda\u002Fbin:$PATH\n    conda create -n PokerAI python=3.6 -y\n    source activate PokerAI\n    pip install requests\n    conda install pytorch=0.4.1 -c pytorch -y\n    pip install PokerRL[distributed]\n    ```\n1. 授予您的实例访问代码库的权限，以便后续可以执行 `git pull`。\n\n1. 创建一个 AMI（即实例镜像），以便将来无需重复上述步骤。\n\n1. 每次使用您的 AMI 启动新实例时，请执行以下命令：\n    ```\n    sudo service docker start\n    sudo docker inspect -f {{.State.Running}} crayon || sudo docker run -d -p 8888:8888 -p 8889:8889 --name crayon alband\u002Fcrayon\n    sudo docker start crayon\n    \n    screen\n    export OMP_NUM_THREADS=1\n    export PATH=\u002Fhome\u002Fec2-user\u002Fminiconda\u002Fbin:$PATH\n    source activate PokerAI\n    source deactivate\n    source activate PokerAI\n    ```\n    必须设置 `OMP_NUM_THREADS=1`，因为 PyTorch 0.4.1 存在一个忽略核心\u002F进程限制的 bug。该问题在 PyTorch 1.0 中已修复，但在许多情况下，1.0 对于循环神经网络的性能反而不如 0.4.1。\n\n1. 启动任何算法运行的常规语法应为：\n    ```\n    cd PATH\u002FTO\u002FPROJECT\n    git pull\n    python YOUR_SCRIPT.py\n    ```\n    \n1. 在本地浏览器中，请访问 `AWS_INSTANCE_PUBLIC_IP:8888` 查看日志和结果。\n\n### 在集群上部署\n从分布式模式切换到集群模式仅需按照 [ray](https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray) 的文档进行相应更改。准备好集群配置文件（`.yaml`）并完成 AWS 账户设置后，在 TrainingProfile 中启用 `cluster` 选项，并通过命令行使用 ray 启动集群即可。\n\n## 备注\n提供一个可选的调试工具，可在小型游戏中绘制包含智能体策略的完整博弈树。该工具的代码由 Sebastian De Ro 编写，可从[此处](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1Oo4OyKZuO46GGnTQgWTqvX9z-BW_iShJ\u002Fview?usp=sharing)下载。安装方法是将 PokerViz 文件夹直接拖放到 Windows 系统的 `C:\u002F` 盘或 Linux 系统的主目录下。PokerRL 将检测到该工具已安装，并在对小型游戏运行最佳回应时导出可视化结果。要查看博弈树，进入 `data` 目录，将您想查看的树文件重命名为 `data.js`，然后打开 `index.html` 即可。\n\n请注意，Python 代码会导入从 C++ 导出至 .dll 和 .so 文件的小型功能模块，分别适用于 Windows 和 Linux 系统。本仓库仅包含这些二进制文件。\n\n## 引用\n如果您在研究中使用了 PokerRL，可以按以下方式引用：\n```\n@misc{steinberger2019pokerrl,\n    author = {Eric Steinberger},\n    title = {PokerRL},\n    year = {2019},\n    publisher = {GitHub},\n    journal = {GitHub repository},\n    howpublished = {\\url{https:\u002F\u002Fgithub.com\u002FTinkeringCode\u002FPokerRL}},\n}\n```\n\n\n\n\n\n## 作者\n* **Eric Steinberger**\n\n\n\n\n\n## 许可证\n本项目采用 MIT 许可证授权——详情请参阅 [LICENSE](LICENSE) 文件。\n\n\n\n\n\n## 致谢\n感谢 Alexander Mandt 帮助我们在由 64 个工作节点组成的本地集群上成功运行 ray，同时也感谢 HTL Spengergasse 提供了该集群。Sebastian De Ro 开发了一款博弈树可视化工具[链接](https:\u002F\u002Fgithub.com\u002Fsebastiandero\u002Fjs-visualize-best-response-tree)，我们将其集成到了 PokerRL 中，并用于我们用 C++ 编写的批处理扑克牌手评估器。\n\n## 参考文献\n[0] Zinkevich, Martin, et al. “不完全信息博弈中的后悔最小化。” 神经信息处理系统进展。2008年。\n\n[1] Tammelin, Oskari, et al. “解决无限注德州扑克单挑赛。” IJCAI.dc 2015。\n\n[2] Lanctot, Marc, et al. “蒙特卡洛采样在扩展式博弈中用于后悔最小化。” 神经信息处理系统进展。2009年。\n\n[3] Heinrich, Johannes, and David Silver. “不完全信息博弈中的自我对弈深度强化学习。” arXiv 预印本 arXiv:1603.01121 (2016)。\n\n[4] Srinivasan, Sriram, et al. “部分可观测多智能体环境中的演员-评论家策略优化。” 神经信息处理系统进展。2018年。\n\n[5] Brown, Noam, et al. “深度反事实后悔最小化。” arXiv 预印本 arXiv:1811.00164 (2018)。\n\n[6] https:\u002F\u002Fgithub.com\u002Fray-project\u002Fray\n\n[7] Lisy, Viliam, and Michael Bowling. “当前无限制扑克机器人均衡近似质量分析。” arXiv 预印本 arXiv:1612.07547 (2016)。\n\n[8] Steinberger, Eric. “单一深度反事实后悔最小化。” arXiv 预印本 arXiv:1901.07621 (2019)。\n\n[9] Wang, Ziyu, et al. “用于深度强化学习的决斗网络架构。” arXiv 预印本 arXiv:1511.06581 (2015)。\n\n[10] Zinkevich, Martin, et al. “不完全信息博弈中的后悔最小化。” 神经信息处理系统进展。2008年。\n\n[11] Tammelin, Oskari. “利用 CFR+ 解决不完全信息大型博弈。” arXiv 预印本 arXiv:1407.5042 (2014)。\n\n[12] Brown, Noam, and Tuomas Sandholm. “通过折现后悔最小化解决不完全信息博弈。” arXiv 预印本 arXiv:1809.04040 (2018)。","# PokerRL 快速上手指南\n\nPokerRL 是一个用于扑克游戏多智能体深度强化学习的框架，支持从本地单机到分布式集群的无缝扩展。\n\n## 环境准备\n\n### 系统要求\n- **本地运行**：支持 Windows、macOS 和 Linux。\n- **分布式\u002F集群运行**：仅支持 **Linux**（受限于 Ray 框架）。\n- **Python 版本**：推荐 Python 3.6。\n\n### 前置依赖\n在开始之前，请确保已安装以下工具：\n1. **Anaconda** 或 **Miniconda**（推荐国内镜像源安装）\n2. **Docker**（用于运行日志服务 PyCrayon\u002FTensorBoard）\n\n> **提示**：国内用户建议使用清华或阿里镜像源加速 Conda 和 Pip 下载。\n> - Conda 配置：`conda config --add channels https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fanaconda\u002Fpkgs\u002Fmain\u002F`\n> - Pip 配置：`pip config set global.index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n---\n\n## 安装步骤\n\n### 1. 创建虚拟环境\n打开终端，执行以下命令创建并激活名为 `PokerAI` 的环境：\n\n```bash\nconda create -n PokerAI python=3.6 -y\nsource activate PokerAI\n```\n\n### 2. 安装基础依赖\n安装必要的 Python 包和 PyTorch（注意版本要求）：\n\n```bash\npip install requests\nconda install pytorch=0.4.1 -c pytorch\n```\n\n### 3. 安装 PokerRL\n- **仅限本地使用**：\n  ```bash\n  pip install PokerRL\n  ```\n- **如需分布式\u002F集群功能（仅 Linux）**：\n  ```bash\n  pip install PokerRL[distributed]\n  ```\n\n### 4. 配置日志可视化 (PyCrayon)\nPokerRL 使用 PyCrayon 作为 TensorBoard 的语言无关包装器。需通过 Docker 启动日志服务器：\n\n```bash\ndocker run -d -p 8888:8888 -p 8889:8889 --name crayon alband\u002Fcrayon\ndocker start crayon\n```\n启动后，在浏览器访问 `localhost:8888` 即可查看训练日志。\n\n### 5. 验证安装\n运行单元测试确保安装成功：\n```bash\npython -m unittest discover PokerRL\u002Ftest\n```\n\n---\n\n## 基本使用\n\n### 示例 1：人机对战测试\n运行交互式脚本，体验自己与自己打牌（验证游戏引擎）：\n```bash\npython examples\u002Finteractive_user_v_user.py\n```\n\n### 2. 训练一个简单的 AI 代理\n运行 CFR+ 算法在小规模扑克游戏中进行训练，并观察 TensorBoard 中的收敛曲线：\n```bash\npython examples\u002Frun_cfrp_example.py\n```\n\n### 3. 开发自定义算法\nPokerRL 的核心是通过 `TrainingProfile` 传递参数。你的算法主要由以下部分组成：\n- **Workers (绿色)**：与环境交互的智能体。\n- **EvalAgent**：封装训练好的代理，用于评估。\n- **AgentTournament \u002F InteractiveGame**：用于让 AI 互相对战或与人类对战。\n\n所有本地 Worker 类只需约 4 行代码即可包装为分布式 Worker。通过在 `TrainingProfile` 中切换布尔值，即可在同一套代码上实现从“单机多核”到“多机集群”的模式切换。\n\n> **注意**：部分评估指标（如精确 Best Response）仅适用于小型游戏；大型游戏建议使用 LBR 或 RL-BR 近似评估。","某 AI 实验室团队正致力于研发能够击败人类职业选手的德州扑克机器人，需要在不完全信息博弈中寻找近似纳什均衡策略。\n\n### 没有 PokerRL 时\n- **算法验证周期漫长**：团队需手动集成深度学习模型与传统 CFR 算法，每次尝试新架构（如 Deep CFR 或 NFSP）都要重写大量底层代码，耗时数周。\n- **难以评估真实强度**：缺乏统一的评估框架，无法快速计算“最佳响应（Best Response）”或进行大规模“头对头（H2H）”对抗测试，只能凭感觉判断策略优劣。\n- **算力扩展极其困难**：现有代码仅能单机运行，面对庞大的游戏树状态空间，无法利用集群分布式加速，训练一个完整模型往往需要数月时间。\n- **复现前沿研究受阻**：论文中的先进算法缺乏标准实现，研究人员需从零复现逻辑，极易引入误差且难以对比性能基线。\n\n### 使用 PokerRL 后\n- **算法迭代效率倍增**：借助预置的训练配置文件（TrainingProfile），团队可在几小时内切换并运行 Deep CFR、RPG 等不同算法架构，专注策略优化而非工程搭建。\n- **量化评估精准可靠**：直接调用内置的 LBR、RL-BR 及 AgentTournament 模块，定期自动生成可量化的剥削性指标和对抗胜率，清晰定位策略弱点。\n- **无缝分布式训练**：通过封装 Ray 框架，同一套代码可轻松从本地调试平滑迁移至 AWS CPU\u002FGPU 集群，将原本数月的训练任务压缩至数天完成。\n- **基线对比一目了然**：内置 vanilla CFR、CFR+ 等经典算法作为基准，支持直接将新模型的性能数据可视化至 TensorBoard，快速验证改进效果。\n\nPokerRL 通过标准化多智能体强化学习流程与弹性分布式架构，将扑克 AI 的研发重心从繁琐的工程实现彻底转向了核心策略的创新。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FEricSteinberger_PokerRL_a4cdc8d3.png","EricSteinberger","Eric Steinberger","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FEricSteinberger_fa9c0493.jpg","I love solving important problems","Magic","Earth",null,"EricSteinb","magic.dev","https:\u002F\u002Fgithub.com\u002FEricSteinberger",[84],{"name":85,"color":86,"percentage":87},"Python","#3572A5",100,514,106,"2026-04-06T16:33:23","MIT",4,"Linux, Windows, macOS","未说明（支持 CPU 集群，可选 GPU 工作节点）","未说明",{"notes":97,"python":98,"dependencies":99},"本地运行支持跨平台，但分布式运行仅限 Linux。必须安装 Docker 以运行 PyCrayon (TensorBoard) 日志服务器。分布式模式需安装 'PokerRL[distributed]'。由于 PyTorch 0.4.1 的已知问题，多核运行时需设置环境变量 OMP_NUM_THREADS=1。部分功能依赖预编译的 C++ 二进制文件 (.dll\u002F.so)。","3.6",[100,101,102,103,104],"pytorch==0.4.1","ray","requests","PyCrayon","Docker",[45,14,106],"其他",[108,109,110,111,112,113,101,114],"deep-learning","gym-environment","poker","reinforcement-learning","reinforcement-learning-algorithms","framework","research","2026-03-27T02:49:30.150509","2026-04-18T09:20:46.674359",[118,123,128,133,138,143],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},38889,"为什么在使用 LimitHoldem 游戏类时无法使用 BR（最佳响应）评估模式？","代码库目前不支持除 Leduc 扑克以外的任何游戏进行 BR 评估。这是因为在大型游戏中针对深度学习算法计算精确的 BR 需要极长的时间（实际上不可行）。如果遇到程序在 \"Creating BR Mode Evaluator...\" 阶段中止的情况，请改用专为大型游戏设计的评估器，如 LBR 或 RLBR。","https:\u002F\u002Fgithub.com\u002FEricSteinberger\u002FPokerRL\u002Fissues\u002F13",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},38888,"如何在大型游戏（如德州扑克）中评估算法的可利用性（Exploitability）？","在大型游戏树（如无限注德州扑克 NLH）中直接计算精确的可利用性（Exact Exploitability）是不可行的，因为这需要超级计算机运行数十年。维护者建议使用局部最佳响应（LBR, Local Best Response）或 RLBR 作为替代评估方法，这些方法是基于采样的近似值，专为大型游戏设计。虽然精确的最佳响应（BR）代码存在，但仅适用于小型玩具游戏（如 Leduc），且为了防止被滥用于构建精确的转牌\u002F河牌求解器，相关工具未对复杂游戏开放。","https:\u002F\u002Fgithub.com\u002FEricSteinberger\u002FPokerRL\u002Fissues\u002F7",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},38890,"如何设置从固定的公共牌面（例如直接从翻牌圈 Flop 开始）进行子游戏评估？","可以通过手动操纵环境状态来实现：\n1. 通过循环执行一系列动作，将环境包装器（env wrapper） artificially 步进到目标历史状态（暂时忽略发牌）。\n2. 调用 `env_wrapper.state_dict()` 获取当前状态字典。\n3. 编辑字典中所有与牌相关的条目，直接替换对应的 numpy 数组，包括公共牌（board）、剩余牌堆（deck_remaining）以及所有玩家的私有底牌（hole_cards）。\n注意：BR 和 PublicTree 工具不直接支持复杂游戏的子游戏泛化，需通过上述方式手动构建状态。","https:\u002F\u002Fgithub.com\u002FEricSteinberger\u002FPokerRL\u002Fissues\u002F6",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},38891,"EvalAgentBase 类中出现 'notify_of_processed_tuple_action' 参数错误或 'get_action_frac_tuple' 属性缺失怎么办？","这是一个已知的代码库版本不匹配问题。错误通常是因为本地安装的 pip 版本过旧，而示例代码引用了较新的接口（如参数名称变更或缺失的方法）。解决方案是等待或手动更新 pip 包到最新版本，或者应用社区提交的 PR 修复（该修复已合并到主分支）。确保使用的 PokerRL 代码版本与安装的库版本一致即可解决此类 AttributeError 和 TypeError。","https:\u002F\u002Fgithub.com\u002FEricSteinberger\u002FPokerRL\u002Fissues\u002F4",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},38892,"是否计划在未来支持 MCCFR（蒙特卡洛反事实遗憾最小化）算法？","维护者目前没有直接将 MCCFR 加入核心库的计划，但指出如果将其作为表格型基线算法（tabular baseline algorithm）实现起来相当容易。官方鼓励用户将其作为一个挑战自行尝试实现，因为框架结构支持此类扩展。","https:\u002F\u002Fgithub.com\u002FEricSteinberger\u002FPokerRL\u002Fissues\u002F10",{"id":144,"question_zh":145,"answer_zh":146,"source_url":127},38893,"Single Deep CFR 的代码是否与原始 Deep CFR 论文（Noam Brown 等人）使用的代码相同？","不相同。维护者明确表示他不是原始 Deep CFR 论文的作者，该代码库也未用于 Noam Brown 和 Adam Lerer 的原始 Deep CFR 工作。此代码库主要用于复现和实验 Single Deep CFR 算法。如果需要复现原始论文结果，需注意两者实现上的差异。",[148,153,158],{"id":149,"version":150,"summary_zh":151,"released_at":152},314833,"0.0.3","修复 #4 和 #5","2019-04-21T13:27:29",{"id":154,"version":155,"summary_zh":156,"released_at":157},314834,"0.0.2","重大变更：\n- BigLeduc 现在有 12 个等级、2 套花色，每轮最多可下 6 注。","2019-03-14T03:29:42",{"id":159,"version":160,"summary_zh":79,"released_at":161},314835,"0.0.1","2019-02-25T22:02:23"]