夜雨聆风学习资料网

ARTICLE · 1093432

国象里的 AI丨Stockfish 鳕鱼引擎是怎么给局面打分的?

国象里的 AI丨Stockfish 鳕鱼引擎是怎么给局面打分的?
昨天,2026 年第 46 届世界国际象棋奥林匹克团体赛刚结束。相信不少棋童家长和我一样,用 lichess 看直播给中国队加油,顺便靠棋局旁边的引擎评分判断谁局面占优。看直播时,谁领先了多少分,也成了我们这些“伪棋迷”闲聊的话题。

那么这个评分到底是怎么来的呢?

大部分平台像 lichess 一样,用的都是国际象棋领域最强大的引擎之一 Stockfish,简称 SF,国内也叫鳕鱼。
SF 的最新版本是 SF 19,从版本 12 开始引入神经网络 NNUE,版本 11 是最后一个“手搓”版本。虽然 SF 11 的计算准确度比 SF 19 低一些,但它的评估依据是分项设计的(也叫经典手工评估,HCE),反而更适合我们弄明白:AI 到底在看局面的哪些方面?理解了这些,对棋手自己快速判断局面也会有所帮助。
所以,我把 SF 11 的评估逻辑整理出来,供大家参考。

一、鳕鱼看局面,主要看这 13 个方面

可以把 SF 11 想象成一个特别有经验的教练。他看一盘棋,不是只数谁多几个子,而是同时从 13 个角度打分:

1. 子力 Material

就是基础子力价值。谁多子、谁少子,这是我们陪赛时最常说的,也最直观。只不过,这里的子力价值并不是简单数子——引擎里每个棋子都有固定的基础分值,而且中局和残局的分值还不一样。比如兵在残局会“升值”,因为离升变更近了。

2. 子力失衡 Imbalance

这一项看的是棋子搭配。比如双象对双马,谁更划算?有些局面马象组合比双马好,双象优势方会加分。也就是说棋子数量相同,组合不同,评分也不同。

3. 兵形结构 Pawns

兵形是健康的还是脆弱的?通路兵、连通兵加分;叠兵、孤兵、落后兵、兵岛(己方的兵被对方的兵隔开,分成了几块互不相连的“岛屿”)扣分。还要考虑悬兵、兵链、受保护通路兵、外侧通路兵等进行微调。

4. 马的位置 Knights

马在中心(e5、d5、e4、d4)通常比边线强。如果马站在一个己方兵保护、对方兵又打不到的格子上,那就是“前哨马”,价值极高。被己方兵挡住、活动受限的是“坏马”,在 a/h 线的“边线马”通常也较差。

5. 象的评估 Bishops

核心是双象优势和“好象/坏象”。双象覆盖两种颜色,通常加分。如果己方兵链主要压在象同色的格子上,象被自己的兵挡住,就是“坏象”;兵链在异色格,象就活跃,是“好象”。象在开放斜线上也更值钱。

6. 车的评估 Rooks

车需要开放线才能发挥威力。在没有任何兵的直线上加分;在只有对方兵的半开放线上也加分。白方车冲到 7 线(对黑方而言是 2 线),能攻击对方兵和王,通常加分。两个车互相保护、在同一条线或相邻线上配合,也加分。

7. 后的评估 Queens

后是最强棋子,但也最容易被骚扰。后可移动的安全格子越多越值钱;和其他棋子协同进攻加分;如果暴露在对方攻击下,可能被追打而失去节奏,扣分。开局阶段后过早出动,容易被对方马象攻击,通常不利。

8. 机动性 Mobility

这一项是“活动空间”的量化。引擎会数每个棋子能安全移动到的格子数,然后按棋子类型查表加分。车在开放线上可移动格子多,加分高;象在长斜线上活动,加分;马在中心可移动格子多,加分。

9. 王的安全 King Safety

这是最复杂的项之一。王前面的兵盾完不完整?对方有多少棋子参与攻击王周围区域?每种棋子权重不同。王周围有多少格子被对方控制?王在中心且线路开放时非常危险。这一项在中局极其重要,残局则相对次要。

10. 威胁 Threats

当前有没有迫在眉睫的战术危险?如果一个棋子被攻击且没有保护,相当于可能被白吃,扣分。如果有保护,但攻击者价值更低(比如用马攻击后),交换对攻击方有利,被攻击方扣分。牵制、叉子等战术威胁也会被考虑。

11. 通路兵 Passed

通路兵越靠近升变格,威胁越大,加分越高。两个或多个通路兵在同一区域互相支持,威力倍增,额外加分。如果前方被对方棋子挡住,价值降低;如果被己方子力保护,加分。

12. 空间 Space

空间就是己方棋子可以自由活动的区域大小。通常看中心区域(比如c3-f6 的 4x4 区域)内,己方控制、又不被对方兵攻击的格子数。己方兵后方的格子可能加倍计算,因为那是安全的后方活动空间。空间大的一方调动余地多,但空间过大也可能兵形薄弱。

13. 主动权 Initiative

这一项主要出现在残局,看王能不能主动参与进攻或限制对方王。如果己方王能靠近对方王,限制其活动,甚至“包抄”到对方王背后,加分;对方王更主动,己方扣分。这一项和通路兵、空间配合,决定残局是能赢还是只能和。

二、不是简单相加,而是“分阶段混合”

SF 11 不会把这 13 项分数直接一加就完事。它更像一个分阶段、有权重的精密计算系统:
第一,中局和残局分开算。
同一个概念,在中局和残局价值完全不同。比如马在开局和中局通常比象有力,但残局棋盘开放后,象的价值可能反超。所以引擎对同一个局面会算两套分:一套中局(MG),一套残局(EG)。
第二,平滑过渡。
引擎会根据场上剩余非兵子的数量,判断当前更接近中局还是残局,然后把 MG 和 EG 两套分数加权混合得到最终评分。
第三,权重靠海量测试。
每一个评估项的具体算法和权重,都不是拍脑袋想出来的。开发者设计后,会通过一个叫 Fishtest 的分布式测试框架,让全球志愿者贡献算力,跑数百万盘对局来验证。只有能显著提升引擎胜率的改动,才会被合并到代码里。

三、举个栗子

一起来看一个局面变化,感受下引擎的“思考方式”。
局面一:白方少子严重,还有个叠兵,王的安全也很差,总分 -7.35(为说明变化,仅做静态评估,不让引擎做深度思考),白方败势。
局面二:白方走了 cxd 吃象,子力差距缩小,王的安全好了些,还出现了通路兵加分,总分从 -7.35 变成 -1.75,白方有些好转。
局面三:黑走 cxd,子力差距再次变大,虽然威胁项有加分,但总分回到 -3.25,白方劣势扩大。值得一提的是由于通路兵的不同阶段的威力不一样,兵形结构在中局 MG 和残局 EG 中的评估略微不同。

四、对我们陪赛和学棋有什么用?

理解这些,至少有三个好处:
陪赛看评分时,知道这个分数不只是“多子少子”,还包含了兵形、王安全、棋子活跃度等。领先 1 分不一定稳赢,落后 1 分也不一定没机会。
自己下棋时,可以按这几个维度快速扫描局面:子力、兵形、王安全、棋子活跃度、有没有战术威胁。这比只数子全面得多。
看引擎分析时,可以留意 `eval` 输出里哪一项扣分最多,那往往就是局面的关键问题所在。

五、补充一句:SF 12 之后变了

SF 12 开始引入 NNUE 神经网络,最新是 SF 19。NNUE 不再依赖手工设计的评估项,而是用神经网络直接输出评估值,理解起来要更复杂一些,后续我们再深入探讨。

相关学习资料