[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-vwxyzjn--cleanrl":3,"tool-vwxyzjn--cleanrl":61},[4,18,28,37,45,53],{"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":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"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":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"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 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":24,"last_commit_at":59,"category_tags":60,"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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"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":73,"owner_website":80,"owner_url":81,"languages":82,"stars":99,"forks":100,"last_commit_at":101,"license":102,"difficulty_score":24,"env_os":103,"env_gpu":104,"env_ram":105,"env_deps":106,"category_tags":120,"github_topics":121,"view_count":24,"oss_zip_url":137,"oss_zip_packed_at":137,"status":17,"created_at":138,"updated_at":139,"faqs":140,"releases":170},10040,"vwxyzjn\u002Fcleanrl","cleanrl","High-quality single file implementation of Deep Reinforcement Learning algorithms with research-friendly features (PPO, DQN, C51, DDPG, TD3, SAC, PPG)","CleanRL 是一个专注于深度强化学习（DRL）的高质量开源库，其核心理念是将复杂的算法实现浓缩在单个独立的 Python 文件中。它支持 PPO、DQN、SAC 等主流算法，并针对 Atari 等经典环境提供了经过基准测试的参考代码。\n\n传统模块化 DRL 库虽然功能强大，但往往因代码分散和层层封装而难以阅读，导致研究人员难以透彻理解算法细节或快速复现论文结果。CleanRL 正是为了解决这一痛点而生：它牺牲了一定的代码复用性，换取了极致的代码清晰度与可读性。例如，一个完整的 PPO Atari 实现仅需约 340 行代码，却包含了所有关键逻辑，让用户无需在多个文件间跳转即可掌握算法全貌。\n\n该工具特别适合强化学习领域的研究人员、学生以及希望深入理解算法底层实现的开发者。如果你需要快速原型验证、调试特定算法变体，或者单纯想通过阅读源码来学习 DRL，CleanRL 是理想的选择。此外，它还内置了 TensorBoard 日志记录、实验复现种子控制、游戏视频录制以及与 Weights & Biases 和 AWS 的云集成等功能，极大地便利了科研实验的管理与扩展。需要注意的是，Cle","CleanRL 是一个专注于深度强化学习（DRL）的高质量开源库，其核心理念是将复杂的算法实现浓缩在单个独立的 Python 文件中。它支持 PPO、DQN、SAC 等主流算法，并针对 Atari 等经典环境提供了经过基准测试的参考代码。\n\n传统模块化 DRL 库虽然功能强大，但往往因代码分散和层层封装而难以阅读，导致研究人员难以透彻理解算法细节或快速复现论文结果。CleanRL 正是为了解决这一痛点而生：它牺牲了一定的代码复用性，换取了极致的代码清晰度与可读性。例如，一个完整的 PPO Atari 实现仅需约 340 行代码，却包含了所有关键逻辑，让用户无需在多个文件间跳转即可掌握算法全貌。\n\n该工具特别适合强化学习领域的研究人员、学生以及希望深入理解算法底层实现的开发者。如果你需要快速原型验证、调试特定算法变体，或者单纯想通过阅读源码来学习 DRL，CleanRL 是理想的选择。此外，它还内置了 TensorBoard 日志记录、实验复现种子控制、游戏视频录制以及与 Weights & Biases 和 AWS 的云集成等功能，极大地便利了科研实验的管理与扩展。需要注意的是，CleanRL 并非设计为被导入调用的模块化库，而是作为一份清晰、可执行的“活文档”供用户直接运行和研究。","# CleanRL (Clean Implementation of RL Algorithms)\n\n\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue\">](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl)\n[![tests](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Factions\u002Fworkflows\u002Ftests.yaml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Factions\u002Fworkflows\u002Ftests.yaml)\n[![docs](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdeployments\u002Fvwxyzjn\u002Fcleanrl\u002FProduction?label=docs&logo=vercel)](https:\u002F\u002Fdocs.cleanrl.dev\u002F)\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F767863440248143916?label=discord\">](https:\u002F\u002Fdiscord.gg\u002FD6RCjA6sVT)\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fyoutube\u002Fchannel\u002Fviews\u002FUCDdC6BIFRI0jvcwuhi3aI6w?style=social\">](https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCDdC6BIFRI0jvcwuhi3aI6w\u002Fvideos)\n[![Code style: black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg)](https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack)\n[![Imports: isort](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https:\u002F\u002Fpycqa.github.io\u002Fisort\u002F)\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%A4%97%20Models-Huggingface-F8D521\">](https:\u002F\u002Fhuggingface.co\u002Fcleanrl)\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fdocs\u002Fget-started\u002FCleanRL_Huggingface_Integration_Demo.ipynb)\n\n\nCleanRL is a Deep Reinforcement Learning library that provides high-quality single-file implementation with research-friendly features. The implementation is clean and simple, yet we can scale it to run thousands of experiments using AWS Batch. The highlight features of CleanRL are:\n\n\n\n* 📜 Single-file implementation\n   * *Every detail about an algorithm variant is put into a single standalone file.* \n   * For example, our `ppo_atari.py` only has 340 lines of code but contains all implementation details on how PPO works with Atari games, **so it is a great reference implementation to read for folks who do not wish to read an entire modular library**.\n* 📊 Benchmarked Implementation (7+ algorithms and 34+ games at https:\u002F\u002Fbenchmark.cleanrl.dev)\n* 📈 Tensorboard Logging\n* 🪛 Local Reproducibility via Seeding\n* 🎮 Videos of Gameplay Capturing\n* 🧫 Experiment Management with [Weights and Biases](https:\u002F\u002Fwandb.ai\u002Fsite)\n* 💸 Cloud Integration with docker and AWS \n\nYou can read more about CleanRL in our [JMLR paper](https:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fvolume23\u002F21-1342\u002F21-1342.pdf) and [documentation](https:\u002F\u002Fdocs.cleanrl.dev\u002F).\n\nNotable CleanRL-related projects:\n\n* [corl-team\u002FCORL](https:\u002F\u002Fgithub.com\u002Fcorl-team\u002FCORL): Offline RL algorithm implemented in CleanRL style\n* [pytorch-labs\u002FLeanRL](https:\u002F\u002Fgithub.com\u002Fpytorch-labs\u002FLeanRL): Fast optimized PyTorch implementation of CleanRL RL algorithms using CUDAGraphs.\n\n\n> ℹ️ **Support for Gymnasium**: [Farama-Foundation\u002FGymnasium](https:\u002F\u002Fgithub.com\u002FFarama-Foundation\u002FGymnasium) is the next generation of [`openai\u002Fgym`](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fgym) that will continue to be maintained and introduce new features. Please see their [announcement](https:\u002F\u002Ffarama.org\u002FAnnouncing-The-Farama-Foundation) for further detail. We are migrating to `gymnasium` and the progress can be tracked in [vwxyzjn\u002Fcleanrl#277](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F277). \n\n\n> ⚠️ **NOTE**: CleanRL is *not* a modular library and therefore it is not meant to be imported. At the cost of duplicate code, we make all implementation details of a DRL algorithm variant easy to understand, so CleanRL comes with its own pros and cons. You should consider using CleanRL if you want to 1) understand all implementation details of an algorithm's variant or 2) prototype advanced features that other modular DRL libraries do not support (CleanRL has minimal lines of code so it gives you great debugging experience and you don't have do a lot of subclassing like sometimes in modular DRL libraries).\n\n## Get started\n\nPrerequisites:\n* Python >=3.7.1,\u003C3.11\n* [uv 0.7.9+](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F)\n\nTo run experiments locally, give the following a try:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl.git && cd cleanrl\nuv pip install .\n\n# alternatively, you could use `uv venv` and do\n# `python run cleanrl\u002Fppo.py`\nuv run python cleanrl\u002Fppo.py \\\n    --seed 1 \\\n    --env-id CartPole-v0 \\\n    --total-timesteps 50000\n\n# open another terminal and enter `cd cleanrl\u002Fcleanrl`\ntensorboard --logdir runs\n```\n\nTo use experiment tracking with wandb, run\n```bash\nwandb login # only required for the first time\nuv run python cleanrl\u002Fppo.py \\\n    --seed 1 \\\n    --env-id CartPole-v0 \\\n    --total-timesteps 50000 \\\n    --track \\\n    --wandb-project-name cleanrltest\n```\n\nIf you are not using `uv`, you can install CleanRL with `requirements.txt`:\n\n```bash\n# core dependencies\npip install -r requirements\u002Frequirements.txt\n\n# optional dependencies\npip install -r requirements\u002Frequirements-atari.txt\npip install -r requirements\u002Frequirements-mujoco.txt\npip install -r requirements\u002Frequirements-mujoco_py.txt\npip install -r requirements\u002Frequirements-procgen.txt\npip install -r requirements\u002Frequirements-envpool.txt\npip install -r requirements\u002Frequirements-pettingzoo.txt\npip install -r requirements\u002Frequirements-jax.txt\npip install -r requirements\u002Frequirements-docs.txt\npip install -r requirements\u002Frequirements-cloud.txt\npip install -r requirements\u002Frequirements-memory_gym.txt\n```\n\nTo run training scripts in other games:\n```\nuv venv\n\n# classic control\npython cleanrl\u002Fdqn.py --env-id CartPole-v1\npython cleanrl\u002Fppo.py --env-id CartPole-v1\npython cleanrl\u002Fc51.py --env-id CartPole-v1\n\n# atari\nuv pip install \".[atari]\"\npython cleanrl\u002Fdqn_atari.py --env-id BreakoutNoFrameskip-v4\npython cleanrl\u002Fc51_atari.py --env-id BreakoutNoFrameskip-v4\npython cleanrl\u002Fppo_atari.py --env-id BreakoutNoFrameskip-v4\npython cleanrl\u002Fsac_atari.py --env-id BreakoutNoFrameskip-v4\n\n# NEW: 3-4x side-effects free speed up with envpool's atari (only available to linux)\nuv pip install \".[envpool]\"\npython cleanrl\u002Fppo_atari_envpool.py --env-id BreakoutNoFrameskip-v4\n# Learn Pong-v5 in ~5-10 mins\n# Side effects such as lower sample efficiency might occur\nuv run python ppo_atari_envpool.py --clip-coef=0.2 --num-envs=16 --num-minibatches=8 --num-steps=128 --update-epochs=3\n\n# procgen\nuv pip install \".[procgen]\"\npython cleanrl\u002Fppo_procgen.py --env-id starpilot\npython cleanrl\u002Fppg_procgen.py --env-id starpilot\n\n# ppo + lstm\nuv pip install \".[atari]\"\npython cleanrl\u002Fppo_atari_lstm.py --env-id BreakoutNoFrameskip-v4\n```\n\nYou may also use a prebuilt development environment hosted in Gitpod:\n\n[![Open in Gitpod](https:\u002F\u002Fgitpod.io\u002Fbutton\u002Fopen-in-gitpod.svg)](https:\u002F\u002Fgitpod.io\u002F#https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl)\n\n## Algorithms Implemented\n\n\n| Algorithm      | Variants Implemented |\n| ----------- | ----------- |\n| ✅ [Proximal Policy Gradient (PPO)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06347.pdf)  |  [`ppo.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo.py),   [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppopy) |\n| |  [`ppo_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari.py),   [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_ataripy)\n| |  [`ppo_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_continuous_action.py),   [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_continuous_actionpy)\n| |  [`ppo_atari_lstm.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_lstm.py),   [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_lstmpy)\n| |  [`ppo_atari_envpool.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool.py),   [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpoolpy)\n| | [`ppo_atari_envpool_xla_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool_xla_jax.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpool_xla_jaxpy)\n| | [`ppo_atari_envpool_xla_jax_scan.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool_xla_jax_scan.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpool_xla_jax_scanpy))\n| |  [`ppo_procgen.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_procgen.py),   [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_procgenpy)\n| |  [`ppo_atari_multigpu.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_multigpu.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_multigpupy)\n| | [`ppo_pettingzoo_ma_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_pettingzoo_ma_atari.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_pettingzoo_ma_ataripy)\n| | [`ppo_continuous_action_isaacgym.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_continuous_action_isaacgym\u002Fppo_continuous_action_isaacgym.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_continuous_action_isaacgympy)\n| | [`ppo_trxl.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_trxl\u002Fppo_trxl.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo-trxl\u002F)\n| ✅ [Deep Q-Learning (DQN)](https:\u002F\u002Fweb.stanford.edu\u002Fclass\u002Fpsych209\u002FReadings\u002FMnihEtAlHassibis15NatureControlDeepRL.pdf) |  [`dqn.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqnpy) |\n| | [`dqn_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn_atari.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_ataripy) |\n| | [`dqn_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn_jax.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_jaxpy) |\n| | [`dqn_atari_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn_atari_jax.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_atari_jaxpy) |\n| ✅ [Categorical DQN (C51)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06887.pdf) |  [`c51.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51py) |\n| |  [`c51_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51_atari.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51_ataripy) |\n| | [`c51_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51_jax.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51_jaxpy) |\n| | [`c51_atari_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51_atari_jax.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51_atari_jaxpy) |\n| ✅ [Soft Actor-Critic (SAC)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1812.05905.pdf) |  [`sac_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fsac_continuous_action.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fsac\u002F#sac_continuous_actionpy) |\n| |  [`sac_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fsac_atari.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fsac\u002F#sac_atarinpy) |\n| ✅ [Deep Deterministic Policy Gradient (DDPG)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1509.02971.pdf) |  [`ddpg_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fddpg_continuous_action.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fddpg\u002F#ddpg_continuous_actionpy) |\n| | [`ddpg_continuous_action_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fddpg_continuous_action_jax.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fddpg\u002F#ddpg_continuous_action_jaxpy)\n| ✅ [Twin Delayed Deep Deterministic Policy Gradient (TD3)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1802.09477.pdf) |  [`td3_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Ftd3_continuous_action.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Ftd3\u002F#td3_continuous_actionpy) |\n|  | [`td3_continuous_action_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Ftd3_continuous_action_jax.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Ftd3\u002F#td3_continuous_action_jaxpy) |\n| ✅ [Phasic Policy Gradient (PPG)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2009.04416) |  [`ppg_procgen.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppg_procgen.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppg\u002F#ppg_procgenpy) |\n| ✅ [Random Network Distillation (RND)](https:\u002F\u002Farxiv.org\u002Fabs\u002F1810.12894) |  [`ppo_rnd_envpool.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_rnd_envpool.py),  [docs](\u002Frl-algorithms\u002Fppo-rnd\u002F#ppo_rnd_envpoolpy) |\n| ✅ [Qdagger](https:\u002F\u002Farxiv.org\u002Fabs\u002F2206.01626)  |  [`qdagger_dqn_atari_impalacnn.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fqdagger_dqn_atari_impalacnn.py),  [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fqdagger\u002F#qdagger_dqn_atari_impalacnnpy) |\n|  | [`qdagger_dqn_atari_jax_impalacnn.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fqdagger_dqn_atari_jax_impalacnn.py), [docs](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fqdagger\u002F#qdagger_dqn_atari_jax_impalacnnpy) |\n\n\n## Open RL Benchmark\n\nTo make our experimental data transparent, CleanRL participates in a related project called [Open RL Benchmark](https:\u002F\u002Fgithub.com\u002Fopenrlbenchmark\u002Fopenrlbenchmark), which contains tracked experiments from popular DRL libraries such as ours, [Stable-baselines3](https:\u002F\u002Fgithub.com\u002FDLR-RM\u002Fstable-baselines3), [openai\u002Fbaselines](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fbaselines), [jaxrl](https:\u002F\u002Fgithub.com\u002Fikostrikov\u002Fjaxrl), and others. \n\nCheck out https:\u002F\u002Fbenchmark.cleanrl.dev\u002F for a collection of Weights and Biases reports showcasing tracked DRL experiments. The reports are interactive, and researchers can easily query information such as GPU utilization and videos of an agent's gameplay that are normally hard to acquire in other RL benchmarks. In the future, Open RL Benchmark will likely provide an dataset API for researchers to easily access the data (see [repo](https:\u002F\u002Fgithub.com\u002Fopenrlbenchmark\u002Fopenrlbenchmark)).\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_readme_6fbf5c00ba0a.png)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_readme_29625cc65f95.png)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_readme_d36c0d9bf4b0.png)\n\n\n## Support and get involved\n\nWe have a [Discord Community](https:\u002F\u002Fdiscord.gg\u002FD6RCjA6sVT) for support. Feel free to ask questions. Posting in [Github Issues](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues) and PRs are also welcome. Also our past video recordings are available at [YouTube](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dm4HdGujpPs&list=PLQpKd36nzSuMynZLU2soIpNSMeXMplnKP&index=2)\n\n## Citing CleanRL\n\nIf you use CleanRL in your work, please cite our technical [paper](https:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fv23\u002F21-1342.html):\n\n```bibtex\n@article{huang2022cleanrl,\n  author  = {Shengyi Huang and Rousslan Fernand Julien Dossa and Chang Ye and Jeff Braga and Dipam Chakraborty and Kinal Mehta and João G.M. Araújo},\n  title   = {CleanRL: High-quality Single-file Implementations of Deep Reinforcement Learning Algorithms},\n  journal = {Journal of Machine Learning Research},\n  year    = {2022},\n  volume  = {23},\n  number  = {274},\n  pages   = {1--18},\n  url     = {http:\u002F\u002Fjmlr.org\u002Fpapers\u002Fv23\u002F21-1342.html}\n}\n```\n\n\n## Acknowledgement\n\nCleanRL is a community-powered by project and our contributors run experiments on a variety of hardware.\n\n* We thank many contributors for using their own computers to run experiments\n* We thank Google's [TPU research cloud](https:\u002F\u002Fsites.research.google\u002Ftrc\u002Fabout\u002F) for providing TPU resources.\n* We thank [Hugging Face](https:\u002F\u002Fhuggingface.co\u002F)'s cluster for providing GPU resources. \n","# CleanRL（强化学习算法的简洁实现）\n\n\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue\">](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl)\n[![tests](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Factions\u002Fworkflows\u002Ftests.yaml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Factions\u002Fworkflows\u002Ftests.yaml)\n[![docs](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdeployments\u002Fvwxyzjn\u002Fcleanrl\u002FProduction?label=docs&logo=vercel)](https:\u002F\u002Fdocs.cleanrl.dev\u002F)\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F767863440248143916?label=discord\">](https:\u002F\u002Fdiscord.gg\u002FD6RCjA6sVT)\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fyoutube\u002Fchannel\u002Fviews\u002FUCDdC6BIFRI0jvcwuhi3aI6w?style=social\">](https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCDdC6BIFRI0jvcwuhi3aI6w\u002Fvideos)\n[![Code style: black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg)](https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack)\n[![Imports: isort](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https:\u002F\u002Fpycqa.github.io\u002Fisort\u002F)\n[\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%A4%97%20Models-Huggingface-F8D521\">](https:\u002F\u002Fhuggingface.co\u002Fcleanrl)\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fdocs\u002Fget-started\u002FCleanRL_Huggingface_Integration_Demo.ipynb)\n\n\nCleanRL 是一个深度强化学习库，提供高质量的单文件实现，并具备适合研究的功能。其实现简洁明了，同时我们也可以通过 AWS Batch 将其扩展到运行数千个实验。CleanRL 的亮点功能包括：\n\n\n\n* 📜 单文件实现\n   * *算法变体的所有细节都集中在一个独立的文件中。* \n   * 例如，我们的 `ppo_atari.py` 只有 340 行代码，却包含了 PPO 如何与 Atari 游戏配合工作的全部实现细节，**因此对于那些不想阅读整个模块化库的人来说，这是一个非常好的参考实现**。\n* 📊 已基准化的实现（在 https:\u002F\u002Fbenchmark.cleanrl.dev 上有 7 种以上算法和 34 款以上游戏）\n* 📈 TensorBoard 日志记录\n* 🪛 通过种子设置实现本地可重复性\n* 🎮 游戏过程视频录制\n* 🧫 使用 [Weights and Biases](https:\u002F\u002Fwandb.ai\u002Fsite) 进行实验管理\n* 💸 与 Docker 和 AWS 的云端集成\n\n您可以在我们的 [JMLR 论文](https:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fvolume23\u002F21-1342\u002F21-1342.pdf) 和 [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002F) 中了解更多关于 CleanRL 的信息。\n\n值得关注的 CleanRL 相关项目：\n\n* [corl-team\u002FCORL](https:\u002F\u002Fgithub.com\u002Fcorl-team\u002FCORL)：以 CleanRL 风格实现的离线强化学习算法\n* [pytorch-labs\u002FLeanRL](https:\u002F\u002Fgithub.com\u002Fpytorch-labs\u002FLeanRL)：使用 CUDAGraphs 对 CleanRL 强化学习算法进行快速优化的 PyTorch 实现。\n\n\n> ℹ️ **对 Gymnasium 的支持**：[Farama-Foundation\u002FGymnasium](https:\u002F\u002Fgithub.com\u002FFarama-Foundation\u002FGymnasium) 是 [`openai\u002Fgym`](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fgym) 的下一代版本，将继续维护并引入新功能。请参阅他们的 [公告](https:\u002F\u002Ffarama.org\u002FAnnouncing-The-Farama-Foundation) 以获取更多详细信息。我们正在迁移到 `gymnasium`，进度可以在 [vwxyzjn\u002Fcleanrl#277](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F277) 中跟踪。\n\n\n> ⚠️ **注意**：CleanRL 并非模块化库，因此不适合被导入。为了减少代码重复，我们将每个 DRL 算法变体的所有实现细节都设计得易于理解，所以 CleanRL 既有优点也有缺点。如果您希望 1) 理解某个算法变体的所有实现细节，或 2) 原型化其他模块化 DRL 库不支持的高级功能（CleanRL 代码量较少，调试体验极佳，且无需像某些模块化 DRL 库那样进行大量子类化），那么您可以考虑使用 CleanRL。\n\n## 快速入门\n\n前提条件：\n* Python >=3.7.1,\u003C3.11\n* [uv 0.7.9+](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F)\n\n要在本地运行实验，请尝试以下步骤：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl.git && cd cleanrl\nuv pip install .\n\n# 或者，您也可以使用 `uv venv`，然后执行\n# `python run cleanrl\u002Fppo.py`\nuv run python cleanrl\u002Fppo.py \\\n    --seed 1 \\\n    --env-id CartPole-v0 \\\n    --total-timesteps 50000\n\n# 打开另一个终端，进入 `cd cleanrl\u002Fcleanrl`\ntensorboard --logdir runs\n```\n\n要使用 wandb 进行实验跟踪，请运行以下命令：\n```bash\nwandb login # 仅首次需要\nuv run python cleanrl\u002Fppo.py \\\n    --seed 1 \\\n    --env-id CartPole-v0 \\\n    --total-timesteps 50000 \\\n    --track \\\n    --wandb-project-name cleanrltest\n```\n\n如果您没有使用 `uv`，可以使用 `requirements.txt` 安装 CleanRL：\n\n```bash\n# 核心依赖\npip install -r requirements\u002Frequirements.txt\n\n# 可选依赖\npip install -r requirements\u002Frequirements-atari.txt\npip install -r requirements\u002Frequirements-mujoco.txt\npip install -r requirements\u002Frequirements-mujoco_py.txt\npip install -r requirements\u002Frequirements-procgen.txt\npip install -r requirements\u002Frequirements-envpool.txt\npip install -r requirements\u002Frequirements-pettingzoo.txt\npip install -r requirements\u002Frequirements-jax.txt\npip install -r requirements\u002Frequirements-docs.txt\npip install -r requirements\u002Frequirements-cloud.txt\npip install -r requirements\u002Frequirements-memory_gym.txt\n```\n\n要在其他游戏中运行训练脚本：\n```\nuv venv\n\n# 经典控制\npython cleanrl\u002Fdqn.py --env-id CartPole-v1\npython cleanrl\u002Fppo.py --env-id CartPole-v1\npython cleanrl\u002Fc51.py --env-id CartPole-v1\n\n# Atari\nuv pip install \".[atari]\"\npython cleanrl\u002Fdqn_atari.py --env-id BreakoutNoFrameskip-v4\npython cleanrl\u002Fc51_atari.py --env-id BreakoutNoFrameskip-v4\npython cleanrl\u002Fppo_atari.py --env-id BreakoutNoFrameskip-v4\npython cleanrl\u002Fsac_atari.py --env-id BreakoutNoFrameskip-v4\n\n# 新增：使用 envpool 的 Atari 版本可实现 3–4 倍无副作用的速度提升（仅限 Linux）\nuv pip install \".[envpool]\"\npython cleanrl\u002Fppo_atari_envpool.py --env-id BreakoutNoFrameskip-v4\n# 大约 5–10 分钟即可学会 Pong-v5\n# 可能会出现采样效率降低等副作用\nuv run python ppo_atari_envpool.py --clip-coef=0.2 --num-envs=16 --num-minibatches=8 --num-steps=128 --update-epochs=3\n\n# Procgen\nuv pip install \".[procgen]\"\npython cleanrl\u002Fppo_procgen.py --env-id starpilot\npython cleanrl\u002Fppg_procgen.py --env-id starpilot\n\n# PPO + LSTM\nuv pip install \".[atari]\"\npython cleanrl\u002Fppo_atari_lstm.py --env-id BreakoutNoFrameskip-v4\n```\n\n您也可以使用 Gitpod 托管的预构建开发环境：\n\n[![在 Gitpod 中打开](https:\u002F\u002Fgitpod.io\u002Fbutton\u002Fopen-in-gitpod.svg)](https:\u002F\u002Fgitpod.io\u002F#https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl)\n\n## 已实现的算法\n\n\n| 算法      | 已实现的变体 |\n| ----------- | ----------- |\n| ✅ [近端策略优化 (PPO)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06347.pdf)  |  [`ppo.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppopy) |\n| |  [`ppo_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_ataripy)\n| |  [`ppo_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_continuous_action.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_continuous_actionpy)\n| |  [`ppo_atari_lstm.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_lstm.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_lstmpy)\n| |  [`ppo_atari_envpool.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpoolpy)\n| | [`ppo_atari_envpool_xla_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool_xla_jax.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpool_xla_jaxpy)\n| | [`ppo_atari_envpool_xla_jax_scan.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool_xla_jax_scan.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpool_xla_jax_scanpy))\n| |  [`ppo_procgen.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_procgen.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_procgenpy)\n| |  [`ppo_atari_multigpu.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_multigpu.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_multigpupy)\n| | [`ppo_pettingzoo_ma_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_pettingzoo_ma_atari.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_pettingzoo_ma_ataripy)\n| | [`ppo_continuous_action_isaacgym.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_continuous_action_isaacgym\u002Fppo_continuous_action_isaacgym.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_continuous_action_isaacgympy)\n| | [`ppo_trxl.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_trxl\u002Fppo_trxl.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo-trxl\u002F)\n| ✅ [深度Q学习 (DQN)](https:\u002F\u002Fweb.stanford.edu\u002Fclass\u002Fpsych209\u002FReadings\u002FMnihEtAlHassibis15NatureControlDeepRL.pdf) |  [`dqn.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqnpy) |\n| | [`dqn_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn_atari.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_ataripy) |\n| | [`dqn_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn_jax.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_jaxpy) |\n| | [`dqn_atari_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fdqn_atari_jax.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_atari_jaxpy) |\n| ✅ [分类DQN (C51)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06887.pdf) |  [`c51.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51py) |\n| |  [`c51_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51_atari.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51_ataripy) |\n| | [`c51_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51_jax.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51_jaxpy) |\n| | [`c51_atari_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fc51_atari_jax.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fc51\u002F#c51_atari_jaxpy) |\n| ✅ [软演员-评论家 (SAC)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1812.05905.pdf) |  [`sac_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fsac_continuous_action.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fsac\u002F#sac_continuous_actionpy) |\n| |  [`sac_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fsac_atari.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fsac\u002F#sac_atarinpy) |\n| ✅ [深度确定性策略梯度 (DDPG)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1509.02971.pdf) |  [`ddpg_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fddpg_continuous_action.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fddpg\u002F#ddpg_continuous_actionpy) |\n| | [`ddpg_continuous_action_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fddpg_continuous_action_jax.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fddpg\u002F#ddpg_continuous_action_jaxpy)\n| ✅ [双延迟深度确定性策略梯度 (TD3)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1802.09477.pdf) |  [`td3_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Ftd3_continuous_action.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Ftd3\u002F#td3_continuous_actionpy) |\n|  | [`td3_continuous_action_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Ftd3_continuous_action_jax.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Ftd3\u002F#td3_continuous_action_jaxpy) |\n| ✅ [相位策略梯度 (PPG)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2009.04416) |  [`ppg_procgen.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppg_procgen.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppg\u002F#ppg_procgenpy) |\n| ✅ [随机网络蒸馏 (RND)](https:\u002F\u002Farxiv.org\u002Fabs\u002F1810.12894) |  [`ppo_rnd_envpool.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_rnd_envpool.py),  [文档](\u002Frl-algorithms\u002Fppo-rnd\u002F#ppo_rnd_envpoolpy) |\n| ✅ [Qdagger](https:\u002F\u002Farxiv.org\u002Fabs\u002F2206.01626)  |  [`qdagger_dqn_atari_impalacnn.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fqdagger_dqn_atari_impalacnn.py),  [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fqdagger\u002F#qdagger_dqn_atari_impalacnnpy) |\n|  | [`qdagger_dqn_atari_jax_impalacnn.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fqdagger_dqn_atari_jax_impalacnn.py), [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fqdagger\u002F#qdagger_dqn_atari_jax_impalacnnpy) |\n\n## 开放强化学习基准\n\n为了使我们的实验数据更加透明，CleanRL 参与了一个名为 [Open RL Benchmark](https:\u002F\u002Fgithub.com\u002Fopenrlbenchmark\u002Fopenrlbenchmark) 的相关项目。该项目收录了来自多个流行深度强化学习库的跟踪实验，包括我们自己的 CleanRL、[Stable-baselines3](https:\u002F\u002Fgithub.com\u002FDLR-RM\u002Fstable-baselines3)、[openai\u002Fbaselines](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fbaselines)、[jaxrl](https:\u002F\u002Fgithub.com\u002Fikostrikov\u002Fjaxrl) 等。\n\n请访问 https:\u002F\u002Fbenchmark.cleanrl.dev\u002F，那里汇集了 Weights and Biases 报告，展示了各种深度强化学习实验的跟踪结果。这些报告是交互式的，研究人员可以轻松查询诸如 GPU 利用率以及智能体游戏过程视频等信息——而这些信息在其他强化学习基准中通常难以获取。未来，Open RL Benchmark 很可能会提供一个数据集 API，方便研究人员轻松访问这些数据（详见 [仓库](https:\u002F\u002Fgithub.com\u002Fopenrlbenchmark\u002Fopenrlbenchmark)）。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_readme_6fbf5c00ba0a.png)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_readme_29625cc65f95.png)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_readme_d36c0d9bf4b0.png)\n\n\n## 支持与参与\n\n我们有一个 [Discord 社区](https:\u002F\u002Fdiscord.gg\u002FD6RCjA6sVT)，欢迎前来寻求支持或提问。也欢迎大家在 [Github Issues](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues) 中提交问题和拉取请求。此外，我们过去的视频记录可以在 [YouTube](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dm4HdGujpPs&list=PLQpKd36nzSuMynZLU2soIpNSMeXMplnKP&index=2) 上观看。\n\n## 引用 CleanRL\n\n如果您在工作中使用了 CleanRL，请引用我们的技术论文：\n\n```bibtex\n@article{huang2022cleanrl,\n  author  = {Shengyi Huang and Rousslan Fernand Julien Dossa and Chang Ye and Jeff Braga and Dipam Chakraborty and Kinal Mehta and João G.M. Araújo},\n  title   = {CleanRL: 高质量的单文件深度强化学习算法实现},\n  journal = {机器学习研究期刊},\n  year    = {2022},\n  volume  = {23},\n  number  = {274},\n  pages   = {1--18},\n  url     = {http:\u002F\u002Fjmlr.org\u002Fpapers\u002Fv23\u002F21-1342.html}\n}\n```\n\n\n## 致谢\n\nCleanRL 是一个由社区驱动的项目，我们的贡献者们在多种硬件上运行实验。\n\n* 我们感谢众多贡献者利用自己的计算机进行实验。\n* 我们感谢 Google 的 [TPU 研究云](https:\u002F\u002Fsites.research.google\u002Ftrc\u002Fabout\u002F) 提供的 TPU 资源。\n* 我们感谢 [Hugging Face](https:\u002F\u002Fhuggingface.co\u002F) 的集群提供的 GPU 资源。","# CleanRL 快速上手指南\n\nCleanRL 是一个专注于提供高质量、单文件实现的深度强化学习库。其代码简洁清晰，非常适合用于理解算法细节、复现研究或进行快速原型开发。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux, macOS, Windows (部分 Atari 环境在 Windows 上可能受限)\n*   **Python 版本**: >=3.7.1 且 \u003C3.11\n*   **包管理工具**: 推荐安装 [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) (版本 0.7.9+)，它能显著加快依赖安装速度。\n    *   安装 uv: `curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh`\n    *   *注：如果不使用 uv，也可使用标准的 `pip` 和 `requirements.txt` 进行安装。*\n\n## 安装步骤\n\n### 方式一：使用 uv 安装（推荐）\n\n这是最快捷的安装方式，自动处理虚拟环境和依赖。\n\n```bash\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl.git && cd cleanrl\n\n# 安装核心依赖\nuv pip install .\n```\n\n如果您需要运行特定环境的游戏（如 Atari, MuJoCo 等），可以按需安装额外依赖：\n\n```bash\n# 安装 Atari 游戏支持\nuv pip install \".[atari]\"\n\n# 安装 ProcGen 支持\nuv pip install \".[procgen]\"\n\n# 安装 EnvPool (Linux 专用，可加速 Atari 训练)\nuv pip install \".[envpool]\"\n```\n\n### 方式二：使用 pip 安装\n\n如果不使用 `uv`，可以通过 `requirements.txt` 手动安装：\n\n```bash\n# 安装核心依赖\npip install -r requirements\u002Frequirements.txt\n\n# 可选：安装特定环境依赖\npip install -r requirements\u002Frequirements-atari.txt\npip install -r requirements\u002Frequirements-mujoco.txt\n# ... 其他需求文件见 requirements\u002F 目录\n```\n\n> **提示**：国内用户若遇到下载速度慢的问题，可在上述 `pip` 或 `uv pip` 命令后添加 `-i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` 使用清华镜像源。\n\n## 基本使用\n\nCleanRL 的设计理念是**单文件即算法**。你不需要导入库，而是直接运行对应的 Python 脚本。\n\n### 1. 运行最简单的实验 (CartPole)\n\n以下命令使用 PPO 算法在 `CartPole-v0` 环境中训练 50,000 步：\n\n```bash\nuv run python cleanrl\u002Fppo.py \\\n    --seed 1 \\\n    --env-id CartPole-v0 \\\n    --total-timesteps 50000\n```\n\n### 2. 查看训练日志\n\n训练过程中产生的日志默认保存在 `runs` 目录下。启动另一个终端，使用 TensorBoard 查看实时曲线：\n\n```bash\ncd cleanrl\ntensorboard --logdir runs\n```\n然后在浏览器访问显示的地址（通常是 `http:\u002F\u002Flocalhost:6006`）。\n\n### 3. 使用 Weights & Biases (WandB) 追踪实验\n\n若需云端记录实验数据，先登录 WandB，然后添加 `--track` 参数：\n\n```bash\nwandb login # 首次使用需输入 API Key\n\nuv run python cleanrl\u002Fppo.py \\\n    --seed 1 \\\n    --env-id CartPole-v0 \\\n    --total-timesteps 50000 \\\n    --track \\\n    --wandb-project-name cleanrltest\n```\n\n### 4. 运行其他游戏示例\n\n*   **Atari 游戏 (Breakout)**:\n    ```bash\n    # 需先执行: uv pip install \".[atari]\"\n    python cleanrl\u002Fdqn_atari.py --env-id BreakoutNoFrameskip-v4\n    python cleanrl\u002Fppo_atari.py --env-id BreakoutNoFrameskip-v4\n    ```\n\n*   **高速训练 (使用 EnvPool, 仅 Linux)**:\n    ```bash\n    # 需先执行: uv pip install \".[envpool]\"\n    # 可在 5-10 分钟内学会 Pong\n    uv run python cleanrl\u002Fppo_atari_envpool.py --env-id PongNoFrameskip-v4 --clip-coef=0.2 --num-envs=16\n    ```\n\n*   **ProcGen 游戏**:\n    ```bash\n    # 需先执行: uv pip install \".[procgen]\"\n    python cleanrl\u002Fppo_procgen.py --env-id starpilot\n    ```\n\n> **注意**：CleanRL 不是模块化库，不建议作为 Python 包 import 使用。其优势在于每个算法变体都独立在一个文件中，方便阅读源码和调试具体实现细节。","某高校强化学习实验室的研究员正在复现一篇关于改进 PPO 算法在 Atari 游戏中表现的顶会论文，需要快速验证核心想法并记录实验数据。\n\n### 没有 cleanrl 时\n- **代码阅读成本极高**：主流模块化库（如 Stable Baselines3）将算法逻辑分散在数十个文件中，研究员需花费数天追踪类继承关系才能理解底层细节。\n- **调试与修改困难**：想要添加一个自定义的奖励裁剪机制，往往需要重写整个子类或修改库源码，极易引入难以排查的 Bug。\n- **实验复现繁琐**：手动配置 TensorBoard 日志、视频录制和随机种子管理容易出错，导致实验结果无法精确复现，浪费大量时间在工程琐事上。\n- **部署门槛高**：将本地原型迁移到 AWS 云端进行大规模并行实验时，缺乏集成的 Docker 和云脚本支持，环境配置耗时耗力。\n\n### 使用 cleanrl 后\n- **单文件一目了然**：直接打开 `ppo_atari.py`，仅 340 行代码就包含了从网络构建到训练循环的所有细节，研究员半天内即可完全吃透算法实现。\n- **原型迭代极速**：得益于无复杂继承的单文件结构，研究员直接在脚本中修改了奖励函数逻辑，无需担心副作用，调试效率提升数倍。\n- **开箱即用的实验管理**：启动脚本自动集成 TensorBoard 日志、游戏视频捕获及 W&B 追踪，确保每次实验的种子、超参和结果都可追溯且可复现。\n- **无缝云端扩展**：利用内置的 Docker 和 AWS Batch 集成脚本，轻松将单机验证成功的代码扩展为上千次并行实验，加速了论文数据的产出。\n\ncleanrl 通过极致的单文件设计消除了强化学习研究中的工程黑盒，让研究者能专注于算法创新而非代码架构。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvwxyzjn_cleanrl_29625cc6.png","vwxyzjn","Costa Huang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fvwxyzjn_cc2a3024.jpg","Exploiting physical rewards @periodiclabs. Prev: RL @allenai @huggingface. ","@huggingface","Philadelphia, PA","costa.huang@outlook.com","https:\u002F\u002Fcosta.sh","https:\u002F\u002Fgithub.com\u002Fvwxyzjn",[83,87,91,95],{"name":84,"color":85,"percentage":86},"Python","#3572A5",93.6,{"name":88,"color":89,"percentage":90},"Shell","#89e051",5.5,{"name":92,"color":93,"percentage":94},"HCL","#844FBA",0.9,{"name":96,"color":97,"percentage":98},"Dockerfile","#384d54",0.1,9601,1054,"2026-04-20T00:53:49","NOASSERTION","Linux, macOS, Windows","非必需（支持 CPU 运行）。部分高性能变体（如 envpool, Isaac Gym, JAX\u002FXLA）需要 NVIDIA GPU 以获得加速，具体显存和 CUDA 版本取决于所选算法和环境，文中未明确指定最低要求。","未说明",{"notes":107,"python":108,"dependencies":109},"1. 推荐使用 'uv' (v0.7.9+) 进行依赖管理和运行，也可使用 pip 安装 requirements 文件。2. 该库设计为单文件实现，不建议作为模块导入其他项目。3. 部分功能（如 envpool 的 Atari 加速）仅支持 Linux。4. 正在从 openai\u002Fgym 迁移至 Farama-Foundation\u002FGymnasium。5. 提供针对 Atari、MuJoCo、ProcGen 等不同环境的可选依赖包。",">=3.7.1, \u003C3.11",[110,111,112,113,114,115,116,117,118,119],"torch","gymnasium","numpy","tensorboard","wandb","jax","envpool","procgen","pettingzoo","mujoco",[15,14],[114,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"reinforcement-learning","pytorch","python","gym","machine-learning","deep-reinforcement-learning","deep-learning","atari","ale","a2c","proximal-policy-optimization","ppo","advantage-actor-critic","actor-critic","phasic-policy-gradient",null,"2026-03-27T02:49:30.150509","2026-04-20T16:53:27.996627",[141,146,151,156,161,166],{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},45101,"为什么 CleanRL 的 PPO 连续动作算法在 Pendulum-v1 环境中无法收敛，而 Stable-Baselines3 可以？","这通常是因为默认脚本未针对该环境进行优化。建议尝试使用 `ppo_continuous_action_truncted.py` 脚本（参考 Issue #448），该版本在处理 Pendulum-v1 时表现更好，能够稳定地达到 -200 到 0 的奖励范围。此外，也可以检查是否需要对网络架构或超参数进行特定调整以匹配 SB3 的表现。","https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues\u002F504",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},45102,"在 DDPG 或 TD3 算法中，Target Actor 的输出应该如何处理动作边界（Action Bounds）？是直接裁剪（clip）还是通过 tanh 层缩放？","虽然部分实现（如 Fujimoto 的代码）通过在 actor 网络最后一层 tanh 后乘以 max_action 来避免显式裁剪，但 CleanRL 目前的实现是直接对 target_actor 的输出使用 `.clamp()` 进行裁剪以适配动作空间边界。如果担心实现差异影响结果，可以参考 `td3_continuous_action_bound_fix.py` 进行对比实验，但在验证最新变体之前，建议保留旧实验以便比较，待验证后再统一清理和重新运行标准脚本以避免混淆。","https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues\u002F196",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},45103,"如何在训练过程中调试 Muesli 算法出现的 Loss 为 NaN 的问题？","当遇到 `r_loss` 和 `v_loss` 变量为 NaN 时，需要重点检查损失计算逻辑。已解决的案例显示，修复相关的 Loss 计算 Bug 后，奖励、价值和策略模型的损失会保持相对稳定，CMPO 正则化项会略微上升，而只有策略梯度损失会下降。如果回报值（returns）仍然很低（约 1-2），请确保已解决导致 NaN 的具体数值溢出或除零错误。","https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues\u002F350",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},45104,"CleanRL 是否支持多智能体强化学习（MARL）？","CleanRL 核心库主要关注单智能体算法的简洁实现。对于多智能体需求，社区已经衍生出了专门的项目，例如 `marl-jax`。如果您需要 MARL 功能，建议参考这些专门的仓库，或者查看社区成员基于 CleanRL 改编的多智能体 SAC（MASAC）等实验性项目。","https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues\u002F330",{"id":162,"question_zh":163,"answer_zh":164,"source_url":165},45105,"如何在 Retro 环境中运行多个并行环境（类似 ProcgenEnv）？","在 Retro 环境中直接运行多个并行环境可能会遇到问题，且 `retrowrapper` 可能无法完全解决。目前建议持续监控训练步数（例如直到 4000 万步）以观察改进情况。如果遇到具体阻碍，可能需要自定义环境包装器来实现类似 `ProcgenEnv(num_envs=...)` 的功能，但这通常需要较深的定制开发。","https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues\u002F47",{"id":167,"question_zh":168,"answer_zh":169,"source_url":155},45106,"如何复现 DeepMind 的 Muesli 算法？有什么推荐的架构路线吗？","由于 Muesli 未开源且依赖复杂的 Podracer 架构，建议从零开始构建一个“半同步”版本的 Muesli。具体路线是：使用 EnvPool 异步执行 rollout（数据采集），然后同步进行学习更新。这种架构更易于推理且效率较高，特别适合 Atari 测试和 LLM 微调场景。可以先在 Atari 上迭代开发，验证后再考虑迁移到其他应用。",[171,176,181,186,191,196,200,204,208,212,216,220,224,228,232,237,242,247],{"id":172,"version":173,"summary_zh":174,"released_at":175},359951,"v1.0.0","🎉 我们非常高兴地宣布 CleanRL v1.0.0 正式发布！伴随着我们的 [CleanRL 论文近日在《机器学习研究期刊》上发表](https:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fv23\u002F21-1342.html)，此次 v1.0.0 版本还包括重新编写的文档、新的算法变体、对谷歌全新机器学习框架 [JAX](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fjax) 的支持、超参数调优工具等功能。CleanRL 经过多年的发展，已将高质量的深度强化学习实现变得易于理解且可复现。本次发布是项目的一个重要里程碑，我们非常期待与大家分享。为了促成这次发布，共有超过 90 个 Pull Request 被合并。在此，我们要感谢所有为此次发布做出贡献的开发者。\n\n## 重新编写的文档\n\nv1 版本最大的变化之一就是在 [docs.cleanrl.dev](https:\u002F\u002Fdocs.cleanrl.dev) 上新增了文档。优秀的文档对于构建可靠且可复现的项目至关重要。我们对文档进行了全面重构，使其更易于理解和使用。针对每一种实现的算法，我们都尽可能详尽地记录，以提升透明度：\n\n* [算法简要介绍及参考文献](\u002Frl-algorithms\u002Fppo\u002F#overview)\n* [已实现的算法变体列表](\u002Frl-algorithms\u002Fppo\u002F#implemented-variants)\n* [使用说明](\u002Frl-algorithms\u002Fppo\u002F#usage)\n* [日志指标的解释](\u002Frl-algorithms\u002Fppo\u002F#explanation-of-the-logged-metrics)\n* [实现细节的文档](\u002Frl-algorithms\u002Fppo\u002F#implementation-details)\n* [实验结果](\u002Frl-algorithms\u002Fppo\u002F#experiment-results)\n\n以下是算法变体及其对应的文档列表：\n\n\n| 算法      | 已实现的变体 |\n| ----------- | ----------- |\n| ✅ [近端策略优化（PPO）](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1707.06347.pdf)  | [`ppo.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppopy) |\n| | [`ppo_atari.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_ataripy)\n| | [`ppo_continuous_action.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_continuous_action.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_continuous_actionpy)\n| | [`ppo_atari_lstm.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_lstm.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_lstmpy)\n| | [`ppo_atari_envpool.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpoolpy)\n| | [`ppo_atari_envpool_xla_jax.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_atari_envpool_xla_jax.py),   [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_envpool_xla_jaxpy)\n| | [`ppo_procgen.py`](https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fcleanrl\u002Fppo_procgen.py)","2022-11-14T04:06:41",{"id":177,"version":178,"summary_zh":179,"released_at":180},359952,"v1.0.0b2","🎉 我非常高兴地宣布 CleanRL v1.0.0b2 测试版正式发布！本次新版本带来了令人振奋的新功能。首先，我们现在支持基于 JAX 的学习算法，这些算法通常比对应的 `torch` 实现更快！以下是新的基于 JAX 的 DQN、TD3 和 DDPG 实现的文档：\n\n* [`dqn_atari_jax.py`](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_atari_jaxpy)\n* [`dqn_jax.py`](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fdqn\u002F#dqn_jaxpy)\n* [`td3_continuous_action_jax.py`](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Ftd3\u002F#td3_continuous_action_jaxpy)\n* [`ddpg_continuous_action_jax.py`](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Ftd3\u002F#ddpg_continuous_action_jaxpy)\n\n\u003Cimg width=\"775\" alt=\"image\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F5555347\u002F193662442-27e5c5af-8c12-4f1d-b5d6-b69d82704614.png\">\n\n此外，我们还初步支持通过 `optuna` 进行超参数调优（详见 [文档](https:\u002F\u002Fdocs.cleanrl.dev\u002Fadvanced\u002Fhyperparameter-tuning\u002F)），该功能旨在帮助研究人员找到一组适用于某一类游戏的**最优超参数组合**。当前的 API 如下所示：\n\n```python\nimport optuna\nfrom cleanrl_utils.tuner import Tuner\ntuner = Tuner(\n    script=\"cleanrl\u002Fppo.py\",\n    metric=\"charts\u002Fepisodic_return\",\n    metric_last_n_average_window=50,\n    direction=\"maximize\",\n    aggregation_type=\"average\",\n    target_scores={\n        \"CartPole-v1\": [0, 500],\n        \"Acrobot-v1\": [-500, 0],\n    },\n    params_fn=lambda trial: {\n        \"learning-rate\": trial.suggest_loguniform(\"learning-rate\", 0.0003, 0.003),\n        \"num-minibatches\": trial.suggest_categorical(\"num-minibatches\", [1, 2, 4]),\n        \"update-epochs\": trial.suggest_categorical(\"update-epochs\", [1, 2, 4, 8]),\n        \"num-steps\": trial.suggest_categorical(\"num-steps\", [5, 16, 32, 64, 128]),\n        \"vf-coef\": trial.suggest_uniform(\"vf-coef\", 0, 5),\n        \"max-grad-norm\": trial.suggest_uniform(\"max-grad-norm\", 0, 5),\n        \"total-timesteps\": 100000,\n        \"num-envs\": 16,\n    },\n    pruner=optuna.pruners.MedianPruner(n_startup_trials=5),\n    sampler=optuna.samplers.TPESampler(),\n)\ntuner.tune(\n    num_trials=100,\n    num_seeds=3,\n)\n```\n\n除此之外，我们还新增了对一些新算法和环境的支持，包括：\n\n* 在 PPO 中增加了对 **Isaac Gym** 的支持，用于 GPU 加速的机器人学环境。[`ppo_continuous_action_isaacgym.py`](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_continuous_action_isaacgympy)\n* 针对高度探索性环境的 **随机网络蒸馏 (RND)**：[`ppo_rnd_envpool.py`](https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo-rnd\u002F)\n\n在此，我要衷心感谢核心开发团队成员 @dosssman、@yooceii、@Dipamc 和 @kinalmehta，感谢他们为维护 CleanRL 仓库所付出的努力。同时，我也要特别感谢我们的新贡献者 @cool-RR、@Howuhh、@jseppanen、@joaogui1、@kinalmehta 和 @ALPH2H。\n\n## CleanRL 新增支持的论文\n\nJiayi Weng, Min Lin, Shengyi Huang, Bo Liu, Deny","2022-10-03T19:41:42",{"id":182,"version":183,"summary_zh":184,"released_at":185},359953,"v1.0.0b1","🎉 我非常高兴地宣布 CleanRL v1.0.0b1 测试版发布。CleanRL 经过不懈努力，已将高质量的深度强化学习实现变得易于理解。在本次发布中，我们投入了大量精力对文档站点进行重构，使新用户也能轻松上手。\n\n在此，我要衷心感谢核心开发团队成员 @dosssman、@yooceii、@Dipamc77 和 @bragajj，感谢他们为维护 CleanRL 仓库所做出的贡献。同时，我也要特别感谢两位新加入的贡献者 @ElliotMunro200 和 @Dipamc77。\n\n## CleanRL 新支持的论文\n\n* Huang, S., Dossa, R., Raffin, A., Kanervisto, A., & Wang, W. (2022). [近端策略优化的37个实现细节](https:\u002F\u002Ficlr-blog-track.github.io\u002F2022\u002F03\u002F25\u002Fppo-implementation-details\u002F)，国际表征学习大会2022博客专栏\n* Huang, S., Ontañón, S. (2022). [策略梯度算法中无效动作掩码的深入探讨](https:\u002F\u002Farxiv.org\u002Fabs\u002F2006.14171)，第35届国际FLAIRS会议论文集\n* Schmidt, D., & Schmied, T. (2021). [快速且数据高效的Rainbow训练：Atari游戏实验研究](https:\u002F\u002Farxiv.org\u002Fabs\u002F2111.10247)，第35届神经信息处理系统大会深度强化学习研讨会\n\n## 新算法变体\n\n* @Dipamc77 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F186 中实现了匹配PPG\n    * 文档链接：https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppg\u002F\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F178 中为PPO增加了完善的多GPU支持\n    * 文档链接：https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_atari_multigpupy\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F188 中为PPO添加了对Pettingzoo多智能体Atari环境的支持\n    * 文档链接：https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Fppo\u002F#ppo_pettingzoo_ma_ataripy\n\n## 重构变更\n\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F161 中将 `ppo_continuous_action.py` 的运行步数限制为100万步\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F164 中更改了 `ppo.py` 的默认步数设置\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F166 中为 `ppo_procgen.py` 启用了视频录制功能\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F173 中重构了基于回放的脚本\n\n## 文档变更\n\n进行了大量的文档更新（相关议题追踪：https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fissues\u002F121）。\n\n概述文档页面请见：https:\u002F\u002Fdocs.cleanrl.dev\u002Frl-algorithms\u002Foverview\u002F\n\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F137 中新增了 `ddpg_continuous_action.py` 的文档\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F139 中修正了DDPG文档的描述\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F140 中修复了DDPG文档中的拼写错误\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F142 中修复了DDPG文档中的错误链接\n* DDPG","2022-06-07T00:18:29",{"id":187,"version":188,"summary_zh":189,"released_at":190},359954,"v0.6.0","## 变更内容\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F91 中更新了论文引用条目\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F95 中清理了过时文件\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F78 中重构了 `parse_args` 中的格式\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F94 中添加了 Gitpod 支持\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F93 中重新组织了 README.md\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F98 中降级了 setuptools\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F104 中修复了 README 中的链接\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F102 中重构了基于值的方法\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F107 中引入了 pre-commit 流水线\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F108 中为 procgen 重构了 PPG 和 PPO\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F112 中更新了关于 PPG 和 PPO Procgen 的文档\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F83 中添加了 PPO Atari LSTM 示例\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F100 中实现了 Envpool 支持的原型\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F113 中修复了回放缓冲区与 mujoco 环境的兼容性问题\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F119 中添加了 isort 和 black 标志\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F118 中重构了 `parse_args()`\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F120 中添加了 `ppo.py` 的文档\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F125 中将 `episode_reward` 替换为 `episodic_return`\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F128 中重构了 ppo_pettingzoo.py\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F129 中将 gym 更新至 0.23.0\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F126 中为基于值的方法添加了 SPS 和 q-values 指标\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F134 中使种子在值方法中再次生效\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F135 中移除了离线 DQN 脚本\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F136 中弃用了 `apex_dqn_atari.py`\n* @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F138 中更新至 `gym==0.23.1`\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fcompare\u002Fv0.5.0...v0.6.0","2022-03-16T15:07:03",{"id":192,"version":193,"summary_zh":194,"released_at":195},359955,"v0.5.0","## 变更内容\n* 使用 Poetry 作为包管理器，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F50 中完成  \n* 移除 README 算法部分中指向已删除代码的链接，由 @FelipeMartins96 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F54 中完成  \n* 添加论文绘图工具，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F55 中完成  \n* 重新组织文件结构，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F56 中完成  \n* 将 Gym 版本升级至 0.21.0，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F61 中完成  \n* 自动下载 Atari ROM 文件，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F62 中完成  \n* 将 Spyder 编辑器设为可选，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F66 中完成  \n* 支持 Python 3.7.1 及以上版本，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F67 中完成  \n* ddpg_continuous：为策略网络和目标策略网络添加 env 参数，由 @dosssman 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F69 中完成  \n* 将 pytest 添加为可选依赖，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F71 中完成  \n* 移除 ppo_continuous_action.py 中对 SB3 的依赖，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F72 中完成  \n* 添加端到端测试，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F70 中完成  \n* 修复 #74：使 SAC 日志记录和训练与其他脚本保持一致，由 @dosssman 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F75 中完成  \n* 添加 MuJoCo 环境支持，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F76 中完成  \n* 仅针对 `cleanrl` 目录的更改运行测试，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F77 中完成  \n* 文档站点原型，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F64 中完成  \n* 云工具改进，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F65 中完成  \n* 将构建好的 Docker 镜像导入本地镜像仓库，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F80 中完成  \n* 移除 Docker 占位缓存，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F81 中完成  \n* 允许 buildx 将镜像保存到本地并推送，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F82 中完成  \n* 为提高兼容性回退 PyTorch 版本，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F84 中完成  \n* 云工具重构，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F85 中完成  \n* 为 0.5.0 版本发布做准备，由 @vwxyzjn 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F88 中完成  \n\n## 新贡献者\n* @FelipeMartins96 在 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fpull\u002F54 中完成了首次贡献  \n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fcompare\u002Fv0.4.8...v0.5.0","2021-11-12T16:01:05",{"id":197,"version":198,"summary_zh":137,"released_at":199},359956,"v0.4.8","2021-05-16T02:41:43",{"id":201,"version":202,"summary_zh":137,"released_at":203},359957,"v0.4.7","2021-05-12T14:26:18",{"id":205,"version":206,"summary_zh":137,"released_at":207},359958,"v0.4.6","2021-05-12T13:39:15",{"id":209,"version":210,"summary_zh":137,"released_at":211},359959,"v0.4.5","2021-04-19T04:32:05",{"id":213,"version":214,"summary_zh":137,"released_at":215},359960,"v0.4.4","2021-04-16T16:28:29",{"id":217,"version":218,"summary_zh":137,"released_at":219},359961,"v0.2.1","2021-04-13T18:24:40",{"id":221,"version":222,"summary_zh":137,"released_at":223},359962,"v0.4.3","2021-04-11T22:40:47",{"id":225,"version":226,"summary_zh":137,"released_at":227},359963,"v0.4.2","2021-04-11T22:30:20",{"id":229,"version":230,"summary_zh":137,"released_at":231},359964,"v0.4.1","2021-04-11T22:28:24",{"id":233,"version":234,"summary_zh":235,"released_at":236},359965,"0.4.0","# 0.4.0 版本更新内容\n* 新增贡献指南，地址为 https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md。我们欢迎贡献新的算法和新游戏，以添加到开源强化学习基准测试中（http:\u002F\u002Fbenchmark.cleanrl.dev\u002F）。\n* 新增了包含标准差的基准测试结果表格，由 (https:\u002F\u002Fgithub.com\u002Fvwxyzjn\u002Fcleanrl\u002Fblob\u002Fmaster\u002Fbenchmark\u002Fplots.py) 生成。\n\n## Atar 游戏结果\n\n\n| 环境ID                      | apex_dqn_atari_visual   | c51_atari_visual   | dqn_atari_visual   | ppo_atari_visual   |\n|:----------------------------|:------------------------|:-------------------|:-------------------|:-------------------|\n| BeamRiderNoFrameskip-v4     | 2936.93 ± 362.18        | 13380.67 ± 0.00    | 7139.11 ± 479.11   | 2053.08 ± 83.37    |\n| QbertNoFrameskip-v4         | 3565.00 ± 690.00        | 16286.11 ± 0.00    | 11586.11 ± 0.00    | 17919.44 ± 383.33  |\n| SpaceInvadersNoFrameskip-v4 | 1019.17 ± 356.94        | 1099.72 ± 14.72    | 935.40 ± 93.17     | 1089.44 ± 67.22    |\n| PongNoFrameskip-v4          | 19.06 ± 0.83            | 18.00 ± 0.00       | 19.78 ± 0.22       | 20.72 ± 0.28       |\n| BreakoutNoFrameskip-v4      | 364.97 ± 58.36          | 386.10 ± 21.77     | 353.39 ± 30.61     | 380.67 ± 35.29     |\n\n## Mujoco 结果\n\n| 环境ID              | ddpg_continuous_action   | td3_continuous_action   | ppo_continuous_action   |\n|:--------------------|:-------------------------|:------------------------|:------------------------|\n| Reacher-v2          | -6.25 ± 0.54             | -6.65 ± 0.04            | -7.86 ± 1.47            |\n| Pusher-v2           | -44.84 ± 5.54            | -59.69 ± 3.84           | -44.10 ± 6.49           |\n| Thrower-v2          | -137.18 ± 47.98          | -80.75 ± 12.92          | -58.76 ± 1.42           |\n| Striker-v2          | -193.43 ± 27.22          | -269.63 ± 22.14         | -112.03 ± 9.43          |\n| InvertedPendulum-v2 | 1000.00 ± 0.00           | 443.33 ± 249.78         | 968.33 ± 31.67          |\n| HalfCheetah-v2      | 10386.46 ± 265.09        | 9265.25 ± 1290.73       | 1717.42 ± 20.25         |\n| Hopper-v2           | 1128.75 ± 9.61           | 3095.89 ± 590.92        | 2276.30 ± 418.94        |\n| Swimmer-v2          | 114.93 ± 29.09           | 103.89 ± 30.72          | 111.74 ± 7.06           |\n| Walker2d-v2         | 1946.23 ± 223.65         | 3059.69 ± 1014.05       | 3142.06 ± 1041.17       |\n| Ant-v2              | 243.25 ± 129.70          | 5586.91 ± 476.27        | 2785.98 ± 1265.03       |\n| Humanoid-v2         | 877.90 ± 3.46            | 6342.99 ± 247.26        | 786.83 ± 95.66          |\n\n## Pybullet 结果\n\n| 环境ID                             | ddpg_continuous_action   | td3_continuous_action   | ppo_continuous_action   |\n|:-----------------------------------|:-------------------------|:------------------------|:------------------------|\n| MinitaurBulletEnv-v0               | -0.17 ± 0.02             | 7.73 ± 5.13    ","2020-09-24T02:50:29",{"id":238,"version":239,"summary_zh":240,"released_at":241},359966,"0.3.0","演示视频请见：https:\u002F\u002Fstreamable.com\u002Fcq8e62\n\n为打造 Open RL 基准测试平台（http:\u002F\u002Fbenchmark.cleanrl.dev\u002F）投入了大量精力。该平台在 34 款以上游戏中对流行的深度强化学习算法进行了基准测试，具备前所未有的透明度、开放性和可复现性。\n\n此外，原有的 `common.py` 已被弃用，推荐使用单文件实现方式。","2020-08-01T22:57:05",{"id":243,"version":244,"summary_zh":245,"released_at":246},359967,"0.2.1","我们已使 SAC 算法同时适用于连续和离散动作空间，主要参考了以下论文：\n\nhttps:\u002F\u002Farxiv.org\u002Fabs\u002F1801.01290  \nhttps:\u002F\u002Farxiv.org\u002Fabs\u002F1812.05905  \nhttps:\u002F\u002Farxiv.org\u002Fabs\u002F1910.07207  \n\n在此特别感谢所有参与每月开发迭代的同事，尤其是 @dosssman，他实现了适用于离散动作空间的 SAC 算法。\n\n此外，还进行了以下改进：\n- 支持 gym.wrappers.Monitor 自动记录智能体在特定回合的表现（默认为 1、2、9、28、65、… 1000、2000、3000），并将其与 wandb 集成。（太酷了，见下方截图）#4\n- DQN 和 SAC 共用 minimalRL 中的同一个回放缓冲区 #5\n\nhttps:\u002F\u002Fapp.wandb.ai\u002Fcleanrl\u002Fcleanrl.benchmark\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F5555347\u002F72108416-8f46ff00-3301-11ea-91d7-04c611f28ee7.png)\n\n","2020-01-09T22:00:57",{"id":248,"version":249,"summary_zh":250,"released_at":251},359968,"V0.1","这是初始版本 🙌🙌\n\n正在开发更多算法，并进行优化和 bug 修复，为 1.0 版本做准备 :) 欢迎大家提出意见和提交 Pull Request。","2019-10-07T03:13:15"]