[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-BurnySc2--python-sc2":3,"tool-BurnySc2--python-sc2":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":78,"owner_location":79,"owner_email":78,"owner_twitter":78,"owner_website":78,"owner_url":80,"languages":81,"stars":101,"forks":102,"last_commit_at":103,"license":104,"difficulty_score":10,"env_os":105,"env_gpu":106,"env_ram":106,"env_deps":107,"category_tags":113,"github_topics":114,"view_count":23,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":120,"updated_at":121,"faqs":122,"releases":152},4032,"BurnySc2\u002Fpython-sc2","python-sc2","A StarCraft II bot api client library for Python 3","python-sc2 是一个专为 Python 3 设计的《星际争霸 II》人工智能机器人开发库。它旨在降低游戏 AI 的编程门槛，让开发者能够用极简的代码（例如仅二十行）快速构建出具备基础功能的 bots，同时也不失对底层细节的控制能力，兼顾了易用性与功能完整性。\n\n该工具主要解决了传统游戏 AI 开发中接口复杂、代码冗余度高的问题，通过提供清晰的高层与底层抽象，让创作者能更专注于策略逻辑而非繁琐的 API 调用。目前，它专注于支持基于脚本的原始数据接口，暂不涉及图形界面交互。\n\npython-sc2 非常适合游戏 AI 开发者、强化学习研究人员以及希望入门即时战略游戏编程的爱好者使用。其独特的技术亮点在于持续的性能优化和对新手的友好引导，尽管部分激进更新可能导致旧版代码需要调整，但项目提供了详细的弃用警告以协助迁移。此外，它不仅支持 Windows 和 macOS，还通过 Wine 或 WSL 提供了完善的 Linux 运行方案，方便不同开发环境的用户进行实验与部署。无论是想尝试简单的“工人 Rush\"战术，还是研究复杂的宏观运营策略，python-sc2 都是一个强大且灵活的起点","python-sc2 是一个专为 Python 3 设计的《星际争霸 II》人工智能机器人开发库。它旨在降低游戏 AI 的编程门槛，让开发者能够用极简的代码（例如仅二十行）快速构建出具备基础功能的 bots，同时也不失对底层细节的控制能力，兼顾了易用性与功能完整性。\n\n该工具主要解决了传统游戏 AI 开发中接口复杂、代码冗余度高的问题，通过提供清晰的高层与底层抽象，让创作者能更专注于策略逻辑而非繁琐的 API 调用。目前，它专注于支持基于脚本的原始数据接口，暂不涉及图形界面交互。\n\npython-sc2 非常适合游戏 AI 开发者、强化学习研究人员以及希望入门即时战略游戏编程的爱好者使用。其独特的技术亮点在于持续的性能优化和对新手的友好引导，尽管部分激进更新可能导致旧版代码需要调整，但项目提供了详细的弃用警告以协助迁移。此外，它不仅支持 Windows 和 macOS，还通过 Wine 或 WSL 提供了完善的 Linux 运行方案，方便不同开发环境的用户进行实验与部署。无论是想尝试简单的“工人 Rush\"战术，还是研究复杂的宏观运营策略，python-sc2 都是一个强大且灵活的起点。","[![Actions Status](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fworkflows\u002FTests\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Factions)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FBurnySc2\u002Fpython-sc2\u002Fbranch\u002Fdevelop\u002Fgraph\u002Fbadge.svg?token=Pq5XkKw5VC)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FBurnySc2\u002Fpython-sc2)\n\n# A StarCraft II API Client for Python 3\n\nAn easy-to-use library for writing AI Bots for StarCraft II in Python 3. The ultimate goal is simplicity and ease of use, while still preserving all functionality. A really simple worker rush bot should be no more than twenty lines of code, not two hundred. However, this library intends to provide both high and low level abstractions.\n\n**This library (currently) covers only the raw scripted interface.** At this time I don't intend to add support for graphics-based interfaces.\n\nThe [documentation can be found here](https:\u002F\u002Fburnysc2.github.io\u002Fpython-sc2\u002Findex.html).\nFor bot authors, looking directly at the files in the [sc2 folder](\u002Fsc2) can also be of benefit: bot_ai.py, unit.py, units.py, client.py, game_info.py and game_state.py. Most functions in those files have docstrings, example usages and type hinting.\n\nI am planning to change this fork more radically than the main repository, for bot performance benefits and to add functions to help new bot authors. This may break older bots in the future, however I try to add deprecation warnings to give a heads up notification. This means that the [video tutorial made by sentdex](https:\u002F\u002Fpythonprogramming.net\u002Fstarcraft-ii-ai-python-sc2-tutorial\u002F) is outdated and does no longer directly work with this fork.\n\nFor a list of ongoing changes and differences to the main repository of Dentosal, [check here](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F4).\n\n## Installation\n\nBy installing this library you agree to be bound by the terms of the [AI and Machine Learning License](http:\u002F\u002Fblzdistsc2-a.akamaihd.net\u002FAI_AND_MACHINE_LEARNING_LICENSE.html).\n\nFor this fork, you'll need Python 3.9 or newer.\n\nInstall the pypi package:\n```\npip install --upgrade burnysc2\n```\nor directly from develop branch:\n```\npip install --upgrade --force-reinstall https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Farchive\u002Fdevelop.zip\n```\nBoth commands will use the `sc2` library folder, so you will not be able to have Dentosal's and this fork installed at the same time, unless you use virtual environments.\n\n## StarCraft II\nYou'll need a StarCraft II executable. If you are running Windows or macOS, just install SC2 from [blizzard app](https:\u002F\u002Fstarcraft2.com\u002F).\n\n### Linux installation\n\nYou can install StarCraft II on Linux with [Wine](https:\u002F\u002Fwww.winehq.org\u002F), [Lutris](https:\u002F\u002Flutris.net\u002Fgames\u002Fbattlenet\u002F) or even the [Linux binary](https:\u002F\u002Fgithub.com\u002FBlizzard\u002Fs2client-proto#downloads), but the latter is headless so you cannot actually see the game.\nStarcraft II can be directly installed from Battlenet once it is downloaded with Lutris.\nBy default, it will be installed here:\n```\n\u002Fhome\u002Fburny\u002FGames\u002Fbattlenet\u002Fdrive_c\u002FProgram Files (x86)\u002FStarCraft II\u002F\n```\nNext, set the following environment variables (either globally or within your development environment, e.g. Pycharm: `Run -> Edit Configurations -> Environment Variables`):\n\n```\nSC2PF=WineLinux\nWINE=\u002Fusr\u002Fbin\u002Fwine\n# Or a wine binary from lutris:\n# WINE=\u002Fhome\u002Fburny\u002F.local\u002Fshare\u002Flutris\u002Frunners\u002Fwine\u002Flutris-4.20-x86_64\u002Fbin\u002Fwine64\n# Default Lutris StarCraftII Installation path:\nSC2PATH='\u002Fhome\u002Fburny\u002FGames\u002Fbattlenet\u002Fdrive_c\u002FProgram Files (x86)\u002FStarCraft II\u002F'\n```\n\n### WSL\n\nWhen running WSL in Windows, python-sc2 detects WSL by default and starts Windows Starcraft 2 instead of Linux Starcraft 2.\nIf you wish to instead have the game played in Linux, you can disable this behavior by setting `SC2_WSL_DETECT`\nenvironment variable to \"0\". You can do this inside python with the following code:\n```py\nimport os\nos.environ[\"SC2_WSL_DETECT\"] = \"0\"\n```  \n\nWSL version 1 should not require any configuration. You may be asked to allow Python through your firewall.\n\nWhen running WSL version 2 you need to supply the following environment variables so that your bot can connect:\n\n```\nSC2CLIENTHOST=\u003Cyour windows IP>\nSC2SERVERHOST=0.0.0.0\n```\n\nIf you are adding these to your .bashrc, you may need to export your environment variables by adding:\n```sh\nexport SC2CLIENTHOST\nexport SC2SERVERHOST\n```\n\nYou can find your Windows IP using `ipconfig \u002Fall` from `PowerShell.exe` or `CMD.exe`.\n\n## Maps\nYou will need maps to run the library.\n\n#### Official maps\nOfficial Blizzard map downloads are available from [Blizzard\u002Fs2client-proto](https:\u002F\u002Fgithub.com\u002FBlizzard\u002Fs2client-proto#downloads).  \nExtract these maps into their respective *subdirectories* in the SC2 maps directory.  \ne.g. `install-dir\u002FMaps\u002FLadder2017Season1\u002F`\n\n#### Bot ladder maps\nMaps that are run on the [SC2 AI Arena Ladder](https:\u002F\u002Faiarena.net\u002F) can be downloaded [from the SC2 AI Arena Wiki](https:\u002F\u002Faiarena.net\u002Fwiki\u002Fbot-development\u002Fgetting-started\u002F#wiki-toc-maps).   \n**Extract these maps into the *root* of the SC2 maps directory** (otherwise ladder replays won't work).  \ne.g. `install-dir\u002FMaps\u002FAcropolisLE.SC2Map`\n\n### Running\n\nAfter installing the library, a StarCraft II executable, and some maps, you're ready to get started. Simply run a bot file to fire up an instance of StarCraft II with the bot running. For example:\n\n```sh\npython examples\u002Fprotoss\u002Fcannon_rush.py\n```\n\n## Example\n\nAs promised, worker rush in less than twenty lines:\n\n```python\nfrom sc2 import maps\nfrom sc2.player import Bot, Computer\nfrom sc2.main import run_game\nfrom sc2.data import Race, Difficulty\nfrom sc2.bot_ai import BotAI\n\nclass WorkerRushBot(BotAI):\n    async def on_step(self, iteration: int):\n        if iteration == 0:\n            for worker in self.workers:\n                worker.attack(self.enemy_start_locations[0])\n\nrun_game(maps.get(\"Abyssal Reef LE\"), [\n    Bot(Race.Zerg, WorkerRushBot()),\n    Computer(Race.Protoss, Difficulty.Medium)\n], realtime=True)\n```\n\nThis is probably the simplest bot that has any realistic chances of winning the game. I have ran it against the medium AI a few times, and once in a while, it wins.\n\nYou can find more examples in the [`examples\u002F`](\u002Fexamples) folder.\n\n## API Configuration Options\n\nThe API supports a number of options for configuring how it operates.\n\n### `unit_command_uses_self_do`\nSet this to 'True' if your bot is issueing commands using `self.do(Unit(Ability, Target))` instead of `Unit(Ability, Target)`.\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        self.unit_command_uses_self_do = True\n```\n\n### `raw_affects_selection`\nSetting this to true improves bot performance by a little bit.\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        self.raw_affects_selection = True\n```\n\n### `distance_calculation_method`\nThe distance calculation method:\n- 0 for raw python\n- 1 for scipy pdist\n- 2 for scipy cdist\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        self.distance_calculation_method: int = 2\n```\n\n### `game_step`\nOn game start or in any frame actually, you can set the game step. This controls how often your bot's `step` method is called.  \n__Do not set this in the \\_\\_init\\_\\_ function as the client will not have been initialized yet!__\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        pass  # don't set it here!\n\n    async def on_start(self):\n        self.client.game_step: int = 2\n```\n\n## Community - Help and support\n\nYou have questions but don't want to create an issue? Join the [SC2 AI Arena Discord server](https:\u002F\u002Fdiscordapp.com\u002Finvite\u002FzXHU4wM). Questions about this repository can be asked in text channel #python. There are discussions and questions about SC2 bot programming and this repository every day.\n\n## Bug reports, feature requests and ideas\n\nIf you have any issues, ideas or feedback, please create [a new issue](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002Fnew). Pull requests are also welcome!\n\n\n## Contributing & style guidelines\n\nGit commit messages use [imperative-style messages](https:\u002F\u002Fstackoverflow.com\u002Fa\u002F3580764\u002F2867076), start with capital letter and do not have trailing commas.\n\nTo run pre-commit hooks (which run autoformatting and autosort imports) you can run\n```sh\nuv run pre-commit install\nuv run pre-commit run --all-files --hook-stage pre-push\n```\n","[![Actions Status](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fworkflows\u002FTests\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Factions)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FBurnySc2\u002Fpython-sc2\u002Fbranch\u002Fdevelop\u002Fgraph\u002Fbadge.svg?token=Pq5XkKw5VC)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FBurnySc2\u002Fpython-sc2)\n\n# 适用于 Python 3 的星际争霸 II API 客户端库\n\n这是一个易于使用的 Python 3 库，用于编写星际争霸 II 的 AI 战术机器人。其最终目标是简化开发流程并提高易用性，同时保留所有功能。一个非常简单的工人rush战术机器人代码不应超过二十行，而不是两百行。然而，该库旨在提供高级和低级抽象。\n\n**目前，此库仅覆盖原始脚本接口。** 截至当前，我无意添加对基于图形界面的支持。\n\n[文档在此](https:\u002F\u002Fburnysc2.github.io\u002Fpython-sc2\u002Findex.html)。对于机器人开发者来说，直接查看 [sc2 文件夹](\u002Fsc2) 中的文件也会有所帮助：bot_ai.py、unit.py、units.py、client.py、game_info.py 和 game_state.py。这些文件中的大多数函数都带有文档字符串、示例用法和类型提示。\n\n我计划对这个分支进行比主仓库更彻底的改动，以提升机器人性能并增加帮助新手开发者的新功能。这可能会在未来破坏旧版机器人，不过我会尽量加入弃用警告以便提前通知。这意味着由 sentdex 制作的[视频教程](https:\u002F\u002Fpythonprogramming.net\u002Fstarcraft-ii-ai-python-sc2-tutorial\u002F)已经过时，并且不再直接适用于此分支。\n\n有关正在进行的更改以及与 Dentosal 主仓库的区别列表，请[参见此处](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F4)。\n\n## 安装\n\n安装本库即表示您同意受[AI与机器学习许可协议](http:\u002F\u002Fblzdistsc2-a.akamaihd.net\u002FAI_AND_MACHINE_LEARNING_LICENSE.html)条款约束。\n\n对于此分支，您需要 Python 3.9 或更高版本。\n\n安装 pypi 包：\n```\npip install --upgrade burnysc2\n```\n或直接从 develop 分支安装：\n```\npip install --upgrade --force-reinstall https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Farchive\u002Fdevelop.zip\n```\n这两个命令都会使用 `sc2` 库文件夹，因此除非您使用虚拟环境，否则无法同时安装 Dentosal 的版本和此分支。\n\n## 星际争霸 II\n您需要一个星际争霸 II 可执行文件。如果您使用 Windows 或 macOS，只需从 [暴雪应用](https:\u002F\u002Fstarcraft2.com\u002F)安装 SC2 即可。\n\n### Linux 安装\n\n您可以通过 [Wine](https:\u002F\u002Fwww.winehq.org\u002F)、[Lutris](https:\u002F\u002Flutris.net\u002Fgames\u002Fbattlenet\u002F)，甚至使用 [Linux 二进制文件](https:\u002F\u002Fgithub.com\u002FBlizzard\u002Fs2client-proto#downloads)在 Linux 上安装星际争霸 II，但后者是无头模式，您将无法看到游戏画面。\n一旦通过 Lutris 下载了游戏，就可以直接从 Battlenet 安装星际争霸 II。\n默认情况下，它会被安装在这里：\n```\n\u002Fhome\u002Fburny\u002FGames\u002Fbattlenet\u002Fdrive_c\u002FProgram Files (x86)\u002FStarCraft II\u002F\n```\n接下来，设置以下环境变量（可以是全局设置，也可以在您的开发环境中设置，例如 Pycharm：`运行 -> 编辑配置 -> 环境变量`）：\n\n```\nSC2PF=WineLinux\nWINE=\u002Fusr\u002Fbin\u002Fwine\n# 或者来自 lutris 的 wine 二进制文件：\n# WINE=\u002Fhome\u002Fburny\u002F.local\u002Fshare\u002Flutris\u002Frunners\u002Fwine\u002Flutris-4.20-x86_64\u002Fbin\u002Fwine64\n# 默认的 Lutris 星际争霸 II 安装路径：\nSC2PATH='\u002Fhome\u002Fburny\u002FGames\u002Fbattlenet\u002Fdrive_c\u002FProgram Files (x86)\u002FStarCraft II\u002F'\n```\n\n### WSL\n\n在 Windows 中运行 WSL 时，python-sc2 默认会检测到 WSL 并启动 Windows 版星际争霸 II，而不是 Linux 版。如果您希望游戏在 Linux 中运行，可以将 `SC2_WSL_DETECT` 环境变量设置为“0”。您可以在 Python 中使用以下代码完成此操作：\n```py\nimport os\nos.environ[\"SC2_WSL_DETECT\"] = \"0\"\n```\n\nWSL 第 1 版通常不需要任何配置。您可能需要允许 Python 通过防火墙。\n\n当您运行 WSL 第 2 版时，需要设置以下环境变量，以便您的机器人能够连接：\n\n```\nSC2CLIENTHOST=\u003C您的 Windows IP>\nSC2SERVERHOST=0.0.0.0\n```\n\n如果您将这些变量添加到 `.bashrc` 文件中，可能还需要导出环境变量：\n```sh\nexport SC2CLIENTHOST\nexport SC2SERVERHOST\n```\n\n您可以通过 `PowerShell.exe` 或 `CMD.exe` 使用 `ipconfig \u002Fall` 查找您的 Windows IP 地址。\n\n## 地图\n您需要地图才能运行该库。\n\n#### 官方地图\n官方暴雪地图下载可从 [Blizzard\u002Fs2client-proto](https:\u002F\u002Fgithub.com\u002FBlizzard\u002Fs2client-proto#downloads) 获取。\n请将这些地图解压到 SC2 地图目录下的相应*子目录*中。\n例如：`install-dir\u002FMaps\u002FLadder2017Season1\u002F`\n\n#### 机器人联赛地图\n在 [SC2 AI Arena 联赛](https:\u002F\u002Faiarena.net\u002F)上使用的地图可以从 [SC2 AI Arena Wiki](https:\u002F\u002Faiarena.net\u002Fwiki\u002Fbot-development\u002Fgetting-started\u002F#wiki-toc-maps) 下载。\n**请将这些地图解压到 SC2 地图目录的*根目录*中**（否则联赛回放将无法正常工作）。\n例如：`install-dir\u002FMaps\u002FAcropolisLE.SC2Map`\n\n### 运行\n\n在安装好库、星际争霸 II 可执行文件和一些地图后，您就可以开始使用了。只需运行一个机器人文件即可启动一个带有机器人运行的星际争霸 II 实例。例如：\n\n```sh\npython examples\u002Fprotoss\u002Fcannon_rush.py\n```\n\n## 示例\n\n正如承诺的那样，不到二十行代码就能实现工人rush战术：\n\n```python\nfrom sc2 import maps\nfrom sc2.player import Bot, Computer\nfrom sc2.main import run_game\nfrom sc2.data import Race, Difficulty\nfrom sc2.bot_ai import BotAI\n\nclass WorkerRushBot(BotAI):\n    async def on_step(self, iteration: int):\n        if iteration == 0:\n            for worker in self.workers:\n                worker.attack(self.enemy_start_locations[0])\n\nrun_game(maps.get(\"Abyssal Reef LE\"), [\n    Bot(Race.Zerg, WorkerRushBot()),\n    Computer(Race.Protoss, Difficulty.Medium)\n], realtime=True)\n```\n\n这可能是最简单的、有一定胜算的机器人之一。我曾多次将其与中级 AI 对战，偶尔也能获胜。\n\n更多示例可在 [`examples\u002F`](\u002Fexamples) 文件夹中找到。\n\n## API 配置选项\n\nAPI 支持多种配置选项来调整其运行方式。\n\n### `unit_command_uses_self_do`\n如果您的机器人使用 `self.do(Unit(Ability, Target))` 而不是 `Unit(Ability, Target)` 来发出命令，请将此选项设置为“True”。\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        self.unit_command_uses_self_do = True\n```\n\n### `raw_affects_selection`\n将此选项设置为“真”可以略微提升机器人性能。\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        self.raw_affects_selection = True\n```\n\n### `distance_calculation_method`\n距离计算方法：\n- 0 表示原生 Python\n- 1 表示 scipy pdist\n- 2 表示 scipy cdist\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        self.distance_calculation_method: int = 2\n```\n\n### `game_step`\n在游戏开始时，或者在任何一帧中，你都可以设置游戏步长。这决定了你的机器人 `step` 方法被调用的频率。  \n__请勿在 \\_\\_init\\_\\_ 函数中设置此值，因为此时客户端尚未初始化！__\n```python\nclass MyBot(BotAI):\n    def __init__(self):\n        pass  # 不要在这里设置！\n\n    async def on_start(self):\n        self.client.game_step: int = 2\n```\n\n## 社区 - 帮助与支持\n\n如果你有疑问但又不想创建问题？欢迎加入 [SC2 AI Arena Discord 服务器](https:\u002F\u002Fdiscordapp.com\u002Finvite\u002FzXHU4wM)。关于本仓库的问题可以在 #python 文本频道中提出。每天都有关于 SC2 机器人编程以及本仓库的讨论和提问。\n\n## 错误报告、功能请求和想法\n\n如果你有任何问题、想法或反馈，请创建[一个新的 issue](https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002Fnew)。我们也欢迎提交 pull request！\n\n\n## 贡献与代码风格指南\n\nGit 提交信息应采用【祈使句式】（参考：[stackoverflow](https:\u002F\u002Fstackoverflow.com\u002Fa\u002F3580764\u002F2867076)），首字母大写且不使用结尾逗号。\n\n要运行预提交钩子（用于自动格式化和自动排序导入语句），可以执行以下命令：\n```sh\nuv run pre-commit install\nuv run pre-commit run --all-files --hook-stage pre-push\n```","# python-sc2 快速上手指南\n\n`python-sc2` 是一个用于编写《星际争霸 II》(StarCraft II) AI 机器人的 Python 3 库。它旨在提供简单易用的接口，同时保留完整的功能，让开发者能够快速构建从基础到高级的博弈策略。\n\n## 环境准备\n\n在开始之前，请确保满足以下系统和软件要求：\n\n*   **操作系统**: Windows, macOS 或 Linux (Linux 用户需配置 Wine 或使用 WSL)。\n*   **Python 版本**: Python 3.9 或更高版本。\n*   **游戏本体**: 必须安装《星际争霸 II》客户端。\n    *   **Windows\u002FmacOS**: 通过暴雪战网 (Battle.net) 直接安装。\n    *   **Linux**: 推荐使用 [Lutris](https:\u002F\u002Flutris.net\u002Fgames\u002Fbattlenet\u002F) 配合 Wine 安装，或使用无头模式的 Linux 二进制文件。\n*   **游戏地图**: 需要下载官方地图包并解压至游戏目录下的 `Maps` 文件夹中。\n    *   官方地图下载地址：[Blizzard\u002Fs2client-proto](https:\u002F\u002Fgithub.com\u002FBlizzard\u002Fs2client-proto#downloads)\n    *   天梯地图需解压至 `Maps` 根目录。\n\n> **注意**：安装此库即表示您同意遵守 [AI 和机器学习许可协议](http:\u002F\u002Fblzdistsc2-a.akamaihd.net\u002FAI_AND_MACHINE_LEARNING_LICENSE.html)。\n\n## 安装步骤\n\n推荐使用 `pip` 进行安装。由于网络原因，国内开发者建议使用国内镜像源（如清华源或阿里源）以加速下载。\n\n### 方式一：安装稳定版 (PyPI)\n\n```bash\npip install --upgrade burnysc2 -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：安装开发版 (GitHub Develop 分支)\n\n如果您需要最新的功能修复或特性，可以直接从 GitHub 安装：\n\n```bash\npip install --upgrade --force-reinstall https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Farchive\u002Fdevelop.zip -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n> **提示**: 该库使用 `sc2` 作为包名。如果您之前安装过其他 forks (如 Dentosal 版本)，请先卸载或使用虚拟环境，以免冲突。\n\n## 基本使用\n\n以下是一个最简单的“工人 Rush\"机器人示例，代码不到 20 行。该脚本会启动游戏，控制所有工人在游戏开始时直接攻击敌方出生点。\n\n创建一个名为 `worker_rush.py` 的文件，填入以下代码：\n\n```python\nfrom sc2 import maps\nfrom sc2.player import Bot, Computer\nfrom sc2.main import run_game\nfrom sc2.data import Race, Difficulty\nfrom sc2.bot_ai import BotAI\n\nclass WorkerRushBot(BotAI):\n    async def on_step(self, iteration: int):\n        if iteration == 0:\n            for worker in self.workers:\n                worker.attack(self.enemy_start_locations[0])\n\nrun_game(maps.get(\"Abyssal Reef LE\"), [\n    Bot(Race.Zerg, WorkerRushBot()),\n    Computer(Race.Protoss, Difficulty.Medium)\n], realtime=True)\n```\n\n### 运行机器人\n\n确保游戏未运行，然后在终端执行：\n\n```bash\npython worker_rush.py\n```\n\n脚本将自动启动《星际争霸 II》并加载指定地图，您的机器人将作为虫族 (Zerg) 与中等难度的电脑 (Protoss) 进行对战。\n\n更多示例代码请参考项目仓库中的 [`examples\u002F`](\u002Fexamples) 文件夹。","某高校人工智能实验室的研究团队正致力于开发能够自主决策的星际争霸 II 机器人，以验证多智能体强化学习算法在复杂实时战略环境中的有效性。\n\n### 没有 python-sc2 时\n- 研究人员必须直接处理繁琐的底层通信协议和原始数据流，编写数百行代码才能实现基础的工人采集逻辑。\n- 缺乏统一的状态封装，开发者需手动解析游戏帧数据来获取单位位置和血量，极易出错且调试困难。\n- 不同版本的星际争霸 II 客户端适配复杂，尤其在 Linux 或 WSL 环境下配置游戏路径和环境变量往往耗费数天时间。\n- 社区现有教程因库版本迭代迅速而失效，新手难以找到可运行的示例代码，导致复现论文算法的门槛极高。\n\n### 使用 python-sc2 后\n- 借助高层抽象接口，实现一个基础的“工人 Rush\"战术仅需约二十行清晰的 Python 代码，大幅缩短原型开发周期。\n- 库自动封装了游戏状态（Game State），开发者可直接通过 `unit.position` 等直观属性获取信息，无需关心底层解析细节。\n- 内置对 Windows、macOS 及 Linux（含 Wine\u002FWSL）的自动检测与环境配置支持，一键解决跨平台运行难题。\n- 提供详尽的类型提示、文档字符串及最新示例，配合活跃的维护更新，帮助研究者快速上手并聚焦于核心算法创新。\n\npython-sc2 通过将复杂的即时战略游戏交互简化为直观的 Python 调用，让研究人员能从底层工程泥潭中解脱，全心投入 AI 策略的创新与验证。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBurnySc2_python-sc2_ac742d0a.png","BurnySc2","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FBurnySc2_cea12aa6.png",null,"Germany","https:\u002F\u002Fgithub.com\u002FBurnySc2",[82,86,90,94,98],{"name":83,"color":84,"percentage":85},"Python","#3572A5",98.9,{"name":87,"color":88,"percentage":89},"Shell","#89e051",0.6,{"name":91,"color":92,"percentage":93},"Dockerfile","#384d54",0.3,{"name":95,"color":96,"percentage":97},"Batchfile","#C1F12E",0.1,{"name":99,"color":100,"percentage":97},"Makefile","#427819",606,182,"2026-04-03T01:36:46","MIT","Windows, macOS, Linux","未说明",{"notes":108,"python":109,"dependencies":110},"1. 必须安装星际争霸 II (StarCraft II) 可执行文件。Windows\u002FmacOS 用户可通过暴雪战网安装；Linux 用户需通过 Wine、Lutris 或无头 Linux 二进制文件运行。\n2. Linux 环境下需设置环境变量 (如 SC2PF, WINE, SC2PATH) 以定位游戏路径。\n3. WSL 2 用户需额外配置 SC2CLIENTHOST 和 SC2SERVERHOST 环境变量以便连接。\n4. 需要下载官方地图文件并放置在游戏目录的相应子文件夹中。\n5. 安装此库即表示同意暴雪的 AI 和机器学习许可协议。","3.9+",[111,112],"burnysc2","scipy (可选，用于距离计算优化)",[26,14,54,13,15],[115,116,117,118,119],"hacktoberfest","sc2","starcraft2","bot","ai","2026-03-27T02:49:30.150509","2026-04-06T08:34:46.254089",[123,128,133,137,142,147],{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},18352,"星际争霸 2 更新版本后出现 KeyError（例如 4132 或 4444），提示找不到 ability_id 怎么办？","这是因为游戏版本更新引入了新的能力 ID，而本地库未同步。解决方法：\n1. 升级库到最新版本：运行 `pip install --upgrade burnysc2`。\n2. 如果升级后仍报错，可能是特定地图（如 AIE 地图）使用了特殊的 ID。你可以手动生成最新的 ID 常量：克隆仓库并运行脚本 `python generate_id_constants_from_stableid.py`。\n3. 也可以暂时手动复制仓库中最新的 `sc2\u002Fids\u002Fability_id.py` 文件覆盖本地安装的文件。","https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F208",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},18353,"为什么 self.client.query_pathings 总是返回 0.0？","这通常是因为查询的目标位置地面单位无法到达，或者参数传递格式不正确。\n解决方案：\n1. 确保目标位置（target_position）是地面单位可通行的点。\n2. 检查参数格式：第一个参数应传入单位对象本身（unit），而不是单位的位置（unit.position）。\n正确代码示例：\n```python\npathing_responses = await self.client.query_pathings(\n    [[unit, target_position] for unit in attacking_units]\n)\n```\n不要使用 `unit.position` 作为起始点。","https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F195",{"id":134,"question_zh":135,"answer_zh":136,"source_url":132},18354,"如何让不同移动速度的异虫部队（如跳虫和蟑螂）一起移动，避免逐个送死？","由于不同单位速度差异导致部队脱节，单纯依赖路径查询可能不够。建议方案：\n1. 使用 `query_pathings` 时确保传入正确的单位对象而非坐标（参考上一题）。\n2. 更有效的战术是让慢速单位等待快速单位，或在发送攻击指令前计算最慢单位的预计到达时间，让快速单位在途中徘徊或分批次进攻。\n3. 也可以考虑使用 `move_to` 配合特定的编队逻辑，或者在接近敌人时统一发动攻击，而不是让先到的单位单独接战。",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},18355,"在非标准地图（如多人自定义地图）上运行时，_find_expansion_locations 函数崩溃或报错怎么办？","该问题通常发生在资源分布不规则或非标准扩张点的地图上，导致算法找不到合适的基地位置从而引发 `min()` 函数空参数错误。\n临时解决方案是在调用扩张查找逻辑前增加防御性代码：\n```python\npossible_points = list(possible_points)\nif len(possible_points) == 0:\n    # 如果没有找到合适的点，跳过本次扩张逻辑或选择默认安全点\n    return \n```\n注意：这只是一个避免崩溃的权宜之计，并不能保证在这些地图上找到完美的扩张位置。维护者建议主要在天梯标准地图上运行机器人。","https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F103",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},18356,"on_unit_destroyed 事件为何会被投射物（如追猎者光束）触发，导致统计单位损失不准确？","这是因为游戏状态中的 `dead_units` 列表不仅包含被摧毁的单位，也包含消失的投射物对象。\n解决方案：\n在处理 `on_unit_destroyed` 回调时，需要过滤掉投射物类型。可以通过检查 `unit.type_id` 是否属于真实的作战单位或建筑来排除投射物。例如，只统计 `UnitTypeId` 中非投射物类别的单位，或者在白名单中只包含你需要统计的单位类型。","https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F97",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},18357,"构建瓦斯设施（如 Assimilator）时报错 ERROR 4444 或类似的能力 ID 错误如何解决？","这通常是因为使用的地图（特别是 AI Arena 地图）包含了标准库中尚未定义的特殊能力 ID。\n解决步骤：\n1. 确认是否安装了最新版库：`pip install --upgrade burnysc2`。\n2. 如果问题依旧，说明该地图使用了非常规 ID。你需要自行生成 ID 映射：\n   - 下载对应的地图文件。\n   - 运行项目中的 `generate_id_constants_from_stableid.py` 脚本，它会扫描当前安装的星际争霸 2 版本和地图数据，生成包含新 ID 的 `ability_id.py` 文件。\n3. 将生成的文件替换到本地库目录中即可。","https:\u002F\u002Fgithub.com\u002FBurnySc2\u002Fpython-sc2\u002Fissues\u002F205",[]]