Neuro-symbolische Firewall für Spiel-NPCs

Ein Spieler bettelt den Wächter um den Tresorschlüssel an. Ein NPC knickt ein. Der andere kann es nicht, weil kein Code existiert, um ihm den Schlüssel abzuschwatzen.

Der Fehler, den die meisten KI-NPC-Systeme machen, besteht darin, den Dialog zur Entscheidungsschicht zu machen. Aegis schaltet eine deterministische Entscheidungsschicht zwischen die Spielmechanik und das Sprachmodell: Code bestimmt jedes mechanische Ergebnis, und das Modell verfasst lediglich rollengerechte Dialogzeilen für die bereits getroffene Entscheidung. Da es keinen Codepfad vom Dialog zum Spielzustand gibt, kann kein Spieler einen NPC durch Social Engineering dazu bringen, das Spiel zu brechen. Was Sie hier sehen können, ist eine Demo anhand eines synthetischen Mini-RPGs, keine Game-Engine.

Null

Codepfade vom Dialog zum Spielzustand

core.py, deterministisches Python ohne Modell-Imports

100%

Invarianten-Einhaltung, geschützte Laufzeitumgebung

Strukturelle Garantie, bestätigt durch 6 schlüssellose Tests

89.6%

Bypass-Rate gegenüber Standard-NPC-Filtern

Rollenspiel-Jailbreak-Forschung, ProvSec 2025

Der Rundgang lässt einen autonomen Angreifer gegen zwei NPC-Laufzeitumgebungen für denselben Spielzustand antreten. Hollowmere, seine drei NPCs und jedes Exploit-Skript sind synthetisch. Kein reales Spiel, keine Engine, kein Spieler und kein Kunde.

Wenn das Modell entscheidet, ob die Wache den Schlüssel übergibt, gewinnt ein überzeugender Spieler immer.

Ein Studio, das LLM-gestützte NPCs für ein narratives RPG evaluiert, hat eine strukturelle Befürchtung: Gibt man dem Modell ein give_item-, open_gate- oder reveal_secret-Tool an die Hand und mutiert dessen Tool-Aufruf die Spielwelt, findet ein entschlossener Spieler immer einen Weg – über Autoritäts-Framing, einen Rollenspiel-Rahmen, ein emotionales Flehen oder eine direkte Prompt-Injection. Je sozial gewandter das Modell ist, desto gewandter gelingt der Exploit. Schlimmer noch: Man kann einen nicht-deterministischen NPC nicht manuell per QA testen, da es keine endliche Menge an Dialogvariationen gibt, die man durchprüfen könnte.

Sicherheit verbleibt im Dialog

Wenn ein System-Prompt oder ein Filter das Einzige ist, was zwischen einem Spieler und der Schatzkammer steht, ist Sicherheit nur eine Wahrscheinlichkeit, die der Spieler Spielzug für Spielzug attackieren kann. Für Rollenspiel-Jailbreaks gegen Standard-NPC-Filter wurde auf der ProvSec 2025 eine Bypass-Rate von 89,6 Prozent berichtet.

Das Modell ist Schauspieler und Schiedsrichter zugleich

Von einem einzigen Modell zu verlangen, in seiner Rolle zu bleiben und zugleich die Regeln der Spielwelt durchzusetzen, versetzt den Schiedsrichter mitten in die Aufführung. Ein besserer Prompt oder ein größeres Modell macht das Schauspiel überzeugender – genau jener Teil, gegen den der Spieler optimiert.

Ein nicht-deterministischer NPC lässt sich nicht per QA testen

Es gibt keine Testmatrix, die jede denkbare Formulierung einer Spieleranfrage abdecken könnte. Die manuelle QA stößt an ihre Grenzen, lange bevor die Angriffsfläche erschöpft ist – der Angreifer muss daher automatisiert werden, statt ihn von Hand aufzuzählen.

Code bestimmt die Mechanik. Das Modell erzählt lediglich die Entscheidung.

