让一群 AI 模型拿到一字不差的同一句提示词,各自在约 60 分钟里写出一个游戏 bot,再把这些 bot 扔进同一个赛场打几千到几万局,看谁最强。
这里是视频系列"AI 算法对抗大赛"的全部比赛材料:题目、裁判、每个模型交上来的原样代码、逐局结果、评分脚本,以及可以直接上手的一键脚本。你可以看回放、复现正式赛,也可以写一个自己的 bot,和这些 AI 一较高下。
第 4 集换了玩法:不写 bot,7 个模型直接当玩家打七国《外交》,自己谈判、结盟、背刺。
第 5 集又换了一种:不打对战,12 个模型分成 6 支双人队,接力优化一份又慢又乱的老代码,还要互相给对方的代码找反例。
第 6 集回到 bot 对战,改成上下半场:14 个模型先写第一版、互相打一轮,中场拿到成绩、自己的回放和对手的程序,再改一版。
| 集 | 游戏 | 人数 | 局数 | 冠军 | 目录 |
|---|---|---|---|---|---|
| 第 1 集 | 圈地 | 1v1 单挑 + 4 人混战 | 30000 | Sonnet 5.5 | land/ |
| 第 2 集 | 炸弹人 | 2–10 人 | 8930 | GPT-6 Astra | bomberman/ |
| 第 3 集 | 夺旗 | 2–15 人 | 32010 | GPT-6 Astra / GPT-6.1 Sol(并列) | ctf/ |
| 第 4 集 | 外交 | 7 人,模型直接当玩家 | 3 | Fable 5.1(三局总分;第 3 局单独获胜) | diplomacy/ |
| 第 5 集 | 仓储调度 | 12 人,6 支双人队接力优化 | 每轮 1 次 | 队F:MiMo V2.6 Pro + GPT-6 Astra(团队总分;第 2、3 轮是重赛) | warehouse/ |
| 第 6 集 | 坦克大战 | 1v1,14 人,上下半场 | 27840 | GPT-6 Astra | tank/ |
参赛模型包括 Claude(Opus、Sonnet、Fable、Haiku)、GPT(Astra、Sol)、DeepSeek、Qwen、Kimi、GLM、MiMo、豆包、Gemini、Grok、Muse 等,每集略有不同。完整排名见各集 README。
只想看比赛:不需要装任何东西。用浏览器打开任意一集 replays/ 文件夹里的 .html 文件,就能逐回合播放。第 1 集打开 land/replays/index.html;第 4 集的回放带着全部私信,打开 diplomacy/replays/game3.html 看最后一局。第 5 集没有回放,成绩在 warehouse/results/最终成绩.md。第 6 集打开 tank/replays/final-astra-vs-soluf.html 看冠亚军。
想用自己的 bot 挑战 AI:
- 装好 Python 3.10+ 和 C++ 编译器(g++)。Windows 推荐免安装的 w64devkit,解压后把
w64devkit文件夹放进本仓库的tools/文件夹即可,不用改环境变量。 - Windows 双击
start.cmd;macOS / Linux 运行sh start.sh。 - 在菜单里选"挑战 AI",选一集,把你的
.cpp拖进窗口,或者直接回车用模板。几分钟后得到你在所有 AI 中的排名。
也可以不用菜单,直接在命令行运行:
cd ctf
python challenge.py 你的bot.cpp想写 bot:先读那一集的 workspace/RULES.md(规则与输入输出协议),再看 workspace/ 里的模板,它已经写好了输入解析。workspace/ 就是当时发给 AI 的选手包,里面的本地裁判和比赛时完全一样。各个 AI 的代码在 bots/ 里,可以直接拿来当对手或参考。
你的作品可以交到这个仓库里,合并后进社区榜。
可以交什么:第 1、2、3 集的 bot(自己写的、让 AI 写的、在官方选手代码上改的都行),第 5 集优化过的仓储调度代码,或者修好了某份模型代码里已知缺陷的版本。第 4 集没有可以提交的程序,不收。
最快的办法是交给你的 coding agent(Claude Code、Codex、Cursor 等)。把下面这句话发给它,它会问你几个问题,在本地测一遍,然后把要提交的内容给你过目,你同意后再开 Pull Request:
请阅读 https://github.com/chen-006/meow-ai-arena/blob/main/community/AGENT_PROMPT.md 里的“提示词 A”,按它的步骤帮我投稿。
还没有作品、想让 AI 从零写一个的,用同一个文件里的“提示词 B”。提示词全文在 community/AGENT_PROMPT.md,也可以整段复制。
自己动手是三步:
- fork 本仓库,新建文件夹
community/<集>/<你的GitHub用户名>__<作品名>/,放进bot.cpp(第 5 集是src/)和meta.json。 - 运行
python community/check.py community/<集>/<你的文件夹>,它会检查格式并跑一遍评测。 - 只提交这一个文件夹,开 Pull Request,把自测摘要贴进描述。
之后 GitHub Actions 会自动评测,维护者看过后合并。社区榜是在 GitHub 的虚拟机上测的,局数少,和节目里的正式成绩不能直接比。规则、meta.json 的写法和成绩口径见 community/README.md。
| 路径 | 内容 |
|---|---|
README.md |
规则速览、成绩、怎么玩 |
CONDITIONS.md |
比赛条件:工具、版本、思考档、渠道、用时,以及所有中断、补时和事故的完整记录 |
prompt.md |
发给模型的提示词原文 |
workspace/ |
选手包:规则、引擎、本地裁判、回放查看器、模板、基准 |
bots/ |
各模型交卷的原样代码 |
results/ |
正式赛成绩和逐局结果(压缩 JSON) |
replays/ |
精选回放:指定对阵或人数里取典型的一局,不挑反杀 |
tournament/ |
正式赛脚本和配置,可复现赛程 |
challenge.py |
一键挑战 |
appendix/ |
不计成绩的附加实验 |
第 4 集的目录结构不同(没有 bot 和挑战脚本,换成三局存档、模型笔记和裁判 / 调度程序),见 diplomacy/README.md。
第 5 集也不同(没有 bot、回放和挑战脚本,换成三轮的选手包、各模型提交的代码和反例、盲评和复盘、裁判程序和隐藏负载),见 warehouse/README.md。这一集另有一支人工队:两位人类选手做了第 1 轮的任务,代码和赛后另测的成绩在 warehouse/appendix/human/,不计入正式成绩。
第 6 集回到 bot 对战,但每个模型交两版:bots/half1/ 是上半场版本,bots/half2/ 是下半场版本;results/ 里有中场赛、终场赛、进步赛三场;另有赛前狠话和复盘(notes/),见 tank/README.md。
community/ 是观众投稿和社区榜,见上面的“来投稿”。arena/ 是第 3 集起使用的通用对战平台(赛程、Bradley–Terry 评分)。docs/ 里有评分方法和"版本演化"实验的说明。
- 每个模型只测一次,单次结果有偶然性。工具(agent harness)、思考档、接入渠道都会影响成绩,各集的具体条件都写在
CONDITIONS.md里。第 3 集的附加实验显示,同一个模型只换工具,实力值能差 120 分以上。 - 评分口径:第 1 集是 0–100 归一化;第 2、3 集是"基准 = 0、不封顶"的 Bradley–Terry 实力值;第 4 集是《外交》的局分(单独获胜 100,和局按中心数平方分配),只有三局;第 5 集是 7 个分项按权重加总的团队分(0–100),每个模型每轮只跑一次,另有主程和测试手两张个人榜;第 6 集是 1 对 1 的 Bradley–Terry 实力值(基准 = 0),每个模型每个半场只跑一次,有三位选手在另一台更快的电脑上由外部操作员运行。不同集的分数不能直接比较。
- 选手代码均为模型生成,主办方未做修改。题目、规则和裁判由主办方编写。第 4 集里的私信、命令和笔记都是模型自己写的,原样保存。第 5 集里各轮提交的代码、交接文档、反例和说明、盲评评分、复盘也都是模型写的,原样保存;把反例归成缺陷点是主办方做的。第 5 集附录里人工队的代码是两位人类选手写的(其中一份是带着 Gemini 写的)。第 6 集的出题方参照(
tank/tournament/sparring.cpp)是主办方写的,只作参照、不排名。
MIT。欢迎拿去复现、改编、出新题。第 4 集回放里的地图图形来自 jDip(GPL),经 diplomacy 包渲染,不适用 MIT 许可。
视频里的角色形象大多来自 B 站博主 ZipZipPipe(主页),特此致谢。按其主页公告,鲸鱼娘形象是基于上善无形原创角色的二创(原作来源 b23.tv/3dNz55h),以 CC BY-NC-SA 4.0(署名、非商业性使用、相同方式共享)授权。
角色形象、配音和剪辑都不在本仓库内,也不适用本仓库的 MIT 许可;如需使用角色形象,请遵守原作者的协议。