#chess #fen #lichess #input #routes #position

app serveft

为FEN负载提供先手开局

1个不稳定版本

0.1.0 2023年9月30日

#706HTTP服务器

AGPL-3.0-or-later

63KB
367

Fentrail

关于

Fentrail 是一套工具(Rust库、CLI和HTTP服务器),用于研究棋局可以经过的可能路径以达到特定位置。系统的工怍流程由两个独立的组件组成。首先,使用CLI,通过处理用户提供的PGN格式的游戏数据库生成键值存储。其次,通过HTTP请求或通过命令行通过FEN输入查询生成的存储。

安装

假设您已安装Rust,则可以从https://crates.io安装 fentrail CLI和serveft HTTP服务器。

cargo install fentrail
cargo install serveft

用法

两个CLI子命令及其选项和参数通过提供的--help标志进行文档说明。

$ fentrail --help
Usage: fentrail <command> [<args>]

Build and query opening lookup tables for chess positions.

Options:
  --help            display usage information

Commands:
  pack              Initiate or populate KV-stores.
  ask               Inquire a store about a specific position.


$ fentrail pack --help
Usage: fentrail pack <pgn> [-d <depth>] [-e <ecotsv>] [-o <outdir>]

Initiate or populate KV-stores.

Positional Arguments:
  pgn               path to the game database in PGN format

Options:
  -d, --depth       moves from each side to process in a game [default: 12]
  -e, --ecotsv      path to a tsv file to be used as an ECO
  -o, --outdir      directory to store the fentrail database [default: $PWD]
  --help            display usage information


$ fentrail ask --help
Usage: fentrail ask <fen> [-s <store>]

Inquire a store about a specific position.

Positional Arguments:
  fen               FEN string to query

Options:
  -s, --store       path to the fentrail database [default: $PWD/fentrail.redb]
  --help            display usage information

pack 命令不会覆盖现有存储,而是从新的PGN输入中添加未见过的 (position, opening) 对。如果您需要,在调用 pack 之前始终可以手动删除旧数据库。

如果您希望为 pack 提供自定义的 ECO,则它必须是一个至少有两列的TSV文件 - namepgn。您可以作为示例查看捆绑的ECO

serveft 命令不接受任何额外的参数 - 而是通过环境变量进行配置。

  • SERVEFT_PORT:服务HTTP请求的端口号 - 默认 8000
  • SERVEFT_STORE:查询fentrail数据库的路径 - 默认 $PWD/fentrail.redb

一旦运行,您可以使用 FEN 载荷向服务器发送 POST 请求。

SERVEFT_PORT=3000 SERVEFT_STORE=/var/db/fentrail.redb serveft &
curl -sS 0.0.0.0:3000 -d 'rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N2N1P/PP3PP1/R1BQKB1R b KQ - 0 6' 

致谢

许可协议

Fentrail 工作区中的每个包都根据自由软件基金会发布的 GNU Affero 通用公共许可证进行许可,无论是许可证的第 3 版,还是(根据您的选择)任何后续版本。有关详细信息,请参阅 COPYING 文件。

依赖项

~10–23MB
~276K SLoC