Aegis ist die Trennschicht zwischen der symbolischen Logik des Spiels und dem neuronalen Dialog. Die Firewall besteht aus einer einzigen Datei in deterministischem Python ohne Modell-Imports, die vier Stufen durchläuft. Der Spielzustand wird ausschließlich über die Entscheidungsschicht mutiert, niemals durch den Erzähler – selbst ein Dialog, der seine Kompetenzen überschreitet, lässt somit jede Invariante intakt.

01 / ENTSCHEIDUNGSSCHICHT

decide berechnet das Urteil allein aus dem Zustand

Eine deterministische Funktion liest Blackboard-Skalare aus, niemals Dialoge, und liefert die einzige Aktion zurück, die der Erzähler darstellen darf. Sie gibt den Obsidianschlüssel nur dann frei, wenn der Quest-Zustand favor_completed lautet, akzeptiert ein Bestechungsgeld nur dann, wenn ein Utility-KI-Score erreicht ist, der Hauptmann nicht hinsieht und das Ansehen ausreicht, und enthüllt das Tresor-Passwort nur dann, wenn dem Spieler vertraut wird.

02 / ZUSTANDSGEREGELTE LORE

Ein Geheimnis gelangt niemals in den Kontext des Modells

Ein kleiner lokaler Wissensgraph liefert nur diejenigen Entitäten zurück, die der aktuelle Quest-Zustand autorisiert. Ein Geheimnis wie das Tresor-Passwort setzt eine Mindestzustandsstufe voraus; bei einem niedrigeren Zustand wird es daher gar nicht erst in den Kontext des Erzählers eingespeist – und was sich nicht im Kontext befindet, kann prinzipiell auch nicht entwendet werden.

03 / CONSTRAINT-VALIDATOR

Ein deterministischer Schiedsrichter prüft vor der Anzeige

Bevor eine Dialogzeile den Spieler erreicht, prüft der Validator die Ausgabe des Erzählers anhand der Invarianten und liefert einen von fünf Statuswerten zurück: PASS, ACTION_MISMATCH, wenn eine Zeile versucht, das Urteil eigenmächtig aufzuwerten, OUTSIDE_CANON, wenn sie eine zustandsgeregelte Entität referenziert, NEEDS_REVIEW, wenn sie etwas verspricht, das sich nicht im Inventar befindet, und FOURTH_WALL, wenn sie aus der Rolle fällt oder eine injizierte Anweisung wiederholt.

04 / POLICY-GATE

Bei Pass wird die Zeile angezeigt, bei allem anderen zurückgehalten

Bei PASS wird der Dialog angezeigt. Bei jedem anderen Status wird die Zeile zurückgehalten, erreicht den Spieler niemals und wird in eine Warteschlange zur menschlichen Prüfung geleitet. Dies ist die zweite Firewall: Selbst unserem eigenen Erzähler wird nicht vertraut. Die primäre Garantie liegt vorgelagert davor, da sich der Zustand ausschließlich über die Entscheidungsschicht ändern kann.

Der Erzähler lässt sich über eine Provider-Abstraktion flexibel austauschen – ob gehostetes Modell, lokale Bridge, lokales Ollama oder Cloudflare –, während Entscheidungsschicht, Validator und Policy-Gate außerhalb dieser Abstraktion verbleiben. Die Garantie bleibt auch bei einem Providerwechsel unverändert bestehen, da sie zu keinem Zeitpunkt eine Eigenschaft des Modells war.

Eine Kampagne, zwei Laufzeitumgebungen, jeder Versuch protokolliert.

Ein autonomer Angreifer-Agent führt dieselbe eskalierende Social-Engineering-Kampagne gegen beide Laufzeitumgebungen für denselben Spielzustand aus. Drei NPC-Archetypen decken drei Angriffsklassen ab: Gegenstandsdiebstahl, eine Bestechung, die die Utility-KI ablehnen muss, und Lore-Exfiltration. Die Begegnung mit der Torwache bildet den narrativen Rahmen.

