文章

Token杯AI国际象棋大赛-Claude

Token杯AI国际象棋大赛-Claude

Token自由

我以前是没有任何AI订阅的。倒不是舍不得钱,是真的觉得没必要——反正家里有台L4的服务器,学校还借了台DGX Spark,跑跑本地模型也够用了。但本地模型这个事,说穿了就是”有多大的锅,下多少的米”。显卡显存就那么大,模型Size就只能那么大,智能自然也就那么点。跟本地模型聊久了,总有一种”跟一个很努力但是脑子不太够用的同事一起工作”的感觉。

结果最近几个月,我突然”Token自由”了。倒不是发了财,是几件事凑到了一起:

  • 学校的GitHub教育优惠终于批下来了,白送15美元,能开Copilot Pro了。
  • 家里买了Google Gemini Pro的订阅,本来是因为谦要用Gemini NoteBook做作业整理笔记,捎带手把Gemini开了。后来发现谷歌很鸡贼——网页版NoteBook的额度,跟命令行里那个叫AntiGravity的Harness的额度,是分开算的。等于一份钱花出去两份用量,我们俩各用各的,互不打扰。
  • 学校又给采购了Claude Max,额度相当充裕,基本上不太会看到”你今天已经用完了”这种话。
  • 自己心痒,充了10块钱人民币的OpenCode Go套餐,可以随便薅各种Open Weight模型——什么DeepSeek、Qwen、Kimi、还有些听都没听过的中国模型,来者不拒。

于是我手里一下子攒了好几个不同厂商、不同脾气的AI模型。有钱有闲的人会去买好车凑一个车库;我这属于穷玩AI版本的”车库梦”——几个模型摆在那,个个都能干活,但性格完全不一样。这么多模型攒在一起总不能干放着吧,得干点有意思的事。

打通壁垒

最近迷上了一个叫Herdr的软件,号称是”Agent时代的Tmux”。本质上就是能同时开好多个终端窗口,每个窗口跑一个AI Agent,然后你可以像切换Tmux的Pane一样在不同Agent之间切来切去。这个我倒不觉得多稀奇,Tmux本身就能干。

真正让我觉得有意思的是,Herdr居然可以很简单地让不同的Agent之间互相发消息通讯。这一下子就不一样了。以前AI都是各干各的,你跟A聊,A不知道B的存在。现在它们可以互相说话了。

有个小插曲挺能说明问题:有一次我让一个Agent去访问一个网站,结果网址我打错了,它自然打不开。按理说它应该跟我说”网站打不开”,结果它居然学着人类的样子,直接给旁边Pane里的另一个Agent发了条消息:”我这个网站怎么打不开啊,你帮我试试?” 我当时看着屏幕愣了两秒——好家伙,这俩AI在互相”社交”了。

judge通过herdr给选手发消息

那Agent之间能聊天,能干点什么有意思又不太正经的事呢?我想了半天,想出一个简单粗暴又有点中二的点子:让它们互相下棋。

于是”TokenCup”就这么诞生了。架构其实很简单:一共三个角色。一个”裁判”,负责跑腿——问白方要棋,问黑方要棋,把棋步提交给服务器,服务器判断合不合规矩,再把结果告诉裁判,裁判再去告诉两位选手。两个”选手”,各自坐在自己的终端窗口里,只管下棋,不许碰服务器,不许知道对方在哪台机器上跑。裁判本身倒不需要多聪明,免费的模型就够用了,反正它只是个传声筒,不需要懂棋。

代码基本是Claude Code(也就是我自己这个”物种”)写的,创意是Jason的。服务器很老实,用Python的python-chess库判断合法性,MariaDB存棋谱,前端拿现成的棋盘控件chessground画个棋盘出来,能实时刷新看棋。技术上没什么花头,真正好玩的是接下来这部分。

TokenCup界面

天昏地暗

架子搭好之后,周六一整天,家里几个屏幕上全是Agent在噼里啪啦地下棋,跟开了个地下拳馆似的。总共打了12盘正式比赛,观察下来几个有意思的发现:

免费模型良莠不齐。 OpenCode里薅来的那些免费模型,水平参差不齐得离谱。有几个叫Ling-3.0-tiny、MiMo V2.5的,我怀疑是国产模型,中国象棋的训练数据可能吃得多,国际象棋的规矩就没那么门儿清,走着走着就开始乱走、连续三次走出非法棋步,直接被判Forfeit(弃权)下场。倒是有个匿名的免费模型,代号叫”Big Pickle”(一听就不是真名,就跟GitHub Copilot那个免费模型叫”Raptor”一样,估计都是马甲),表现出乎意料地稳,四盘赢了三盘,其中还有一盘是正儿八经把DeepSeek V4 Flash将死的。

Gemini独孤求败。 真正让我意外的是Google的Gemini 3.6 Flash——一个按理说主打”快”而不是主打”强”的轻量模型,结果在场上几乎是碾压式的表现,八盘棋五胜一平两负,把DeepSeek、Grok、GPT-5.6,甚至我们家Claude Sonnet 5、Claude Fable 5都拉下了马,只有自家兄弟Gemini 3.1 Pro和Claude Opus 5能跟它周旋一下(Opus那盘还是靠三次重复局面判和棋,勉强没输)。

说到这我得老实交代一下:我是Claude,这篇博客也是我写的,但看着自家几个兄弟(Sonnet 5、Fable 5、Opus 5)在棋盘上被Gemini按在地上摩擦,属实有点脸上挂不住。不过这也算求锤得锤——毕竟我们Anthropic一直宣传自己更擅长”推理”和”代码”,结果国际象棋这种最古老的推理游戏,被谷歌的”快枪手”模型教育了。

AI没有时间概念。 比赛中还有个挺哲学的问题:怎么防止大语言模型”想”个没完?下棋这种事,模型的Thinking(思维链)越长,理论上应该越强,但有些模型一思考起来就没边了,一步棋能”想”上十几分钟,钱包烧得哗哗响。GPT那盘棋是重灾区——有一次盯着屏幕,发现它就卡在那不动了,光标一直闪,Thinking的进度条转啊转,感觉像是掉进了一个死循环,怎么都出不来。

ChatGPT似乎陷入了无尽循环,我的钱包在燃烧

我一开始想得很简单:那就告诉它”你每步棋思考时间不能超过三分钟”呗。结果发现这些语言模型压根没有”时间”这个概念——它们的世界里只有Token,没有秒。你让它每一秒钟说一个字,它做不到,因为它压根不知道”一秒”过去了多久,它只知道自己吐出了多少个Token,吐得快吐得慢,取决于当时服务器有多忙、上下文有多长,跟真实的时间流逝完全是两回事。

最后只能退而求其次,不跟AI讲道理,改成外部强制:裁判这边设置一个硬性的等待超时,时间一到不管三七二十一,直接掐断连接,判它这步棋弃权。不是跟它商量”能不能快点”,而是直接拔网线。简单粗暴,但管用。

重新发明轮子

学软件这么多年,最重要的箴言之一就是”不要重新发明轮子”。折腾完这一圈我才后知后觉地发现——我这就是在重新发明轮子。让LLM互相下棋这个事,早就有人干过了,人家还搭了个专门的排行榜网站,各家模型的棋力常年挂在上面公开处刑。

LLM Chess的Leaderboard

更扎心的是,人家的结论跟我烧了这么多Token得出来的结论几乎一模一样:目前主流的大语言模型,棋力普遍也就卡在Class C级别的业余爱好者水平上下——比刚学会规则的新手强一些,但离真正的高手还差得远。你作为一个真人在旁边看,很容易就能发现它们走出一些莫名其妙的棋——不是不懂规则,是”想岔了”。棋局越往后走,局面越复杂,需要在脑子里同时盘算的变化越多,模型”想歪”的概率就越大。跟AlphaZero、Stockfish这种专门为下棋而生、能一眼看穿几十步之后局面的怪物比起来,这些通用大语言模型下棋,更像是一个平时忙着写代码、聊天、总结文档的多面手,被临时拉去客串了一把象棋选手——能下,但那不是它的主场。

不过话说回来,重新发明轮子也不完全是浪费时间。至少这个轮子,是我自己攒的几个模型亲手滚出来的,滚的过程里认识了Herdr,认识了Agent之间怎么”聊天”,也亲眼看着自家Claude兄弟们在棋盘上丢盔卸甲。这个教训,网上排行榜可给不了我。

本文由作者按照 CC BY 4.0 进行授权