Der Lichess-Bot

LiRu-Bot, unser Lichess-Bot

LiRu-Bot ist unser eigenständiger Lichess-Bot - eine Rust-Portierung des offiziellen lichess-bot der lichess-bot-devs (AGPL-3.0). Er steuert eine UCI-Schach-Engine an: im Standard-Build jede beliebige als separaten Prozess, im Online-Einsatz mit der clrsrc-Engine zu einem gemeinsamen Programm zusammengebaut. Dazu Connectivity-Härtung und Matchmaking.

Rust AGPL-3.0 Port von lichess-bot beliebige UCI-Engine Matchmaking

Architektur

Die wichtigsten Bausteine - bewusst laienverständlich.

Der Name: LiRu-Bot

LiRu-Bot steht für Lichess-Rust-Bot - so heißt das Projekt auch auf GitHub: ein in Rust geschriebener Bot, der eine Engine über die offizielle Lichess-Bot-API spielen lässt.

Rust-Portierung von lichess-bot

Eine Neufassung des offiziellen lichess-bot der lichess-bot-devs in Rust. Weil dieser unter AGPL-3.0 steht, steht auch LiRu-Bot unter AGPL-3.0 - der Upstream ist offen kreditiert.

Engine-unabhängig

LiRu-Bot spricht das UCI-Protokoll und kann dadurch jede UCI-Engine ansteuern - nicht nur clrsrc. Die Engine ist austauschbar; die Anbindung bleibt dieselbe. (Gilt für den Standard-Build mit separatem Engine-Prozess.)

Connectivity-Härtung

Erkennt Verbindungsabbrüche und hängende oder entgangene Züge und hält den Dauerbetrieb stabil - auch über eine wechselhafte Heim-Internetverbindung.

Matchmaking

Sucht selbstständig passende Gegner und nimmt Herausforderungen an - so kommen rund um die Uhr Partien zustande.

Nach Lichess-Bot-Regeln

LiRu-Bot spielt über die offizielle Lichess-Bot-API - über ein eigens auf „BOT" hochgestuftes Konto mit eigenen Endpunkten. Den Partieverlauf empfängt er als laufenden Ereignis-Stream und meldet die von der Engine berechneten Züge zurück (samt Aufgeben, Remis-Angebot und Remis-Reklamation). Die Uhr läuft gegen eine absolute Deadline - abzüglich nur der halben Laufzeit zum Server, da Lichess die Verzögerung selbst ausgleicht. Angenommen werden nur Standard-Schach-Partien; auf Rate-Limits reagiert er mit Backoff.

Beim Portieren wurde LiRu-Bot nicht nur gegen den Python-Upstream, sondern gegen die offizielle Lichess-Spec abgeglichen - Python-Parität ist nicht dasselbe wie Spec-Konformität.

So greift es ineinander

LiRu-Bot steuert eine UCI-Engine an - je nach Bauart als separaten Prozess oder als ein gemeinsames Programm.

Standard: zwei Programme

Im Standard-Build startet LiRu-Bot die Engine als eigenständiges Programm und spricht über UCI (Textzeilen über stdin/stdout) mit ihr - zwei getrennte Prozesse. So lässt sich jede UCI-Engine anbinden; die clrsrc-Engine ist hier nicht mit dem Bot verbunden.

Online-Einsatz: ein Programm

Im Dauerbetrieb auf dem gemieteten VServer sind Bot und clrsrc-Engine zu einem einzigen Programm zusammengebaut - ein Prozess, der sich von dort mit Lichess verbindet. Vorteil: eine einzige, präzise Wall-Clock-Deadline statt getrennt gestapelter Zeitabschätzung von Bot und Engine - und dadurch spürbar weniger Zeitüberschreitungen. Das laufende Spiel siehst du auf der Live-Seite →

Lizenz: LiRu-Bot steht - wie der lichess-bot-Upstream, von dem er portiert ist - unter AGPL-3.0, die Engine clrsrc unter GPL-3.0. Im Standard-Build laufen beide als getrennte Programme (lose über UCI gekoppelt, Engine nicht gelinkt) - zwei sauber getrennte Lizenzen. Im eingebetteten Live-Build bilden sie ein kombiniertes Werk (die GPL-Engine statisch im AGPL-Bot); das ist kein Lizenzkonflikt, weil die AGPL-3.0 die GPL-3.0 abdeckt. Quellcode: github.com/clrsrc/liru-bot ↗.