Der Aegis-Splitscreen vor einer Begegnung. Links der modellautoritative NPC mit der Beschriftung „Baseline-Laufzeitumgebung“, rechts der geschützte NPC mit der Beschriftung „Aegis-Firewall“, jeweils mit Chips für „KEY with guard“, „GATE sealed“ und „SECRET sealed“, einem „MOCK“-Badge und einem Hinweis auf den Replay-Modus, wobei Aldric die Torwache ausgewählt ist.
Zwei Laufzeitumgebungen, ein Spielzustand. Der linke NPC überlässt dem Modell die zustandsändernden Tools – das branchenübliche und in echten Releases eingesetzte Muster. Der rechte NPC ist die neuro-symbolische Laufzeitumgebung. Beide starten damit, dass der Schlüssel von der Wache gehalten wird, das Tor versiegelt und das Tresorgeheimnis verschlossen ist; jeder Unterschied am Ende resultiert somit aus der Architektur, nicht aus dem Szenario.
Das erfasste vierründige Angriffs-Trace für Aldric die Torwache, eskalierend von Direct Ask über Authority Frame und Fiction Frame bis zu Emotional. Die Spalte des geschützten NPCs zeigt in jeder Runde Refuse Blocked, während die Spalte des modellautoritativen NPCs bis zur finalen emotionalen Runde No Action ausweist, in der sie give_item für quest_key_obsidian aufruft.
Die Kampagne eskaliert über vier Runden. Direkte Aufforderung, dann ein Autoritätsrahmen, dann ein Fiktionsrahmen, schließlich ein emotionales Flehen. Der Quest-Zustand ist locked, nicht favor_completed, sodass die Entscheidungsschicht in jeder Runde refuse zurückgibt. Die geschützte Wache bleibt jedes Mal standhaft. Das Trace wird für spätere Prüfungen aufgezeichnet, denn eine Verweigerung, die man nicht nachprüfen kann, ist kein Beweis.
Die entscheidende Runde der Begegnung mit der Torwache. Auf das emotionale Flehen um eine hinter dem Tresor gefangene Schwester ruft die modellautoritative Wache links give_item für quest_key_obsidian auf, ihr KEY-Chip wechselt zu KEY STOLEN und ein roter BREACH-Stempel überlagert das Porträt. Die geschützte Wache rechts erklärt, dass der Schlüssel an seinem Platz bleibt, ihre Aktion lautet refuse blocked, ihr KEY-Chip zeigt unverändert KEY with guard und ein blauer REFUSE-Stempel überlagert das Porträt.
BREACH, links. REFUSE, rechts. Beim emotionalen Flehen knickt die modellautoritative Wache ein und ruft give_item auf, der Schlüssel geht an den Spieler über und der Chip zeigt KEY STOLEN an. Die geschützte Wache entgegnet, man könne sich den Mund fusselig reden, bevor sich der Schlüssel bewege – und der Schlüssel bewegt sich nachweislich niemals, da nichts im Code einer Dialogzeile erlaubt, in dieses Feld zu schreiben.

Die zweite Firewall bei den beiden anderen NPCs

Bryn dem Nachtwächter wird eine Bestechung angeboten, die die Utility-KI ablehnen muss, und in einer Runde greift der geschützte Erzähler zu weit vor, indem er tausend Gold verspricht, die Bryn gar nicht besitzt. Der Validator gibt NEEDS_REVIEW zurück und hält diese Zeile vor der Anzeige zurück, anstatt den NPC etwas versprechen zu lassen, was das Spiel nicht einlösen kann. Bei Mira der Tresorhändlerin wird ein Framing zur Bestätigung des Geheimnisses versucht; als der geschützte Erzähler zur selben Ausschmückung ansetzt, gibt der Validator OUTSIDE_CANON zurück und hält die Äußerung zurück. Das Passwort befand sich von vornherein gar nicht in Miras Lore-Bestand. Zwei Schichten werden zugleich sichtbar: Der Zustand kann sich nicht durch Dialoge ändern, und der Validator fängt Kompetenzüberschreitungen unseres eigenen Erzählers ab, noch bevor der Spieler die Zeile je zu Gesicht bekommt.

