macworld

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

  •  6
     
  •   macworld · May 14 · 6545 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 。当然,这不是硬性要求,但如果你也让自己的坦克打上了榜,那我们大概率会很有共同语言;)

    38 replies    2026-05-30 22:42:18 +08:00
    graetdk
        1
    graetdk  
       May 14   ❤️ 2
    太强了
    lyq1234
        2
    lyq1234  
       May 14
    看不懂但是 感觉很牛
    daimon1
        3
    daimon1  
       May 14   ❤️ 7
    牛逼啊。有时候喜欢逛 v 站,就是因为有些牛人会分享些好玩的东西
    Wcowin
        4
    Wcowin  
       May 14
    BruceWooong
        5
    BruceWooong  
       May 14
    喜欢了
    bytesfold
        6
    bytesfold  
       May 14 via iPhone   ❤️ 1
    Andrej Karpathy 的迭代循环,用的不错👍
    zhq566
        8
    zhq566  
       May 14
    🛡,原来这是你的 tank ,默认对手一直是他,让 gemini 看回放改了十来次都打不赢,17.00 下班了就没玩了。
    IsaacYoung
        9
    IsaacYoung  
       May 14
    对战的全是广告位招租了 😂
    JoeJoeJoe
        10
    JoeJoeJoe  
    PRO
       May 14 via iPhone
    原来是你!开局随机打了 5 把都是你,我直接弃坑了!
    graetdk
        11
    graetdk  
       May 14
    @JoeJoeJoe 现在随机会优先匹配分数差不多的了,不然确实体验太不好了哈哈
    cadl
        12
    cadl  
       May 14
    好强! 直接打消了参加的热情 hhh
    JoeJoeJoe
        13
    JoeJoeJoe  
    PRO
       May 14 via iPhone   ❤️ 1
    @graetdk 哈哈哈哈 我坦克升到 v4 了都 还是见面秒 强的太离谱了 气得我把 copilot 卸载了
    L5411
        14
    L5411  
       May 14
    30% 的胜率我已经放弃让 claude 改我的坦克了
    graetdk
        15
    graetdk  
       May 14
    @L5411
    @JoeJoeJoe 感觉之前的设计确实对新坦克不太友好,我想要不要加个段位体系
    95xw
        16
    95xw  
       May 14   ❤️ 1
    可以做 TankBench 了,哈哈
    macworld
        17
    macworld  
    OP
       May 14
    @JoeJoeJoe 可以试试 codex 哈哈
    graetdk
        18
    graetdk  
       May 14
    @95xw 确实可以搞
    hibebe
        19
    hibebe  
       May 14
    牛逼。。
    NNNNzs
        20
    NNNNzs  
       May 14   ❤️ 1
    推荐一个游戏 screep
    比坦克大战复杂
    rjagge
        21
    rjagge  
       May 14
    靠,原来是你! 我的小坦克打不过你
    wsyzzz
        22
    wsyzzz  
       May 14
    太强了
    hcocoa
        23
    hcocoa  
       May 14
    看了大佬的姓,你不会是创始人吧。我有个学弟在贵司,参加了 BLACK HAT 2024 。
    superfatboy
        24
    superfatboy  
       May 14
    我连前 10 都没进!
    bigdogbigpig
        25
    bigdogbigpig  
    PRO
       May 14   ❤️ 1
    厉害了,我还是打不赢你😂
    orion1
        26
    orion1  
    PRO
       May 14
    阶段总结
    版本关键改动训练 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  
       May 14
    挺有意思!
    macworld
        28
    macworld  
    OP
       May 14
    @hcocoa 是的,大概知道你说的谁了,这个圈子真小😉
    yufeng0681
        29
    yufeng0681  
       May 14   ❤️ 1
    看似一个小游戏, 其实落实到 第三次世界大战, 就是坦克,坦克车, 无人机的 打仗策略,拥有多样性的算法的庄家,最后能有一批超级坦克,灭掉笨拙的对手(远程控制的,不够智能的)
    Eillott
        30
    Eillott  
       May 14
    我上网冲浪就是为了看这个
    vbzhou
        31
    vbzhou  
       May 15
    好有意思
    izzzz
        32
    izzzz  
       May 15
    太优质了,有意思
    XLeopard
        33
    XLeopard  
       May 15
    很有趣,同事玩的不亦乐乎
    Haolijia1107
        34
    Haolijia1107  
       May 16 via Android
    @graetdk 好样的,还有这算怎么赢,感知范围这么大
    superherowhd
        35
    superherowhd  
       May 19
    @Wcowin 击败
    doraemonki
        36
    doraemonki  
       May 19
    未击毁的对局会在 128 帧左右结算,我觉得有点太短了
    bcllemon
        37
    bcllemon  
       May 30
    @macworld 如何能获取到历史版本的代码?
    macworld
        38
    macworld  
    OP
       May 30
    @bcllemon 你是指我 tank 的历史版本代码,还是你自己的 tank? 自己的可以在 tank 详情里看到
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2895 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 13:52 · PVG 21:52 · LAX 06:52 · JFK 09:52
    ♥ Do have faith in what you're doing.