[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-jingweiz--pytorch-rl":3,"tool-jingweiz--pytorch-rl":61},[4,18,26,36,44,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":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 真正成长为懂上",151918,2,"2026-04-12T11:33:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"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":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"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",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"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":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":10,"env_os":93,"env_gpu":93,"env_ram":93,"env_deps":94,"category_tags":102,"github_topics":103,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":146},6943,"jingweiz\u002Fpytorch-rl","pytorch-rl","Deep Reinforcement Learning with pytorch & visdom","pytorch-rl 是一个基于 PyTorch 框架和 Visdom 可视化工具构建的深度学习强化学习开源库。它旨在为研究人员和开发者提供一套清晰、易用的代码实现，帮助快速复现经典的强化学习算法，从而降低从理论论文到实际代码的转化门槛。\n\n该工具集成了多种主流算法，包括深度 Q 网络（DQN）及其改进版 Double DQN、Dueling DQN，以及支持离散和连续动作空间的异步优势演员 - 评论家（A3C）算法等。通过预置这些成熟模型，pytorch-rl 有效解决了强化学习领域算法复现难、环境配置复杂以及训练过程难以直观监控的问题。\n\n其独特的技术亮点在于深度整合了 Visdom，能够在训练过程中实时绘制损失曲线、奖励趋势等关键指标，让开发者像看仪表盘一样直观地掌握智能体的学习状态。此外，项目提供了详尽的训练日志和针对经典游戏（如 Breakout、Pong）及控制任务（如 CartPole）的测试示例，方便用户直接验证效果。\n\npytorch-rl 非常适合人工智能领域的研究人员、高校学生以及希望深入理解强化学习底层实现的开发者使用。无论是用于学术实验对比，还是作为学习强化学","pytorch-rl 是一个基于 PyTorch 框架和 Visdom 可视化工具构建的深度学习强化学习开源库。它旨在为研究人员和开发者提供一套清晰、易用的代码实现，帮助快速复现经典的强化学习算法，从而降低从理论论文到实际代码的转化门槛。\n\n该工具集成了多种主流算法，包括深度 Q 网络（DQN）及其改进版 Double DQN、Dueling DQN，以及支持离散和连续动作空间的异步优势演员 - 评论家（A3C）算法等。通过预置这些成熟模型，pytorch-rl 有效解决了强化学习领域算法复现难、环境配置复杂以及训练过程难以直观监控的问题。\n\n其独特的技术亮点在于深度整合了 Visdom，能够在训练过程中实时绘制损失曲线、奖励趋势等关键指标，让开发者像看仪表盘一样直观地掌握智能体的学习状态。此外，项目提供了详尽的训练日志和针对经典游戏（如 Breakout、Pong）及控制任务（如 CartPole）的测试示例，方便用户直接验证效果。\n\npytorch-rl 非常适合人工智能领域的研究人员、高校学生以及希望深入理解强化学习底层实现的开发者使用。无论是用于学术实验对比，还是作为学习强化学习算法的教学素材，它都是一个专业且友好的起点。","# **Deep Reinforcement Learning** with\n# **pytorch** & **visdom**\n*******\n\n\n* Sample testings of trained agents (DQN on Breakout, A3C on Pong, DoubleDQN on CartPole, continuous A3C on InvertedPendulum(MuJoCo)):\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_dae6e3af5519.gif\" width=\"200\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_283214ce4166.gif\" width=\"200\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_b4b8b402aeb9.gif\" width=\"200\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_fcbe6145121a.gif\" width=\"200\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n* Sample on-line plotting while training an A3C agent on Pong (with 16 learner processes):\n![a3c_pong_plot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_39b71edfb60c.png)\n\n* Sample loggings while training a DQN agent on CartPole (we use ```WARNING``` as the logging level currently to get rid of the ```INFO``` printouts from visdom):\n```bash\n[WARNING ] (MainProcess) \u003C===================================>\n[WARNING ] (MainProcess) bash$: python -m visdom.server\n[WARNING ] (MainProcess) http:\u002F\u002Flocalhost:8097\u002Fenv\u002Fdaim_17040900\n[WARNING ] (MainProcess) \u003C===================================> DQN\n[WARNING ] (MainProcess) \u003C-----------------------------------> Env\n[WARNING ] (MainProcess) Creating {gym | CartPole-v0} w\u002F Seed: 123\n[INFO    ] (MainProcess) Making new env: CartPole-v0\n[WARNING ] (MainProcess) Action Space: [0, 1]\n[WARNING ] (MainProcess) State  Space: 4\n[WARNING ] (MainProcess) \u003C-----------------------------------> Model\n[WARNING ] (MainProcess) MlpModel (\n  (fc1): Linear (4 -> 16)\n  (rl1): ReLU ()\n  (fc2): Linear (16 -> 16)\n  (rl2): ReLU ()\n  (fc3): Linear (16 -> 16)\n  (rl3): ReLU ()\n  (fc4): Linear (16 -> 2)\n)\n[WARNING ] (MainProcess) No Pretrained Model. Will Train From Scratch.\n[WARNING ] (MainProcess) \u003C===================================> Training ...\n[WARNING ] (MainProcess) Validation Data @ Step: 501\n[WARNING ] (MainProcess) Start  Training @ Step: 501\n[WARNING ] (MainProcess) Reporting       @ Step: 2500 | Elapsed Time: 5.32397913933\n[WARNING ] (MainProcess) Training Stats:   epsilon:          0.972\n[WARNING ] (MainProcess) Training Stats:   total_reward:     2500.0\n[WARNING ] (MainProcess) Training Stats:   avg_reward:       21.7391304348\n[WARNING ] (MainProcess) Training Stats:   nepisodes:        115\n[WARNING ] (MainProcess) Training Stats:   nepisodes_solved: 114\n[WARNING ] (MainProcess) Training Stats:   repisodes_solved: 0.991304347826\n[WARNING ] (MainProcess) Evaluating      @ Step: 2500\n[WARNING ] (MainProcess) Iteration: 2500; v_avg: 1.73136949539\n[WARNING ] (MainProcess) Iteration: 2500; tderr_avg: 0.0964358523488\n[WARNING ] (MainProcess) Iteration: 2500; steps_avg: 9.34579439252\n[WARNING ] (MainProcess) Iteration: 2500; steps_std: 0.798395631184\n[WARNING ] (MainProcess) Iteration: 2500; reward_avg: 9.34579439252\n[WARNING ] (MainProcess) Iteration: 2500; reward_std: 0.798395631184\n[WARNING ] (MainProcess) Iteration: 2500; nepisodes: 107\n[WARNING ] (MainProcess) Iteration: 2500; nepisodes_solved: 106\n[WARNING ] (MainProcess) Iteration: 2500; repisodes_solved: 0.990654205607\n[WARNING ] (MainProcess) Saving Model    @ Step: 2500: \u002Fhome\u002Fzhang\u002Fws\u002F17_ws\u002Fpytorch-rl\u002Fmodels\u002Fdaim_17040900.pth ...\n[WARNING ] (MainProcess) Saved  Model    @ Step: 2500: \u002Fhome\u002Fzhang\u002Fws\u002F17_ws\u002Fpytorch-rl\u002Fmodels\u002Fdaim_17040900.pth.\n[WARNING ] (MainProcess) Resume Training @ Step: 2500\n...\n```\n*******\n\n\n## What is included?\nThis repo currently contains the following agents:\n\n- Deep Q Learning (DQN) [[1]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1312.5602), [[2]](http:\u002F\u002Fhome.uchicago.edu\u002F~arij\u002Fjournalclub\u002Fpapers\u002F2015_Mnih_et_al.pdf)\n- Double DQN [[3]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1509.06461)\n- Dueling network DQN (Dueling DQN) [[4]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1511.06581)\n- Asynchronous Advantage Actor-Critic (A3C) (w\u002F both discrete\u002Fcontinuous action space support) [[5]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1602.01783), [[6]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1506.02438)\n- Sample Efficient Actor-Critic with Experience Replay (ACER) (currently w\u002F discrete action space support (Truncated Importance Sampling, 1st Order TRPO)) [[7]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1611.01224), [[8]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1606.02647)\n\nWork in progress:\n- Testing ACER\n\nFuture Plans:\n- Deep Deterministic Policy Gradient (DDPG) [[9]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1509.02971), [[10]](http:\u002F\u002Fproceedings.mlr.press\u002Fv32\u002Fsilver14.pdf)\n- Continuous DQN (CDQN or NAF) [[11]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1603.00748)\n\n\n## Code structure & Naming conventions:\nNOTE: we follow the exact code structure as [pytorch-dnc](https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-dnc) so as to make the code easily transplantable.\n* ```.\u002Futils\u002Ffactory.py```\n> We suggest the users refer to ```.\u002Futils\u002Ffactory.py```,\n where we list all the integrated ```Env```, ```Model```,\n ```Memory```, ```Agent``` into ```Dict```'s.\n All of those four core classes are implemented in ```.\u002Fcore\u002F```.\n The factory pattern in ```.\u002Futils\u002Ffactory.py``` makes the code super clean,\n as no matter what type of ```Agent``` you want to train,\n or which type of ```Env``` you want to train on,\n all you need to do is to simply modify some parameters in ```.\u002Futils\u002Foptions.py```,\n then the ```.\u002Fmain.py``` will do it all (NOTE: this ```.\u002Fmain.py``` file never needs to be modified).\n* namings\n> To make the code more clean and readable, we name the variables using the following pattern (mainly in inherited ```Agent```'s):\n> * ```*_vb```: ```torch.autograd.Variable```'s or a list of such objects\n> * ```*_ts```: ```torch.Tensor```'s or a list of such objects\n> * otherwise: normal python datatypes\n\n\n## Dependencies\n- Python 2.7\n- [PyTorch >=v0.2.0](http:\u002F\u002Fpytorch.org\u002F)\n- [Visdom](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fvisdom)\n- [OpenAI Gym >=v0.9.0 (for lower versoins, just need to change into the available games, e.g. change PongDeterministic-v4 to PongDeterministic-v3)](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fgym)\n- [mujoco-py (Optional: for training continuous version of a3c)](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fmujoco-py)\n*******\n\n\n## How to run:\nYou only need to modify some parameters in ```.\u002Futils\u002Foptions.py``` to train a new configuration.\n\n* Configure your training in ```.\u002Futils\u002Foptions.py```:\n> * ```line 14```: add an entry into ```CONFIGS``` to define your training (```agent_type```, ```env_type```, ```game```, ```model_type```, ```memory_type```)\n> * ```line 33```: choose the entry you just added\n> * ```line 29-30```: fill in your machine\u002Fcluster ID (```MACHINE```) and timestamp (```TIMESTAMP```) to define your training signature (```MACHINE_TIMESTAMP```),\n the corresponding model file and the log file of this training will be saved under this signature (```.\u002Fmodels\u002FMACHINE_TIMESTAMP.pth``` & ```.\u002Flogs\u002FMACHINE_TIMESTAMP.log``` respectively).\n Also the visdom visualization will be displayed under this signature (first activate the visdom server by type in bash: ```python -m visdom.server &```, then open this address in your browser: ```http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP```)\n> * ```line 32```: to train a model, set ```mode=1``` (training visualization will be under ```http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP```); to test the model of this current training, all you need to do is to set ```mode=2``` (testing visualization will be under ```http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP_test```).\n\n* Run:\n> ```python main.py```\n*******\n\n\n## Bonus Scripts :)\nWe also provide 2 additional scripts for quickly evaluating your results after training. (Dependecies: [lmj-plot](https:\u002F\u002Fgithub.com\u002Flmjohns3\u002Fpy-plot))\n* ```plot.sh``` (e.g., plot from log file: ```logs\u002Fmachine1_17080801.log```)\n> * ```.\u002Fplot.sh machine1 17080801```\n> * the generated figures will be saved into ```figs\u002Fmachine1_17080801\u002F```\n* ```plot_compare.sh``` (e.g., compare log files: ```logs\u002Fmachine1_17080801.log```,```logs\u002Fmachine2_17080802.log```)\n> ```.\u002Fplot.sh 00 machine1 17080801 machine2 17080802```\n> * the generated figures will be saved into ```figs\u002Fcompare_00\u002F```\n> * the color coding will be in the order of: ```red green blue magenta yellow cyan```\n*******\n\n\n## Repos we referred to during the development of this repo:\n* [matthiasplappert\u002Fkeras-rl](https:\u002F\u002Fgithub.com\u002Fmatthiasplappert\u002Fkeras-rl)\n* [transedward\u002Fpytorch-dqn](https:\u002F\u002Fgithub.com\u002Ftransedward\u002Fpytorch-dqn)\n* [ikostrikov\u002Fpytorch-a3c](https:\u002F\u002Fgithub.com\u002Fikostrikov\u002Fpytorch-a3c)\n* [onlytailei\u002FA3C-PyTorch](https:\u002F\u002Fgithub.com\u002Fonlytailei\u002FA3C-PyTorch)\n* [Kaixhin\u002FACER](https:\u002F\u002Fgithub.com\u002FKaixhin\u002FACER)\n* And a private implementation of A3C from [@stokasto](https:\u002F\u002Fgithub.com\u002Fstokasto)\n*******\n\n\n## Citation\nIf you find this library useful and would like to cite it, the following would be appropriate:\n```\n@misc{pytorch-rl,\n  author = {Zhang, Jingwei and Tai, Lei},\n  title = {jingweiz\u002Fpytorch-rl},\n  url = {https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl},\n  year = {2017}\n}\n```\n","# **深度强化学习** 使用\n# **PyTorch** 和 **Visdom**\n*******\n\n\n* 已训练智能体的示例测试（DQN在Breakout上、A3C在Pong上、DoubleDQN在CartPole上、连续A3C在InvertedPendulum（MuJoCo）上）：\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_dae6e3af5519.gif\" width=\"200\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_283214ce4166.gif\" width=\"200\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_b4b8b402aeb9.gif\" width=\"200\">\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_fcbe6145121a.gif\" width=\"200\">\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n* 在训练Pong上的A3C智能体时的在线绘图示例（使用16个学习者进程）：\n![a3c_pong_plot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_readme_39b71edfb60c.png)\n\n* 在训练CartPole上的DQN智能体时的日志示例（我们目前使用```WARNING```作为日志级别，以消除来自visdom的```INFO```输出）：\n```bash\n[WARNING ] (MainProcess) \u003C===================================>\n[WARNING ] (MainProcess) bash$: python -m visdom.server\n[WARNING ] (MainProcess) http:\u002F\u002Flocalhost:8097\u002Fenv\u002Fdaim_17040900\n[WARNING ] (MainProcess) \u003C===================================> DQN\n[WARNING ] (MainProcess) \u003C-----------------------------------> 环境\n[WARNING ] (MainProcess) 创建 {gym | CartPole-v0}，种子：123\n[INFO    ] (MainProcess) 正在创建新环境：CartPole-v0\n[WARNING ] (MainProcess) 动作空间：[0, 1]\n[WARNING ] (MainProcess) 状态空间：4\n[WARNING ] (MainProcess) \u003C-----------------------------------> 模型\n[WARNING ] (MainProcess) MlpModel (\n  (fc1): Linear (4 -> 16)\n  (rl1): ReLU ()\n  (fc2): Linear (16 -> 16)\n  (rl2): ReLU ()\n  (fc3): Linear (16 -> 16)\n  (rl3): ReLU ()\n  (fc4): Linear (16 -> 2)\n)\n[WARNING ] (MainProcess) 无预训练模型。将从头开始训练。\n[WARNING ] (MainProcess) \u003C===================================> 训练中...\n[WARNING ] (MainProcess) 验证数据，步骤：501\n[WARNING ] (MainProcess) 开始训练，步骤：501\n[WARNING ] (MainProcess) 报告，步骤：2500 | 经过时间：5.32397913933\n[WARNING ] (MainProcess) 训练统计：epsilon：0.972\n[WARNING ] (MainProcess) 训练统计：总奖励：2500.0\n[WARNING ] (MainProcess) 训练统计：平均奖励：21.7391304348\n[WARNING ] (MainProcess) 训练统计：完成回合数：115\n[WARNING ] (MainProcess) 训练统计：成功回合数：114\n[WARNING ] (MainProcess) 训练统计：成功率：0.991304347826\n[WARNING ] (MainProcess) 评估，步骤：2500\n[WARNING ] (MainProcess) 第2500次迭代；平均值：1.73136949539\n[WARNING ] (MainProcess) 第2500次迭代；平均时差误差：0.0964358523488\n[WARNING ] (MainProcess) 第2500次迭代；平均步数：9.34579439252\n[WARNING ] (MainProcess) 第2500次迭代；步数标准差：0.798395631184\n[WARNING ] (MainProcess) 第2500次迭代；平均奖励：9.34579439252\n[WARNING ] (MainProcess) 第2500次迭代；奖励标准差：0.798395631184\n[WARNING ] (MainProcess) 第2500次迭代；完成回合数：107\n[WARNING ] (MainProcess) 第2500次迭代；成功回合数：106\n[WARNING ] (MainProcess) 第2500次迭代；成功率：0.990654205607\n[WARNING ] (MainProcess) 保存模型，步骤：2500：\u002Fhome\u002Fzhang\u002Fws\u002F17_ws\u002Fpytorch-rl\u002Fmodels\u002Fdaim_17040900.pth ...\n[WARNING ] (MainProcess) 已保存模型，步骤：2500：\u002Fhome\u002Fzhang\u002Fws\u002F17_ws\u002Fpytorch-rl\u002Fmodels\u002Fdaim_17040900.pth。\n[WARNING ] (MainProcess) 继续训练，步骤：2500\n...\n```\n*******\n\n\n## 包含哪些内容？\n该仓库目前包含以下智能体：\n\n- 深度Q学习（DQN）[[1]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1312.5602), [[2]](http:\u002F\u002Fhome.uchicago.edu\u002F~arij\u002Fjournalclub\u002Fpapers\u002F2015_Mnih_et_al.pdf)\n- 双重DQN [[3]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1509.06461)\n- 对抗网络DQN（Dueling DQN）[[4]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1511.06581)\n- 异步优势演员-评论家（A3C）（同时支持离散和连续动作空间）[[5]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1602.01783), [[6]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1506.02438)\n- 基于经验回放的高效演员-评论家（ACER）（目前仅支持离散动作空间（截断重要性采样，一阶TRPO））[[7]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1611.01224), [[8]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1606.02647)\n\n进行中的工作：\n- ACER的测试\n\n未来计划：\n- 深度确定性策略梯度（DDPG）[[9]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1509.02971), [[10]](http:\u002F\u002Fproceedings.mlr.press\u002Fv32\u002Fsilver14.pdf)\n- 连续DQN（CDQN或NAF）[[11]](http:\u002F\u002Farxiv.org\u002Fabs\u002F1603.00748)\n\n\n## 代码结构与命名规范：\n注意：我们遵循与[pytorch-dnc](https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-dnc)完全相同的代码结构，以便于代码移植。\n* ```.\u002Futils\u002Ffactory.py```\n> 我们建议用户参考```.\u002Futils\u002Ffactory.py```，\n> 其中我们将所有集成的```Env```、```Model```、\n> ```Memory```、```Agent```列成```Dict```的形式。\n> 这四个核心类均在```.\u002Fcore\u002F```中实现。\n> ```.\u002Futils\u002Ffactory.py```中的工厂模式使代码非常整洁，\n> 无论您想训练哪种类型的```Agent```，\n> 或者在哪种类型的```Env```上训练，\n> 您只需简单地修改```.\u002Futils\u002Foptions.py```中的几个参数，\n> 然后```.\u002Fmain.py```就会自动完成所有操作（注意：此```.\u002Fmain.py```文件无需修改）。\n* 命名\n> 为了使代码更加清晰易读，我们按照以下模式命名变量（主要在继承的```Agent```中）：\n> * ```*_vb```: ```torch.autograd.Variable```或此类对象的列表\n> * ```*_ts```: ```torch.Tensor```或此类对象的列表\n> * 其他情况：普通Python数据类型\n\n\n## 依赖项\n- Python 2.7\n- [PyTorch >=v0.2.0](http:\u002F\u002Fpytorch.org\u002F)\n- [Visdom](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fvisdom)\n- [OpenAI Gym >=v0.9.0（对于较低版本，只需更换为可用的游戏，例如将PongDeterministic-v4改为PongDeterministic-v3）](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fgym)\n- [mujoco-py（可选：用于训练连续版A3C）](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fmujoco-py)\n*******\n\n## 如何运行：\n您只需修改 ```.\u002Futils\u002Foptions.py``` 中的一些参数，即可训练一个新的配置。\n\n* 在 ```.\u002Futils\u002Foptions.py``` 中配置您的训练：\n  > * ```第14行```: 向 ```CONFIGS``` 添加一项，以定义您的训练（```agent_type```, ```env_type```, ```game```, ```model_type```, ```memory_type```）\n  > * ```第33行```: 选择您刚刚添加的项\n  > * ```第29-30行```: 填写您的机器\u002F集群ID（```MACHINE```) 和时间戳（```TIMESTAMP```)，以定义您的训练标识（```MACHINE_TIMESTAMP```），该训练对应模型文件和日志文件将分别保存在该标识下（```.\u002Fmodels\u002FMACHINE_TIMESTAMP.pth``` 和 ```.\u002Flogs\u002FMACHINE_TIMESTAMP.log```）。同时，Visdom 可视化也将以此标识显示（首先在 bash 中输入 ```python -m visdom.server &``` 启动 Visdom 服务器，然后在浏览器中打开此地址：```http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP```）\n  > * ```第32行```: 若要训练模型，设置 ```mode=1```（训练可视化将在 ```http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP``` 下显示）；若要测试当前训练的模型，只需将 ```mode=2``` 即可（测试可视化将在 ```http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP_test``` 下显示）。\n\n* 运行：\n  > ```python main.py```\n*******\n\n\n## 额外脚本 :)\n我们还提供了 2 个额外脚本，用于在训练后快速评估您的结果。（依赖：[lmj-plot](https:\u002F\u002Fgithub.com\u002Flmjohns3\u002Fpy-plot)）\n* ```plot.sh```（例如，从日志文件绘制图形：```logs\u002Fmachine1_17080801.log```）\n  > * ```.\u002Fplot.sh machine1 17080801```\n  > * 生成的图表将保存到 ```figs\u002Fmachine1_17080801\u002F```\n* ```plot_compare.sh```（例如，比较日志文件：```logs\u002Fmachine1_17080801.log```, ```logs\u002Fmachine2_17080802.log```）\n  > ```.\u002Fplot.sh 00 machine1 17080801 machine2 17080802```\n  > * 生成的图表将保存到 ```figs\u002Fcompare_00\u002F```\n  > * 颜色编码顺序为：```红色 绿色 蓝色 品红 黄色 青色```\n*******\n\n\n## 开发过程中参考的仓库：\n* [matthiasplappert\u002Fkeras-rl](https:\u002F\u002Fgithub.com\u002Fmatthiasplappert\u002Fkeras-rl)\n* [transedward\u002Fpytorch-dqn](https:\u002F\u002Fgithub.com\u002Ftransedward\u002Fpytorch-dqn)\n* [ikostrikov\u002Fpytorch-a3c](https:\u002F\u002Fgithub.com\u002Fikostrikov\u002Fpytorch-a3c)\n* [onlytailei\u002FA3C-PyTorch](https:\u002F\u002Fgithub.com\u002Fonlytailei\u002FA3C-PyTorch)\n* [Kaixhin\u002FACER](https:\u002F\u002Fgithub.com\u002FKaixhin\u002FACER)\n* 以及 [@stokasto](https:\u002F\u002Fgithub.com\u002Fstokasto) 提供的 A3C 私人实现\n*******\n\n\n## 引用\n如果您觉得本库很有用并希望引用它，可以使用以下格式：\n```\n@misc{pytorch-rl,\n  author = {Zhang, Jingwei and Tai, Lei},\n  title = {jingweiz\u002Fpytorch-rl},\n  url = {https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl},\n  year = {2017}\n}\n```","# pytorch-rl 快速上手指南\n\npytorch-rl 是一个基于 PyTorch 和 Visdom 的深度强化学习开源库，实现了 DQN、Double DQN、Dueling DQN、A3C（支持离散\u002F连续动作空间）及 ACER 等主流算法。\n\n## 环境准备\n\n### 系统要求\n- **Python**: 2.7\n- **PyTorch**: >= v0.2.0\n- **OpenAI Gym**: >= v0.9.0\n  - *注：若使用低版本 Gym，需将游戏名称调整为对应版本（如将 `PongDeterministic-v4` 改为 `PongDeterministic-v3`）。*\n- **MuJoCo** (可选): 仅当训练连续动作空间的 A3C (如 InvertedPendulum) 时需要安装 `mujoco-py`。\n- **Visdom**: 用于实时可视化训练过程。\n\n### 依赖安装\n建议使用国内镜像源加速安装（以清华源为例）：\n\n```bash\n# 安装基础依赖\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple torch torchvision\n\n# 安装 OpenAI Gym\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple gym\n\n# 安装 Visdom\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple visdom\n\n# (可选) 安装 MuJoCo 支持\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple mujoco-py\n```\n\n## 安装步骤\n\n1. 克隆仓库代码：\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl.git\n   cd pytorch-rl\n   ```\n\n2. 确认目录结构包含 `.\u002Futils\u002F`, `.\u002Fcore\u002F`, `main.py` 等核心文件。\n\n## 基本使用\n\n该库采用工厂模式，无需修改核心代码 `main.py`，只需配置 `.\u002Futils\u002Foptions.py` 即可启动训练或测试。\n\n### 1. 配置训练任务\n打开 `.\u002Futils\u002Foptions.py` 进行以下设置：\n\n- **定义新配置 (第 14 行附近)**：\n  在 `CONFIGS` 字典中添加条目，指定智能体类型 (`agent_type`)、环境类型 (`env_type`)、游戏名称 (`game`)、模型类型 (`model_type`) 和记忆类型 (`memory_type`)。\n  \n- **选择配置 (第 33 行附近)**：\n  将当前激活的配置指向上一步添加的条目名称。\n\n- **设置签名 (第 29-30 行)**：\n  填写机器 ID (`MACHINE`) 和时间戳 (`TIMESTAMP`)。这将生成唯一的训练签名 (`MACHINE_TIMESTAMP`)，用于保存模型 (`.\u002Fmodels\u002F`)、日志 (`.\u002Flogs\u002F`) 以及 Visdom 可视化路径。\n\n- **设置模式 (第 32 行)**：\n  - `mode=1`: **训练模式**。启动训练并实时记录。\n  - `mode=2`: **测试模式**。加载当前签名下的模型进行评估。\n\n### 2. 启动 Visdom 服务\n在运行训练前，需在终端后台启动 Visdom 服务器以查看实时图表：\n\n```bash\npython -m visdom.server &\n```\n\n启动后，在浏览器访问 `http:\u002F\u002Flocalhost:8097` 即可查看监控面板。\n\n### 3. 运行训练或测试\n执行主程序脚本：\n\n```bash\npython main.py\n```\n\n- **训练时**：日志将输出到终端，同时可在浏览器 `http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP` 查看实时曲线。\n- **测试时**：可视化地址为 `http:\u002F\u002Flocalhost:8097\u002Fenv\u002FMACHINE_TIMESTAMP_test`。\n\n### 4. (可选) 结果绘图\n训练完成后，可使用提供的脚本绘制日志图表（需安装 `lmj-plot`）：\n\n```bash\n# 安装绘图依赖\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple git+https:\u002F\u002Fgithub.com\u002Flmjohns3\u002Fpy-plot.git\n\n# 绘制单个日志文件 (例如：logs\u002Fmachine1_17080801.log)\n.\u002Fplot.sh machine1 17080801\n\n# 对比多个日志文件\n.\u002Fplot_compare.sh 00 machine1 17080801 machine2 17080802\n```\n生成的图片将保存在 `figs\u002F` 目录下。","某自动驾驶初创公司的算法团队正在研发基于视觉的智能车辆决策系统，需要快速验证多种深度强化学习算法在复杂路况下的表现。\n\n### 没有 pytorch-rl 时\n- **重复造轮子耗时严重**：工程师需从零搭建 DQN、A3C 等主流算法的基础架构，花费数周时间编写底层训练循环和环境交互代码，而非专注于策略优化。\n- **训练过程如同“黑盒”**：缺乏可视化的监控手段，只能依赖枯燥的终端日志判断模型是否收敛，难以实时发现梯度消失或奖励异常波动等问题。\n- **多算法对比困难**：每次切换算法（如从 DQN 换到 Dueling DQN）都需要大幅重构代码，且难以在统一框架下公平对比不同模型在 CartPole 或 Pong 等基准环境中的性能。\n- **调试与复现成本高**：缺少标准化的日志记录和模型保存机制，导致实验结果难以复现，团队协作时经常因环境配置差异而陷入排查困境。\n\n### 使用 pytorch-rl 后\n- **开箱即用的算法库**：直接调用内置的 DQN、Double DQN 及支持连续动作空间的 A3C 等成熟代理，将算法验证周期从数周缩短至几天。\n- **实时可视化监控**：集成 Visdom 实现训练曲线的在线绘制，团队成员可实时观察奖励变化、熵值趋势及评估指标，迅速定位训练瓶颈。\n- **灵活的实验管理**：通过统一的接口轻松切换不同网络结构（如 Dueling 网络）和超参数，并在相同环境下高效完成多组对照实验。\n- **标准化的工程流程**：自动化的日志记录、模型断点保存及种子管理机制，确保了实验的可复现性，极大提升了团队协作效率。\n\npytorch-rl 通过提供标准化的深度学习强化学习框架，让研发团队从繁琐的基础设施构建中解放出来，专注于核心策略的创新与落地。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingweiz_pytorch-rl_39b71edf.png","jingweiz","Jingwei Zhang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjingweiz_96c110f5.jpg","\r\n    \r\n",null,"https:\u002F\u002Fscholar.google.com.hk\u002Fcitations?user=7lARV2IAAAAJ&hl=zh-CN","https:\u002F\u002Fgithub.com\u002Fjingweiz",[81,85],{"name":82,"color":83,"percentage":84},"Python","#3572A5",97.4,{"name":86,"color":87,"percentage":88},"Shell","#89e051",2.6,805,144,"2026-04-01T17:00:29","MIT","未说明",{"notes":95,"python":96,"dependencies":97},"该工具基于较旧的 PyTorch (v0.2.0) 和 Python 2.7 开发。若需运行涉及连续动作空间的 A3C 示例（如 InvertedPendulum），需额外安装 mujoco-py。训练可视化依赖 Visdom 服务器，需手动启动服务并在浏览器中访问指定端口查看。","2.7",[98,99,100,101],"PyTorch>=0.2.0","Visdom","OpenAI Gym>=0.9.0","mujoco-py (可选)",[14],[104,105,106,107,108,109,110,111,112,113,114],"dqn","a3c","pytorch","visdom","deep-reinforcement-learning","reinforcement-learning","deep-learning","actor-critic","acer","trpo","pytorch-a3c","2026-03-27T02:49:30.150509","2026-04-13T04:24:30.342969",[118,123,128,133,138,142],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},31283,"如何在 Python 3 环境中运行代码以避免 NameError 错误？","在 Python 3 中，`xrange` 已被移除，应将其替换为 `range`。例如，将代码中的 `xrange(rollout_steps)` 修改为 `range(rollout_steps)` 即可解决 `NameError: name 'xrange' is not defined` 的问题。维护者已确认该问题并修复。","https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl\u002Fissues\u002F1",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},31284,"为什么无法复现论文中报告的基准性能（如 Atari 游戏）？","无法复现性能的原因主要有三点：1. 超参数未与原始论文保持一致；2. 原始 DeepMind 论文多使用 RMSProp 优化器，而本仓库使用的是 Adam；3. 经验回放（Experience Replay）实现差异：原始代码采样长度为 4 的历史帧时，未防止批次中包含不同 episode 的数据，而本仓库确保连续 4 帧来自同一 episode。此外，代码中可能缺少奖励裁剪（clipped rewards）、生命结束即回合结束（end of life = end of episode）以及火键重置（fire reset）等策略。","https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl\u002Fissues\u002F11",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},31285,"Mujoco 依赖项是必须安装的吗？","Mujoco 不是 `pytorch-rl` 的显式依赖（代码中没有直接 `import mujoco`）。它是 `gym` 的隐式依赖，仅当你尝试启动特定的 Mujoco 环境（如 \"InvertedPendulum-v1\"）时才需要安装。如果未使用这些环境，则无需安装 Mujoco。","https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl\u002Fissues\u002F4",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},31286,"如何实现用于部分可观察任务的 Recurrent DQN？","实现 Recurrent DQN 非常简单：只需在对应的 DQN 模型的最后一个卷积层之后添加一个 LSTM 层即可。据维护者估计，这大约只需要增加 3 行代码。","https:\u002F\u002Fgithub.com\u002Fjingweiz\u002Fpytorch-rl\u002Fissues\u002F9",{"id":139,"question_zh":140,"answer_zh":141,"source_url":132},31287,"如何配置 enable_continuous 参数以自动适配环境？","建议将 `enable_continuous` 设置为与环境自动连接并自动设定，而不是手动强制指定。虽然具体自动检测代码未在评论中给出，但维护者提到可以通过更改默认配置（例如改为 5）并更新 README 文档来解决相关依赖检查问题。",{"id":143,"question_zh":144,"answer_zh":145,"source_url":127},31288,"代码中缺失了哪些关键的 Atari 预处理策略导致性能差异？","代码中缺失的关键策略包括：1. 奖励裁剪（clipped rewards）；2. 生命结束即视为回合结束的策略（end of life = end of episode）；3. 火键重置策略（fire reset strategy）。参考 `DeepRL` 仓库中的 `atari_wrapper.py` 可以实现这些功能。",[]]