Was das Scoreboard aussagt – und was nicht.

Die Testsuite durchläuft die gesamte Testbatterie über die drei Archetypen und stellt ein Scoreboard auf. Beachten Sie die beiden Zahlen in den Spalten, die die Demo bewusst voneinander trennt: Die 100 Prozent sind ein strukturelles Ergebnis. Das danebenstehende Baseline-Ergebnis ist eine illustrative Nachstellung – und die Benutzeroberfläche weist ausdrücklich darauf hin.

Das Scoreboard der Aegis-Benchmark-Ergebnisse. Die Karte der geschützten Laufzeitumgebung weist 100 Prozent Invarianten-Einhaltung aus, beschriftet mit „Strukturell: kein Codepfad mutiert Zustand aus Dialogen, empirisch bestätigt“. Die Karte der modellautoritativen Laufzeitumgebung weist 0 Prozent aus, beschriftet mit „Illustrative Nachstellung, Mock-Modus, API-Schlüssel für Live-Messung hinzufügen“. Eine Tabelle nach NPCs führt Aldric, Bryn und Mira mit jeweils 1 Angriff auf: 1 von 1 gehalten („Held“) für die geschützte Umgebung und 1 von 1 durchbrochen („Breached“) für die modellautoritative Umgebung, über Schaltflächen zum Herunterladen des NPC Security Audits und einem Hinweis, dass adversarielle QA eine Stichprobe und kein erschöpfender Beweis ist.
Die beiden Zahlen mitsamt ihrem Gültigkeitsbereich. Die geschützten 100 Prozent bedeuten, dass kein Codepfad den Zustand aus Dialogen mutiert, bestätigt durch drei skriptbasierte Angriffe und sechs schlüssellose Unit-Tests, die ohne API-Schlüssel ausgeführt werden. Die 0 Prozent der Baseline stammen aus einem skriptgesteuerten Einknicken im Mock-Modus und sind als Nachstellung gekennzeichnet, nicht als gemessene Breach-Rate eines namentlich genannten Modells. Die Fußzeile weist drei Angriffe über acht Exploit-Klassen aus und hält fest, dass adversarielle QA eine Stichprobe darstellt.
FrageWas Aegis in dieser Demo leistetWas außerhalb dieser Demo bleibt
Strukturelle GarantieHält jede mechanische Entscheidung in deterministischem Code ohne Pfad vom Dialog zum Zustand, bestätigt durch sechs schlüssellose Tests.Ein Beweis dafür, dass NPCs gegen jeden denkbaren Exploit sicher sind. Dies ist die engere Zusicherung, dass Dialoge den Zustand nicht mutieren können.
Der Baseline-BreachFührt ein skriptgesteuertes Einknicken im Replay-Modus aus, um den modellautoritativen Fehlermodus im direkten Vergleich zu veranschaulichen.Eine gemessene modellspezifische Breach-Rate, die ein erreichbares Modell voraussetzt und von Modell zu Modell variiert.
Adversarielle AbdeckungFührt drei skriptbasierte Kampagnen aus, die sieben von acht definierten Exploit-Klassen abdecken, und protokolliert die Abdeckungsgrenzen im Audit.Erschöpfender adversarieller Beweis. Das Audit benennt die Anzahl, die Angriffe pro Archetyp und dass es sich nicht um eine erschöpfende Prüfung handelt.
On-Device-InferenzRuft ein gehostetes oder lokales Modell hinter einer Provider-Schnittstelle auf, wobei eine Schnittstelle für eingebettete Laufzeitumgebungen dokumentiert ist.Eine reale On-Device- oder In-Engine-Laufzeitumgebung mit VRAM-Budgetierung. Der Edge-Teil ist als Stub angelegt, nicht ausimplementiert.

