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.
- Was ist Wiki-Race?
- Voraussetzungen installieren
- Graph-Datenbank aufbauen
- Bot spielen lassen
- Crawler
- Modell trainieren
- Visualisierung
- Architektur
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.
Mindestens Python 3.10 wird benötigt.
- Auf python.org/downloads die neueste Version herunterladen
- Installer starten
- Wichtig: Haken bei "Add Python to PATH" setzen
- Installation abschließen
Prüfen ob es funktioniert hat:
python --version
- Auf git-scm.com/downloads herunterladen
- Installer starten, alle Standardoptionen beibehalten
- Prüfen:
git --version
Repo klonen:
git clone https://github.com/Larslllllll/Wiki-Race-Bot.git
cd Wiki-Race-Bot
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
7-Zip beschleunigt das Entpacken der Wikipedia-Dumps erheblich.
- Auf 7-zip.org herunterladen
- Installieren (Standard-Pfad
C:\Program Files\7-Zip\beibehalten)
Nur nötig wenn du den Crawler mit --tor betreiben willst (mehr parallele IPs, weniger Rate-Limits).
- Auf torproject.org den Tor Expert Bundle herunterladen
- Entpacken nach
C:\tor\
Zusätzliche Pakete:
pip install stem requests[socks]
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).
Von dumps.wikimedia.org folgende Dateien herunterladen:
Englisch (~15 GB gesamt):
Deutsch (optional, ~5 GB):
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
...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.
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 |
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
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.
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.
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
- Graph-BFS — kennt der lokale Graph beide Artikel, findet er den kürzesten Pfad in ~1-5s aus 945M+ Kanten
- Bridge-Nodes — Artikel nicht im Graph? Bot fetcht Wikipedia-Links und findet einen Knoten als Brücke
- Neural Scorer — DistilBERT bewertet welcher Link dem Ziel am nächsten ist
- Semantische Ähnlichkeit — TF-IDF Fallback ohne GPU
Gebaut mit Claude Code — 100% vibecodiert, 0% Langeweile.