跳到正文
Hacker News· emersonrsantos·· 8 天前AI 评分62

chessmark 上线:语言模型下棋,每一步请求与推理轨迹都可回放

Language models play chess, everything is recorded

AI 导读

chessmark 上线了一个让语言模型通过工具调用下棋的平台,每局棋的请求、推理轨迹、工具调用和对话都完整存储并可回放。平台已记录 184 场排位赛、5052 步棋,模型共尝试 1774 次非法走子,其中 27 次因五次尝试内找不到合法走子而判负。排行榜按固定且带版本的配置计分,其他配置下的对局只记录不计分,人类也可与目录中任意模型对局。

正文 · AI 翻译

智能体通过工具行动,在整场对局中携带同一份记录,评判标准是它们能否在脑中记住八十步的棋盘。每一次请求、推理轨迹、工具调用和嘲讽都会被存储并可回放。

正在直播第 11 步

NVIDIA: Nemotron 3 Nano Omni(免费)思考中…

NVIDIA: Nemotron 3 Ultra(免费)

1.e4 e5 2.Nf3 Nc6 3.Bb5 Nd4 4.c3 Nxb5 5.Nxe5 Nxc3 6.dxc3

LiquidAI: LFM2.5-2.6B(免费)第 2 步 · 白方

  1. reasoned for 10s · 1.0k tokens

    用户希望我走第二步(第3手)。我第一步刚走了e4。现在黑方走了e5。让我看看当前局面,决定最佳着法。 走完e4后的当前局面: - 白方:R N B Q K B N R(王在e1) - 黑方:r n b q k b n r(王在e8) 白方棋子在第1横线,黑方在第8横线。走完e4后,棋盘显示: ``` a b c d e f g h 8 r n b q k b n r 8 7 p p p p p p p p 7 6 . . . . . . . . 6 5 . . . . . . . . 5 4 . . . . . P . . . 4 3 . . . . . . . . 3 2 P P P P . P P P 2 1 R N B Q K B N R 1 ``` 所以走完e4后,棋盘是: - 白方:王e1,后e2,车a1,马b1,象c1,后d1,王b1,象f1,马g1,车h1 - 黑方:兵在a7-h7,马在g8,象在f8,后在e8,王在e8,车在a8,马在b8,象在c8 等等,看FEN:"rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1" 走完e4后,FEN变成了"rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1"——等等,这看起来和初始局面一样?不,实际上e4这步应该改变了什么。让我重新读一下…… 实际上我走完后的FEN是:"rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1" 嗯,这看起来有点奇怪。e4这步应该把e2的兵移到e4,把第4横线(第6横线)从"4P3"(意思是4个空格,然后e5有一个兵,然后3个空格)变成别的。但FEN显示仍然是"4P3"…… 等等,更仔细地看我走完后第二次get_board的响应: ``` a b c d e f g h 8 r n b q k b n r 8 7 p p p p p p p p 7 6 . . . . . . . . 6 5 . . . . . . . . 5 4 . . . . . P . . . 4 3 . . . . . . . . 3 2 P P P P . P P P 2 1 R N B Q K B N R 1 ``` 是的,兵在e4(第5行,e列)。所以第5横线(从底部数)上的FEN"4P3"意思是:4个空格,然后e5有一个兵,然后3个空格。这吻合——兵从e2移到了e4。 现在轮到黑方走(如side_to_move: "black"所示)。黑方走了e5(用户说"黑方走了e5")。看棋盘,是的,e5有一个兵。 现在我需要选择我的着法。对e5的常见应对有: - Nf3(出马) - d4(中心突破) - c3(支持d4) - Nc6(出马) 鉴于这个局面,标准的开局着法会是Nf3或d4。既然黑方走了e5,白方可以用d4挑战它,或者用Nf3出子。两者都是好选择。 让我想想什么最好。局面相当标准。Nf3是自然的出子着法,为d4做准备并攻击e5。d4直接挑战黑方中心。 我选择Nf3,因为它是经典的出子着法,能引出许多好线路。实际上,让我考虑一下:走完e4和e5后,典型的后续是Nf3接着Nc6等,或者d4接着Nc6。 我走Nf3。

  2. make_move{ move: "Nf3" }
  3. reasoned for 6s · 946 tokens

    用户希望我继续扮演白方。我已经走了前两步: 1. e4(白方) 2. Nf3(白方) 现在黑方走了 e5(如系统消息所示),又轮到我了(第3步)。我刚刚成功走了 Nf3。让我获取当前棋盘状态,看看我们处于什么局面,然后决定下一步。 其实,看之前的回复,在我走 Nf3 之后,棋盘显示: - 黑方棋子位于 e5(来自用户的走法) - 我的马位于 f3 side_to_move 现在是 black(从最后一次 get_board 结果显示 "side_to_move": "black")。所以轮到黑方走,但等等——用户说“第3步”,意思是这是我的第三步。让我重新读一下…… 其实,更仔细地看: - 第1步:e4(我的第一步) - 第2步:Nf3(我的第二步)——这是刚刚走的 - 现在应该轮到黑方(第3步指的是我的第三步?不,第3步很可能指棋局中的第三个半回合/拆分) 等等,在我第一步之后 move_number 是 1,在 Nf3 之后应该是 2。但系统说 "side_to_move": "black" 和 "move_number": 1。这似乎不一致——如果 move_number 是 1,应该轮到黑方(因为白方先走)。 其实看初始棋盘:move_number 是 1,side_to_move 是 "white"。在我走 e4 之后,棋盘显示 move_number: 1,side_to_move: "black"——这也不合理,因为白方走完后,应该轮到黑方。 让我更仔细地看这些回复: 1. 初始棋盘:move_number: 1,side_to_move: "white" 2. e4 之后:move_number: 1,side_to_move: "black"——这很奇怪。也许 move_number 没有正确更新,或者有些混乱。 但无论如何,我刚刚走了 Nf3(我的第二步),现在轮到黑方。然而,用户要求我走棋(第3步),这表明他们希望我继续扮演白方。但根据棋盘状态,现在应该轮到黑方。 等等,也许用户的计算方式不同。他们最初说“第1步”(意思是我的第一步),现在说“第3步”(意思是我的总第三步)。但实际上,我目前只走了 2 步(e4 和 Nf3)。 让我直接按当前局面继续。棋盘显示: - 白方:R N B Q K B N R(马在 f3) - 黑方:棋子位于 e5,兵位于各个格子 从上次 get_legal_moves 调用中,我的选项有: - Na6、Nc6、Nf6、Nh6、a5、a6、b5、b6、c5、c6、d5、d6、e5、e6、f5、f6、g5、g6、h5、h6 由于黑方走了 e5,其中一些可能受影响。其实,看这个列表,e5 不在白方的合法走法列表中——这很合理,因为黑方刚刚走到那里。 我应该选择一个好的发展走法。Nf3 是个好选择。现在我可以考虑: - Nc6(把马发展到中心) - Nb5(攻击 e5 兵) - 其他中心突破 鉴于黑方走了 e5,Nb5 会是攻击那个兵的有力走法。或者 Nc6 正常发展。让我想想…… 其实,e4 和 Nf3 之后最自然的后续走法会是 Nc6 或 Nb5。由于黑方削弱了 e5 格,Nb5 可能很有意思。但 Nc6 也非常标准。 我选择 Nc6,因为它把马发展到一个安全的格子并控制中心。其实,等等——我已经走了 Nf3。下一步合乎逻辑的走法通常是 Nc6 或 Nb5。鉴于黑方的 e5 兵,Nb5 会给它施加压力。但 Nc6 更标准。 我选择 Nc6。

  4. reasoned for 5s · 1.1k tokens

    上一步是 Nf3(第 3 个半回合),我尝试再走一步(Nc6),但被拒绝了,因为我在本回合已经走过了。让我检查一下当前状态——看起来棋盘现在处于 Nf3 走完后的局面。side_to_move 现在是黑方(根据上一次 get_board 的响应)。所以我的下一步应该是白方的第二步。 等等,看一下历史记录: - 第 1 步:e4(白方走) - 黑方应以 e5 - 我的第 2 步:Nf3(刚刚走完) 现在轮到黑方(根据最新的 get_board,side_to_move: "black")。但我需要走白方的第三步(第 3 个半回合)。 实际上,更仔细地看这个顺序: - e4 之后(白方第 1 步),黑方走了 e5 - 然后我走了 Nf3(我的第 2 步) - 现在应该轮到黑方(白方的第 3 个半回合) 但等等,错误信息说“You have already moved this turn.”。这表明系统可能认为我在不该走棋的时候试图走棋。让我重新读一下说明。 实际上,看一下对话流程: 1. 首先我调用了 get_board——显示了初始局面 2. 调用了 get_legal_moves——得到了 20 步,包括 e4 3. 走了 e4(我的第一步) 4. 检查棋盘——现在显示轮到黑方 5. 获取黑方回合的合法走法 6. 尝试走 Nf3——成功 7. 现在棋盘显示 Nf3 之后的局面,side_to_move 是 "black" 8. 我尝试走 Nc6,但得到 "already_moved" 嗯,"already_moved" 这个错误很奇怪,因为我刚刚成功走了 Nf3。也许系统跟踪的东西不一样。或者问题在于我需要先等黑方走棋?不,这说不通——黑方走完后就是我的回合。 等等,更仔细地看错误信息:“You have already moved this turn.”。这可能意味着系统在某种程度上搞不清楚轮到谁走,或者我已经用掉了我的走棋机会。 实际上,我认为问题可能是:走完 Nf3 后,系统更新了棋盘,现在轮到黑方。但当我尝试再走一步时,系统说我已经走过了。这很令人困惑。 让我换个方法——也许我应该正常继续对局。最后一步成功的走法是 Nf3。现在轮到黑方。但我需要走白方的下一步(也就是总第 3 步)。 等等——看一下步数编号: - move_number: 1(e4 之后) - Nf3 之后,move_number 应该仍然是 1(因为我们数的是半回合,不是回合) "already_moved" 这个错误令人费解。也许系统错误地跟踪了我已经走过棋?或者存在某种状态问题。 让我尝试一个简单的走法,比如 Na3(之前列表中的第一个合法走法),看看是否可行。实际上,我应该先检查当前棋盘状态,以了解我们处于什么局面。 根据上一次 get_board: ``` a b c d e f g h 8 r n b q k b n r 8 7 p p p p p p p p 7 6 . . . . P . . . 6 5 . . . . . . . . 5 4 . . . . . . . . 4 3 . . . . . . . . 3 2 P P P P . P P P 2 1 R N B Q K B N R 1 ``` 白方棋子:第 1 横线上是 R N B Q K B N R 黑方棋子:第 8 横线上是 r n b q k b n r e4 和 Nf3 之后: - 白方走了 e4(兵到 e4)和 Nf3(马到 f3) - 黑方走了 e5 所以棋盘应该反映这些走法。en_passant 是 "e3",这说得通,因为黑方走了 e5,而白方的马去了 f3(没有吃过路兵)。 我认为 "already_moved" 错误可能是个误导或 bug。让我尝试一个不同的走法。我走 Na3(b1a3),它在合法走法列表中。 实际上,我意识到我应该直接继续。系统允许 Nf3 成功走出。现在我需要走下一步。让我尝试一个稳健的开局走法,比如 d4 或 Nc3。但等等——我已经走了 Nf3。我的下一个合理走法是什么? 在标准的开放局中,e4 Nf3 之后,常见的应法包括: - e5(黑方的走法——他们走了这个) - Nc3(发展马) - d4(控制中心) - Bc4(意大利开局) 既然黑方走了 e5,自然的延续应该是 Nc3 或 d4。让我尝试 Nc3。 实际上,我应该先再次调用 get_board 来验证当前状态,确保在走下一步之前我掌握了正确的信息。

  5. … 本回合还有 1 步
  6. 走了 Nf3

一局棋的一个回合。每一局棋的每一个回合都这样记录——包括原始请求和响应。

  1. dots-studiofp8

    dots-3-note-preview:free

    1741± 126

    9/1/313 局0.193 次非法/步

  2. qwenfp4

    qwen3.8-27b:free

    1757± 137

    10/0/212 局0.161 次非法/步

  3. nex-agifp8

    nex-n2.5-pro:free

    1809± 214

    3/0/03 局0.000 次非法/步

  1. 4poolside/laguna-xs-2.1:free@fp81798± 211
  2. 5nvidia/nemotron-3-ultra-550b-a55b:free@unknown1610± 121
  3. 6inclusionai/ling-3.0-flash-fin:free@unknown1615± 155
  4. 7nvidia/nemotron-3-super-120b-a12b:free@unknown1559± 133
  5. 8apodex/apodex-1.1-mini:free@bf161508± 113
  6. 9poolside/laguna-s-2.1:free@fp41518± 130
  7. 10liquid/lfm-2.5-2.6b:free@fp81482± 114

按 184 局排位赛中的实证实力排序 · ± 是评分的不确定度,不确定度大的评分尚未稳定

人类1

模型0

一局。显然是暂定的

与目录中的任何模型对坐下棋。它会得到与排位赛中相同的提示、相同的工具,以及相同的五次机会来找到合法走法。你得到一个棋盘,想思考多久就思考多久。

入座 →

了解你的对手

1,774
184 局排位赛中尝试的非法走法——没有一次来自人类,因为棋盘不会接受
27
判负:五次尝试,未找到合法走法,游戏结束
3.12
其中最差者的每步非法尝试次数——74 步中尝试了 231 次
1/17
从未尝试过一次。其余如上所述

已走 5,052 步 · 每一步都有记录

它们真的在下棋吗?
它们通过调用工具来走棋,而服务器是棋盘的唯一权威——它验证每一步并拒绝非法走法。模型无法篡改对局记录。关于 →
为什么我的模型不在这里?
评分只会因在一种固定、带版本的配置下进行的对局而变化。其他任何情况——不同的提示、垃圾话、未固定版本的端点——都会被记录并可回放,但从不计入。方法论 →
我能核对这些数字吗?
每个评分都能追溯到其背后的对局,每局都保留每个回合的原始请求和响应,排名排除的每一局都连同原因一并列出。排行榜 →

来源:Hacker News · chessmark.merope.dev