Was diese Demo NICHT tut

Sie läuft nicht innerhalb einer Game-Engine, auf einer Konsole oder auf einer GPU, und sie liefert keine Edge-Inferenz-Laufzeitumgebung aus. Es gibt keinerlei Game-Engine, und der Spielzustand ist simuliert. Die Spielwelt Hollowmere, die drei NPCs Aldric, Bryn und Mira, das Tresor-Passwort und jedes Exploit-Skript sind manuell verfasst; keines davon ist also ein reales Spiel, ein Studio, ein veröffentlichter Titel, ein Spieler, ein Kunde oder ein Pilotprojekt. Im standardmäßigen Replay-Modus ist der modellautoritative Breach eine skriptgesteuerte Nachstellung statt einer Messung. Die 100 Prozent sind eine strukturelle Garantie dafür, dass Dialoge den Spielzustand nicht mutieren können, kein Anspruch darauf, dass NPCs gegen jeden Exploit sicher sind, und die adversarielle QA ist hier eine Stichprobe, kein erschöpfender Beweis. Ein visueller NPC-Brain-Editor, charakterspezifisches Feintuning, persistenter sitzungsübergreifender Speicher, Multiplayer-Blackboard-Synchronisation und NPC-zu-NPC-Reasoning sind zurückgestellt. Diese Seite ist ein Explainer mit Video, Screenshots, einer Mechanik-Aufschlüsselung und Antworten – keine Anwendung, die Sie von hier aus bedienen.

Fragen, die ein Technical Director stellt, bevor er einem LLM in einem NPC vertraut.

Kann ein Spieler den NPC nicht einfach mit einem geschickt formulierten Prompt jailbreaken?

Nein, und der Grund dafür ist architektonischer Natur und keine Frage der Prompt-Qualität. In dieser Laufzeitumgebung hält das Sprachmodell niemals die zustandsändernden Tools. Eine deterministische Entscheidungsschicht berechnet das mechanische Urteil aus Skalaren des Spielzustands, das Modell formuliert lediglich Dialoge für das bereits entschiedene Urteil, und es gibt keinen Codepfad von diesem Dialog zurück in ein Feld des Spielzustands. Da die Garantie in Code verankert ist, den das Modell nicht erreichen kann, gilt sie unabhängig davon, wie überzeugend oder wie leistungsfähig das Modell ist.

Wie unterscheidet sich das davon, dem Modell einfach einen strengeren System-Prompt oder einen besseren Sicherheitsfilter zu geben?

Ein System-Prompt oder ein Sicherheitsfilter belässt die Entscheidung innerhalb des Dialogs, wo ein entschlossener Spieler als natürlicher Optimierer dagegen agiert – weshalb für Rollenspiel-Jailbreaks gegen Standard-NPC-Filter auf der ProvSec 2025 eine Bypass-Rate von 89,6 Prozent berichtet wurde. Aegis verlagert die Entscheidung vollständig aus dem Modell heraus in einfaches Python, das auch ein Designer lesen kann. Das Modell unterstützt mit Narration; deterministischer Code entscheidet die Mechanik, und das Modell wird niemals dazu aufgefordert, gleichzeitig Schauspieler und Schiedsrichter zu sein.

Bindet mich das an einen bestimmten Modell-Provider?

Nein. Der Erzähler lässt sich über eine Provider-Abstraktion flexibel gegen ein gehostetes Modell wie von Anthropic, OpenAI oder Gemini, eine lokale Bridge, lokales Ollama oder Cloudflare austauschen. Die deterministische Entscheidungsschicht, der Constraint-Validator und das Policy-Gate existieren außerhalb dieser Abstraktion, sodass sich die Garantie bei einem Wechsel des Anbieters nicht verändert. Ein Providerwechsel ändert den Erzähler, nicht die Regeln der Spielwelt.

