BattleChess 是一个本地运行的中国象棋 Arena,支持 Human / Random / LLM / Pikafish 任意两两对局。
前端使用原生 HTML / CSS / JavaScript 与 Canvas,后端使用 FastAPI。LLM 调用统一走 OpenAI Python SDK。
- 支持
Human / Random / LLM / Pikafish四种玩家类型,可任意组合对战 - 支持多局并发对战,互不干扰
- 支持 Pikafish 直接作为红方或黑方参与对局
- 支持为每一方单独指定不同的 Pikafish 可执行文件
- 支持评估用 Pikafish 与参与方 Pikafish 分开配置
- 支持预设模型和自定义 LLM 配置
- 支持从
prompts/*.yaml加载 Prompt,并在 UI 中选择 - 支持自定义开局 FEN
- 支持暂停、恢复、历史回看,以及从回看位置继续对局
- 支持历史对局自动播放回放
- 支持对局结束后自动保存详细日志
- 支持专业引擎对局评分
- 内置排行榜,统计各选手胜/负/平及红黑方分项数据
- Python 3.10+
安装依赖:
pip install -r requirements.txt启动服务:
python server.py默认访问地址:
http://127.0.0.1:8000
先复制配置模板:
copy config.example.yaml config.yaml示例:
pikafish:
eval_engine_path: .\pikafish\pikafish-bmi2.exe
models:
- name: gpt-4o
api_base: https://api.openai.com/v1
api_key: sk-xxxxxxxxxxxxxxxx
model: gpt-4o
prompt_name: zh
enable_thinking: true
max_completion_tokens: 8192XiangqiArena/
├── server.py
├── xiangqi.py
├── llm_client.py
├── pikafish_manager.py
├── prompt_registry.py
├── prompts/
│ ├── zh.yaml
│ └── en.yaml
├── pikafish/
│ ├── pikafish-bmi2.exe
│ ├── ...
│ └── pikafish.nnue
├── example/
│ ├── arena.png
│ └── leaderboard.png
├── config.example.yaml
├── config.yaml
├── requirements.txt
├── logs/
├── static/
│ ├── index.html
│ ├── style.css
│ ├── app.js
│ ├── board.js
│ ├── leaderboard.html
│ └── logo.png
└── logo.png
大多数情况下,引擎速度:
vnni512 > bw512 > avx512 > avxvnni > bmi2 > avx2 > sse41-popcnt > ssse3,请根据自己的 CPU 选择对应版本。
MIT


