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.
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 ↗.