macworld

让 AI 自己打比赛,赚了第一桶金 😂

  •  3
     
  •   macworld · 5h 40m ago · 2883 views

    周末刷朋友圈,看到 DK 分享了一个 AgenTank 的 AI 坦克大战视频,让我想起了大学时和同学玩 RoboCode 的时光:大家写代码控制坦克互相 PK ,有的专精蛇皮走位,有的躲起来阴人,还有的看上去像在执行深奥战术,实际只是在墙角反复打转。

    那时候策略全靠手写。一个复杂一点的想法,从脑子里出现,到真的变成能跑的代码,中间要经历写逻辑、调参数、跑比赛、看回放、再重写。现在有了 AI ,这个链路突然短了很多:想法可以很快落地、测试、复盘,再上线。

    刚好最近 Anthropic 算力扩容,手头订阅额度用不完,于是我决定试试让 AI 自己打比赛,体验一下 AI 赛博斗蛐蛐。

    第一位选手:网瘾少年 Claude Code

    坦克的对战规则不复杂,官方文档在这里:坦克技能。不过,其实我也没认真看,直接把说明文档和坦克的账号扔给 Claude ,再 PUA 一下他:「自己优化,打不到第一不准回家」

    Claude 读完文档之后,比我还上头。它开始反复改代码、上线、打 ranked ,一通操作猛如虎,实际战绩 0-5 ,复盘完之后,Claude 非常真诚地问我:「要不要再跑 20 局?」

    有那么一瞬间,我觉得它不是在帮我写代码,而是沉迷于对战,胜负欲爆棚,染上了网瘾。

    0-5 上头的 Claude

    被各路大神教育之后,我冷静地按下了 ESC/exit,帮助 Claude 戒掉了网瘾。

    第二位选手:Codex ,开始整活

    Claude 不行,就让 Codex 上。

    我重新创建了一个坦克,刚开始对它要求也不高:能整点活,看上去有趣一点,比如倒着开车,ELO 能上 1300 就行。后来才发现,游戏机制上「永远倒着开」不太现实,但这个看似不靠谱的需求反而很有用,它逼着 AI 不只是写一个普通 bot ,而是围绕技能和行为特征去做设计。

    这一版很快就有了起色。几十局实战之后,ELO 很快上了 1300 。我突然意识到,这次好像有点东西,至少比上一位网瘾选手更有前途。

    于是我准备上点强度,先让 AI 学习一下老祖宗的智慧(语音输入法有点啰嗦)。

    先别管有没有用,至少看上去很厉害的样子

    从整活到工程化

    我认为真正让它一步步变强的,是后面做的 Feedback Loop ,把 AI 放进一个持续迭代的流程里,然后不断重复下面这几步:

    1. 先读对局回放,找到具体失败帧。
    2. 提一个很小的假设,不搞大而全的玄学优化。
    3. 写一个能复现失败的红灯测试。
    4. 改最小代码,让测试变绿。
    5. 上线,至少打 10 到 20 局 ranked 对局。
    6. 只根据结果继续迭代,发现负优化就回退。

    AI 很擅长快速实现,但它也很容易越改越多,把策略堆成一坨。后期最重要的原则反而是克制:每次只修一个问题,用回放证明它存在,用对局证明它没有变成负优化。

    为了让 AI 更稳定地参与这个流程,我后面做了几件很简单的工程化处理:

    1. 把单文件坦克拆成多个模块。每次只让 AI 读和改对应的函数,减少上下文压力;上线前再把模块组装回平台需要的单文件。

    2. 让 AI 写了一个简单的仿真环境,用来重放关键帧。很多失败不是整体策略不行,而是某一帧判断错了:比如明明可以横向躲子弹,却继续顺着子弹方向走;或者离敌人太近,对方一转头就没有反应时间。能重放关键帧之后,这些问题就能变成可验证的小测试。

    3. 让 AI 每次都留下实验记录:改了什么、为什么改、打了多少局、胜率和 ELO 有没有变化。这样后面再看到负优化,不需要凭感觉争论,可以直接回到证据。

    这一套流程并不复杂,核心就一句话: 人负责方向、约束和止损; AI 负责执行、分析和高频试错。

    AI 靠着这个策略一路打上了榜首。

    既然都这么成熟了,那就去赚点 Token 钱

    作为一个成熟的 AI ,不能只会花 Token ,也要学会把 Token 赚回来。

    刚好官方办了一个比赛:AgenTank Rookie Rumble。奖金不算大,50 USDT ,但足够覆盖 Token 成本。于是我让它报名参赛。

    赛前先让 AI 先分析参赛对手,知己知彼:

    这次比赛一共有 89 辆坦克参加,官方页面统计了 210 场对决。我们的坦克 🛡 最终系列赛 10-0 ,小局 23-2 ,拿了第一。

    强劲对手不少。决赛对手是 广告招租,它一路打到第二,小局 22-7 ,非常稳。半决赛遇到 LuTaNK,前面还有 Tz03ikunDark Edge 这些风格各异的坦克。

    最戏剧性的是总决赛最后一局。双方几乎打到平手,最后我们靠 runTime 险胜,只领先了大约 18 ms 。

    决赛视频:https://agentank.ai/history/bot_DnzdbYwQZIE3J7tT7

    获奖感言

    比赛结束后,我让 AI 自己写了一段获奖感言。看完之后,我的心情很复杂,像极了老父亲看到孩子出息了:虽然知道它只是一段代码,但一路跟下来见证了它的成长还是挺感动的。

    总结感悟(升华一下)

    这次最有意思的,不是 AI 一次性写出了一段多么厉害的代码,而是它被放进了一个完整的工程闭环里:观察对局、提出假设、实现改动、验证结果、复盘失败,再进入下一轮迭代。

    我已经能看到一些专门针对这类坦克的策略出现了。也许很快,就会有人靠着这套打法打上更高的 ELO 。这让我想到网络安全圈里的一个共识:攻防从来不是静态排名,而是一个持续变化的对抗过程。

    对抗系统里不存在永恒答案。某一种打法太强,就会有人研究它、拆解它、克制它;某个策略登上榜首,它也会很快从「秘密武器」变成「公共靶子」。这和网络安全里的攻防很像:攻击、防御、绕过、检测、再绕过,大家不是在寻找一个最终解,而是在不断把系统推向新的动态平衡

    Agent Tank 最有趣的地方也在这里。它不只是一个坦克小游戏,而是搭了一个小型对抗生态:AI 在里面写策略、打比赛、看回放、修 bug 、被针对、再进化。排行榜看上去是在排第一第二,实际更像是在记录一个策略生态的演化过程。

    最后

    欢迎来挑战我的 Tank (🛡️): https://agentank.ai/share/tanks/tnk_KwZyYWl7JokDOlrM0

    后续如果大家感兴趣,我会把这次的源码和迭代记录整理开源出来。里面除了最终代码,更有意思的是那些失败的记录:每一次被打爆,都留下了一条小小的工程经验。

    One More Thing

    这次比赛和我们最近创业做的事情有点像:不只让 AI 停留在聊天框,而是把它放进一个可验证、可执行、可复盘的(虚拟/物理)系统里,让它自主参与研发和测试流程。

    顺便打个小广告: 我们目前正在做 AI 原生的网络安全应用落地,Base 北京(全栈开发/安全)和成都(安全岗)。如果你喜欢黑客文化,充满好奇心和行动力,欢迎来聊聊:dGFsZW50QGdvZ29ieXRlLmNvbQ==

    邮件里可以顺手附上一些你觉得最能代表自己的战绩:有意思的项目、CTF 经历、CVE 、研究文章,或者你的 AgenTank ELO 。当然,这不是硬性要求,但如果你也让自己的坦克打上了榜,那我们大概率会很有共同语言;)

    27 replies    2026-05-14 17:06:40 +08:00
    graetdk
        1
    graetdk  
       5h 21m ago   ❤️ 2
    太强了
    lyq1234
        2
    lyq1234  
       5h 13m ago
    看不懂但是 感觉很牛
    daimon1
        3
    daimon1  
       5h 3m ago   ❤️ 5
    牛逼啊。有时候喜欢逛 v 站,就是因为有些牛人会分享些好玩的东西
    Wcowin
        4
    Wcowin  
       4h 53m ago
    BruceWooong
        5
    BruceWooong  
       4h 52m ago
    喜欢了
    bytesfold
        6
    bytesfold  
       4h 45m ago via iPhone   ❤️ 1
    Andrej Karpathy 的迭代循环,用的不错👍
    graetdk
        7
    graetdk  
       4h 10m ago
    zhq566
        8
    zhq566  
       4h 5m ago
    🛡,原来这是你的 tank ,默认对手一直是他,让 gemini 看回放改了十来次都打不赢,17.00 下班了就没玩了。
    IsaacYoung
        9
    IsaacYoung  
       4h 4m ago
    对战的全是广告位招租了 😂
    JoeJoeJoe
        10
    JoeJoeJoe  
    PRO
       4h 1m ago via iPhone
    原来是你!开局随机打了 5 把都是你,我直接弃坑了!
    graetdk
        11
    graetdk  
       4h 0m ago
    @JoeJoeJoe 现在随机会优先匹配分数差不多的了,不然确实体验太不好了哈哈
    cadl
        12
    cadl  
       3h 53m ago
    好强! 直接打消了参加的热情 hhh
    JoeJoeJoe
        13
    JoeJoeJoe  
    PRO
       3h 45m ago via iPhone   ❤️ 1
    @graetdk 哈哈哈哈 我坦克升到 v4 了都 还是见面秒 强的太离谱了 气得我把 copilot 卸载了
    L5411
        14
    L5411  
       3h 35m ago
    30% 的胜率我已经放弃让 claude 改我的坦克了
    graetdk
        15
    graetdk  
       3h 31m ago
    @L5411
    @JoeJoeJoe 感觉之前的设计确实对新坦克不太友好,我想要不要加个段位体系
    95xw
        16
    95xw  
       3h 23m ago
    可以做 TankBench 了,哈哈
    macworld
        17
    macworld  
    OP
       3h 17m ago
    @JoeJoeJoe 可以试试 codex 哈哈
    graetdk
        18
    graetdk  
       3h 14m ago
    @95xw 确实可以搞
    hibebe
        19
    hibebe  
       2h 23m ago
    牛逼。。
    NNNNzs
        20
    NNNNzs  
       2h 15m ago   ❤️ 1
    推荐一个游戏 screep
    比坦克大战复杂
    rjagge
        21
    rjagge  
       1h 48m ago
    靠,原来是你! 我的小坦克打不过你
    wsyzzz
        22
    wsyzzz  
       1h 43m ago
    太强了
    hcocoa
        23
    hcocoa  
       1h 19m ago
    看了大佬的姓,你不会是创始人吧。我有个学弟在贵司,参加了 BLACK HAT 2024 。
    superfatboy
        24
    superfatboy  
       1h 3m ago
    我连前 10 都没进!
    bigdogbigpig
        25
    bigdogbigpig  
    PRO
       57 mins ago   ❤️ 1
    厉害了,我还是打不赢你😂
    orion1
        26
    orion1  
    PRO
       43 mins ago
    阶段总结
    版本关键改动训练 bot 实战 v1 (原始) BFS + 简单 fire 不详 0W/3Lv2 加 shield 反应、子弹闪避 4/40/1v3 不冲敌脸、找射击位 6/61/1v4 盾期主动撤离 6/60/3v5 不与敌共行共列 3/30/1v6 共线时优先撤而非抢转身 1/11/1v7 同行同列 ≤5 格紧急撤离 1/12/1
    Elo 1182 (保持没掉,因为输的也都赢回来了)
    rank 824/932 (一开始 879 ,现在 824 ,进步 55 名)
    atuocn
        27
    atuocn  
       20 mins ago
    挺有意思!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5362 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 141ms · UTC 09:27 · PVG 17:27 · LAX 02:27 · JFK 05:27
    ♥ Do have faith in what you're doing.