Skip to content

Repository files navigation

WikiRace Bot

Vibe-coded — dieses Projekt wurde nicht von Hand geschrieben, sondern gemeinsam mit Claude Code (Anthropic AI) entwickelt. Der gesamte Code, die Architektur und alle Optimierungen entstanden im Dialog. Kein Stack Overflow, kein Copy-Paste — reines Vibecodin'.

Ein vollständiger Bot für wiki-race.com, der Wikipedia-Artikel über kürzeste Pfade verbindet — mit lokalem SQLite-Graphen (945M+ Kanten), neuronalem Scorer und Tor-gestütztem Crawler.


Inhaltsverzeichnis


Was ist Wiki-Race?

wiki-race.com ist ein Multiplayer-Spiel: Alle Spieler starten auf demselben Wikipedia-Artikel und müssen per Klick auf Links so schnell wie möglich zum Zielartikel navigieren. Wer zuerst ankommt, gewinnt.

Dieser Bot spielt automatisch — er hält einen kompletten Graphen aller Wikipedia-Verlinkungen lokal als SQLite-Datenbank (~86 GB) und findet per BFS den kürzesten Pfad in Sekunden.


Voraussetzungen installieren

1. Python

Mindestens Python 3.10 wird benötigt.

  1. Auf python.org/downloads die neueste Version herunterladen
  2. Installer starten
  3. Wichtig: Haken bei "Add Python to PATH" setzen
  4. Installation abschließen

Prüfen ob es funktioniert hat:

python --version

2. Git

  1. Auf git-scm.com/downloads herunterladen
  2. Installer starten, alle Standardoptionen beibehalten
  3. Prüfen:
git --version

Repo klonen:

git clone https://github.com/Larslllllll/Wiki-Race-Bot.git
cd Wiki-Race-Bot

3. Python-Pakete

Im Projektordner ausführen:

pip install requests tqdm psutil stem sentence-transformers

Für GPU-Unterstützung (Intel Arc):

pip install torch-directml

Für NVIDIA GPU:

pip install torch

4. 7-Zip (nur für fast_dump.bat)

7-Zip beschleunigt das Entpacken der Wikipedia-Dumps erheblich.

  1. Auf 7-zip.org herunterladen
  2. Installieren (Standard-Pfad C:\Program Files\7-Zip\ beibehalten)

5. Tor (nur für Crawler mit Tor)

Nur nötig wenn du den Crawler mit --tor betreiben willst (mehr parallele IPs, weniger Rate-Limits).

  1. Auf torproject.org den Tor Expert Bundle herunterladen
  2. Entpacken nach C:\tor\

Zusätzliche Pakete:

pip install stem requests[socks]

Graph-Datenbank aufbauen

Der Bot braucht eine lokale SQLite-Datenbank mit allen Wikipedia-Verlinkungen. Diese wird aus offiziellen Wikipedia SQL-Dumps erstellt und ist danach ~86 GB groß. Sie liegt nicht im Repo und muss einmalig selbst gebaut werden (~1-2 Stunden).

Schritt 1 — Wikipedia Dumps herunterladen

Von dumps.wikimedia.org folgende Dateien herunterladen:

Englisch (~15 GB gesamt):

Deutsch (optional, ~5 GB):

Schritt 2 — Pfade in fast_dump.bat anpassen

fast_dump.bat öffnen und die Pfade oben auf den eigenen Download-Ordner anpassen:

set PAGES_EN=C:\Users\DEINNAME\Downloads\enwiki-latest-page.sql.gz
...

Schritt 3 — Import starten

fast_dump.bat

Oder direkt:

python fast_dump.py --pages-en PFAD\enwiki-latest-page.sql.gz --links-en PFAD\enwiki-latest-pagelinks.sql.gz --linktarget-en PFAD\enwiki-latest-linktarget.sql.gz

Die fertige Datenbank landet in crawl_output/graph.db.


Bot spielen lassen

python wiki_race_bot.py play --name MeinBot --language en

Bestehender Lobby beitreten:

python wiki_race_bot.py play --join LOBBYCODE --name MeinBot --stay

Shell-Befehle während der Bot läuft:

Befehl Beschreibung
start Bot spielen lassen
stop Nach aktuellem Spiel pausieren
start human Mit menschlichen Verzögerungen spielen
stay In Lobby bleiben nach Spielende
exit Beenden

Crawler

Für neue Artikel die nach dem Dump-Import erschienen sind:

python wiki.py --threads 16

Mit Tor (empfohlen für viele Threads):

python wiki.py --tor --threads 64

Neue gecrawlte Kanten in die Datenbank einbauen:

python wiki_race_bot.py build-index

Modell trainieren

Der Bot hat ein neuronales Modell (DistilBERT) das bewertet, welcher Link dem Ziel am nächsten ist. Training aus dem gecrawlten Graphen:

python wiki_race_bot.py train

Ohne GPU (lineares Modell):

python wiki_race_bot.py train --linear

Das trainierte Modell wird lokal unter models/ gespeichert und nicht im Repo versioniert.


Visualisierung

Erzeugt eine interaktive Graphvisualisierung des Wikipedia-Graphen:

python visualisation.py --nodes 3000 --lang en --out brain.html

Dann die generierte brain.html im Browser öffnen — Force-directed Graph mit Zoom, Pan, Hover, Suche und Wikipedia-Links per Klick.


Architektur

wiki.py                  Crawler — schreibt crawl_output/edges.jsonl + pages.jsonl
fast_dump.py             Schnellimport aus Wikipedia SQL-Dumps → crawl_output/graph.db
wiki_race_bot.py         Haupt-Einstiegspunkt: spielen, trainieren, indexieren
export_db_to_edges.py    Exportiert graph.db zurück nach edges.jsonl (mit Resume)
visualisation.py         Erstellt brain.html — interaktive D3.js Graphvisualisierung
wait_then_crawl.py       Wartet auf Export, startet dann automatisch den Crawler
timer.py                 Hilfstool für zeitgesteuerte Abläufe

wikibot/
  bot.py                 Spiellogik: BFS-Pfad → semantisch → neural
  graph_db.py            SQLite-BFS — on-demand, kein RAM-Loading
  client.py              HTTP-Client für wiki-race.com + Pusher Presence
  wikipedia.py           Wikipedia API: Links, Backlinks, Seiteninfos
  neural.py              DistilBERT-basierter Link-Scorer
  model.py               Lineares Modell als Fallback
  similarity.py          TF-IDF Ähnlichkeit für semantisches Ranking
  graph.py               In-Memory-Graph (für Training)
  types.py               Gemeinsame Datentypen

Wie der Bot navigiert

  1. Graph-BFS — kennt der lokale Graph beide Artikel, findet er den kürzesten Pfad in ~1-5s aus 945M+ Kanten
  2. Bridge-Nodes — Artikel nicht im Graph? Bot fetcht Wikipedia-Links und findet einen Knoten als Brücke
  3. Neural Scorer — DistilBERT bewertet welcher Link dem Ziel am nächsten ist
  4. Semantische Ähnlichkeit — TF-IDF Fallback ohne GPU

Gebaut mit Claude Code — 100% vibecodiert, 0% Langeweile.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages