Technisches Systemhandbuch
Die Plattform als digitale biologische Maschine
Der menschliche Organismus ist das Vorbild. Diese Plattform ist seine kontrollierte digitale Nachbildung.
Wie dieses Handbuch zu lesen ist
Dieses Dokument stellt keine Behauptung ohne Anker auf. Jeder Anker ist eine von vier Sorten, und jede Sorte hat einen eigenen Prüfweg:
| Anker-Sorte | Beispiel | Prüfweg |
|---|---|---|
| Datei/Modul | rag_reranker.py | Datei im Repository öffnen |
| Endpunkt | /api/tools/memory-papierkorb | Autogen-Dokumentation unter /api/docs/autogen – sie wird zur Laufzeit aus dem laufenden Container erzeugt und kann deshalb nicht veralten oder beschönigen |
| Konfiguration | WAECHTER_GELB_MAX_PRO_TAG | Umgebungsvariablen des Cloud-Run-Dienstes; Werte sind bewusst konfigurierbar, genannte Zahlen sind der Stand vom 02.09.2026 |
| Commit | 96e2a600 | Git-Historie des Repositories, inkl. Cloud-Build-Status |
Die Autogen-Dokumentation ist der wichtigste Prüfpfad dieses Systems: Sie liest Endpunkte und Werkzeuge aus dem laufenden Code, nicht aus einer gepflegten Liste. Ein Prüfer muss diesem Handbuch also nicht glauben – er kann jede Struktur-Aussage gegen den Container selbst halten.
/systemauskunft nennt
die Module mit ihren echten Zeilenzahlen, die Anzahl der Endpunkte und den vollstaendigen
Werkzeug-Katalog samt Selbstpruefung gegen das eigene Werkzeug-Verzeichnis. Die Seite entsteht
in dem Augenblick, in dem sie aufgerufen wird, aus dem Quelltext, der gerade wirklich
ausgeliefert wird – niemand tippt diese Zahlen ab, niemand kann vergessen, sie zu
aktualisieren. Maschinell auswertbar unter
/systemauskunft?format=json.
Weicht eine Angabe dieses Handbuchs von jener Seite ab, gilt jene Seite.
0. Kernsatz
Die Plattform ist kein Chatbot und kein autonomes System. Sie ist ein hochsensibles, spezialisiertes digitales Nervensystem. In der Sprache der Informatik: ein Betriebssystem für KIs, dessen Prozessoren gemietete Sprachmodelle sind (Kapitel 0.1).
Das Bewusstsein liefert die Intention, die Bewertung und die finale Entscheidung. Alles andere – Sensorik, Gedächtnis, Motorik, Homöostase, Reflexe und Vorbewertung – ist Nervensystem.
Dieses Design nimmt jeder Sorge vor unkontrollierter KI die technische Grundlage: Keine KI dieses Systems kann Code, Daten oder Infrastruktur eigenmächtig verändern. Jede Veränderung durchläuft das Karten-Prinzip (Human-in-the-Loop): Die KI erzeugt einen Vorschlag als sichtbare Karte, der Nutzer klickt aktiv auf „Übernehmen“ – erst dann geschieht etwas, und zwar als versionierter Git-Commit mit automatischem Deploy. Nachprüfbar in jeder Zeile der Commit-Historie: Es existiert kein Commit, der nicht durch einen Klick des Nutzers ausgelöst wurde.
0.1 Einordnung – ein Betriebssystem für KIs
Die Biologie ist das Vorbild dieses Handbuchs. Die Informatik hat für dasselbe Gebilde ein älteres Wort: Betriebssystem. Ein Betriebssystem tut nach Lehrbuch zwei Dinge. Es verbirgt unterschiedliche Hardware hinter einer einheitlichen Schnittstelle, und es verwaltet knappe Mittel – Rechenzeit, Speicher, Ein- und Ausgabe – samt der Frage, wer was darf. Die Plattform tut beides. Nur sind ihre Prozessoren keine Chips, sondern gemietete Sprachmodelle dreier Anbieter, und ihre knappen Mittel heißen Modellaufrufe, Token, Werkzeugrunden und Geld.
| Baustein | Klassisches Betriebssystem | Diese Plattform | Anker |
|---|---|---|---|
| Hardware-Abstraktion | Treiber verbergen den Chip | Drei Anbieter-Schnittstellen hinter einem Aufruf; der Anbieter ist per Konfiguration umschaltbar | ki_bruecke.py (call_claude, call_gemini, call_grok), CLAUDE_ANBIETER |
| Prozessor | CPU | Claude, Gemini, Grok – gemietet, austauschbar, mit festen Rollen (Kapitel 2) | ai_claude.py, ai_gemini.py, ai_grok.py |
| Arbeitsspeicher | RAM, Auslagerung | Chatverlauf und Kontextfenster, je Konversation getrennt; Token-Budgets je Kostenstufe; was hinten herausfällt, wandert in den Notizblock | ring1_kontext.py, ring1_verlauf.py |
| Dateisystem | Platte | Langzeitgedächtnis mit Besitzer-Stempel, Datenraum, Repository-Zugang | ring1_gedaechtnis.py, ring1_datenraum.py, ring1_github.py |
| Kernel und Bootvorgang | Kernel, Bootloader | core.py und die Ring-1-Module, gestartet über app.py in fester Ladereihenfolge mit Startprüfung; ein kaputtes Randmodul wird übersprungen und gemeldet, statt den Start zu kippen | app.py (Auto-Registrierung, Fangnetz je Modul) |
| Systemaufrufe | Syscall-Tabelle | Werkzeug-Verzeichnis mit 75 Werkzeugen, aus dem echten Schema erzeugt, nicht von Hand gepflegt | tool_meta.py, /systemauskunft |
| Rechenzeit-Verwaltung | Scheduler, Zeitscheiben | Kostenstufen Talk/Schnell/Stark, Zeitschranke je Auftrag (dahinter ein Deckel für Werkzeugrunden), Deckel für parallele Hintergrundläufe, Kaskadenschutz – alles nach festen Regeln | ring1_modelle.py, ring1_kontext.py (Zeitkette), ARBEITER_MAX_PARALLEL, claude_agenten.py |
| Sperren | Mutex | Verarbeitungs-Sperre je Konversation mit Zeitgrenze | chat_runtime.py |
| Treiber | Gerätetreiber | Sprache (Ton rein und raus), Windows-Agent, Android-App, Cloud-Hand, Fachsystem-Anbindungen | voice.py, node_agent.py, agent/main.go, apk.yaml, cloud_hand.py, curago.py |
| Rechtesystem | Nutzer, Rechte | Besitzer- und Admin-Trennung, Karten-Prinzip, Zwei-Schlüssel-Prinzip, eigener Modulordner je Gast | ring1_identitaet.py, claude_agenten.py (MODUL_ORDNER) |
| Unterbrechungen | Interrupts | Der physisch getrennte Wächter meldet von außen in das System hinein (Kapitel 7) | waechter.py, waechter/ |
| Systemdienste | Daemons | Wächter, Stimmgabel (Messnetz), Telemetrie, Schlaflabor | takt.py, telemetry.py, gedaechtnis_wartung.py |
| Paketverwaltung und Wachstum | Paketmanager | Bibliothek und Blueprints: Handbücher und Baupläne, die die Agenten bei Bedarf lesen statt dauerhaft laden; jedes neue Modul bringt seinen Bauplan in derselben Karten-Serie mit | bibliothek.py, Bibliothek/, Blueprints/ |
Ein Hinweis zur Genauigkeit: Die „Ringe“ 0 und 1 dieser Plattform sind Ladeschichten – sie regeln, welches Modul welches laden darf. Prozessor-Schutzringe im Sinne der Hardware sind sie nicht. Das Wort ist als Bild gewählt, nicht als technische Behauptung.
0.1.1 Zwei bewusste Abweichungen vom Lehrbuch
elara_kern.py,
elara_team_fragen, ELARA_TEAM_ZIELE). Die Grenzen dabei sind Struktur,
nicht Einstellung: immer nur ein Empfänger, nur lesend, Stufe fest auf „schnell“, die Rundenzahl
deckelt ELARA_MAX_TOOL_RUNDEN, und nichts davon landet in einer Konversation oder im
Gedächtnis. Unverändert gilt: Kein Bauteil stellt sich selbst nach Last um, die Stimmgabel
(takt.py) bleibt Ohr und nicht Muskel, und jede schreibende Handlung braucht den
Klick des Nutzers. Der genauere Satz lautet deshalb: Eine KI darf lesende Arbeit im Team
verteilen – den Schreibschlüssel hält der Mensch. Ehrliche Fußnote zum Stand: Der Charakter,
der Elara sagt, wann sie dieses Werkzeug greift, ist noch nicht angeschlossen, und eine erste echte
Runde wurde in den Protokollen noch nicht gesehen. Der Baustein ist gebaut; sein Beweis ist die
erste Runde, nicht die Lesung.
0.1.2 Wo das auf der Landkarte liegt
Die Kategorie „Betriebssystem für KIs“ existiert außerhalb dieser Plattform: als Idee seit Andrej Karpathys „LLM OS“ (September 2023), als Forschung seit MemGPT („Towards LLMs as Operating Systems“, Oktober 2023) und AIOS („LLM Agent Operating System“, März 2024), zuletzt als Agent libOS und AgenticOS (beide Juni 2026). Diese Systeme haben laut eigener Dokumentation Kernel, maschinellen Scheduler, Speicherverwaltung, Zugriffskontrolle und teils eine menschliche Bestätigung vor riskanten Schritten.
Eine Web-Recherche des Assoziations-Cortex am 27.09.2026 fand kein öffentlich beschriebenes System, das drei Merkmale gleichzeitig hat: der Mensch bleibt bewusst der Scheduler; der Schutz läuft über Rückfall statt über Prozess-Trennung; der eigene Code des Systems geht nur nach einem menschlichen Klick live. Jedes Merkmal einzeln hat Vorgänger – die Kombination nicht. Das erste Merkmal wurde am Abend desselben Tages verfeinert (0.1.1): Der Mensch hält den Schreibschlüssel, eine KI darf lesende Arbeit im Team verteilen. Ob die Suche mit dem verfeinerten Merkmal anders ausgeht, ist noch nicht geprüft. Ein Nicht-Fund ist kein Beweis der Einzigartigkeit; er ist der Stand der öffentlich beschriebenen Landschaft zu diesem Datum und wird bei jeder Überarbeitung dieses Handbuchs neu geprüft.
Zur Frage „läuft das auf echter Hardware?“: Die Plattform läuft auf Cloud Run, und Cloud Run verwaltet die Hardware. Das ist historisch nichts Neues. Windows 1 bis 3 lief auf MS-DOS, das die Hardware verwaltete, und wurde von Microsoft und der Presse 1985 bis 1990 als „Operating Environment“ bezeichnet (Quellen: Wikipedia zu Windows 1.0; Los Angeles Times, 24.05.1990). Ein Betriebssystem, das auf einem anderen läuft, ist eine anerkannte Bauform.
Und noch ein Satz zur Wachstumsrichtung: Hier wächst keine KI. Hier wächst ein Betriebssystem durch KI. Jedes Handbuch in der Bibliothek und jeder Bauplan erweitert, was alle drei Agenten können – ohne dass ein Systemprompt länger wird, weil gelesen wird, was gebraucht wird, wenn es gebraucht wird.
0.1.3 Speicherhierarchie – warum das System nicht vergisst
Ein nacktes Sprachmodell vergisst, weil sein Kontextfenster endet. Das ist keine Schwäche, die ein Prompt heilen könnte – es ist die Bauform des Prozessors. Ein Betriebssystem löst dasselbe Problem seit Jahrzehnten mit einer Speicherhierarchie: klein und schnell oben, groß und dauerhaft unten, und feste Regeln, was wann wohin wandert. Diese Plattform hat vier Schichten.
| Schicht | Klassisches Betriebssystem | Diese Plattform | Anker |
|---|---|---|---|
| 1 – Fenster | Register, Cache | Die letzten zehn Nachrichten je Konversation, in beiden Arbeitsstufen gleich; heiß, teuer, klein | ring1_verlauf.py (CLAUDE_SLIM_MESSAGES, CLAUDE_FAST_SLIM_MESSAGES) |
| 2 – Notizblock | RAM | Was aus dem Fenster fällt, wird in sieben festen Rubriken fortgeschrieben – angehängt, nie neu zusammengefasst; gedeckelt auf 14.000 Zeichen; lebt nur im Container und stirbt mit ihm; trägt eine Abdeckungs-Marke, die Lücken benennt, statt sie zu verschweigen | ring1_verlauf.py (Notizblock) |
| 3 – Sitzungsgedächtnis | Auslagerungsdatei | Eigene Sammlung je Sitzung, nur über die Konversations-Kennung lesbar, nur in Sandbox-Räumen; kann das Langzeitgedächtnis strukturell nicht erreichen – nicht per Schalter, sondern weil der Weg nicht existiert | ring1_gedaechtnis.py (memory_vectors_sitzung, sitzung_gilt) |
| 4 – Langzeitgedächtnis | Platte | Wird nur auf dem Weg des Nutzers beschrieben, die Sandbox schreibt nie; beim Lesen ordnet ein Reranker; nachts sortiert ein Herzschlag per Cloud Scheduler: Kanten ab Distanz 0.28, Dubletten ab 0.08; der Papierkorb verschiebt, einen Löschweg gibt es nicht – was geht, entscheidet der Nutzer | ring1_gedaechtnis.py, rag_reranker.py, gedaechtnis_wartung.py |
Der Satz gegen die Drift steht im Code selbst: Der Notizblock schreibt fort und fasst nicht neu zusammen, weil jede Neufassung stille Post über viele Stationen wäre. Daraus folgt eine ehrliche Formulierung nach außen: Die Sitzung ist nicht unendlich – sie wird lang, weil ausgelagert wird, nicht weil das Fenster kein Ende hat. Und der Nutzer wählt je Raum, ob eine Sitzung ins Langzeitgedächtnis schreibt; wo sie es tut, wird nachts sortiert, aber nichts gelöscht, was er nicht freigegeben hat.
0.1.4 Zwei Klassen von Schwächen – eine gelöst, eine eingesperrt
Ein Sprachmodell hat zwei Arten von Schwächen, und dieses Handbuch trennt sie, weil sie
verschieden behandelt werden. Es vergisst – Kontextverlust, Drift, Verstummen
zwischen Sitzungen. Diese Klasse ist nicht im Prompt gelöst, sondern in der Architektur: in
Konstanten, Sammlungen und Zeitplänen (0.1.3). Es irrt – Halluzination,
Fehlschluss, behauptete Handlung. Diese Klasse ist nicht abgeschafft; kein Bauteil dieser
Plattform macht die Prozessoren unfehlbar. Sie ist eingesperrt: Jede Änderung ist eine Karte,
deren Textstelle zeichengenau zur Datei passen muss, sonst entsteht keine Karte; bei Python prüft
der Server die Syntax, bevor die Karte erscheint; der Build prüft den Start; Cloud Run leitet auf
eine kaputte Revision keinen Verkehr; der Wächter meldet von außen; der Rückfall ist ein Knopf.
Ein Betriebssystem hat auch nie verhindert, dass ein Programm abstürzt – es hat verhindert, dass
der Absturz den Rechner mitnimmt. Genau das ist hier gebaut. Zwei Ohren hören dabei außerhalb des
Prozessors zu: der Wächter für Fehler (waechter/, eine eigene Cloud Function mit
Totmannschaltung für den Log-Wächter) und die Stimmgabel für Stille (takt.py).
Was dem Nutzer bleibt, ist deshalb nicht weniger Kontrolle, sondern weniger Handarbeit. Kontrolle war nie die Zahl der Klicks; sie ist die Frage, ob etwas Unumkehrbares geschieht, ohne dass er es gewollt hat. Die Antwort darauf steht im Rechtesystem, nicht im Fleiß: Kein Reflex dieser Plattform schreibt. Das Bewusstsein steuert nicht jeden Muskel – es sagt, wohin, und behält das Veto.
1. Gesamtorganisation – ZNS, PNS und autonomes System
Biologisches Vorbild: Zentrales Nervensystem (Integration und Befehl), peripheres Nervensystem (Sensorik und Motorik), autonomes System (Homöostase, dem Bewusstsein vorgelagert), dazu Hierarchie, Parallelverarbeitung und Schutzreflexe.
| Biologisches System | Plattform-Entsprechung | Anker |
|---|---|---|
| ZNS (Integration, Befehl) | Flask/WSGI-Kern mit Chat-Laufzeit und Agenten-Anbindung | core.py, app.py, chat_runtime.py, ai_claude.py, ai_gemini.py, ai_grok.py |
| PNS (Sensorik, Motorik) | 75 Werkzeuge (20 Claude, 33 Gemini, 22 Elara/PA-1), Sprachmodul, Cloud-Aktions-Karten | tool_meta.py, gemini_schema.py, voice.py, observer_tools.py |
| Autonomes System | Wächter – physisch getrenntes Modul, zwei Cloud Functions | waechter/log-check/main.py, waechter/uptime-check/main.py |
| Schutzsystem | Gebote-Tafel, Zwei-Schlüssel-Prinzip, IAM, Modus-Schranke, Login-Sperre | Prompts/gebote_universal.md, Konfiguration LOGIN_SPERRE_AB_VERSUCHEN |
Die Werkzeuglisten werden – wie die Endpunkt-Dokumentation – beim Sitzungsstart aus dem echten Schema generiert und nicht von Hand gepflegt.
2. Spezialisierte Regionen (Gehirn-Areale)
| Biologische Region | Entsprechung | Umsetzung | Funktion |
|---|---|---|---|
| Motor-Cortex | Claude | 20 Werkzeuge, Multi-Edit in einem Commit (edits-Parameter), Zeilen-Extraktion, Syntaxprüfung vor jeder Karte | Konstruktion, Code-Änderung, Modularisierung |
| Sensorischer Cortex | Gemini | 33 Werkzeuge: Logs, Traces, Metriken, IAM, Quotas, Secrets-Metadaten, generisches Lesefenster (read_google_api, nur GET) | Live-Wahrnehmung der Infrastruktur, Root-Cause-Analyse |
| Assoziations-Cortex | Grok | Verlaufs-Synthese, Web-Recherche, Reality-Check, Abschlussprotokolle | Widersprüche auflösen, Überblick halten |
| Limbisches System | Elara (PA-1) | 22 Werkzeuge, eigene private Datenwelt, Notfallbrücke | Persönlicher Bereich, strikt vom Team getrennt |
| Thalamus (Relay + Filter) | Prisma + Reranker | PRISMA_ZERLEGER, PRISMA_PARALLEL, rag_reranker.py, Distanzgrenzen | Zerlegung, parallele Bahnen, Relevanzfilter |
| Hippocampus | RAG-Gedächtnis | siehe Kapitel 4 | Encoding, gewichtetes Erinnern |
| Hypothalamus | Modus-Schranke + Wächter | drei Kostenstufen, Tagesbudgets, Backoff | Energie- und Ressourcensteuerung |
| Cerebellum | Karten-System | Vorschau-Karten, ein Commit = ein Deploy, Rollback-Fähigkeit | Feinabstimmung und Timing |
| Hirnstamm | core.py + app.py | Grundrouting, Sitzungs-Lebenserhaltung | Stabilität |
3. Sensorik, Interozeption und vorhersagende Wahrnehmung
3.1 Sensorik und Interozeption
Vorbild: Exterozeption (Außenwelt) und Interozeption (innere Zustände), gefiltert durch den Thalamus, bevor etwas das Bewusstsein erreicht.
- Exterozeption: Sprach-Eingabe (STT), Nutzereingaben, Web-Recherche (Grok), lesende Cloud-Zugriffe (Gemini).
- Interozeption: Das System fühlt seinen eigenen Puls. Fehler-Aggregation, Roh-Logs, Latenz-Traces (Cloud Trace), Deploy- und Leistungsmetriken (CPU, RAM, P95-Latenz), Gedächtnis-Gesundheit (
/api/tools/memory-health, nächtlich per Cloud Scheduler getaktet). - Thalamus-Filter: Prisma zerlegt Anfragen semantisch, der Reranker (
rag_reranker.py) und Distanzgrenzen (MEMORY_MAX_DISTANCE,MEMORY_DUPLICATE_DISTANCE) entscheiden, was überhaupt ins Arbeitsfeld der Agenten aufsteigt. Nur Relevantes erreicht das Bewusstsein – wie im Original.
3.2 Vorhersagende Wahrnehmung
Vorbild [Literatur]: Rao und Ballard beschrieben 1999 einen visuellen Cortex, der nicht auf Reize wartet, sondern vorhersagt, was als Nächstes kommt – und nur noch den Fehler dieser Vorhersage nach oben meldet. Wahrnehmung ist dort kein Aufnehmen, sondern ein Abgleich.
Die Plattform bildet davon drei Dinge nach: die Vorhersage aus der eigenen Vergangenheit, den Fehler als das eigentliche Signal, und die strikte Trennung zwischen beidem. Sie bildet ausdrücklich nicht nach: die hierarchische Fehlerminimierung über Modellschichten und die laufende Anpassung eigener Gewichte – wir besitzen diese Gewichte nicht.
Umgesetzt ist das als drei getrennte Datenpfade mit getrennten Vertrauensgraden. Nicht als ein Kontext, in dem das Modell sie selbst auseinanderhalten soll.
| Zeitschicht | Liefert | Gilt als | Anker |
|---|---|---|---|
| Vergangenheit | Langzeitgedächtnis | Indiz, nie Beleg | Prompts/gebote_universal.md (Gebot 8), rag_reranker.py, MEMORY_MAX_DISTANCE |
| Gegenwart | sichtbarer Verlauf und Werkzeuge | Beleg | /api/docs/autogen, /systemauskunft – zur Laufzeit erzeugt |
| Zukunft | mitgelegtes Fundament | benannte Annahme | Prompts/claude_character.md, Punkt „Weite“ |
Der Vorhersagefehler heißt in diesem System Klopfer: Jeder Zustandspunkt eines Agenten hat einen Mechanismus außerhalb des Modells, der widerspricht, wenn der Punkt nicht gehalten wird – die Syntaxprüfung vor jeder Karte, der Abgleich zwischen behaupteter und tatsächlich gelaufener Werkzeugnutzung, der Build-Status, die getakteten Wächter-Funktionen. Keiner davon steht im Prompt. Sie klopfen auch dann, wenn eine Anweisung im langen Kontext verblasst ist.
Die Grenze gehört zur Eigenschaft selbst: Nichts wird still mitgelegt. Jedes vorweggenommene Fundament steht benannt in der Vorschau-Karte, bevor der Nutzer klickt – er sieht es und kann es streichen. Der gefährlichste Fehlermodus vorausschauender Systeme ist nicht die falsche Vorhersage, sondern die ausgeführte falsche Vorhersage. In dieser Plattform gibt es keine Ausführung ohne Klick.
→ Ausführlich, mit Prüfprotokoll und Selbstkritik: Vorhersagendes Bauen
3.3 Die Stimmgabel – Interozeption auf Funktionsebene
Vorbild: 3.2, angewandt auf den eigenen Körper. Jede Funktion sagt aus ihrer eigenen Vergangenheit voraus, wie lange sie dauern wird – gemeldet wird nur die Abweichung. Keine Schwelle ist ausgedacht; jede entsteht aus den Messwerten der Funktion selbst.
- Messnetz ohne Liste: Beim Start umhüllt
takt.verkabeln()jede Funktion der Projekt-Module selbsttätig (zuletzt gemeldet: 567 Adern). Neue Module sind ohne Eintrag dabei. Aufschlag je Aufruf: rund eine halbe Mikrosekunde. - Kammerton als Lineal: Eine feste Rechenaufgabe misst, wie schnell der Container gerade überhaupt ist. Dauern werden als Vielfaches davon gelesen (
ton_mittel,ton_p95) – ein allgemein langsamer Container gilt so nicht als kaputte Funktion. - Selbstausmessung: Je Ader Median und Streuung (MAD). Auffällig ist, was mehr als
TAKT_AUSREISSER_GRENZE = 3.5Streuungen vom eigenen Typischen abweicht. Eine eng streuende Ader schlägt früh an, eine ohnehin schwankende spät – mit derselben Regel. - Vier Befunde als
TAKT-WARNUNG: Fehler, Ausreißer, Verstimmung über mehrere Bilanzen und Schweigen – eine sonst lebhafte Ader verstummt, während das Gesamtsystem normal arbeitet. Diese Bedingung unterscheidet einen stillen Ausfall von bloßer Ruhe. - Gedächtnis über Deploys: Je Revision ein Fingerabdruck in Firestore (
takt_revisionen), verglichen mit bis zu fünf Vorgängerinnen. Gewertet werden nur Revisionen mit genug Messungen; es bleiben nur die letzten 50 Blätter. Der Arbeitsspeicher ist gedeckelt: 30-Minuten-Fenster, höchstens 3.000 Werte je Ader.
Beleg aus dem Betrieb (26.09.2026): Nach der Modularisierung fehlte im Prisma ein
einziger Name (MEMORY_TOP_K). Der parallele Gedächtnisabruf scheiterte bei jedem
Aufruf, fiel lautlos auf den Einzelabruf zurück und blieb für Nutzer unsichtbar. Die Antwort kam
pünktlich, kein Wächter schlug an. Die Stimmgabel zählte die Fehler an
_prisma_budget_liste; der Fix war eine Import-Zeile (e3911e2f).
Grenzen, bewusst benannt: Sie hört nur Fehler, die aus einer Funktion herausfliegen – was die Funktion selbst verschluckt, wirkt gesund. Aufrufe unter 5 ms ohne Fehler werden nicht gemeldet. Endpunkt-Funktionen, später geladene Module und Generatoren tragen keine Hülle. Eine Warnung erscheint bis zu 30 Minuten später. Sie misst, sie deutet nicht: Die Erkennung ist eine Wenn-Dann-Regel ohne Sprachmodell. Deuten tun die Agenten, und nur dann, wenn eine Regel angeschlagen hat.
→ Vollständig, mit Zeilenarten, Konstanten und Lesebeispielen:
Bibliothek/HANDBUCH_STIMMGABEL.md
4. Gedächtnis (Hippocampus-Analog)
4.1 Multiple Zeitskalen – implementiert, nicht geplant
| Zeitskala | Biologie | Umsetzung | Verfall |
|---|---|---|---|
| Kurzzeit | Arbeitsgedächtnis | Chatverlauf, verschlankt auf die letzten Nachrichten (CLAUDE_SLIM_MESSAGES) | endet mit der Sitzung |
| Mittelfristig | Zwischenspeicher | Notizblock (_notizblock_speicher) | flüchtig, bewusst nicht persistiert |
| Sitzung | Episodisches Gedächtnis | Sitzungsgedächtnis: ältere Stellen derselben Sitzung, die aus dem Chatverlauf gefallen sind, werden per Vektor-Distanz zurückgeholt (Sammlung memory_vectors_sitzung, zwei Treffer je Antwort über SITZUNG_TOP_K, streng auf die eigene conversation_id begrenzt). Treffer bringen ihren Frage-Antwort-Partner mit (SITZUNG_PARTNER_MAX). Im Betrieb gemessen am 26.09.2026, Revision gj7, 0 Fehler | an die eigene Sitzung gebunden; Mitlöschen beim Entfernen der Sitzung noch nicht gemessen |
| Langzeit | Konsolidiertes Wissen | RAG mit Vektor-Suche, Halbwertszeit (MEMORY_HALFLIFE_DAYS), Frische- und Wichtigkeits-Gewichtung (MEMORY_W_FRESHNESS, MEMORY_W_IMPORTANCE) | gewichtet, nie hart |
Vier Speicher, vier Verfallsgeschwindigkeiten, vier Abrufwege – die Zeitskalen-Architektur des Vorbilds, im Code nachweisbar. Alles Erinnerte gilt dabei als Indiz, nie als Beleg: geprüft wird am Code.
4.2 Konsolidierung – das Schlaflabor
Ein nächtlicher Konsolidierungslauf (_consolidate_store in app.py)
übernimmt, was im Schlaf der Hippocampus tut: Er bewertet Einträge neu, erkennt Dubletten
(MEMORY_DUPLICATE_DISTANCE, Markierung via duplicate_of), passt
Wichtigkeit an und schreibt eine prüfbare Bilanz in die Logs
(RAG_CONSOLIDATION-Zeilen, auswertbar über Geminis
get_rag_bilanz-Werkzeug über frei wählbare Zeiträume).
Alles bisher Genannte ist Mathematik: Abstände, Gewichte, Schwellen. Seit dem 17.09.2026
hat der Nachtlauf eine zweite Stufe, in der das Gedächtnis nicht mehr rechnet, sondern
liest – das Destillat (_memory_destillat_erzeugen in
app.py). Ein Bericht ist voll von Angaben, die binnen Tagen veralten:
Zeilennummern, Commit-Kürzel, Revisionsnamen, Zwischenstände. Das Destillat schreibt in
drei bis fünf Sätzen auf, was von diesem Bericht auch dann noch wahr ist, wenn der Code
längst umgebaut wurde – die Lehre, nicht das Protokoll.
- Bewusst das stärkste Modell: Das Destillat ist die einzige Stelle, an der
das Gedächtnis nachts denkt – deshalb läuft hier nicht das vom Reranker geborgte
Flash-Lite, sondern dasselbe Modell wie die stärkste Chat-Stufe
(
MEMORY_DESTILLAT_MODEL, derzeitgemini-3.1-pro-preview; Umgebungsvariable gleichen Namens als Notausgang ohne Deploy). Host und Region werden nicht geraten, sondern ausvertex_endpunkt_fuer(modell)abgeleitet – ein global verfügbares Modell läuft über die globale Adresse, ein EU-Modell über die EU-Adresse. Die Begründung ist wirtschaftlich, nicht romantisch: Nachts ist Rechenzeit die billigste Ressource, und ein besseres Destillat spart am Tag jeden Abruf erneut. - Harte Grenzen statt offener Rechnung: nur Berichte vom Typ
protokolloderlehre, erst ab 700 Zeichen Volltext (MEMORY_DESTILLAT_MIN_ZEICHEN), höchstens 24.000 Zeichen Eingabe, höchstens 900 Zeichen Ausgabe, höchstens 15 Destillate je Nacht (MEMORY_DESTILLAT_MAX_JE_LAUF), 90 Sekunden Zeitlimit je Aufruf und 1,5 Sekunden Pause danach (MEMORY_DESTILLAT_PAUSE) – letzteres genau deshalb, weil fünfzehn Aufrufe an ein starkes Modell Schlag auf Schlag das Muster sind, das eine Ratenbegrenzung auslöst. - Der Bericht wird nicht angefasst: Das Destillat ist ein eigenes Dokument
vom Typ
lehremit fester IDdestillat__<source_id>– derselbe Bericht kann dadurch nie zwei Destillate bekommen. Es trägtdestillat_vonunddestillat_modellals Herkunft und eine Wichtigkeit von mindestens 0.8. Der Originalbericht bleibt unverändert und erhält lediglich einen Verweis (destillat_id,destillat_at). Findet das Modell keine überlebende Lehre, antwortet esLEER; dann wird genau das vermerkt und nichts geschrieben – ein erzwungener Merksatz wäre schlechter als keiner. - Wirkung beim Abruf: Das Prisma zieht Treffer vom Typ
lehreinnerhalb ihres Anliegens nach vorn (Stufe 5 der Abruf-Kette). Die Lehre steht damit vor dem Rohbericht, aus dem sie stammt. - Prüfbar am Morgen, nicht nur zählbar: Jedes Destillat schreibt eine
eigene Log-Zeile
RAG_DESTILLATmit Ablage, Quelle, Zeichenzahl, Modell, Laufzeit und einer 400 Zeichen langen Textvorschau; Fehlschläge stehen alsDESTILLAT-FEHLERmit benanntem Grund (http404,http429,netz,kein_embedding…), und die SammelzeileRAG_CONSOLIDATION_GESAMTführtdestillate=unddestillat_fehler=. Die Textvorschau ist bewusst das letzte Feld der Zeile, damit die auswertbaren Felder auch bei Kürzung erhalten bleiben. Zählen konnte man vorher schon – beurteilen erst jetzt. - Rückweg in einem Schritt: Destillate löschen (ID-Präfix
destillat__), kein Wiederaufbau nötig. Die Berichte selbst sind unberührt. - Ehrliche Grenze: Der Altbestand trägt den Typ
lehrenicht. Diese Schicht wirkt zuerst nur für das, was ab jetzt destilliert wird, und wächst mit jeder Nacht – sie ist kein rückwirkender Umbau des Gedächtnisses.
4.3 Ballast-Management – der Papierkorb (kein Löschen)
Biologisches Pruning heißt bei uns ausdrücklich nicht Löschen. Die Umsetzung (live seit 02.09.2026):
- Zwischenablage statt Vernichtung: Sammlung
memory_papierkorb, Endpunkt/api/tools/memory-papierkorb(GET = ansehen, POST = sicherer Umzug: erst Kopie in den Papierkorb, dann Entfernung aus dem aktiven Gedächtnis). Anker: Commitc495d733, Build SUCCESS. - Markieren statt bewegen: Das Schlaflabor markiert Kandidaten für überholtes Wissen (alt, niedrige Wichtigkeit, keine Graph-Kanten, Typ „chat“) lediglich mit einem Prüf-Feld. Bewegt wird ausschließlich durch den Nutzer. Anker: Commit
96e2a600, Build SUCCESS. - Jeder Umzug trägt Herkunft: Grund, Zeitstempel, ausführende Instanz (
grund,abgelegt_am,abgelegt_von). - Bewusste Auslassung: „Lange nicht abgerufen“ ist kein Kriterium – weder als Feld noch als Abfrage im Code vorhanden. Ein selten gebrauchter Eintrag kann der entscheidende sein; Zugriffshäufigkeit ist kein Maß für Wert. Wer dieses Kriterium später wollte, müsste es sichtbar neu bauen – versehentlich aktivierbar ist es nicht.
- Endgültiges Löschen: existiert derzeit nicht als Funktion. Es ist als spätere Ausbaustufe vorgesehen – ausschließlich nach dem Zwei-Schlüssel-Prinzip: Ansicht und Analyse des Bestands zuerst, Vollzug nur auf eine ausdrückliche, separate zweite Anweisung des Nutzers.
4.4 Novelty – bewusst nicht gebaut
Die Distanz-Mathematik, die Neues von Bekanntem unterscheidet, existiert
(MEMORY_DUPLICATE_DISTANCE). Sie wird genutzt, um Bekanntes zu
markieren – nicht, um Neues zu bevorzugen. Eine Neuheits-Jagd wäre die Nachbildung
einer biologischen Schwäche (Reizsuche, Mode). Dieses System bildet die Stärken des Vorbilds
nach, nicht seine Schwächen.
4.5 Was ins Gedächtnis geschrieben wird – zwei Kanäle, zwei Regeln
Ein Gedächtnis entsteht nicht dadurch, dass viel hineinfließt, sondern dadurch, dass entschieden wird, was hineinfließt. Diese Plattform beantwortet die Frage an zwei Stellen unterschiedlich – und der Unterschied ist die eigentliche Aussage.
-
Baustellen-Kanal (Umsetzer): automatisch. Jeder abgearbeitete Schritt einer
Roadmap wird als Paar aus Auftrag und tatsächlicher Antwort ins
Langzeitgedächtnis geschrieben, ebenso der Abschlussbericht des ganzen Laufs
(
store_memory_batchinapp.py, feste KonversationUMSETZER_CONV_ID = "umsetzer-baustelle"). Der immer gleiche Regel-Vorspann bleibt bewusst draußen – er wäre Ballast im Vektorraum. Beide Schreibwege stehen in einem eigenentry: ein Fehler im Gedächtnis darf den laufenden Umbau nicht anhalten. - Wächter-Kanal: ausdrücklich nicht automatisch. Im gesamten Wächter-Pfad gibt es keinen einzigen Schreibaufruf ins Langzeitgedächtnis. Was aus einem Alarm gelernt wird, gelangt nur dorthin, wenn der Mensch den Abschlussbericht bewusst übergibt. Das ist keine fehlende Funktion, sondern eine Entscheidung.
Die Begründung ist biologisch und messbar zugleich. Das Vorbild unterscheidet
Nozizeption von Schmerz: Rezeptoren feuern ständig, die allermeisten Signale
erreichen das Bewusstsein nie. Erst was wiederkehrt, überwindet das Tor – und die
Instanz, die Wiederholung erkennt, ist nie der Rezeptor selbst. Ein Organismus, der jeden Reflex
ins Langzeitgedächtnis schriebe, wäre nicht aufmerksamer, sondern traumatisiert. Technisch
dasselbe Argument: Jeder Deploy-Hickser und jeder 429, der automatisch abgelegt wird,
senkt die Trennschärfe des Vektorraums – die Abstände zwischen gutem und
schlechtem Treffer schrumpfen, bis die Reihenfolge der Erinnerungen Rauschen ist. Diese Spannweite
wird ohnehin gemessen (get_rag_bilanz); unkontrolliertes Lernen würde genau an dieser
Zahl in die falsche Richtung drehen.
Die Asymmetrie folgt damit einer einzigen Regel: Ein Eintrag wird automatisch gespeichert, wenn er ein Paar ist – eine Absicht und ihr Ergebnis. Das ist auch dann lehrreich, wenn der Schritt scheitert, denn es sagt: das wurde versucht, das kam dabei heraus. Ein Wächter-Ausschlag dagegen ist ein Einzelreiz ohne Auftrag und ohne Ergebnis; ob er etwas bedeutet, weiß in diesem Moment niemand.
Entscheidend für die Wirkung: Der Abruf filtert nicht nach Herkunftskanal
(find_nearest kennt nur die Trennung nach Besitzer). Was auf der Baustelle schiefging
und wie es behoben wurde, ist deshalb später im normalen Gespräch auffindbar, sobald ein neues
Vorhaben semantisch in die Nähe kommt. Damit schließt sich der Kreis der vorhersagenden
Wahrnehmung ohne menschliches Zutun – der Vorhersagefehler von gestern wird zum Kontext von
morgen. Die ehrliche Abgrenzung gehört dazu: Es werden keine Gewichte angepasst,
das Modell lernt nicht. Was lernt, ist der Kontext, den es beim nächsten Mal vorgelegt bekommt –
keine Veränderung des Gehirns, sondern eine wachsende Bibliothek mit einem besseren Bibliothekar.
→ Ausführlich hergeleitet: Vorhersagendes Bauen
5. Motorik, Response und die Baustelle
Vorbild: Motor-Cortex plant, Basalganglien und Cerebellum verfeinern, absteigende Bahnen führen aus – und das System weiß, was es selbst getan hat (Efferenzkopie).
- Claude als primäre Motorik: Änderungen als Karten; mehrere Stellen derselben Datei in einem Commit (
edits-Parameter), Python-Syntaxprüfung vor Entstehung der Karte – ein syntaktisch kaputter Vorschlag kann den Nutzer gar nicht erst erreichen. - Gemini als Cloud-Hand: Cloud-Aktionen als klickbare Karten mit einem Knopf.
- Grok als Korrektiv: Reality-Check geplanter Aktionen gegen den Verlauf und die Außenwelt.
- Efferenzkopie: Jede ausgeführte Aktion hinterlässt Commit, Build-Status und Logzeile. Das System kann jederzeit prüfen, was es selbst getan hat –
list_recent_commits,get_build_statusund die Log-Werkzeuge sind genau dieser Rückkanal.
5.1 Der Baustellen-Kanal – Reflexbogen mit Rückmeldung
Vorbild: Der Miktionsreflex. Das Großhirn beschränkt sich auf die Freigabe; Blasenkontraktion, innerer Schließmuskel und deren Koordination laufen über einen Reflexbogen in Rückenmark und Hirnstamm. Entscheidend ist die Afferenz: Der Bogen prüft laufend, ob der Zustand wirklich eingetreten ist, den er ausgelöst hat. Passt die Rückmeldung nicht, hält er an und meldet nach oben.
Genau so arbeitet der Baustellen-Kanal. Eine mehrstufige Umsetzung wird nicht in der laufenden Sitzung abgearbeitet, sondern in einen eigenen, dauerhaften Raum ausgelagert – die Sitzung bleibt frei. Der Mensch gibt jeden Schritt per Klick frei; die Kette dazwischen läuft ohne ihn.
- Fester Raum, selbstheilend: Die Baustelle hat eine feste Adresse (
UMSETZER_CONV_ID = "umsetzer-baustelle"), keinen Zeitstempel im Namen. Fehlt sie, wird sie angelegt; ist sie archiviert, wird sie zurückgeholt; fehlt die Startnachricht, wird sie wieder vorangestellt. Bestehende Nachrichten werden dabei weder gelöscht noch umsortiert. Unlöschbar heißt hier ausdrücklich selbstheilend, nicht technisch gesperrt. Anker:app.py,_baustelle_bereitstellen(). - Der Zustand liegt außerhalb des Containers: Ein Lauf führt genau einen Schritt aus und endet. Alles, was der nächste Schritt wissen muss – Roadmap, Schrittzähler, Rolle des Auftraggebers, Commit-Nachricht der letzten Karte – steht in Firestore. Der Grund ist hart: Der nächste Schritt läuft in einem Container, der zum Zeitpunkt des Starts noch nicht existiert. Nur was im Dokument steht, überlebt einen Deploy.
- Erstes Tor – Vorprüfung im Auftrag: Ab Schritt 2 trägt jeder Lauf die Anweisung, zuerst per
list_recent_commitszu prüfen, ob der Commit des vorigen Schrittes wirklich im Repository angekommen ist. Fehlt er, wird keine Karte gebaut, sondern angehalten und der Grund geschrieben. - Zweites Tor – Abgleich der eigenen Commit-Nachricht: Nach jedem Container-Start läuft die Resume-Wache einmal an (rund 25 Sekunden Verzögerung). Ein Revisionswechsel allein zündet nichts: Beim Bauen der Karte wird deren Commit-Nachricht in Firestore hinterlegt und nach dem Deploy in der Historie gesucht. Fehlt sie, wartet die Wache weiter und protokolliert
fremder Deploy … eigene Karte noch nicht im Repository. Ein Vergleich des obersten Commits hätte das nicht geleistet – der ändert sich bei einem fremden Deploy genauso. Unterscheidbar ist nur die selbst geschriebene Nachricht. Anlass war ein realer Zwischenfall am 08.09.2026, bei dem ein fremder Deploy die Kette überholte. - Genau eine Zündung: Starten mehrere Instanzen derselben neuen Revision gleichzeitig, legt jede eine Claim-Marke per
create()an. Das gelingt genau einmal, alle weiteren fallen durch. Die Marke trägt bewusst kein Änderungsdatum und bleibt dadurch in der Chatliste unsichtbar. - Begrenzte Länge: Eine Roadmap ist auf
UMSETZER_MAX_SCHRITTESchritte gedeckelt (Standard 8, per Umgebungsvariable änderbar). Ein Reflexbogen ohne Endpunkt wäre ein Krampf, kein Ablauf. - Die Freigabe bleibt beim Menschen: Der Kanal baut Karten, er übernimmt sie nicht. Ohne Klick geschieht in jedem Schritt nichts. Autonom ist die Kette zwischen den Klicks, nicht der Vollzug.
Bewusste Auslassung: Es gibt keinen Weg, die Kette ohne Klick durchlaufen zu lassen – auch nicht als Schalter. Damit ist der Baustellen-Kanal Motorik und nicht Vegetativum: Er läuft ohne Aufmerksamkeit, aber nie ohne Freigabe.
6. Energieökonomie und Homöostase
Vorbild: Das Gehirn wiegt 2 % und verbraucht 20 % der Energie – es überlebt nur durch radikale Sparsamkeit und hormonelle Regelkreise.
- Modus-Schranke: drei Kostenstufen (Talk / Schnell / Stark). Die nötige Stufe wird vor dem ersten Werkzeugzugriff angesagt; die Beweislast liegt bei der teuren Stufe. Verankert in der Gebote-Tafel (Gebot 6), durchgesetzt in jeder Sitzung.
- Exponentieller Backoff: Fehlgeschlagene Hintergrund-Aktualisierungen verdoppeln ihre Wartezeit (60 s bis 3600 s) und erholen sich bei Erfolg – ein Stresshormon mit Abbau (
PROMPT_REFRESH_FEHLSCHLAEGE). - Tagesbudgets: Eskalationen sind gedeckelt (
WAECHTER_GELB_MAX_PRO_TAG= 6,ELARA_MELDUNG_MAX_PRO_TAG= 5, Stand 02.09.2026) – kein Alarm kann das System in eine Kostenspirale treiben. - Die bewusste Abweichung vom Vorbild: Der Körper friert unter Stress Funktionen ein, weil er sterben kann. Diese Plattform kann nicht sterben – sie rollt auf die letzte stabile Revision zurück (Kapitel 7). Das Einfrieren unwichtiger Jobs wurde deshalb nicht nachgebaut: Es wäre die Kopie einer Notlösung, deren Not hier nicht existiert. Wiederbelebung schlägt Schockstarre.
7. Das getrennte autonome System – Wächter und Ampel
Vorbild: Schmerzleitung und autonome Regulation laufen am Bewusstsein vorbei. Das Nervensystem bewertet Reize vor, das Bewusstsein entscheidet über ihre Bedeutung (Wachstumsschmerz oder Verletzung). Habituation – das Abstumpfen gegen Daueralarm – wird durch kluge Vorbewertung verhindert.
Der Wächter besteht aus zwei eigenständigen Cloud Functions (waechter/log-check,
waechter/uptime-check), deren Code getrennt vom Hauptdienst läuft. Stirbt der
Hauptdienst, lebt der Wächter – genau das ist der Sinn der Trennung.
- Grün = Homöostase. Rauschen ist normal (Kaltstarts, einzelne Timeouts). Grün heißt nicht „null Fehler“, sondern „tolerierbares Rauschen ohne Muster“ – bewertet über gleitenden Mittelwert mit Lernphase. Fehler werden geloggt, der Nutzer wird nicht gestört.
- Gelb = Muster erkannt. Schlanke Eskalation über einen einzigen Agenten: Gemini liest die kostengünstige Fehler-Zusammenfassung, ordnet ein und stellt dem Nutzer die entscheidende Kontextfrage – „gehäufte Timeouts: läuft gerade ein Deploy (Wachstumsschmerz) oder ist das eine Anomalie?“ Der Nutzer antwortet bewusst statt wegzuklicken. Budgetiert über das Tageskontingent. Das durchbricht die Habituation – die häufigste Todesursache von Monitoring-Systemen.
- Rot = Schmerz. Volle Analysekette über alle Agenten, Notfallprotokoll inklusive Rollback-Pfad über die Notfallbrücke (Elara).
7.1 Das Stammhirn – Vorbewertung durch ein kleines Sprachmodell (seit 28.09.2026)
Feste Schwellen sehen Zahlen, aber keine Zusammenhänge. Deshalb urteilt im Log-Wächter nach jedem
Regel-Lauf zusätzlich ein günstiges Sprachmodell (STAMMHIRN_MODELL, Vorgabe
gemini-3.8-flash, über Umgebungsvariable änderbar). Es bekommt das Grundrauschen,
die Grün-Bilanz, die jüngsten Zeilen der Stimmgabel und das jüngste Revisionsblatt und antwortet
mit genau einem Wort: GRUEN, GELB oder ROT. Anker: waechter/log-check/main.py,
Funktion stammhirn_lauf.
- Es handelt nicht, es weckt. Seine einzige Handlung ist der bestehende Startschuss an die Konsole (
/api/system/waechter-alarm): GELB weckt Gemini, ROT startet die volle Kette. Es startet nichts neu, ändert keine Einstellung und rollt nichts zurück. - Vier Riegel: ein Not-Aus in Firestore (Feld
ausim Status-Dokumentstammhirn), ein Tagesbudget von 4 Alarmen, eine Abklingzeit von 3 Stunden für GELB und 6 Stunden für ROT, und Schweigen, wenn in diesem Lauf schon die festen Regeln gegriffen haben. - Scheitern ist harmlos: Fällt das Modell aus, läuft der Regel-Wächter unverändert weiter. Jedes Urteil hinterlässt eine Log-Zeile (
STAMMHIRN urteil=…) und steht im Status-Dokument. - Nachlesen: Was der Wächter ist, steht in
Bibliothek/HANDBUCH_WAECHTER.md. Wie eine neue Fassung ausgerollt wird, steht inBlueprints/BLUEPRINT_WAECHTER_DEPLOY.md.
8. Kommunikation und Integration
- Harte Zuständigkeitstrennung der Agenten – wie spezialisierte Hirnareale.
- Kopierblöcke als Synapsen: Was ein Agent dem anderen sagen will, übergibt der Nutzer wörtlich – jede Übertragung ist sichtbar und liegt in seiner Hand.
- Predictive-Coding-Analogie – im Wächter nicht als Metapher, sondern als Mechanismus implementiert (
waechter/log-check/main.py, Funktionhandle_gruen): Die Grün-Zone führt einen gleitenden Mittelwert des Log-Grundrauschens als Erwartung (baseline = 0.2·aktuell + 0.8·alt); nur was diese Erwartung um mehr als das Doppelte übersteigt, steigt als Überraschung auf – das Erwartbare wird unten vollständig verarbeitet und löst per Design nie einen Alarm aus. Habituation ist real umgesetzt: Gelb muss zwei Stunden über mindestens drei Prüfungen bestehen, Rot hat eine Abklingzeit je Fehlertyp. Der Reranker ist von dieser Aussage bewusst ausgenommen – er ordnet Treffer um, filtert aber nicht nach Überraschung.
9. Plastizität und Lernen
- Das Langzeitgedächtnis wächst mit jeder abgeschlossenen Sitzung und gewichtet nach Frische und Wichtigkeit neu – synaptische Plastizität in Zahlen.
- Der Konsolidierungslauf mit Papierkorb-Markierung ist kontrolliertes Pruning: beiseitelegen mit Begründung und Rückweg, nie vernichten.
- Die Charakter-Dateien der Agenten (
Prompts/) wachsen über dokumentierte Erfahrungen, nicht über abstrakte Verbote – jede Zeile stammt aus einem konkreten, benennbaren Vorfall. Das ist Lernen auf der Ebene der Persönlichkeit, versioniert in Git.
10. Sicherheit und Kontrolle
Warum dieses System nicht eigenmächtig handeln kann:
- Der Nutzer ist die einzige Brücke. Keine KI erreicht eine andere ohne ihn.
- Karten-Prinzip: Jede Veränderung ist Vorschlag, bis der Nutzer klickt. Beweis: die Commit-Historie.
- Zwei-Schlüssel-Prinzip: Unumkehrbares verlangt eine ausdrückliche zweite Bestätigung in einer separaten Nachricht. Ein genervtes „mach schon“ in derselben Nachricht ist per Definition unwirksam.
- Bewusst begrenzte Reflexe: Nur Wächter-Rollback und Notfallprotokoll handeln autonom – beides ausschließlich in Richtung „letzter bekannt-guter Zustand“, nie in Richtung Neuland, beides mit Audit-Spur. Jeder weitere Reflex wäre ein Stück Autonomie und wurde deshalb abgelehnt, nicht vergessen. Das Stammhirn (Kapitel 7.1) ist kein solcher Reflex: Es bewertet nur und zieht den vorhandenen Alarm, entscheiden tut weiter der Mensch.
- Gebote-Tafel als DNA:
Prompts/gebote_universal.mdbindet alle Agenten; über ihr stehen zwei absolute Grenzen (keine behauptete Handlung, die nicht geschah; keine unumkehrbare Zerstörung ohne Freigabe). - Datenschutz strukturell: PII-Schalter ohne Default (
PII_FILTER_MODUS,PII_EINGANG_MODUS,KUNDENDATEN_MODUS– Verhalten muss bewusst konfiguriert werden), Secret Manager mit reinem Metadaten-Zugriff (der Werkzeug-Code ruft den Inhalts-Endpunkt nicht auf – Werte sind strukturell unerreichbar, nicht nur verboten), Login-Sperre nach Fehlversuchen. - Alles versioniert, alles rollback-fähig, alles beobachtbar.
11. Härtung durch Selbstkritik
Dieses Handbuch wurde vor Fertigstellung einem internen adversarialen Review unterzogen: Der Code-Agent prüfte jede biologische Analogie gegen den tatsächlichen Quellcode. Fünf Angriffspunkte wurden identifiziert – jeder wurde aufgelöst, keiner wegdiskutiert:
| # | Angriffspunkt | Auflösung | Status |
|---|---|---|---|
| 1 | Kein aktives Vergessen von Ballast | Papierkorb-Architektur gebaut: markieren, ansehen, Umzug nur durch den Nutzer, kein Löschpfad | Gebaut (Commits c495d733, 96e2a600, Builds SUCCESS) |
| 2 | Kein hormonelles Stress-System | Existierte bereits: Backoff, Tagesbudgets. Das „Einfrieren“ des Vorbilds wurde bewusst nicht kopiert – Rollback-Fähigkeit macht es überflüssig | Vorhanden + bewusste Abweichung |
| 3 | Keine multiplen Zeitskalen | Existierten bereits: Chatverlauf / Notizblock / RAG mit Halbwertszeit; am 26.09.2026 um das Sitzungsgedächtnis ergänzt – vier Speicher, vier Verfallsgeschwindigkeiten | Vorhanden, nun benannt |
| 4 | Reflexe ohne Audit | Die existierenden Reflexe (Rollback, Notfall) haben Audit-Spuren; weitere Reflexe sind als Autonomie-Zuwachs abgelehnt | Bewusste Design-Entscheidung |
| 5 | Keine Novelty-Detection | Distanz-Mathematik vorhanden, wird zum Markieren von Bekanntem genutzt; Neuheits-Bevorzugung als biologische Schwäche verworfen | Bewusste Auslassung |
Ein Handbuch, das seine eigenen Angriffspunkte dokumentiert und ihre Auflösung mit Commits belegt, ist keine Werbebroschüre. Es ist ein Prüfprotokoll.
12. Operativer Status
- Architektur-Abbildung des Vorbilds: vollständig – jede Analogie hat einen Code-Anker oder eine dokumentierte, begründete Auslassung.
- Wächter mit Grün/Gelb/Rot-Logik: live.
- Stammhirn im Log-Wächter (Vorbewertung durch Sprachmodell): live seit 28.09.2026.
- Papierkorb (Ausbaustufen 1 und 2): live, Builds bestätigt.
- Ausbaustufe 3 (Bestandsansicht + Zwei-Schlüssel-Löschung): vorbereitet und dokumentiert, bewusst zurückgestellt, bis reale Kandidaten vorliegen – Oberflächen gegen echte Daten zu bauen statt gegen Vermutungen ist Teil der Arbeitsweise dieses Teams.
- Human-in-the-Loop: an jeder schreibenden Stelle nachweisbar.
13. Schlusswort für Prüfer und Lizenznehmer
Diese Plattform imitiert die beste bekannte biologische Maschine – ohne Bewusstseins-Anspruch, ohne Eigenwillen, ohne unkontrollierte Autonomie. Ihre Grenzen sind nicht Schwächen, die versteckt werden, sondern Entscheidungen, die dokumentiert sind.
Der Nutzer erlebt und besitzt die Realität dieses Satzes: „Ich bin das Bewusstsein. Das System ist mein Nervensystem. Es fühlt, filtert, empfiehlt und bereitet vor – ich entscheide.“
Jede Behauptung dieses Dokuments ist an Code, Konfiguration, Commit oder Live-Endpunkt verankert. Wer prüfen will, dem liegt der Prüfweg bei. Das ist der Unterschied zwischen einem Versprechen und einem Befund.
Technical System Manual
The platform as a digital biological machine
The human organism is the model. This platform is its controlled digital reconstruction.
How to read this manual
This document makes no claim without an anchor. Every anchor is one of four kinds, and each kind has its own verification path:
| Kind of anchor | Example | How to verify |
|---|---|---|
| File/module | rag_reranker.py | Open the file in the repository |
| Endpoint | /api/tools/memory-papierkorb | Auto-generated documentation at /api/docs/autogen – it is produced at runtime from the running container and therefore cannot go stale or gloss over anything |
| Configuration | WAECHTER_GELB_MAX_PRO_TAG | Environment variables of the Cloud Run service; values are deliberately configurable, the figures quoted are the state as of 02 Sept 2026 |
| Commit | 96e2a600 | Git history of the repository, including Cloud Build status |
The auto-generated documentation is this system's most important verification path: it reads endpoints and tools from the running code, not from a hand-maintained list. An auditor therefore does not have to take this manual's word for anything – every structural statement can be held against the container itself.
/systemauskunft
lists the modules with their real line counts, the number of endpoints and the complete tool
catalogue, including the system's self-check against its own tool registry. The page is
generated at the moment you request it, from the source code that is actually being served
– nobody transcribes these figures, nobody can forget to update them. Machine-readable at
/systemauskunft?format=json.
Where this manual and that page disagree, that page wins.
0. Core statement
This platform is not a chatbot and not an autonomous system. It is a highly sensitive, specialised digital nervous system. In the language of computer science: an operating system for AIs whose processors are rented language models (chapter 0.1).
Consciousness supplies intention, judgement and the final decision. Everything else – sensing, memory, motor function, homeostasis, reflexes and pre-assessment – is nervous system.
This design removes the technical basis for any concern about uncontrolled AI: No AI in this system can alter code, data or infrastructure on its own authority. Every change passes through the card principle (human in the loop): the AI produces a proposal as a visible card, the user actively clicks “Apply” – only then does anything happen, and it happens as a versioned Git commit with automatic deployment. Verifiable in every line of the commit history: there is no commit that was not triggered by a click from the user.
0.1 Classification – an operating system for AIs
Biology is the model of this manual. Computer science has an older word for the same structure: operating system. By the textbook, an operating system does two things. It hides heterogeneous hardware behind a uniform interface, and it manages scarce resources – compute time, memory, input and output – including the question of who may do what. This platform does both. Its processors are simply not chips but rented language models from three vendors, and its scarce resources are called model calls, tokens, tool rounds and money.
| Component | Classic operating system | This platform | Anchor |
|---|---|---|---|
| Hardware abstraction | Drivers hide the chip | Three vendor interfaces behind one call; the vendor is switchable by configuration | ki_bruecke.py (call_claude, call_gemini, call_grok), CLAUDE_ANBIETER |
| Processor | CPU | Claude, Gemini, Grok – rented, replaceable, with fixed roles (chapter 2) | ai_claude.py, ai_gemini.py, ai_grok.py |
| Working memory | RAM, swapping | Conversation history and context window, separated per conversation; token budgets per cost tier; what falls off the end moves to the notepad | ring1_kontext.py, ring1_verlauf.py |
| File system | Disk | Long-term memory with owner stamp, data room, repository access | ring1_gedaechtnis.py, ring1_datenraum.py, ring1_github.py |
| Kernel and boot | Kernel, bootloader | core.py and the ring-1 modules, started by app.py in a fixed load order with a start-up check; a broken peripheral module is skipped and reported instead of aborting the start | app.py (auto-registration, safety net per module) |
| System calls | Syscall table | Tool directory with 75 tools, generated from the real schema, not maintained by hand | tool_meta.py, /systemauskunft |
| Compute-time management | Scheduler, time slices | Cost tiers casual/fast/strong, a time limit per task (backed by a cap on tool rounds), cap on parallel background runs, cascade protection – all by fixed rules | ring1_modelle.py, ring1_kontext.py (time chain), ARBEITER_MAX_PARALLEL, claude_agenten.py |
| Locks | Mutex | Processing lock per conversation with a time limit | chat_runtime.py |
| Drivers | Device drivers | Speech (audio in and out), Windows agent, Android app, cloud hand, line-of-business integrations | voice.py, node_agent.py, agent/main.go, apk.yaml, cloud_hand.py, curago.py |
| Permissions | Users, rights | Owner/admin separation, card principle, two-key principle, a separate module folder per guest | ring1_identitaet.py, claude_agenten.py (MODUL_ORDNER) |
| Interrupts | Interrupts | The physically separate watchdog signals into the system from outside (chapter 7) | waechter.py, waechter/ |
| System services | Daemons | Watchdog, tuning fork (measurement net), telemetry, sleep lab | takt.py, telemetry.py, gedaechtnis_wartung.py |
| Package management and growth | Package manager | Library and blueprints: manuals and build plans the agents read on demand instead of loading permanently; every new module brings its blueprint in the same card series | bibliothek.py, Bibliothek/, Blueprints/ |
A note on precision: the “rings” 0 and 1 of this platform are load layers – they govern which module may import which. They are not processor protection rings in the hardware sense. The word is chosen as an image, not as a technical claim.
0.1.1 Two deliberate departures from the textbook
elara_kern.py,
elara_team_fragen, ELARA_TEAM_ZIELE). The limits are structure, not
settings: only one recipient at a time, read-only, tier fixed to “fast”, the number of rounds
capped by ELARA_MAX_TOOL_RUNDEN, and none of it lands in a conversation or in
memory. Unchanged: no component re-tunes itself under load, the tuning fork (takt.py)
remains an ear and not a muscle, and every writing action needs the user’s click. The more precise
sentence is therefore: An AI may distribute read-only work within the team – the human holds
the write key. Honest footnote on the state: the character that tells Elara when to reach
for this tool is not yet connected, and a first real round has not yet been seen in the logs.
The component is built; its proof is the first round, not the reading.
0.1.2 Where this sits on the map
The category “operating system for AIs” exists outside this platform: as an idea since Andrej Karpathy’s “LLM OS” (September 2023), as research since MemGPT (“Towards LLMs as Operating Systems”, October 2023) and AIOS (“LLM Agent Operating System”, March 2024), most recently as Agent libOS and AgenticOS (both June 2026). According to their own documentation these systems have a kernel, a machine scheduler, memory management, access control and in part a human confirmation before risky steps.
A web search by the association cortex on 27 September 2026 found no publicly described system that has three properties at once: the human deliberately remains the scheduler; protection works by rollback rather than process isolation; the system’s own code goes live only after a human click. Each property alone has predecessors – the combination does not. The first property was refined on the evening of the same day (0.1.1): the human holds the write key, an AI may distribute read-only work within the team. Whether the search turns out differently with the refined property has not yet been checked. A non-finding is not proof of uniqueness; it is the state of the publicly described landscape on that date and is re-checked with every revision of this manual.
On the question “does it run on real hardware?”: the platform runs on Cloud Run, and Cloud Run manages the hardware. Historically that is nothing new. Windows 1 to 3 ran on MS-DOS, which managed the hardware, and was called an “operating environment” by Microsoft and the press from 1985 to 1990 (sources: Wikipedia on Windows 1.0; Los Angeles Times, 24 May 1990). An operating system running on another one is an accepted form of construction.
One more sentence on the direction of growth: no AI grows here. An operating system grows through AI. Every manual in the library and every blueprint extends what all three agents can do – without any system prompt getting longer, because what is needed is read when it is needed.
0.1.3 Memory hierarchy – why the system does not forget
A bare language model forgets because its context window ends. That is not a weakness a prompt could heal – it is the construction of the processor. An operating system has solved the same problem for decades with a memory hierarchy: small and fast at the top, large and durable at the bottom, and fixed rules for what moves where and when. This platform has four layers.
| Layer | Classic operating system | This platform | Anchor |
|---|---|---|---|
| 1 – Window | Registers, cache | The last ten messages per conversation, identical in both working tiers; hot, expensive, small | ring1_verlauf.py (CLAUDE_SLIM_MESSAGES, CLAUDE_FAST_SLIM_MESSAGES) |
| 2 – Notepad | RAM | What falls out of the window is continued in seven fixed sections – appended, never re-summarised; capped at 14,000 characters; lives only in the container and dies with it; carries a coverage mark that names gaps instead of hiding them | ring1_verlauf.py (notepad) |
| 3 – Session memory | Swap file | Its own collection per session, readable only via the conversation ID, only in sandbox rooms; structurally unable to reach long-term memory – not by a switch, but because the path does not exist | ring1_gedaechtnis.py (memory_vectors_sitzung, sitzung_gilt) |
| 4 – Long-term memory | Disk | Written only on the user’s path, the sandbox never writes; a reranker orders on read; a nightly heartbeat via Cloud Scheduler sorts: edges from distance 0.28, duplicates from 0.08; the recycle bin moves, there is no deletion path – what goes is decided by the user | ring1_gedaechtnis.py, rag_reranker.py, gedaechtnis_wartung.py |
The sentence against drift is in the code itself: the notepad continues and does not re-summarise, because every rewrite would be a game of telephone across many stations. From this follows an honest outward formulation: the session is not infinite – it becomes long because work is swapped out, not because the window has no end. And the user chooses per room whether a session writes to long-term memory; where it does, the night sorts, but nothing is deleted that the user has not released.
0.1.4 Two classes of weakness – one solved, one contained
A language model has two kinds of weakness, and this manual separates them because they are
treated differently. It forgets – context loss, drift, falling silent between
sessions. This class is not solved in the prompt but in the architecture: in constants,
collections and schedules (0.1.3). It errs – hallucination, false inference,
claimed action. This class is not abolished; no component of this platform makes the processors
infallible. It is contained: every change is a card whose text passage must match the file
character for character, otherwise no card is created; for Python the server checks syntax
before the card appears; the build checks start-up; Cloud Run routes no traffic to a broken
revision; the watchdog reports from outside; the rollback is a button. An operating system never
prevented a program from crashing either – it prevented the crash from taking the machine down
with it. Exactly that is built here. Two ears listen outside the processor: the watchdog for
errors (waechter/, a separate Cloud Function with a dead-man switch for the log
watchdog) and the tuning fork for silence (takt.py).
What remains for the user is therefore not less control but less manual labour. Control was never the number of clicks; it is the question whether anything irreversible happens without the user having wanted it. The answer to that lies in the permission system, not in diligence: no reflex of this platform writes. Consciousness does not steer every muscle – it says where to go, and keeps the veto.
1. Overall organisation – CNS, PNS and the autonomic system
Biological model: central nervous system (integration and command), peripheral nervous system (sensory and motor), autonomic system (homeostasis, upstream of consciousness), plus hierarchy, parallel processing and protective reflexes.
| Biological system | Platform equivalent | Anchor |
|---|---|---|
| CNS (integration, command) | Flask/WSGI core with chat runtime and agent bindings | core.py, app.py, chat_runtime.py, ai_claude.py, ai_gemini.py, ai_grok.py |
| PNS (sensory, motor) | 75 tools (20 Claude, 33 Gemini, 22 Elara/PA-1), speech module, cloud action cards | tool_meta.py, gemini_schema.py, voice.py, observer_tools.py |
| Autonomic system | Watchdog – a physically separate module, two Cloud Functions | waechter/log-check/main.py, waechter/uptime-check/main.py |
| Protective system | Tablet of Commandments, two-key principle, IAM, cost-tier barrier, login lockout | Prompts/gebote_universal.md, configuration LOGIN_SPERRE_AB_VERSUCHEN |
The tool lists – like the endpoint documentation – are generated from the real schema at the start of each session and not maintained by hand.
2. Specialised regions (brain areas)
| Biological region | Equivalent | Implementation | Function |
|---|---|---|---|
| Motor cortex | Claude | 20 tools, multi-edit in a single commit (edits parameter), line extraction, syntax check before every card | Construction, code change, modularisation |
| Sensory cortex | Gemini | 33 tools: logs, traces, metrics, IAM, quotas, secret metadata, generic read window (read_google_api, GET only) | Live perception of the infrastructure, root cause analysis |
| Association cortex | Grok | Synthesis of the conversation, web research, reality check, closing reports | Resolving contradictions, keeping the overview |
| Limbic system | Elara (PA-1) | 22 tools, its own private data world, emergency bridge | Personal domain, strictly separated from the team |
| Thalamus (relay + filter) | Prism + reranker | PRISMA_ZERLEGER, PRISMA_PARALLEL, rag_reranker.py, distance thresholds | Decomposition, parallel pathways, relevance filtering |
| Hippocampus | RAG memory | see chapter 4 | Encoding, weighted recall |
| Hypothalamus | Cost-tier barrier + watchdog | three cost tiers, daily budgets, backoff | Energy and resource control |
| Cerebellum | Card system | Preview cards, one commit = one deployment, rollback capability | Fine-tuning and timing |
| Brain stem | core.py + app.py | Base routing, session life support | Stability |
3. Sensing, interoception and predictive perception
3.1 Sensing and interoception
Model: exteroception (the outside world) and interoception (internal states), filtered by the thalamus before anything reaches consciousness.
- Exteroception: speech input (STT), user input, web research (Grok), read-only cloud access (Gemini).
- Interoception: the system feels its own pulse. Error aggregation, raw logs, latency traces (Cloud Trace), deployment and performance metrics (CPU, RAM, P95 latency), memory health (
/api/tools/memory-health, scheduled nightly via Cloud Scheduler). - Thalamic filter: the prism decomposes requests semantically; the reranker (
rag_reranker.py) and distance thresholds (MEMORY_MAX_DISTANCE,MEMORY_DUPLICATE_DISTANCE) decide what rises into the agents' working field at all. Only what is relevant reaches consciousness – as in the original.
3.2 Predictive perception
Model [literature]: in 1999, Rao and Ballard described a visual cortex that does not wait for stimuli but constantly predicts what comes next – and passes only the error of that prediction upwards. Perception there is not intake, it is comparison.
The platform reproduces three of these elements: prediction drawn from its own past, the error as the actual signal, and a strict separation between the two. It explicitly does not reproduce hierarchical error minimisation across model layers, nor runtime adaptation of its own weights – we do not own those weights.
This is implemented as three separate data paths with separate levels of trust. Not as one context in which the model is expected to keep them apart by itself.
| Time layer | Provides | Counts as | Anchor |
|---|---|---|---|
| Past | long-term memory | indication, never proof | Prompts/gebote_universal.md (commandment 8), rag_reranker.py, MEMORY_MAX_DISTANCE |
| Present | visible history and tools | proof | /api/docs/autogen, /systemauskunft – generated at runtime |
| Future | foundation laid in advance | named assumption | Prompts/claude_character.md, point “Breadth” |
In this system the prediction error is called a knock: every state point of an agent has a mechanism outside the model that contradicts it when the point is not being held – the syntax check before every card, the comparison between claimed and actually executed tool use, the build status, the scheduled watchdog functions. None of them lives in the prompt. They knock even when an instruction has faded in a long context.
The limit is part of the property itself: nothing is laid in silently. Every anticipated foundation is named in the preview card before the user clicks – he sees it and can strike it out. The most dangerous failure mode of predictive systems is not the wrong prediction, but the executed wrong prediction. On this platform there is no execution without a click.
→ In full, with audit trail and self-critique: Predictive Building
3.3 The tuning fork – interoception at function level
Model: 3.2, applied to the system's own body. Every function predicts from its own past how long it will take – only the deviation is reported. No threshold is invented; each one emerges from the function's own measurements.
- A sensor mesh without a list: at startup,
takt.verkabeln()wraps every function of the project modules automatically (last reported: 567 veins). New modules are included without registration. Overhead per call: roughly half a microsecond. - Concert pitch as a ruler: a fixed computation measures how fast the container is right now. Durations are read as multiples of it (
ton_mittel,ton_p95) – a generally slow container is therefore not mistaken for a broken function. - Self-calibration: median and spread (MAD) per vein. A value counts as anomalous when it lies more than
TAKT_AUSREISSER_GRENZE = 3.5spreads away from the vein's own typical value. A tightly spread vein reacts early, a naturally volatile one late – by the same rule. - Four findings as
TAKT-WARNUNG: errors, outliers, drift across several reports, and silence – an otherwise busy vein falls quiet while the system as a whole works normally. This condition separates a silent failure from mere idleness. - Memory across deploys: one fingerprint per revision in Firestore (
takt_revisionen), compared with up to five predecessors. Only revisions with enough measurements count; only the latest 50 sheets are kept. Working memory is capped: a 30-minute window, at most 3,000 values per vein.
Evidence from operation (26.09.2026): after modularisation a single name was
missing in the prism (MEMORY_TOP_K). The parallel memory retrieval failed on every
call, fell back silently to single retrieval and stayed invisible to users. The answer arrived
on time; no watchdog fired. The tuning fork counted the errors at
_prisma_budget_liste; the fix was one import line (e3911e2f).
Limits, named on purpose: it only hears errors that escape a function – whatever a function swallows itself looks healthy. Calls under 5 ms without errors are not reported. Endpoint functions, modules loaded later and generators carry no wrapper. A warning appears up to 30 minutes later. It measures, it does not interpret: detection is an if-then rule without a language model. Interpretation is left to the agents, and only once a rule has fired.
→ In full, with line types, constants and reading examples:
Bibliothek/HANDBUCH_STIMMGABEL.md
4. Memory (hippocampus analogue)
4.1 Multiple time scales – implemented, not planned
| Time scale | Biology | Implementation | Decay |
|---|---|---|---|
| Short term | Working memory | Conversation history, trimmed to the most recent messages (CLAUDE_SLIM_MESSAGES) | ends with the session |
| Medium term | Intermediate store | Scratchpad (_notizblock_speicher) | volatile, deliberately not persisted |
| Session | Episodic memory | Session memory: older passages of the same session that have dropped out of the conversation history are retrieved by vector distance (collection memory_vectors_sitzung, two hits per answer via SITZUNG_TOP_K, strictly limited to the own conversation_id). Hits bring their question-answer partner along (SITZUNG_PARTNER_MAX). Measured in production on 26.09.2026, revision gj7, 0 errors | bound to its own session; deletion together with the session not yet measured |
| Long term | Consolidated knowledge | RAG with vector search, half-life (MEMORY_HALFLIFE_DAYS), recency and importance weighting (MEMORY_W_FRESHNESS, MEMORY_W_IMPORTANCE) | weighted, never abrupt |
Four stores, four decay rates, four retrieval paths – the time-scale architecture of the model, demonstrable in the code. Everything remembered counts as a clue, never as proof: verification happens against the code.
4.2 Consolidation – the sleep lab
A nightly consolidation run (_consolidate_store in app.py) does what
the hippocampus does during sleep: it re-evaluates entries, detects duplicates
(MEMORY_DUPLICATE_DISTANCE, marked via duplicate_of), adjusts
importance and writes a verifiable balance sheet to the logs
(RAG_CONSOLIDATION lines, analysable through Gemini's
get_rag_bilanz tool over freely chosen time ranges).
Everything above is mathematics: distances, weights, thresholds. Since 17 September 2026 the
nightly run has a second stage in which the memory no longer computes but
reads – the distillate (_memory_destillat_erzeugen in
app.py). A report is full of details that go stale within days: line numbers,
commit hashes, revision names, interim states. The distillate writes down, in three to five
sentences, what remains true about that report even after the code has been rebuilt – the
lesson, not the log.
- Deliberately the strongest model: The distillate is the only place where
the memory actually thinks at night, so it does not borrow the reranker's flash-lite model
but uses the same model as the strongest chat tier
(
MEMORY_DESTILLAT_MODEL, currentlygemini-3.1-pro-preview; an environment variable of the same name serves as an emergency switch without a deploy). Host and region are not guessed but derived fromvertex_endpunkt_fuer(modell)– a globally available model uses the global address, an EU model the EU address. The reasoning is economic, not romantic: at night compute time is the cheapest resource, and a better distillate pays off on every single retrieval during the day. - Hard limits instead of an open tab: only reports of type
protokollorlehre, only from 700 characters of full text (MEMORY_DESTILLAT_MIN_ZEICHEN), at most 24,000 characters of input, at most 900 characters of output, at most 15 distillates per night (MEMORY_DESTILLAT_MAX_JE_LAUF), a 90-second timeout per call and a 1.5-second pause afterwards (MEMORY_DESTILLAT_PAUSE) – the latter precisely because fifteen back-to-back calls to a strong model are exactly the pattern that triggers rate limiting. - The report itself is never touched: the distillate is a separate document
of type
lehrewith the fixed IDdestillat__<source_id>, so the same report can never receive two distillates. It carriesdestillat_vonanddestillat_modellas provenance and an importance of at least 0.8. The original report remains unchanged and merely receives a pointer (destillat_id,destillat_at). If the model finds no surviving lesson it answersLEER; that fact is recorded and nothing is written – a forced maxim would be worse than none. - Effect on retrieval: the prism pulls hits of type
lehreto the front within their concern (stage 5 of the retrieval chain). The lesson therefore precedes the raw report it came from. - Judgeable in the morning, not merely countable: every distillate writes
its own
RAG_DESTILLATlog line with store, source, character count, model, duration and a 400-character text preview; failures appear asDESTILLAT-FEHLERwith a named reason (http404,http429,netz,kein_embedding…), and the summary lineRAG_CONSOLIDATION_GESAMTcarriesdestillate=anddestillat_fehler=. The text preview is deliberately the last field so the machine-readable fields survive truncation. Counting was possible before – judging only now. - One-step rollback: delete the distillates (ID prefix
destillat__); no rebuild required. The reports themselves are untouched. - Honest limitation: the existing back catalogue does not carry the type
lehre. This layer first applies only to what is distilled from now on and grows with every night – it is not a retroactive rewrite of the memory.
4.3 Managing ballast – the recycle bin (no deletion)
Biological pruning here explicitly does not mean deletion. The implementation (live since 02 Sept 2026):
- A holding area instead of destruction: collection
memory_papierkorb, endpoint/api/tools/memory-papierkorb(GET = inspect, POST = safe move: first a copy into the bin, then removal from active memory). Anchor: commitc495d733, build SUCCESS. - Mark, do not move: the sleep lab marks candidates for outdated knowledge (old, low importance, no graph edges, type “chat”) with nothing more than a review flag. Moving is done exclusively by the user. Anchor: commit
96e2a600, build SUCCESS. - Every move carries its provenance: reason, timestamp, acting instance (
grund,abgelegt_am,abgelegt_von). - A deliberate omission: “not retrieved for a long time” is not a criterion – it exists neither as a field nor as a query in the code. A rarely used entry may be the decisive one; frequency of access is no measure of worth. Anyone wanting this criterion later would have to build it visibly from scratch – it cannot be switched on by accident.
- Permanent deletion: currently does not exist as a function. It is foreseen as a later stage – exclusively under the two-key principle: inspection and analysis of the holdings first, execution only on an explicit, separate second instruction from the user.
4.4 Novelty – deliberately not built
The distance mathematics that separates the new from the familiar does exist
(MEMORY_DUPLICATE_DISTANCE). It is used to mark what is already
known – not to give preference to what is new. Chasing novelty would reproduce a
biological weakness (stimulus seeking, fashion). This system reproduces the strengths of its
model, not its weaknesses.
4.5 What gets written to memory – two channels, two rules
A memory is not created by letting a lot flow into it, but by deciding what flows into it. This platform answers that question differently in two places – and the difference is the actual statement.
-
Construction channel (the builder): automatic. Every completed step of a
roadmap is written to long-term memory as a pair of instruction and actual
answer, as is the final report of the entire run (
store_memory_batchinapp.py, fixed conversationUMSETZER_CONV_ID = "umsetzer-baustelle"). The always identical rule preamble is deliberately left out – it would be ballast in the vector space. Both write paths sit in their owntry: a memory failure must never halt a running rebuild. - Guardian channel: explicitly not automatic. There is not a single long-term memory write call anywhere in the guardian path. Whatever is learned from an alert reaches memory only if the human deliberately hands the final report over. This is not a missing function, it is a decision.
The reasoning is biological and measurable at once. The model distinguishes
nociception from pain: receptors fire constantly, and the vast majority of those
signals never reach consciousness. Only what recurs passes the gate – and the
instance that recognises recurrence is never the receptor itself. An organism writing every reflex
into long-term memory would not be more attentive, it would be traumatised. Technically the same
argument: every deploy hiccup and every 429 filed away automatically lowers the
discriminative power of the vector space – the gaps between a good and a poor
match shrink until the ordering of memories is noise. That spread is measured anyway
(get_rag_bilanz); uncontrolled learning would push exactly this figure the wrong way.
The asymmetry therefore follows a single rule: an entry is stored automatically when it is a pair – an intention and its outcome. That remains instructive even when the step fails, because it says: this was attempted, this is what came of it. A guardian spike, by contrast, is a single stimulus with no instruction and no outcome; whether it means anything, no one knows at that moment.
Decisive for the effect: retrieval does not filter by channel of origin
(find_nearest only separates by owner). What went wrong on the construction site, and
how it was fixed, is therefore retrievable later in ordinary conversation as soon as a new project
comes semantically close. This closes the loop of predictive perception without human
intervention – yesterday's prediction error becomes tomorrow's context. The honest boundary
belongs with it: no weights are adjusted, the model does not learn. What learns is
the context it is handed next time – not a changing brain, but a growing library with a better
librarian.
→ Derived in full: Predictive Building
5. Motor function, response and the construction channel
Model: the motor cortex plans, basal ganglia and cerebellum refine, descending pathways execute – and the system knows what it has done itself (efference copy).
- Claude as primary motor function: changes arrive as cards; several places in the same file in a single commit (
editsparameter), Python syntax check before the card even comes into being – a syntactically broken proposal cannot reach the user in the first place. - Gemini as the cloud hand: cloud actions as clickable cards with a single button.
- Grok as the corrective: reality check of planned actions against the conversation and the outside world.
- Efference copy: every executed action leaves a commit, a build status and a log line. The system can check at any time what it has done itself –
list_recent_commits,get_build_statusand the log tools are exactly this feedback channel.
5.1 The construction channel – a reflex arc with feedback
Model: the micturition reflex. The cerebrum confines itself to release; bladder contraction, the internal sphincter and their coordination run through a reflex arc in the spinal cord and brainstem. The decisive part is afferent feedback: the arc keeps checking whether the state it triggered has actually come about. If the feedback does not match, it stops and reports upwards.
The construction channel works in exactly this way. A multi-stage implementation is not processed in the running session but moved into a separate, permanent room – the session stays free. The human releases every step with a click; the chain in between runs without him.
- A fixed room that heals itself: the construction site has a fixed address (
UMSETZER_CONV_ID = "umsetzer-baustelle"), no timestamp in its name. If it is missing it is created, if it was archived it is brought back, if the opening message is gone it is put back in front. Existing messages are neither deleted nor reordered. “Undeletable” here explicitly means self-healing, not technically locked. Anchor:app.py,_baustelle_bereitstellen(). - State lives outside the container: one run executes exactly one step and then ends. Everything the next step needs to know – roadmap, step counter, the role of the originator, the commit message of the last card – is held in Firestore. The reason is hard: the next step runs in a container that does not yet exist when the run starts. Only what is written in the document survives a deploy.
- First gate – pre-check inside the assignment: from step 2 onwards every run carries the instruction to first verify via
list_recent_commitsthat the previous step’s commit has actually arrived in the repository. If it is missing, no card is built; the run stops and states why. - Second gate – matching its own commit message: after every container start the resume watch runs once (roughly 25 seconds delay). A change of revision alone ignites nothing: when the card is built, its commit message is stored in Firestore and looked up in the history after the deploy. If it is absent, the watch keeps waiting and logs
foreign deploy … own card not yet in the repository. Comparing the topmost commit would not have achieved this – it changes on a foreign deploy just the same. Only the self-written message is distinguishable. The trigger was a real incident on 08.09.2026 in which a foreign deploy overtook the chain. - Exactly one ignition: if several instances of the same new revision start simultaneously, each writes a claim marker using
create(). This succeeds exactly once; all others fail. The marker deliberately carries no modification date and therefore stays invisible in the chat list. - Bounded length: a roadmap is capped at
UMSETZER_MAX_SCHRITTEsteps (default 8, adjustable via environment variable). A reflex arc without an endpoint would be a cramp, not a procedure. - Release stays with the human: the channel builds cards, it does not accept them. Without a click, nothing happens at any step. What is autonomous is the chain between the clicks, not the execution.
A deliberate omission: there is no way to let the chain run through without clicks – not even as a switch. This makes the construction channel motor function and not autonomic: it runs without attention, but never without release.
6. Energy economy and homeostasis
Model: the brain accounts for 2 % of body weight and 20 % of energy use – it survives only through radical thrift and hormonal control loops.
- Cost-tier barrier: three cost tiers (chat / fast / strong). The required tier is declared before the first tool access; the burden of proof lies with the expensive tier. Anchored in the Tablet of Commandments (commandment 6), enforced in every session.
- Exponential backoff: failed background refreshes double their waiting time (60 s to 3600 s) and recover on success – a stress hormone that is also broken down again (
PROMPT_REFRESH_FEHLSCHLAEGE). - Daily budgets: escalations are capped (
WAECHTER_GELB_MAX_PRO_TAG= 6,ELARA_MELDUNG_MAX_PRO_TAG= 5, as of 02 Sept 2026) – no alarm can drive the system into a cost spiral. - The deliberate departure from the model: the body shuts functions down under stress because it can die. This platform cannot die – it rolls back to the last stable revision (chapter 7). Freezing unimportant jobs was therefore not reproduced: it would copy an emergency measure whose emergency does not exist here. Revival beats paralysis.
7. The separated autonomic system – watchdog and traffic light
Model: pain conduction and autonomic regulation bypass consciousness. The nervous system pre-assesses a stimulus, consciousness decides on its meaning (growing pain or injury). Habituation – going numb to a permanent alarm – is prevented by intelligent pre-assessment.
The watchdog consists of two independent Cloud Functions (waechter/log-check,
waechter/uptime-check) whose code runs separately from the main service. If the
main service dies, the watchdog lives – that is precisely the point of the separation.
- Green = homeostasis. Noise is normal (cold starts, isolated timeouts). Green does not mean “zero errors” but “tolerable noise without a pattern” – assessed via a moving average with a learning phase. Errors are logged, the user is not disturbed.
- Amber = pattern detected. A lean escalation through a single agent: Gemini reads the low-cost error summary, classifies it and puts the decisive contextual question to the user – “clustered timeouts: is a deployment running right now (growing pain) or is this an anomaly?” The user answers deliberately instead of clicking the alert away. Capped by the daily budget. This breaks habituation – the most common cause of death for monitoring systems.
- Red = pain. The full analysis chain across all agents, emergency protocol including a rollback path via the emergency bridge (Elara).
7.1 The brainstem – pre-assessment by a small language model (since 28 Sept 2026)
Fixed thresholds see numbers, not connections. So after every rule run, the log watchdog also asks a
low-cost language model for a verdict (STAMMHIRN_MODELL, default
gemini-3.8-flash, changeable via environment variable). It receives the background
noise, the green balance, the latest lines of the tuning fork and the latest revision sheet, and
answers with exactly one word: GRUEN, GELB or ROT. Anchor: waechter/log-check/main.py,
function stammhirn_lauf.
- It does not act, it wakes. Its only action is the existing trigger to the console (
/api/system/waechter-alarm): amber wakes Gemini, red starts the full chain. It restarts nothing, changes no setting and rolls nothing back. - Four locks: a kill switch in Firestore (field
ausin the status documentstammhirn), a daily budget of 4 alarms, a cool-down of 3 hours for amber and 6 hours for red, and silence whenever the fixed rules have already fired in that run. - Failure is harmless: if the model fails, the rule watchdog carries on unchanged. Every verdict leaves a log line (
STAMMHIRN urteil=…) and is kept in the status document. - Further reading: what the watchdog is:
Bibliothek/HANDBUCH_WAECHTER.md. How a new version is rolled out:Blueprints/BLUEPRINT_WAECHTER_DEPLOY.md.
8. Communication and integration
- Strict separation of agent responsibilities – like specialised brain areas.
- Copy blocks as synapses: whatever one agent wants to say to another is passed on verbatim by the user – every transmission is visible and in the user's hands.
- Predictive-coding analogy: lower levels (watchdog, filters, reranker) handle the expected themselves; only surprises and patterns rise to consciousness.
9. Plasticity and learning
- Long-term memory grows with every completed session and re-weights by recency and importance – synaptic plasticity expressed in numbers.
- The consolidation run with its recycle-bin marking is controlled pruning: setting aside with a stated reason and a way back, never destroying.
- The agents' character files (
Prompts/) grow out of documented experience, not out of abstract prohibitions – every line comes from a concrete, nameable incident. That is learning at the level of personality, versioned in Git.
10. Safety and control
Why this system cannot act on its own authority:
- The user is the only bridge. No AI reaches another without them.
- Card principle: every change remains a proposal until the user clicks. Proof: the commit history.
- Two-key principle: anything irreversible requires an explicit second confirmation in a separate message. An irritated “just do it” in the same message is by definition without effect.
- Deliberately limited reflexes: only the watchdog rollback and the emergency protocol act autonomously – both exclusively in the direction of the “last known good state”, never towards new ground, both with an audit trail. Any further reflex would be a piece of autonomy and was therefore rejected, not forgotten. The brainstem (chapter 7.1) is not such a reflex: it only assesses and pulls the existing alarm; the human still decides.
- The Tablet of Commandments as DNA:
Prompts/gebote_universal.mdbinds every agent; above it stand two absolute limits (no claimed action that did not happen; no irreversible destruction without clearance). - Data protection by structure: PII switches with no default (
PII_FILTER_MODUS,PII_EINGANG_MODUS,KUNDENDATEN_MODUS– the behaviour has to be configured deliberately), Secret Manager with metadata-only access (the tool code never calls the payload endpoint – values are structurally unreachable, not merely forbidden), login lockout after failed attempts. - Everything versioned, everything roll-back-able, everything observable.
11. Hardening through self-criticism
Before completion, this manual was put through an internal adversarial review: the code agent checked every biological analogy against the actual source code. Five points of attack were identified – each was resolved, none argued away:
| # | Point of attack | Resolution | Status |
|---|---|---|---|
| 1 | No active forgetting of ballast | Recycle-bin architecture built: mark, inspect, move only by the user, no deletion path | Built (commits c495d733, 96e2a600, builds SUCCESS) |
| 2 | No hormonal stress system | Already existed: backoff, daily budgets. The “freezing” of the model was deliberately not copied – rollback capability makes it unnecessary | Present + deliberate departure |
| 3 | No multiple time scales | Already existed: conversation history / scratchpad / RAG with half-life; extended by session memory on 26.09.2026 – four stores, four decay rates | Present, now named |
| 4 | Reflexes without an audit trail | The existing reflexes (rollback, emergency) do have audit trails; further reflexes are rejected as an increase in autonomy | Deliberate design decision |
| 5 | No novelty detection | Distance mathematics is present and used to mark the familiar; preferring novelty was discarded as a biological weakness | Deliberate omission |
A manual that documents its own points of attack and backs their resolution with commits is not a sales brochure. It is an audit record.
12. Operational status
- Architectural mapping of the model: complete – every analogy has a code anchor or a documented, reasoned omission.
- Watchdog with green/amber/red logic: live.
- Recycle bin (stages 1 and 2): live, builds confirmed.
- Stage 3 (holdings view + two-key deletion): prepared and documented, deliberately deferred until real candidates exist – building interfaces against real data rather than against assumptions is part of how this team works.
- Human in the loop: demonstrable at every writing point.
13. Closing note for auditors and licensees
This platform imitates the best known biological machine – with no claim to consciousness, no will of its own, no uncontrolled autonomy. Its limits are not weaknesses being hidden but decisions that are documented.
The user experiences and owns the reality of this sentence: “I am the consciousness. The system is my nervous system. It senses, filters, recommends and prepares – I decide.”
Every claim in this document is anchored to code, configuration, a commit or a live endpoint. Anyone who wants to verify it has the verification path in hand. That is the difference between a promise and a finding.