EMIL Hexagonal Architecture & DevHub
Detaillierte Anleitung für Entwickler und CTOs: Wie Adapter während der kognitiven Inferenz aufgerufen werden, wie die Inferenz bei externen Abfragen pausiert und wie Sie EMILs Inferenz aus Python heraus steuern.
1. Die Hexagonale Architektur (Ports & Adapters)
EMIL trennt die reine neuronale Kognition strikt von allen externen Protokollen. Dadurch bleibt der Denkapparat 100 % unabhängig davon, ob Daten über WhatsApp, SAP, Telegram oder eine OPC-UA SPS einfließen.
2. Ports vs. Adapters: Der fundamentale Unterschied
In der hexagonalen Architektur (Clean Architecture) ist die klare Rollenverteilung zwischen abstrakten Verträgen (Ports) und konkreten Implementierungen (Adapters) entscheidend:
modules/ports/)Die reinen Schnittstellen-Verträge. Sie definieren ausschließlich, was EMIL braucht (z. B. send_text(), get_material_master(), read_node()). Ein Port kennt weder IP-Adressen noch Webhooks oder Tokens.
modules/adapters/)Die konkreten 24/7 Treiber. Sie implementieren die Ports und sprechen echte Netzwerkprotokolle (Meta Cloud Graph API, SAP OData v4, IEC 62541 OPC-UA TCP). Sie halten Ports offen und managen SSL-Zertifikate.
| Eigenschaft | 🔌 Port (Vertrag) | ⚙️ Adapter (Treiber) |
|---|---|---|
| Speicherort | modules/ports/base_port.py |
modules/adapters/*.py |
| Zuständigkeit | Abstrakte Methoden & Typ-Signaturen | TCP/HTTP Sockets, JSON-Parsing, Circuit Breaker |
| Abhängigkeiten | Reines Python (keine externen Libs) | Uvicorn, Requests, OPC-UA Stack, BAPI Connector |
| Austauschbarkeit | Bleibt über Jahre 100 % stabil | Kann jederzeit ohne Kognitions-Neustart getauscht werden |
3. Parallele AI Vault Kognition via Prismatic Router
Alle montierten AI Vaults laufen 100 % parallel im neuronalen Kortex! EMIL führt AI Vaults nicht nacheinander aus. Stattdessen projiziert der Prismatic Router den eingehenden Kognitions-Tensor zeitgleich in alle aktiven AI Vault Module:
Ob Arbeitsrecht, KUKA-Kinematik, ISO-Qualitätsmanagement oder SAP-Schema: Alle AI Vaults berechnen ihre Gewichts-Deltas (weights_delta.emlb) simultan auf den Tensor-Cores der GPU/NPU.
Die Aktivierungsvektoren aller AI Vaults fließen in einen gemeinsamen kontinuierlichen Vektorstrom ein und bilden einen einheitlichen, widerspruchsfreien Gesamtzusammenhang.
4. Wie verhalten sich Adapter während der Inferenz?
Es gibt genau zwei fundamentale Interaktionsmuster zwischen EMILs Inferenz und den Adaptern:
Ein Adapter empfängt ein externes Ereignis (z. B. ein WhatsApp-Kunde stellt eine Frage oder ein OPC-UA Vibrationssensor schlägt an). Der Adapter normalisiert den Payload und übergibt die Daten an EMILs Eingangs-Pipeline. EMIL startet daraufhin einen neuen kognitiven Forward-Pass.
Während EMIL nachdenkt, stellt das neuronale Netz fest, dass ihm konkrete Fakten fehlen (z. B. „Wie viele Motoren MAT-100482 sind in Werk Stuttgart verfügbar?“). EMIL triggert aus der Inferenz heraus den zuständigen Adapter über seinen Port.
5. Das selektive Pausieren (Cognitive Fakten-Yield)
Die neuronale Logik rechnet weiter – nur der Satz-Schreiber wartet auf die Zahl!
Die Aussage „die Inferenz pausiert“ bezieht sich ausschließlich auf den finalen Token-Emitter (den Ausgabegenerator) an der Stelle, an der ein externer Echtzeit-Fakt benötigt wird:
- Parallele AI Vaults formulieren den Kontext: Die AI Vaults (z. B. Arbeitsrecht & Logistik) berechnen parallel den Antwortrahmen: „Die Kündigungsfrist beträgt 3 Monate, und im Werk Stuttgart liegen aktuell
[FAKTEN_SLOT]Servomotoren auf Lager.“ - Selektiver Token-Yield: Nur an der Stelle
[FAKTEN_SLOT]hält der Text-Emitter für 20–40 ms an. Alle anderen Hintergrundprüfungen (z. B. Z3-Beweise, Übersetzungen) laufen asynchron weiter. - Adapter fragt SAP/SPS ab: Der
SAPS4HanaAdapterliefert über OData die reale Zahl42. - Fakten-Fusion: Die Zahl
42wird in den Residuenstrom injiziert. - Deterministische Ausgabe: EMIL beendet den Satz: „...aktuell 42 Servomotoren auf Lager.“ – 100 % halluzinationsfrei.
6. Kann ich innerhalb von Python-Code auf die Inferenz zugreifen?
Ja, uneingeschränkt! EMIL bietet eine First-Class Python API. Sie können Inferenz sowohl auf Text-Ebene als auch direkt auf Vektor-Ebene im 512D Kognitionsraum ausführen:
A. Einfache Text-Kognition (`think`)
from modules.eml_pipeline import emil_engine
# Führt einen vollen kognitiven Denkprozess mit Z3-Prüfung aus
antwort = emil_engine.think(
prompt="Prüfe Kündigungsfrist für 3 Jahre Betriebszugehörigkeit nach § 622 BGB",
temperature=0.1
)
print(antwort)
B. Reine Vektor-Inferenz im Kognitionsraum (Latenz < 2 ms)
from modules.eml_pipeline import emil_engine
# Projiziert Text direkt in 512D Kognitions-Vektoren
v_gesetz = emil_engine.embed("KSchG § 1 Wartezeit 6 Monate")
v_anfrage = emil_engine.embed("Gilt Kündigungsschutz nach 7 Monaten Probezeit?")
# Berechnet die semantische Distanz
dist = emil_engine.calculate_distance(v_gesetz, v_anfrage)
if dist < 0.15:
print("🟢 Relevanz mathematisch bewiesen (Semantischer Treffer)!")
C. Event-Driven Hook im AI Vault
from modules.adapters import whatsapp_adapter
# Callback, der von der WhatsApp-Bridge getriggert wird
def on_whatsapp_message(sender_id: str, message_text: str, emil):
# 1. EMIL denkt mit AI Vault Wissen
gutachten = emil.think(f"Arbeitsrechtliche Prüfung: {message_text}")
# 2. Direkt über den WhatsApp-Adapter mit Buttons antworten
whatsapp_adapter.send_interactive_buttons(
recipient=sender_id,
body=gutachten,
buttons=[
{"id": "btn_frist", "title": "📅 Frist berechnen"},
{"id": "btn_anwalt", "title": "📞 Rückruf anfordern"}
]
)
7. 10-Minuten Tutorial: Eigenen Inhouse-Adapter schreiben
Jeder Entwickler kann in unter 10 Minuten einen neuen Adapter für jedes Altsystem (z. B. Hochregallager, AS/400, Oracle SQL) schreiben. Er erbt automatisch Circuit Breaking, Post-Quantum Audit-Logging und 4-Augen-Sperre:
# inhouse_warehouse_adapter.py
from modules.adapters import BaseAdapter
class InhouseWarehouseAdapter(BaseAdapter):
def __init__(self):
super().__init__(
adapter_id="adapter.warehouse.custom_rack_system",
name="Inhouse Hochregallager TCP Adapter",
system_type="WAREHOUSE_TCP_SOCKET",
read_only_mode=True # Standardmäßig schreibgeschützt
)
def get_rack_status(self, rack_id: str) -> dict:
self._check_circuit_breaker() # Schutz vor Server-Überlastung
try:
# 1. Verbindung zum hauseigenen TCP-Socket / Datenbank
status = {"rack_id": rack_id, "capacity_percent": 84.5, "temperature": 18.2}
# 2. Revisionssicherer Audit-Eintrag (SHA-256 + ML-DSA-65)
self.record_audit_entry(
action="GET_RACK_STATUS", direction="OUTBOUND",
payload_summary=f"Regal {rack_id} abgefragt: {status['capacity_percent']}% belegt",
status="SUCCESS"
)
self._record_success()
return status
except Exception as e:
self._record_failure(str(e))
raise
8. AI Vault Anbindung & Adapter-Deklaration
Ein autarker AI Vault (.emp Container) deklariert in seinem Manifest (vault_manifest.json), welche Adapter er benötigt. Sobald EMIL den AI Vault mountet (Hot-Swap in 1,8 ms), bindet der Kortex die entsprechenden Adapter automatisch:
// In vault_manifest.json des AI Vaults:
{
"vault_id": "vault.legal.labor.kschg_arbzg",
"title": "Arbeitsrecht & Kündigungsschutz Vault",
"required_adapters": [
"adapter.channel.chat.whatsapp_meta",
"adapter.channel.chat.telegram_bot"
],
"entrypoint_script": "scripts/on_client_message.py"
}
9. IT-Sicherheit, 4-Augen-Prinzip & ISO 27001
| Sicherheits-Eigenschaft | Technische Umsetzung in EMIL | Nutzen für das Konzern-Audit |
|---|---|---|
| Zero Data Leakage | Alle Adapter laufen wahlweise 100 % lokal oder Air-Gapped im Firmennetz. | Keine Übertragung interner ERP- oder SCADA-Daten an Drittanbieter. |
| Circuit Breaker | Öffnet sich bei 5 Fehlern und entlastet SAP/SPS-Systeme automatisch. | Verhindert Kaskadenausfälle in der Produktion bei Lastspitzen. |
| 4-Augen Hardware-Sperre | Schreibende Aktionen erfordern zwingend eine gültige FIDO2 / YubiKey-Signatur. | Keine unautorisierten Buchungen oder Maschinenbewegungen durch KI. |
| Post-Quantum Audit Trail | Jeder API-Aufruf wird kryptografisch unveränderlich mit ML-DSA-65 signiert. | Vollständige forensische Nachvollziehbarkeit für BSI- & ISO 27001 Audits. |