Ein hochsicherer, persistenter Node.js Hintergrundprozess, der als zentrales Gateway für KI-Agenten fungiert. Die Architektur basiert auf einer strikten, unabänderlichen sechsstufigen Verarbeitungspipeline kombiniert mit dynamischem Wissensmanagement, "Secure-by-Default" Sandboxing und iterativen nativen Werkzeugen.
- Channel Adapter: Normalisiert Payloads aus verschiedenen APIs (Telegram, Webhooks).
- Gateway Server: Zentraler Router, der Nachrichten über Authentifizierungs-Token an persistente Sitzungen (SQLite) koppelt.
- Lane Queue: Eine sicherheitskritische Warteschlange, die strikt nach FIFO (First-In-First-Out) pro Sitzung arbeitet, um Race Conditions zu verhindern.
- Agent Runner: Verwaltet dynamisch verschiedene Sprachmodelle (OpenAI, Anthropic, Gemini, Ollama, Moonshot, OpenRouter) mit API Key Cooling und harter Context Window Beschneidung.
- Agentic Loop (ReAct): Der iterative Zyklus, in dem das LLM über Aufgaben nachdenkt (Reasoning), native "First-Class Tools" aufruft (Acting) und Ergebnisse als Evidenz zurückgespeist bekommt.
- Response Path: Streamt Ergebnisse asynchron zurück zum Ursprung und speichert ein lückenloses, deterministisches JSONL-Transkript auf der Festplatte.
Dieses Gateway ist extrem gehärtet gegen RCE (Remote Code Execution), Datenexfiltration und Symlink Breakouts.
- Kein direkter Zugriff: Der Agent hat initial keinen Zugriff auf die Host-Shell oder das Dateisystem außerhalb seines dedizierten
agent_workspace. - SecretRef Paradigma: API-Schlüssel dürfen niemals als reiner Text (Plaintext) in der Konfiguration gespeichert werden. Das System erzwingt die Auslagerung in Umgebungsvariablen (
env), verschlüsselte Dateien (file) oder HashiCorp Vault Execution (exec). - Micro Virtual Containers: Agenten werden isoliert in Proxy-gekoppelten Docker-Containern ausgeführt. Der Hauptprozess bindet sich ausschließlich an
127.0.0.1. - Pre-Authentication Parsing: Eingehende Webhook-Payloads validieren kryptografische Signaturen bevor tiefes JSON-Parsing stattfindet, um "Billion Laughs" DoS-Angriffe zu verhindern.
- Node.js: v18.x oder höher
- Docker: (Optional, aber empfohlen) Für die Micro Virtual Container Sandboxes.
- Chrome/Chromium: Erforderlich, wenn das
browser_controlWerkzeug genutzt werden soll.
Das System kann mit einem einzigen Befehl vollständig installiert und konfiguriert werden. Lade das Projekt herunter, kompiliere es und installiere das globale Kommandozeilen-Tool chyi:
curl -fsSL https://raw.githubusercontent.com/DevBuzzty/agent/refs/heads/feature/ai-gateway-architecture-15263833713041301073/install.sh | bashDas interaktive Onboarding (chyi config) fragt alle notwendigen Einstellungen ab (Modell, Provider, API Keys) und generiert vollautomatisch die sichere config.json5 und .env Dateien unter strenger Einhaltung des SecretRef-Paradigmas.
- Abhängigkeiten installieren:
npm install - Projekt kompilieren:
npm run build - CLI Tool global verlinken:
npm link - Setup starten:
chyi config
Die Bedienung des Gateways erfolgt bequem über das Terminal mit dem chyi Command:
chyi config: Startet das interaktive Setup-Menü, um API Schlüssel, LLM Provider und Modelle anzupassen.chyi start: Startet den Gateway-Daemon sicher und entkoppelt im Hintergrund.chyi stop: Beendet den aktuell laufenden Gateway-Daemon.chyi status: Prüft, ob der Gateway-Prozess online ist und zeigt die zugehörige PID an.chyi logs: Zeigt den Live-Stream (Tail) der Gateway-Hintergrundlogs an.chyi update: Lädt und installiert automatisch den aktuellsten Code, ohne die persönlichen Konfigurationen zu überschreiben. Startet das Gateway ggf. neu.
Das Gateway injiziert hochspezialisierte Werkzeuge in den LLM-Kontext (via System Prompt & deterministischem JSON-Schema):
brave_search: Integrierte Echtzeit-Websuche via Brave Search API! Ermöglicht der KI, hochaktuelle Informationen, News und Snippets abzurufen. (Ein API Key kann im Onboarding festgelegt werden).exec: Führt Shell-Kommandos aus. Bietet PTY-Unterstützung (Pseudo-Terminal) undbackground: truefür das asynchrone Entkoppeln von Langläufern. (Host-Abhängig, durch Secure-by-Default geschützt).loop_detection: Algorithmische Leitplanke! Blockiert das Modell bei unendlichen Schleifen (genericRepeat,knownPollNoProgress,pingPong) mit harten Fehlermeldungen, um Strategiewechsel zu erzwingen.browser_control: Steuert Browser via CDP (Chrome DevTools Protocol). Übermittelt token-effiziente Accessibility Trees statt riesiger HTML-Dokumente und unterstützt isolierte Profile (profileId).web_fetch: Lädt Webseiten herunter, konvertiert HTML on-the-fly zu Markdown und schneidet den Text bei einem definierten Zeichenlimit (maxChars) ab (Context Bloat Schutz).sessions_spawn: Startet dynamisch isolierte Unteragenten für parallele Sub-Tasks.sessions_history: Liest den Verlauf der aktuellen Sitzung. Wird kryptografisch durch den Parameterself: truegesichert, um Cross-Context-Leaks zwischen kompromittierten Sub-Agenten zu unterbinden.
Das System lädt Domänenwissen progressiv in den Modellkontext, um Token zu sparen ("Context Bloat"). Wissen wird automatisch aus Verzeichnissen geladen und überschreibt sich nach strikter Priorität:
knowledge_modules/workspace(Höchste Priorität)knowledge_modules/sharedknowledge_modules/bundled(Kernkompetenzen)
Ein File-Watcher beobachtet die Verzeichnisse und lädt geänderte Dateien automatisch zur Laufzeit neu (250ms Debounce). Der Token-Overhead der injizierten Module wird deterministisch berechnet.
Jede Datei muss als Markdown (.md) gespeichert werden und folgendes exaktes 3-stufiges Format einhalten:
- YAML Frontmatter (Name und Beschreibung als einzeilige Schlüssel)
- JSON Metadata (Einzeiliges JSON für Load-time Gating / Systemanforderungen)
- Markdown Textblock (Instruktionen)
Beispiel (knowledge_modules/workspace/docker_rules.md):
---
name: "DockerGuidelines"
description: "Regeln für den Umgang mit Containern"
---
{"requires": {"bins": ["docker"]}, "os": ["linux", "darwin"]}
---
### Docker Agenten Regeln
- Verwende niemals `--privileged`.
- Binde Container stets an das `proxy_gateway` Netzwerk.Hinweis: Wenn das Modul auf einem Windows-System ausgeführt wird oder die Binary docker fehlt, wird das Modul dank der JSON Metadata ("Load-time Gating") automatisch herausgefiltert und nicht in den Token-Kontext geladen.