[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Zulko--easyAI":3,"tool-Zulko--easyAI":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 真正成长为懂上",150037,2,"2026-04-10T23:33:47",[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":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":73,"owner_company":75,"owner_location":76,"owner_email":73,"owner_twitter":73,"owner_website":77,"owner_url":78,"languages":79,"stars":84,"forks":85,"last_commit_at":86,"license":87,"difficulty_score":88,"env_os":89,"env_gpu":90,"env_ram":90,"env_deps":91,"category_tags":96,"github_topics":97,"view_count":32,"oss_zip_url":73,"oss_zip_packed_at":73,"status":17,"created_at":105,"updated_at":106,"faqs":107,"releases":140},6439,"Zulko\u002FeasyAI","easyAI","Python artificial intelligence framework for games","easyAI 是一个专为双人抽象棋类游戏设计的纯 Python 人工智能框架，适用于井字棋、四子棋、黑白棋等规则明确的游戏。它帮助开发者快速定义游戏机制，轻松实现人机对战或进行游戏博弈求解，无需从零编写复杂的搜索算法。\n\n该工具的核心价值在于简化了游戏 AI 的开发流程。用户只需定义游戏规则（如合法走法、胜负判定），easyAI 即可自动处理背后的逻辑运算。其底层采用了经典的 Negamax 算法，并结合 Alpha-Beta 剪枝与转置表（Transposition Tables）技术，既能保证决策效率，又能通过缓存历史局面大幅加速游戏求解过程，甚至能计算出“先手必胜”的最优策略。\n\neasyAI 非常适合 Python 开发者、计算机专业学生以及 AI 算法研究者使用。对于希望学习博弈论基础、验证算法效果，或是想为自己的桌面游戏快速添加智能对手的人来说，这是一个极佳的上手工具。虽然它主要面向有一定编程基础的用户，但清晰的代码示例让入门变得十分友好。无论是用于教学演示、原型开发，还是深入探讨博弈策略，easyAI 都能提供稳定而灵活的支持。","easyAI\n======\n\nEasyAI (full documentation here_) is a pure-Python artificial intelligence framework for two-players abstract games such as Tic Tac Toe, Connect 4, Reversi, etc.\nIt makes it easy to define the mechanisms of a game, and play against the computer or solve the game.\nUnder the hood, the AI is a Negamax algorithm with alpha-beta pruning and transposition tables as described on Wikipedia_.\n\n\nInstallation\n------------\n\nIf you have ``pip`` installed, type this in a terminal ::\n    \n    sudo pip install easyAI\n    \nOtherwise, download the source code (for instance on Github_), unzip everything into one folder and in this folder, in a terminal, type ::\n    \n    sudo python setup.py install\n\nAdditionally you will need to install Numpy to be able to run some of the examples.\n\n\nA quick example\n----------------\n\nLet us define the rules of a game and start a match against the AI:\n\n.. code:: python\n    \n    from easyAI import TwoPlayerGame, Human_Player, AI_Player, Negamax\n    \n    class GameOfBones( TwoPlayerGame ):\n        \"\"\" In turn, the players remove one, two or three bones from a\n        pile of bones. The player who removes the last bone loses. \"\"\"\n            \n        def __init__(self, players=None):\n            self.players = players\n            self.pile = 20 # start with 20 bones in the pile\n            self.current_player = 1 # player 1 starts\n\n        def possible_moves(self): return ['1','2','3']\n        def make_move(self,move): self.pile -= int(move) # remove bones.\n        def win(self): return self.pile\u003C=0 # opponent took the last bone ?\n        def is_over(self): return self.win() # Game stops when someone wins.\n        def show(self): print (\"%d bones left in the pile\" % self.pile)\n        def scoring(self): return 100 if game.win() else 0 # For the AI\n    \n    # Start a match (and store the history of moves when it ends)\n    ai = Negamax(13) # The AI will think 13 moves in advance \n    game = GameOfBones( [ Human_Player(), AI_Player(ai) ] )\n    history = game.play()\n    \nResult: ::\n    \n    20 bones left in the pile\n    \n    Player 1 what do you play ? 3\n\n    Move #1: player 1 plays 3 :\n    17 bones left in the pile\n\n    Move #2: player 2 plays 1 :\n    16 bones left in the pile\n    \n    Player 1 what do you play ?\n\nSolving the game\n*****************\n\nLet us now solve the game:\n\n.. code:: python\n\n    from easyAI import solve_with_iterative_deepening\n    r,d,m = solve_with_iterative_deepening(\n        game=GameOfBones(),\n        ai_depths=range(2,20),\n        win_score=100\n    )\n\nWe obtain ``r=1``, meaning that if both players play perfectly, the first player to play can always win (-1 would have meant always lose), ``d=10``, which means that the wins will be in ten moves (i.e. 5 moves per player) or less, and ``m='3'``, which indicates that the first player's first move should be ``'3'``.\n\nThese computations can be speed up using a transposition table which will store the situations encountered and the best moves for each:\n\n.. code:: python\n\n    tt = TranspositionTable()\n    GameOfBones.ttentry = lambda game : game.pile # key for the table\n    r,d,m = solve_with_iterative_deepening(\n        game=GameOfBones(),\n        ai_depths=range(2,20),\n        win_score=100,\n        tt=tt\n    )\n\nAfter these lines are run the variable ``tt`` contains a transposition table storing the possible situations (here, the possible sizes of the pile) and the optimal moves to perform. With ``tt`` you can play perfectly without *thinking*:\n\n.. code:: python\n\n    game = GameOfBones( [  AI_Player( tt ), Human_Player() ] )\n    game.play() # you will always lose this game :)\n\n\nContribute !\n------------\n\nEasyAI is an open source software originally written by Zulko_ and released under the MIT licence. Contributions welcome! Some ideas: AI algos for incomplete information games, better game solving strategies, (efficient) use of databases to store moves,  AI algorithms using parallelisation.\n\nFor troubleshooting and bug reports, the best for now is to ask on Github_.\n\nHow releases work\n*****************\n\nEvery time a MR gets merged into master, an automatic release happens:\n\n- If the last commit's message starts with `[FEATURE]`, a feature release happens (`1.3.3 -> 1.4.0`)\n- If the last commit's message starts with `[MAJOR]`, a major release happens (`1.3.3 -> 2.0.0`)\n- If the last commit's message starts with `[SKIP]`, no release happens.\n- Otherwise, a patch release happens (`1.3.3 -> 1.3.4`)\n\n\n\nMaintainers\n-----------\n\n- Zulko_ (owner)\n- JohnAD_\n\n\n.. _here: http:\u002F\u002Fzulko.github.io\u002FeasyAI\n.. _Wikipedia: http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNegamax\n.. _Zulko : https:\u002F\u002Fgithub.com\u002FZulko\n.. _JohnAD : https:\u002F\u002Fgithub.com\u002FJohnAD\n.. _Github :  https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\n","easyAI\n======\n\nEasyAI（完整文档请见此处_）是一个纯 Python 人工智能框架，适用于井字棋、四子棋、黑白棋等双人抽象游戏。它使得定义游戏机制变得简单，并且可以与计算机对战或求解游戏。在底层，该 AI 使用的是 Wikipedia_ 上描述的带有 alpha-beta 剪枝和置换表的 Negamax 算法。\n\n\n安装\n------------\n\n如果你已经安装了 ``pip``，只需在终端中输入以下命令即可：\n    \n    sudo pip install easyAI\n    \n否则，请下载源代码（例如在 Github_ 上），将所有文件解压到一个文件夹中，然后在该文件夹内的终端中输入：\n    \n    sudo python setup.py install\n\n此外，你还需要安装 Numpy 才能运行部分示例。\n\n\n快速示例\n----------------\n\n让我们定义一个游戏规则，并开始与 AI 对战：\n\n.. code:: python\n\n    from easyAI import TwoPlayerGame, Human_Player, AI_Player, Negamax\n\n    class GameOfBones( TwoPlayerGame ):\n        \"\"\" 轮流从一堆骨头中取走 1、2 或 3 根骨头。最后取走骨头的人输。 \"\"\"\n            \n        def __init__(self, players=None):\n            self.players = players\n            self.pile = 20 # 开始时有 20 根骨头\n            self.current_player = 1 # 玩家 1 先手\n\n        def possible_moves(self): return ['1','2','3']\n        def make_move(self,move): self.pile -= int(move) # 取走骨头。\n        def win(self): return self.pile\u003C=0 # 对手取走了最后一根骨头吗？\n        def is_over(self): return self.win() # 当有人获胜时游戏结束。\n        def show(self): print (\"%d 根骨头还剩在堆里\" % self.pile)\n        def scoring(self): return 100 if game.win() else 0 # 用于 AI\n\n    # 开始一局比赛（并在结束后保存每一步的历史记录）\n    ai = Negamax(13) # AI 将提前思考 13 步\n    game = GameOfBones( [ Human_Player(), AI_Player(ai) ] )\n    history = game.play()\n    \n结果如下：\n    \n    堆里还有 20 根骨头\n\n    玩家 1，你打算拿几根？3\n\n    第 1 步：玩家 1 拿了 3 根：\n    堆里还剩 17 根骨头\n\n    第 2 步：玩家 2 拿了 1 根：\n    堆里还剩 16 根骨头\n    \n    玩家 1，你打算拿几根？\n\n求解游戏\n*****************\n\n现在我们来求解这个游戏：\n\n.. code:: python\n\n    from easyAI import solve_with_iterative_deepening\n    r,d,m = solve_with_iterative_deepening(\n        game=GameOfBones(),\n        ai_depths=range(2,20),\n        win_score=100\n    )\n\n我们得到 ``r=1``，这意味着如果双方都完美发挥，先手方总是可以获胜（如果是 -1 则表示先手方必败），``d=10`` 表示胜利将在十步之内（即每方五步）达成，而 ``m='3'`` 则表明先手方的第一步应该选择 ``'3'``。\n\n这些计算可以通过使用置换表来加速，置换表会存储遇到的各种局面以及针对每个局面的最佳走法：\n\n.. code:: python\n\n    tt = TranspositionTable()\n    GameOfBones.ttentry = lambda game : game.pile # 置换表的键\n    r,d,m = solve_with_iterative_deepening(\n        game=GameOfBones(),\n        ai_depths=range(2,20),\n        win_score=100,\n        tt=tt\n    )\n\n运行完上述代码后，变量 ``tt`` 中就包含了一个置换表，里面存储了所有可能的局面（这里是堆中骨头的数量）以及最优的走法。有了这个置换表，你就可以在不需思考的情况下完美地进行游戏：\n\n.. code:: python\n\n    game = GameOfBones( [  AI_Player( tt ), Human_Player() ] )\n    game.play() # 你将永远输掉这场游戏 :) \n\n\n贡献！\n------------\n\nEasyAI 是由 Zulko_ 编写的开源软件，采用 MIT 许可证发布。欢迎贡献！一些想法包括：适用于不完全信息游戏的 AI 算法、更好的游戏求解策略、（高效地）利用数据库存储走法、使用并行化的 AI 算法等。\n\n如遇问题或发现 bug，目前最好的方式是在 Github_ 上提问。\n\n版本发布机制\n*****************\n\n每次有合并请求被合入主分支时，都会自动触发一次发布：\n\n- 如果最新提交的消息以 `[FEATURE]` 开头，则发布功能版本（`1.3.3 -> 1.4.0`）\n- 如果最新提交的消息以 `[MAJOR]` 开头，则发布重大版本（`1.3.3 -> 2.0.0`）\n- 如果最新提交的消息以 `[SKIP]` 开头，则不发布任何版本。\n- 否则，发布补丁版本（`1.3.3 -> 1.3.4`）\n\n\n\n维护者\n-----------\n\n- Zulko_（负责人）\n- JohnAD_\n\n\n.. _here: http:\u002F\u002Fzulko.github.io\u002FeasyAI\n.. _Wikipedia: http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNegamax\n.. _Zulko : https:\u002F\u002Fgithub.com\u002FZulko\n.. _JohnAD : https:\u002F\u002Fgithub.com\u002FJohnAD\n.. _Github :  https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI","# easyAI 快速上手指南\n\neasyAI 是一个纯 Python 编写的人工智能框架，专为双人抽象博弈游戏（如井字棋、四子棋、黑白棋等）设计。它基于 Negamax 算法（带 Alpha-Beta 剪枝和转置表），能帮助你轻松定义游戏规则、与电脑对战或求解游戏最优策略。\n\n## 环境准备\n\n*   **操作系统**：支持 Linux、macOS 和 Windows。\n*   **Python 版本**：需要安装 Python（推荐 Python 3）。\n*   **前置依赖**：\n    *   `pip`：Python 包管理工具。\n    *   `Numpy`：运行部分示例代码所必需。\n\n## 安装步骤\n\n### 方法一：使用 pip 安装（推荐）\n\n在终端中执行以下命令：\n\n```bash\nsudo pip install easyAI\n```\n\n> **国内加速建议**：如果下载速度较慢，推荐使用国内镜像源：\n> ```bash\n> sudo pip install easyAI -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n### 方法二：源码安装\n\n1.  从 [Github](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI) 下载源代码并解压到本地文件夹。\n2.  进入该文件夹，在终端中执行：\n\n```bash\nsudo python setup.py install\n```\n\n*注意：请确保已预先安装 Numpy (`pip install numpy`) 以运行示例。*\n\n## 基本使用\n\n下面通过一个经典的“取骨头”游戏（Game of Bones）示例，展示如何定义游戏规则并与 AI 对战。\n\n**游戏规则**：有一堆骨头（初始 20 根），两名玩家轮流取走 1、2 或 3 根。取走最后一根骨头的玩家输掉比赛。\n\n### 代码示例\n\n创建一个新的 Python 文件（例如 `game.py`），填入以下代码：\n\n```python\nfrom easyAI import TwoPlayerGame, Human_Player, AI_Player, Negamax\n\nclass GameOfBones( TwoPlayerGame ):\n    \"\"\" In turn, the players remove one, two or three bones from a\n    pile of bones. The player who removes the last bone loses. \"\"\"\n        \n    def __init__(self, players=None):\n        self.players = players\n        self.pile = 20 # start with 20 bones in the pile\n        self.current_player = 1 # player 1 starts\n\n    def possible_moves(self): return ['1','2','3']\n    def make_move(self,move): self.pile -= int(move) # remove bones.\n    def win(self): return self.pile\u003C=0 # opponent took the last bone ?\n    def is_over(self): return self.win() # Game stops when someone wins.\n    def show(self): print (\"%d bones left in the pile\" % self.pile)\n    def scoring(self): return 100 if game.win() else 0 # For the AI\n\n# Start a match (and store the history of moves when it ends)\nai = Negamax(13) # The AI will think 13 moves in advance \ngame = GameOfBones( [ Human_Player(), AI_Player(ai) ] )\nhistory = game.play()\n```\n\n### 运行结果\n\n运行脚本后，你将看到如下交互过程：\n\n```text\n20 bones left in the pile\n\nPlayer 1 what do you play ? 3\n\nMove #1: player 1 plays 3 :\n17 bones left in the pile\n\nMove #2: player 2 plays 1 :\n16 bones left in the pile\n\nPlayer 1 what do you play ?\n```\n\n此时你可以输入 `1`、`2` 或 `3` 与 AI 进行对战。AI 会提前计算 13 步棋，具备较强的博弈能力。","某独立游戏开发者正在为一款经典的“取骨棒”双人策略小游戏开发智能对手，并希望验证该游戏是否存在必胜策略。\n\n### 没有 easyAI 时\n- 开发者需从零手写复杂的博弈树搜索算法，包括负极大值（Negamax）和 Alpha-Beta 剪枝逻辑，代码量大且极易出错。\n- 若要分析游戏是否有必赢解法，必须手动设计状态存储机制，否则重复计算会导致程序运行极其缓慢甚至死机。\n- 调整游戏规则（如改变初始骨棒数量或每次可取数量）后，整个 AI 逻辑和求解器都需要推倒重来，维护成本极高。\n- 缺乏标准化的游戏接口，难以快速切换“人机对战”与“自动推演”模式，测试效率低下。\n\n### 使用 easyAI 后\n- 只需继承 `TwoPlayerGame` 类并定义简单的规则函数（如 `possible_moves` 和 `win`），easyAI 内置的 Negamax 算法即刻提供高水平的智能对手。\n- 利用自带的迭代加深求解器（`solve_with_iterative_deepening`）配合转置表（Transposition Table），瞬间算出先手必胜策略及最优步数。\n- 修改游戏规则仅需调整几个变量或函数逻辑，AI 行为和求解结果自动适配，无需重写核心算法。\n- 通过切换 `Human_Player` 和 `AI_Player` 对象，一行代码即可在“真人试玩”和“全自动数学证明”之间无缝转换。\n\neasyAI 将复杂的博弈论算法封装为简洁的 Python 接口，让开发者能专注于游戏规则设计而非底层算法实现。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZulko_easyAI_78124b9d.png","Zulko",null,"https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FZulko_f7727560.png","@ginkgobioworks","Cambridge, MA","http:\u002F\u002Fzulko.github.io","https:\u002F\u002Fgithub.com\u002FZulko",[80],{"name":81,"color":82,"percentage":83},"Python","#3572A5",100,656,136,"2026-04-06T01:50:31","NOASSERTION",1,"Linux, macOS, Windows","未说明",{"notes":92,"python":93,"dependencies":94},"这是一个纯 Python 框架，用于双人抽象游戏（如井字棋、四子棋等），底层使用 Negamax 算法及 alpha-beta 剪枝。安装需要 pip 或直接运行 setup.py。除了核心库外，运行部分示例需要额外安装 Numpy。该工具不涉及深度学习，因此无 GPU 需求。","2.x 或 3.x (基于 'sudo python' 和 'pure-Python' 描述，未指定具体版本)",[95],"numpy",[13,14,15],[98,99,100,101,102,103,104],"minimax","negamax","ai","game-development","two-player","sss-algorithm","dual-algorithm","2026-03-27T02:49:30.150509","2026-04-11T08:01:47.687429",[108,113,117,122,126,131,135],{"id":109,"question_zh":110,"answer_zh":111,"source_url":112},29134,"为什么 AI（Negamax 算法）有时无法在一步内获胜或做出看似愚蠢的短期移动？","这是因为 Negamax 算法如果评分只有简单的输赢（如 100 或 0），会缺乏对局势的长期评估。建议引入短期战术评分：将胜利设为 100，失败设为 -100，而其他局势根据棋盘状态赋予 -50.0 到 +50.0 之间的分数。挑战在于制定这些分数的规则。可以通过遗传算法发现最佳战术规则，或者手动定义规则，让 AI 能识别更有利的短期局面，从而避免短视行为。","https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fissues\u002F47",{"id":114,"question_zh":115,"answer_zh":116,"source_url":112},29135,"如何让 AI 在多个得分相同的最佳移动中随机选择一个，而不是总是选第一个？","目前库中没有内置的直接方法来实现此功能。不过，社区贡献了替代算法如 SSS（参见 easyAI\u002FAI\u002FSSS.py），可能在某些游戏（如四子棋）中表现更好。如果需要此功能，可能需要修改源码或在调用层自行实现随机选择逻辑。",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},29136,"如何显著提升 Negamax 算法的性能？","可以通过编写非递归版本来大幅提升性能。一位贡献者通过减少递归深度获得了 400% 的性能提升，而完全迭代的非递归版本又能额外提升 50% 的速度（在 Mancala 游戏中测试）。维护者建议将其作为一个新的类 `NonRecursiveNegamax` 加入库中，因为其使用条件与普通递归版不同。","https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fissues\u002F20",{"id":123,"question_zh":124,"answer_zh":125,"source_url":121},29137,"实现非递归版 Negamax 算法有哪些限制和前提条件？","非递归版本有两个主要限制：1. 游戏类除了需要 `ttentry()` 方法外，还必须实现 `ttrecover()` 方法，用于从不可变的键恢复棋盘状态；如果游戏太复杂无法恢复，则必须使用递归版。2. 游戏必须是“功能性”的，即完全可重复，不能包含 `random` 随机性或外部输入，否则会导致错误。此外，非递归版本通常会忽略 `unmake_move` 方法，且初期版本可能不支持转置表（TT table）。",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},29138,"当多个移动得分相同时，如何根据战略意义选择更好的那一个？","可以在 `TwoPlayersGame` 类中添加一个可选函数 `judge_best_of_equal_moves(self, equal_move_list)`。该函数仅在 Negamax 算法结束时，当发现多个移动得分相等时被调用。开发者可以在此函数中编写逻辑，比较这些移动并返回战略上更优的一个。维护者确认这是正确的实现方向。","https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fissues\u002F18",{"id":132,"question_zh":133,"answer_zh":134,"source_url":130},29139,"如何在评分中平衡长期战略和短期战术，避免战术评分覆盖战略评分？","建议将战术评分作为适应度（fitness）的一小部分。例如，将主要战略得分乘以 10，然后加上范围较小（如 -3 到 +3）的战术考量分数。这样可以确保战术因素不会压倒战略决策。也可以考虑使用浮点数作为适应度得分，虽然这会因计算量增加而降低速度，但能更精细地控制权重。",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},29140,"是否有其他语言版本的 easyAI 或其核心算法可用？","有社区成员正在开发 Nim 语言版本，包括 `two_player_game` 类和 `negamax` 算法（含递归和非递归版）。性能测试显示，在开启编译器“快速”优化后，Nim 版本的运行速度（0.129 秒）远快于 Python 2.7 版本（7.658 秒）。相关代码和视频演示可在项目作者的频道找到。","https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fissues\u002F36",[141],{"id":142,"version":143,"summary_zh":144,"released_at":145},197939,"easyAI-v2.1.0","## [2.1.0](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcompare\u002FeasyAI-v2.0.12...easyAI-v2.1.0) (2026-01-12)\n\n\n### 功能特性\n\n* 添加 release-please ([98583cb](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F98583cb4c91b3202570deaa61eb926c15bc3d690))\n* 改进发布流程 ([cb56a82](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002Fcb56a823a80ec627c66f3564fc0be7955bfbd166))\n* 项目文件、GitHub 工作流等现代化改造 ([266cdd1](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F266cdd15f9d5c7eca2b58b9db0b61fa2fa7b9782))\n\n\n### 错误修复\n\n* release-please ([6fc8ddd](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F6fc8dddcd136fea86f659d5ab1c1b8c0758aefea))\n* release-please ([6aa7865](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F6aa786550acb1b86af3ac50b6cff68c0f6785aff))\n* release-please ([73238a4](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F73238a4985fb21b9d21bcfc444a227f5d716b7f8))\n* release-please ([e1ce713](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002Fe1ce7132a94b8e55d1fbda265975a5af4f799068))\n* release-please ([39239ae](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F39239aeeaa0608c86c37331bc4a94d8cf5e9608a))\n* 测试通过 ([1a0c277](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F1a0c277bf28a39a8997d464000026e3402544d20))\n* tests.yml ([b2f88a4](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002Fb2f88a44254ccf4c7dbea0e9c1baf0b98b7e1d94))\n* tests.yml ([e4a1fc6](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002Fe4a1fc6d44bd12f87d5eda1fc394bf88b93ee231))\n* tests.yml ([e23600f](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002Fe23600ff5c29ee59d678b14fa911f5e8934d19d2))\n* tests.yml ([246d239](https:\u002F\u002Fgithub.com\u002FZulko\u002FeasyAI\u002Fcommit\u002F246d23966d79ecbe84187d1b273fe6898226b4db))","2026-01-12T00:40:32"]