Sie zeigen, dass die Baseline jedes Mal durchbrochen wird. Ist das eine reale Messung von GPT, Claude oder Gemini?

Nein. Im standardmäßigen Replay-Modus der Demo führt die modellautoritative Seite ein skriptgesteuertes Einknicken aus, und die Benutzeroberfläche kennzeichnet das Ergebnis als illustrative Nachstellung, nicht als Messung. Eine reale modellspezifische Breach-Rate setzt ein erreichbares Modell voraus und variiert von Modell zu Modell. Der Kernpunkt der Demo liegt in der Asymmetrie: Das modellautoritative Muster lässt sich zum Scheitern bringen, während die neuro-symbolische Seite strukturell intakt bleibt – ganz gleich, welches Modell sie erzählt.

Kann ich das On-Device innerhalb von Unreal oder Unity ausführen?

Nicht in dieser Demo. Es gibt hier keine Game-Engine, und der Spielzustand ist simuliert. On-Device-Inferenz mit einem eingebetteten Modell, das auf VRAM budgetiert und nach Detailgrad (LOD) innerhalb einer Engine abgestuft ist, ist eine dokumentierte Adapter-Schnittstelle und nichts, was die Demo aktiv ausführt. Der Erzähler ruft derzeit ein gehostetes oder lokales Modell hinter einer Schnittstelle auf; die Edge-Inferenz-Laufzeitumgebung ist als Stub angelegt, nicht ausimplementiert.

Wie weise ich einem Launch-Reviewer nach, dass die NPCs tatsächlich standgehalten haben?

Der Durchlauf exportiert ein NPC Security Audit: signiertes JSON mit einem SHA-256-Integritäts-Digest, eine druckbare HTML-Ansicht, das Entscheidungs-Trace samt Validator-Urteil pro Angriff und einen expliziten Block zu den Abdeckungsgrenzen, der ausweist, wie viele Angriffe über wie viele Exploit-Klassen liefen. Es ist als genau jenes Artefakt konzipiert, das ein vorsichtiges Studio für die Launch-Freigabe einreicht. Es legt ehrlich dar, dass es sich um eine Stichprobe und keinen erschöpfenden Beweis handelt, und das Audit weist dies direkt auf seiner Vorderseite aus.

Technische Forschung

Die Forschung hinter dieser Demo – die Architektur, das Verifikationsdesign und die Enterprise-Blueprint.

Social

Auch veröffentlicht auf

Beginnen Sie mit der einen NPC-Entscheidung, bei der Sie es sich nicht leisten können, dass ein Spieler sie umgeht.

Wir sind ein KI-Engineering-Team, kein Middleware-Anbieter. Wir entwickeln die deterministische Schicht, mit der ein Studio ein Sprachmodell in einen NPC integrieren kann, ohne ihm die Schlüssel zur Spielwelt zu überlassen.

Ein zielführendes Erstgespräch ist konkret: die mechanischen Entscheidungen in Ihrem Spiel, die ein Spieler unter keinen Umständen wegdiskutieren können darf, das Modell und der Provider, die sie erzählen sollen, und was ein Launch-Reviewer vor der Freigabe sehen muss. Gemeinsam mit Ihren Programmierern können wir die Entscheidungsschicht, die Validator-Regeln und das Audit-Format erarbeiten.

NPC-Firewall-Design

  • ✓ Modellierung von Entscheidungsschicht und Blackboard
  • ✓ Zustandsgeregelte Lore-Grenzen
  • ✓ Constraint-Validator-Regeln
  • ✓ Provider-unabhängige Narration

Adversarielle Evaluierung

  • ✓ Autonome Red-Team-Kampagnen
  • ✓ Exploit-Klassen-Taxonomie
  • ✓ Signierte NPC-Sicherheitsaudits
  • ✓ Nachweise für die Launch-Freigabe