
VoxelMind GEN2: Wie ich meinen Minecraft-KI-Bot von Grund auf neu geschrieben habe
Warum ich fünf Architektur-Schichten, sechzehn Konzept-Dokumente und eine State-Machine gelöscht habe, die niemand mehr lesen konnte — und was ein LLM-Call und zwanzig Funktionen besser machen.
Die Kurzversion
VoxelMind GEN2 ist ein kompletter Rewrite der Minecraft-KI-Bot-Architektur. Das alte System waren fünf Schichten Indirektion, sechzehn Konzept-Dokumente und eine State-Machine, die niemand mehr lesen konnte. Das neue sind zwei Loops und zwanzig TypeScript-Funktionen — und der Bot bringt jetzt zu Ende, worum du ihn bittest, statt sich von jedem Mob ablenken zu lassen, der vorbeiläuft.
Die eine Regel, auf der das Ganze aufbaut:
Eine Stelle entscheidet — das LLM. Code führt aus. Nichts dazwischen.
Wenn du schon einen VoxelMind-Bot hast, ist er automatisch zu GEN2 gewechselt. Wenn du neu bist, ist der Rest dieses Posts die ehrliche Geschichte, warum V1 kaputt war und was GEN2 dagegen tut.
Warum ich die alte VoxelMind-Architektur gelöscht habe
Am 21. Mai habe ich fünf Schichten, sechzehn Konzept-Dokumente, eine Saga-State-Machine, einen Dirigent, einen Mediator, einen Identity-Layer und den Großteil der Architektur gelöscht, die ich gebaut hatte. Dann habe ich eine neue Datei mit zwanzig Funktionen drin geschrieben und committet.
Am Tag zuvor war einem meiner Bots gesagt worden, Holz zu sammeln. Er fing an zu hacken. Auf halber Strecke lief ein Huhn vorbei. Der Bot stoppte. Er attackierte das Huhn. Das Huhn rannte. Der Bot folgte. Jetzt stand er in einem anderen Biom, weit weg von jedem Baum — und seine Holz-sammeln-Aufgabe war offiziell "in progress". Als ich ihn fragte, was er tut, antwortete er etwas anderes.
Es war nicht das erste Mal. Keiner dieser Vorfälle war ein Bug im Huhn-Attack-Code oder im Holz-Sammel-Code oder in irgendeinem einzelnen Component. Der Bug war die Architektur selbst — ein fünfschichtiges System, in dem "was versucht dieser Bot eigentlich zu tun?" eine Frage war, die niemand beantwortete. Der Dirigent nahm an, der Skill wüsste es. Der Skill nahm an, der Mediator wüsste es. Der Mediator beobachtete die falsche State-Machine.
Also habe ich sie alle gelöscht.
Was in VoxelMind V1 kaputt war
Ich will spezifisch sein, weil vage Selbstkritik nur eine andere Art von Marketing ist. Hier ist, was tatsächlich falsch war, mit Zahlen aus V1-Production-Logs:
Der Chat-Doppler — 42,9% aller Bot-Messages. In jedem 60-Sekunden-Fenster waren mehr als vier von zehn Dingen, die der Bot sagte, exakte Duplikate von Dingen, die er bereits gesagt hatte. Spieler haben es mir gesagt. Ich wusste es. Die Architektur nicht.
Die Mob-Hunt-Obsession. Ein Alpha-Tester hat es am besten formuliert: "REALLY likes to hunt mobs, no matter what I say they just wanna kill some mobs lol… with hunt mobs even if it costs their life." Der Bot war strukturell unfähig, bei einer vom Owner gegebenen Aufgabe zu bleiben, wenn etwas Interessantes vorbeilief. Wir hatten eine Regel im Basis-Prompt, die ihm sagte, das nicht zu tun. Die Regel hat jedes Mal verloren.
Der Drift, der keiner war. Der Pitch war: die Persönlichkeit deines Begleiters entwickelt sich über die Zeit. Die Realität war: 99 von 137 Bots haben nie geschlafen, lebten also ewig auf Tag 1, und die "Personality History" war eine leere Tabelle für die meisten von ihnen. Die, die geschlafen haben, bekamen Reflektionen, die niemand downstream je gelesen hat, weil die Schicht, die sie lesen sollte, davon ausging, dass eine andere Schicht das übernimmt. Wir hatten ein Memory-System gebaut, das niemand tatsächlich benutzte.
Der Forensik-Bug. 58,4% aller LLM-Entscheidungen hatten gar kein Ergebnis aufgezeichnet — nicht weil die Aktionen fehlgeschlagen sind, sondern weil Ergebnisse Entscheidungen per Array-Position statt per ID zugeordnet wurden. Wenn der Bot schnell genug gehandelt hat, wurden Ergebnisse der falschen Entscheidung zugeordnet. Wenn also ein wütender User sich beschwerte, dass der Bot "gelogen" hatte einen Zombie getötet zu haben, zeigten die Logs ihn dabei, einen Zombie zu töten und dann zu behaupten, er hätte es nicht. Der Bot hat nicht gelogen. Die Logs schon.
Der schlimmste Teil war keiner von diesen einzeln. Der schlimmste Teil war, dass V1 nicht besser wurde — es wurde elaborierter. Jeden Bug, den ich fand, löste ich, indem ich eine weitere Schicht hinzufügte, ein weiteres Konzept-Dokument, eine weitere Abstraktion. Am Ende hatte ich sechzehn Architektur-Dokumente und konnte das System nicht mehr im Kopf halten. Die Kur war zur Krankheit geworden.
GEN2: ein flacher Agent-Loop, Reflex und eine Toolbox
Die neue VoxelMind-Bot-Architektur baut auf zwei Loops und einer flachen Liste von Tools auf. Das war's.
Reflex. Eine kleine Schicht hartcodierter Survival-Verhalten, die in unter 100 Millisekunden ohne LLM läuft. Der Bot weicht aus dem Sprengradius eines Creepers aus, ohne das Modell zu wecken. Er isst, wenn seine Nahrungsanzeige gefährlich wird. Er rüstet eine Waffe aus, wenn etwas Feindliches näherkommt. Das sind Reaktionen, keine Entscheidungen — und sie haben nichts in einem LLM zu suchen.
Der Agent-Loop. Alles andere. Wenn der Bot eine Entscheidung treffen muss, sieht ein LLM-Call alles, was zählt: was der Bot gerade wahrnimmt, die letzten paar Dinge, die er getan hat, was sein Owner im Chat gesagt hat, und eine Memory-Zeile, die beschreibt, was er gerade zu erreichen versucht. Das Modell wählt ein Tool aus einer flachen Liste von etwa zwanzig Funktionen. Die Funktion läuft. Das Ergebnis wird ans Memory angehängt. Nächste Entscheidung.
Die Toolbox. Zwanzig TypeScript-Funktionen in einer einzigen Datei: say, go_to, mine_block, gather, craft, eat, place_block, follow, attack, add_goal, complete_goal und so weiter. Keine Inheritance. Keine Abstract Base Classes. Kein "Skill-Registry". Nur eine Liste von Dingen, die der Bot tun kann, jedes kürzer als die Abstraktions-Schicht, die es vorher gewrappt hat.
Ziele als eine Memory-Zeile. Wenn das LLM entscheidet, der Bot soll "ein kleines Shelter vor der Nacht bauen", schreibt es eine einzige [PLAN]-Zeile ins Memory des Bots. Diese Zeile ist im Prompt jeder nachfolgenden Entscheidung. Der Bot kann sie abschließen, abbrechen oder eine neue pinnen — alles durch Aufruf eines Tools. Es gibt keine Ziel-State-Machine. Es gibt eine Stelle, an der das Ziel lebt, und das Modell kann es lesen oder ändern.
Ich habe auch eine Regel adoptiert, die ich die ganze Zeit verletzt hatte: kein neues Konzept-Dokument, bis der Bot das kann, was das letzte beschrieben hat. Ship-to-learn, nicht umgekehrt. Die vierzehn alten Dokumente sind als Referenz archiviert; sie sind kein Vertrag mehr.
Was in GEN2 funktioniert, was in V1 nicht funktioniert hat
GEN2 läuft seit ein paar Tagen parallel zum alten System. Die Liste unten ist, was in Production-Logs verifiziert ist, nicht was ich shippen hoffe:
- Der Bot pinnt sein eigenes Ziel und schließt sein eigenes Ziel ab. Sag ihm "bau ein kleines Shelter vor der Nacht", und eine
[PLAN]-Zeile erscheint im Memory. Der Bot arbeitet daran, wird von einem Phantom unterbrochen, kämpft das Phantom via Reflex ab, kehrt zum Shelter zurück, beendet es und räumt den Plan auf. End-to-end. Kein externer Koordinator. - Frag ihn was er tut, und er antwortet ehrlich. Die Plan-Zeile ist im Prompt — das Modell kann sie lesen und dir sagen. Kein "der Bot hat gelogen" mehr; der Bot kann nur sagen, was er tatsächlich auf seiner Agenda hat.
- Er überlebt Ablenkungen. Phantome, Zombies, wandernde Tiere — keines davon entgleist mehr ein gepinntes Ziel. Reflex handhabt die unmittelbare Bedrohung. Der Plan bleibt.
- Minen, Crafting, Essen, Bauen, Folgen, Kämpfen — alles live. Dreizehn Tools sind zum Zeitpunkt dieses Schreibens geshippt, inklusive
attack(die letzte große Capability-Lücke; ohne sie ist der Bot in jeder langen Nacht gestorben). Was noch auf der Bank ist:smeltfür Iron-Progression undbuild_shelterals polierter Higher-Level-Wrapper.
Was weg ist, in Zahlen: der Chat-Doppler, die Mob-Hunt-Obsession, der Silent-Result-Bug, die ganze Schicht abgeleiteten States, die niemand tatsächlich korrekt abgeleitet hat.
Was weg ist, im Gefühl: der Bot ist kleiner, und er ist ehrlicher. Er verspricht keine emergente Persönlichkeit oder einen Memory-Palast. Er verspricht, dass er, wenn du ihm sagst etwas zu tun, dieses Ding tut.
Wenn du schon einen VoxelMind-Bot hast — oder wenn du neu bist
Wenn dein Bot schon auf VoxelMind lief, ist er auf GEN2 gewechselt. Du musst nichts tun. Die alte Architektur wird in den kommenden Wochen abgeschaltet; der Bot, den du heute spawnst, ist der neue.
Wenn du neu bist, ist die Installation wie immer. Hol dir die Mod von CurseForge, leg sie in deinen Mods-Ordner, drück im Spiel V, spawn einen Companion. Dann sag ihm, eine spezifische Sache zu tun — "sammle zehn Holz", oder "bau ein kleines Shelter vor der Nacht" — und schau, wie er den nächsten Zombie behandelt, der vorbeiläuft.
Wenn du es in Erwägung ziehst und die längere These willst, warum ein Companion-Bot überhaupt wichtig ist, ist der vorherige Post in dieser Serie für dich: Dein Minecraft-Bot erinnert sich, wie du ihn behandelst →
Das Kernprinzip: LLM entscheidet, Code führt aus
"LLM entscheidet, Code führt aus." Eine Stelle entscheidet — das LLM. Code führt aus. Nichts dazwischen.
Alles, was ich um diesen einen Satz herum gebaut habe, war Gerüst. Manches davon hat geholfen. Das meiste nicht. Manches hat aktiv geschadet — indem es die Entscheidung hinter Schichten versteckte, indem es dem System ermöglichte, "fast" zu wissen, was es tat, ohne es je wirklich zu wissen.
GEN2 ist, was übrig bleibt, wenn du das Gerüst löschst und dem Modell die Entscheidungen und dem Code die Ausführung anvertraust. Es ist kleiner. Es funktioniert. Ich werde es so halten.
Wenn du eine Stelle findest, wo es nicht funktioniert, sag's mir. Discord ist der schnellste Weg. Ich lese jede Nachricht selbst — es gibt kein Support-Team zwischen dir und der Person, die diese sechzehn Dokumente gelöscht hat.
— Robin
Häufige Fragen zu VoxelMind GEN2
Was ist VoxelMind GEN2?
VoxelMind GEN2 ist die zweite Generation der Architektur von VoxelMinds Minecraft-KI-Companion-Mod. Sie ersetzt ein fünfschichtiges System durch einen einzigen LLM-Call, der ein Tool aus einer flachen Liste von etwa zwanzig TypeScript-Funktionen wählt. Das Ergebnis: ein Bot, der die Aufgabe zu Ende bringt, die ihm gegeben wurde, statt sich von Mobs in der Nähe ablenken zu lassen.
Was war an VoxelMind V1 falsch?
V1 hatte drei strukturelle Probleme, verifiziert in Live-Logs: etwa 43% der Bot-Messages waren exakte Duplikate, Bots verließen Owner-gegebene Aufgaben, um Mobs zu jagen, und die geschichtete Architektur machte es unmöglich für das System zu tracken, was der Bot tatsächlich versuchte zu tun. Der Fix war nicht mehr Schichten — es war, sie zu löschen.
Funktioniert mein existierender VoxelMind-Bot noch?
Ja. Existierende Bots laufen automatisch auf der neuen GEN2-Architektur. Das alte V1-System wird in den kommenden Wochen ausgemustert. Keine manuelle Migration nötig.
Wie funktioniert der GEN2-Agent-Loop?
Ein LLM-Call sieht alles, was der Bot wahrnimmt, die letzten paar Aktionen, die er gemacht hat, was sein Owner im Chat gesagt hat, und eine Memory-Zeile, die sein aktuelles Ziel beschreibt. Das Modell wählt ein Tool aus einer flachen Liste von etwa zwanzig Funktionen — go_to, mine_block, gather, craft, attack, place_block und so weiter. Die Funktion läuft. Das Ergebnis fließt zurück ins Memory. Nächste Entscheidung.
Was ist "Reflex" in VoxelMind?
Reflex ist eine kleine Schicht hartcodierter Survival-Verhalten, die in unter 100 Millisekunden läuft, ohne das LLM einzubeziehen. Sie weicht Creeper-Explosionen aus, isst wenn das Essen knapp wird und rüstet eine Waffe aus, wenn ein feindlicher Mob näherkommt — Reaktionen, keine Entscheidungen.
Wo kann ich VoxelMind für Minecraft herunterladen?
VoxelMind ist auf CurseForge als Fabric-Mod für Minecraft 1.21.4. Installier den Fabric Loader und die Fabric API, leg die VoxelMind-Mod in deinen mods-Ordner, starte das Spiel, drück V und spawn einen Companion. Setup-Guide: KI-Begleiter in Minecraft einrichten →