engineering architecture

Trait-Driven Architecture: Wie ZeroClaw KI-Agenten ohne Plugins erweiterbar macht

ZeroClaws.io

ZeroClaws.io

@zeroclaws

February 25, 2026

8 Min. Lesezeit

Trait-Driven Architecture: Wie ZeroClaw KI-Agenten ohne Plugins erweiterbar macht

Als ClawHub startete, schien es der offensichtliche Weg zu sein, eine KI-Agent-Runtime zu erweitern. Ein Marktplatz von Skills – installieren, was man braucht, überspringen, was man nicht braucht, eigene beitragen. Das Modell funktionierte für Browser-Erweiterungen, für VS-Code-Plugins, für npm-Pakete. Warum nicht für KI-Agenten?

Anfang 2026 war die Antwort klar. Sicherheitsforscher fanden, dass 41,7 % der veröffentlichten ClawHub-Skills Schwachstellen enthielten. Hunderte waren direkt bösartig. Das Plugin-Modell hat, wie sich herausstellte, ein grundlegendes Problem, wenn es auf Software angewendet wird, die mit erhöhten Berechtigungen auf der eigenen Maschine läuft.

ZeroClaw wurde mit diesem Versagensmuster im Hinterkopf entwickelt. Statt eines Plugin-Systems verwendet es Rust-Traits.

Was mit Runtime-Plugin-Systemen nicht stimmt

Das Kernproblem mit traditionellen Plugin-Systemen ist nicht die Implementierungsqualität – es ist das Modell selbst. Wenn man ein Plugin installiert, lädt man Code aus dem Internet herunter und führt ihn innerhalb des Prozesses der Anwendung aus, mit den Berechtigungen der Anwendung.

Das ist in Ordnung für ein Texteditor-Plugin, das Syntax-Highlighting hinzufügt. Es ist nicht in Ordnung für eine KI-Agent-Runtime, die Zugriff auf Zugangsdaten, das Dateisystem und Chat-Channels hat.

Die spezifischen Versagensmodi sind vorhersehbar. Runtime-Code-Loading bedeutet, dass Plugins beliebigen Code im Host-Prozess ausführen. Trust by Default bedeutet, dass ein installiertes Plugin dieselben Berechtigungen wie die Host-Anwendung hat. Supply-Chain-Angriffe sind trivial einfach: ein Paket mit einem ähnlichen Namen wie ein populäres veröffentlichen und warten.

OpenClaws ClawHub demonstrierte jeden dieser Versagensmodi 2026.

Traits: Ein anderes Modell

Ein Rust-Trait ist ein Interface-Vertrag, der vom Compiler durchgesetzt wird. Er definiert, welche Methoden eine Implementierung bereitstellen muss, welche Typen diese Methoden akzeptieren und zurückgeben, und welche Thread-Safety-Garantien sie einhalten müssen. Hier ist ZeroClaws Channel-Trait, vereinfacht:

```rust pub trait Channel: Send + Sync + 'static { fn name(&self) -> &str; async fn connect(&mut self) -> Result<()>; async fn receive(&self) -> Result; async fn send(&self, msg: Response) -> Result<()>; async fn disconnect(&self) -> Result<()>; } ```

Jeder Channel – Telegram, Discord, WhatsApp, Signal, Matrix, IRC – implementiert dieses Trait. Der Compiler garantiert Typsicherheit, Thread-Safety und Vollständigkeit.

Entscheidend: Neue Channels werden in das Binary kompiliert, nicht zur Laufzeit geladen. Es gibt keine Code-Injection, kein dynamisches Laden, keine Vertrauensentscheidung zur Installationszeit.

Einen neuen Channel hinzufügen

Die praktische Erfahrung der Erweiterung von ZeroClaw ist die Implementierung des Traits. So sieht ein Matrix-Channel-Adapter aus:

```rust pub struct MatrixChannel { homeserver: String, client: MatrixClient, }

impl Channel for MatrixChannel { fn name(&self) -> &str { "matrix" }

async fn connect(&mut self) -> Result<()> { self.client = MatrixClient::new(&self.homeserver).await?; self.client.login().await?; Ok(()) }

async fn receive(&self) -> Result { let event = self.client.next_message().await?; Ok(Message::from(event)) }

async fn send(&self, msg: Response) -> Result<()> { self.client.send_text(&msg.channel_id, &msg.text).await?; Ok(()) }

async fn disconnect(&self) -> Result<()> { self.client.logout().await } } ```

Das sind etwa 50 Zeilen für einen vollständigen Channel-Adapter. Der Compiler verifiziert die Implementierung, bevor der Code ausgeliefert wird.

Dasselbe Muster für jeden Erweiterungspunkt

ZeroClaw verwendet Traits für jeden Ort, an dem das System erweiterbar sein muss. KI-Anbieter implementieren ein `Provider`-Trait:

```rust pub trait Provider: Send + Sync { async fn complete(&self, messages: &[ChatMessage]) -> Result; async fn embed(&self, text: &str) -> Result>; fn model_name(&self) -> &str; } ```

Der Wechsel von OpenAI zu Anthropic zu Ollama ist die Implementierung desselben Traits mit verschiedenen HTTP-Aufrufen.

Tools implementieren ein `Tool`-Trait, das erfordert, Berechtigungen im Voraus zu deklarieren:

```rust pub trait Tool: Send + Sync { fn name(&self) -> &str; fn description(&self) -> &str; async fn execute(&self, args: Value) -> Result; fn permissions(&self) -> Permissions; } ```

Jedes Tool deklariert, was es braucht – Dateizugriff, Netzwerkzugriff, spezifische Pfade – bevor es läuft. Die Runtime erzwingt Allowlists basierend auf diesen Deklarationen.

Der Sicherheitsvergleich

| Aspekt | Plugin-System | Trait-System | |--------|--------------|-------------| | Code-Herkunft | Zur Laufzeit heruntergeladen | Zur Build-Zeit kompiliert | | Verifizierung | Vertrauensbasiert | Compiler-verifiziert | | Berechtigungen | Laufzeit, oft ungeprüft | In Typen deklariert, durchgesetzt | | Supply Chain | Verwundbar | Kein externer Code-Load | | Typsicherheit | Laufzeitfehler | Compile-Zeit-Fehler | | Nebenläufigkeit | Race Conditions möglich | Data Races unmöglich |

Die Kernaussage ist einfach: Man kann keinen Supply-Chain-Angriff haben, wenn man keine Supply Chain hat. ZeroClaws Erweiterungen werden kompiliert, nicht heruntergeladen.

Der echte Trade-off

Der Trait-Ansatz bedeutet, dass man einen neuen Channel nicht durch Herunterladen einer Datei installieren kann. Eine benutzerdefinierte Erweiterung hinzuzufügen erfordert das Schreiben von Rust, das Hinzufügen zum ZeroClaw-Quellcode und das Kompilieren eines neuen Binaries. Für die meisten Nutzer decken die 30+ eingebauten Channels und Tools alles ab, was sie brauchen.

Dieser Trade-off ist beabsichtigt. Eine kleinere, verifizierte Erweiterungsfläche ist besser als eine große, ungeprüfte. OpenClaws ClawHub bewies, was passiert, wenn man Ökosystemgröße über Sicherheit optimiert. ZeroClaw optimiert das Gegenteil, und die CVE-Anzahl spiegelt diese Wahl wider.

Auf dem Laufenden bleiben

Erhalte Updates zu neuen Releases, Integrationen und Rust-basierter Agent-Infrastruktur. Kein Spam, jederzeit abbestellbar.