AX 爱鲜报

Sunfish 国际象棋引擎

Sunfish 是一个用 Python 编写的极简国际象棋引擎,核心代码仅 111 行,支持 UCI 协议,适合学习引擎原理与实验。

爱鲜报评分

0.0

0 人评分

3.3k

星数

否

中文

Python

主语言

是

活跃

24

贡献者

人工分析

EDITORIAL

推荐理由

代码极简且可读性高,是理解国际象棋引擎搜索与评估的绝佳教材。支持 UCI 协议,可接入多种 GUI 和比赛工具。社区活跃,衍生项目丰富,适合二次开发与算法实验。

适用场景

  • 学习国际象棋引擎原理
  • AI 搜索算法实验
  • 评估函数研究
  • 接入 UCI GUI 对弈
  • 嵌入式或极简环境部署

优点

  • 代码量极少,易于阅读和修改
  • 支持标准 UCI 协议,兼容主流 GUI
  • 提供 NNUE 版本,棋力更强
  • 有丰富的衍生项目和社区支持
  • 可使用 PyPy 显著提升搜索速度

缺点

  • 不支持 50 步和棋规则
  • 纯 Python 性能有限,依赖 PyPy 优化
  • 评估函数简单,棋力有限
  • 文档主要为英文
上手难度 入门

Sunfish 国际象棋引擎

Sunfish 是一个用 Python 编写的极简国际象棋引擎,核心代码仅 111 行(去除注释和空白后 126 行)。它实现了完整的国际象棋规则(除 50 步和棋规则外),并支持标准 UCI 协议,可以轻松接入各种图形界面和比赛工具。

核心特点

  • 极简代码:整个引擎压缩后仅约 3KB,适合学习和实验。
  • UCI 支持:可通过 sunfish-uci 命令与 Arena、Cute Chess、PyChess 等 GUI 对弈。
  • NNUE 版本:提供基于神经网络的 NNUE 版本,棋力比经典版高约 200 Elo,且整个引擎仅 4096 字节。
  • 高效搜索:使用 MTD-bi(NegaC*)搜索算法和分段平方表评估函数。

快速开始

安装后直接在终端运行:

pip install sunfish
sunfish

或从仓库检出运行:

python sunfish.py

使用 UCI 工具

将引擎指向 sunfish-uci 或 ./sunfish.py 即可。例如使用 fastchess 进行命令行对弈:

fastchess -engine cmd=sunfish-uci name=sunfish \
          -engine cmd=<other> name=other \
          -each proto=uci tc=30+1 -rounds 10 -games 2

性能优化

Sunfish 会自动检测并使用 PyPy3(如果已安装),PyPy 下的搜索速度约为 CPython 的 2.7 倍,可提升约 100 Elo。

测试

项目使用 pytest 进行测试:

python3.12 -m pytest

衍生项目

Sunfish 拥有丰富的衍生版本,包括 MicroPython 版、Rust 移植版、Go 移植版、JavaScript 版等,适合不同平台和语言的学习者参考。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。