Stockfish 的 Elo 與難度等級
支援 iPhone、iPad、Mac 和 Android。不需帳號。
Stockfish 有多強?以最強棋力來說,遠遠強過任何人類棋手。但 Stockfish 也可以刻意下得弱一點,西洋棋 App 和網站就是這樣替每一種程度的棋手提供難度的。本頁說明這些難度背後的設定、引擎難度上的 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 變弱,因為淺層搜尋會漏掉深層搜尋找得到的戰術。許多 App 會把這類限制和技能等級搭配使用。
為什麼引擎的 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 如此,任何 App 也都一樣。如果某一級的跨度感覺太大,就在低一級多下幾盤,或從你占優的局面開始,練習把它贏下來。
問與答
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 上離線使用。