Stockfish 的 Elo 与级别
适用于 iPhone、iPad、Mac 和 Android。无需账户。
Stockfish 有多强?以最强棋力下,它远远强于任何人类棋手。但 Stockfish 也可以刻意下得弱一些,国际象棋应用和网站正是这样为每位棋手提供不同级别的。本页介绍这些级别背后的设置,引擎级别上的 Elo 数字意味着什么、不意味着什么,Lichess 上的 Stockfish 级别是怎样设置的,以及如何选择适合你的级别。
Stockfish 如何限制棋力
Stockfish 内置了两种降低棋力的方法。两者都是 UCI 选项,也就是国际象棋程序在引擎开始搜索前发送给它的设置。
- Skill Level,从 0 到 20。 20 是最强棋力,0 是最弱的设置。低于 20 时,Stockfish 会比较几个候选着法,并带一点随机性地刻意选一步较弱的棋。级别越低,它在搜索中越早做出这个选择,接受的错误也越大。
- UCI_LimitStrength 和 UCI_Elo。 打开
UCI_LimitStrength后,程序可以用UCI_Elo指定一个以 Elo 表示的目标棋力。在 Stockfish 19 中,允许的范围是 1320 到 3190。Stockfish 在内部把这个 Elo 换算成一个技能级别。
这个范围写在源代码中(Stockfish 19 的 search.h)。根据那里的一条注释,这个换算是根据不同技能级别的 Stockfish 与另一款引擎之间的对局拟合出来的,大致覆盖 CCRL 快棋尺度上的 1320 到 3190。CCRL 是引擎的等级分榜单,而不是人类的。
还有第三种方法,任何程序都可以使用:限制搜索本身。固定的节点数(引擎查看的局面数)、固定的深度或很短的每步思考时间,都会让 Stockfish 变弱,因为浅层搜索会漏掉深层搜索能找到的战术。许多应用会把这类限制与技能级别结合起来使用。
为什么引擎 Elo 不是你的等级分
一个 Elo 数字只有在它自己的棋手池里才有意义。引擎级别是在引擎之间的对局中测出来的。你的等级分则来自人与人之间的对局,而且是在某个特定网站或某个棋协中。
- 棋手池不同。 UCI_Elo 以一份引擎等级分榜单为基准。Lichess 和 Chess.com 的等级分来自各自平台上棋手之间的对局,FIDE 等级分来自线下的正式计分对局。
- 错误类型不同。 受限的引擎大多走强着,只是时不时随机走出一步较弱的棋。人犯的是其他类型的错误:忽略了一个威胁、误判了一个计划,或者时间不够用。一个在纸面上与你等级分相当的级别,下起来可能难得多,也可能容易得多。
- 条件不同。 每步的思考时间和设备的速度,都会改变一个级别实际下出的棋力。
就连人类的等级分彼此也对不上。同一位棋手在 Lichess、Chess.com 和 FIDE 上的数字各不相同,国际象棋等级分换算中的对比就说明了这一点。所以,把引擎级别的 Elo 当作阶梯上的一级台阶,而不是可以与你自己的等级分相比的数字。
最强棋力的 Stockfish 有多强?
远超任何人类。在 Stockfish 18 发布时,Stockfish 团队写道,即使在较旧或低端的硬件上,引擎也比任何人类棋手都强(公告)。在 2026 年 10 月 16 日的 CCRL 40/15 等级分榜单上,使用四个处理器核心的 Stockfish 19 以 3650 Elo 排名第一。
这个数字属于引擎尺度,是在固定条件下与其他引擎对局测出来的。它不能准确告诉你与人类的比赛会是什么结果。它能告诉你的是:以最强棋力下,Stockfish 是分析工具,而不是人类的陪练对手。要和它对弈,你需要一个受限的级别。最新版本有哪些变化,请参阅 Stockfish 19。
Lichess 上的 Stockfish 级别
在 Lichess 上,你可以与电脑在 1 到 8 级下棋。电脑的着法来自 fishnet,即 Lichess 的分布式 Stockfish 服务。在撰写本文时,它的源代码(api.rs)为每个级别设置了三项限制:
| Lichess 级别 | Skill Level | 深度限制 | 每步时间 |
|---|---|---|---|
| 1 | -9 | 5 | 50 毫秒 |
| 2 | -5 | 5 | 100 毫秒 |
| 3 | -1 | 5 | 150 毫秒 |
| 4 | 3 | 5 | 200 毫秒 |
| 5 | 7 | 5 | 300 毫秒 |
| 6 | 11 | 8 | 400 毫秒 |
| 7 | 16 | 13 | 500 毫秒 |
| 8 | 20 | 22 | 1000 毫秒 |
有三点值得注意。1 到 3 级使用低于 0 的技能值,超出了官方 Stockfish 选项的范围。在 8 级,技能限制是关闭的(20),但深度和时间仍有上限,所以 8 级非常强,却不是最强棋力的 Stockfish。此外,代码设置的是技能、深度和时间,而不是 Elo。你看到的任何 Lichess 级别的 Elo,都是来自别处的估计,而不是 Lichess 代码中的数字。
ChessWOW 中的五个级别
ChessWOW 的五个级别使用 Stockfish 19 自带的设置:
| 级别 | 目标 | 设置方式 |
|---|---|---|
| 初学者 | Elo 800 | Skill Level 0,外加较小的节点数上限 |
| 俱乐部棋手 | Elo 1600 | UCI_LimitStrength,UCI_Elo 1600 |
| 大师 | Elo 2200 | UCI_LimitStrength,UCI_Elo 2200 |
| 特级大师 | Elo 2700 | UCI_LimitStrength,UCI_Elo 2700 |
| 最强棋力 | 不限 | 不限制棋力,使用全部处理器核心 |
初学者级别需要另一种方法。UCI_Elo 不能低于 1320,而单独使用 Skill Level 0,对刚学棋的人来说仍然下得太好。所以 ChessWOW 把 Skill Level 0 与较小的节点数限制结合起来。这样引擎搜索得非常少,连简短的战术也会漏掉。所有 Elo 值都是 Stockfish 尺度上的目标,而不是 Lichess 或 Chess.com 的等级分;设备和用时也会影响一个级别的实际表现。
你可以在与 Stockfish 对弈页面顶部的棋盘上,在浏览器中试试同样的五个级别。浏览器运行的是网络更小的 Stockfish 19 精简版本。
如何选择合适的级别
- 步骤 1
从一个看起来稍微简单的级别开始。 刚接触国际象棋:初学者。经常下棋、懂基本战术:俱乐部棋手。较强的俱乐部棋手或比赛棋手可以从大师开始。
- 步骤 2
下三到五盘,不用提示,让结果反映你自己的水平。
- 步骤 3
统计你的成绩。 如果几乎每盘都赢,就升一级;如果几乎每盘都输,就降一级。
- 步骤 4
停在有赢有输的级别。 这些对局让你学到的最多。
- 步骤 5
每盘棋后看报告。 对局报告会显示对局在哪里发生了转折。下一盘之前,先把这些局面练一练。
升级之后,先输几盘是正常的。级别之间的台阶大小并不相等,在 Lichess 上和在任何应用中都一样。如果某一级台阶感觉太大,就在较低的级别多下几盘,或者从一个你占优的局面开始,练习把它赢下来。
问题与解答
Stockfish 的 Elo 是多少?
以最强棋力下,使用四个核心的 Stockfish 19 在 2026 年 10 月 16 日的 CCRL 40/15 榜单上是 3650。这是引擎尺度,不能与人类的等级分相比。
Lichess 上 Stockfish 8 级的 Elo 是多少?
Lichess 的代码没有给出这个数字。8 级使用 Skill Level 20,深度限制为 22,每步最多一秒。
Stockfish 最低可以设置到多少 Elo?
在 Stockfish 19 中,用 UCI_Elo 最低是 1320。要更弱,需要使用 Skill Level 和搜索限制,例如节点数上限。
Skill Level 20 是什么意思?
最强棋力。在 20 级,Stockfish 不会刻意选择较弱的着法。
ChessWOW 的初学者级别真的是 Elo 800 吗?
它是 Stockfish 尺度上的目标,通过 Skill Level 0 和节点数上限实现。它不等同于 Lichess、Chess.com 或 FIDE 上的 800 等级分。
继续阅读
找到你对阵 Stockfish 的合适级别。
五个级别,使用完整网络,在 iPhone、iPad、Mac 和 Android 上离线可用。