Vue d’ensemble de l’architecture
ZeroClaw est un espace de travail Rust en couches. Au sommet se trouve le runtime de l’agent ; en dessous, on trouve des fournisseurs, canaux, outils et mémoire interchangeables ; les crates de support gèrent la configuration, le sandboxing et le matériel.
Forme de haut niveau
flowchart TB
subgraph External["External world"]
UI["CLI / chat platforms / gateway clients / ACP IDEs"]
LLM["LLM providers<br/>Anthropic · OpenAI · Ollama · ..."]
FS["Filesystem · shell · network"]
end
subgraph Edges["Edge crates: talk to the outside"]
CH["zeroclaw-channels<br/>30+ messaging integrations"]
GW["zeroclaw-gateway<br/>REST · WebSocket · dashboard"]
PR["zeroclaw-providers<br/>LLM clients · retry · routing"]
TL["zeroclaw-tools<br/>browser · HTTP · hardware"]
end
subgraph Core["Core"]
RT["zeroclaw-runtime<br/>agent loop · security · SOP · cron · subagents"]
MEM["zeroclaw-memory<br/>SQLite · embeddings · consolidation"]
CFG["zeroclaw-config<br/>schema · autonomy · secrets"]
end
UI --> CH
UI --> GW
CH --> RT
GW --> RT
RT --> PR
RT --> TL
RT --> MEM
RT --> CFG
PR --> LLM
TL --> FS
Crates dans le périmètre
| Crate | Rôle |
|---|---|
zeroclaw-runtime | Boucle d’agent, application de la politique de sécurité, moteur SOP, planificateur cron, SubAgents, couche RPC pour zerocode |
zeroclaw-config | Schéma TOML, chiffrement des secrets, niveaux d’autonomie, résolution de l’espace de travail |
zeroclaw-api | Traits publics : ModelProvider, Channel, Tool, Memory, Observer, RuntimeAdapter et Peripheral. L’ABI du kernel |
zeroclaw-providers | Toutes les implémentations de clients LLM (Anthropic, OpenAI, Ollama, …) ainsi que le routage basé sur des indications, les nouvelles tentatives, le délai de refroidissement et le basculement entre profils |
zeroclaw-channels | Plus de 30 intégrations de messagerie (Discord, Slack, Telegram, Matrix, email, voix, …) |
zeroclaw-gateway | Passerelle HTTP / WebSocket, tableau de bord web, ingress de webhook |
zeroclaw-tools | Implémentations d’outils appelables invoquées par l’agent (navigateur, HTTP, sondes matérielles) |
zeroclaw-tool-call-parser | Analyse et normalisation de la syntaxe des appels d’outils côté modèle |
zeroclaw-memory | Mémoire de conversation, embeddings, récupération vectorielle |
zeroclaw-plugins | Hôte de plugins WASM sandboxé (modèle de composants WIT) |
zeroclaw-hardware | Couche d’abstraction matérielle (GPIO, I2C, SPI, USB) |
zeroclaw-infra | Prise en charge au niveau du processus : backend de session SQLite, debouncers, watchdog anti-blocage |
zeroclaw-log | La surface unique d’émission de logs : schéma JSONL, attribution, macros record!/scope!, lecteur /api/logs, pont Observer |
zeroclaw-spawn | Wrapper sanctionné de tokio::spawn (macro spawn!) qui propage l’attribution |
zeroclaw-macros | Générer des macros pour la configuration et l’enregistrement des outils |
zerocode | Interface utilisateur terminal |
La feuille de route du micro-noyau (RFC #5574) poursuit activement la scission de zeroclaw-runtime : la couche noyau sera réduite à la boucle d’agent et à l’application des politiques, tout le reste étant déplacé derrière des feature flags.
Cycle de vie de la requête (court)
sequenceDiagram
participant U as User
participant CH as Channel
participant RT as Runtime
participant SEC as Security
participant PR as Provider
participant TL as Tool
U->>CH: message / DM / webhook
CH->>RT: deliver_message(ctx)
RT->>PR: chat(messages, tools)
PR-->>RT: stream: text · tool_call
RT->>SEC: validate(tool_call)
SEC-->>RT: approved / blocked
RT->>TL: invoke(args)
TL-->>RT: result
RT->>PR: chat(..., + tool_result)
PR-->>RT: stream: text (final)
RT-->>CH: reply (partial / final)
CH-->>U: message
Détails complets : Cycle de vie de la requête.
Traits principaux
Les contrats de traits se trouvent dans zeroclaw-api ; les définitions de traits dans crates/zeroclaw-api/src/ sont la source de vérité pour les fournisseurs intégrés, les canaux, les outils, les backends mémoire et les périphériques. Pour les capacités qui doivent résider en dehors du binaire principal, commencez par les guides de plugins. Les puces ci-dessous pointent vers les docs adjacents les plus proches.
ModelProvider: utilisezcustomou une famille de fournisseurs existante pour les points de terminaison compatibles OpenAI ; implémentez ce trait lors de l’ajout d’une nouvelle famille de fournisseurs, d’un modèle d’authentification, d’une déclaration de capacités ou d’un protocole filaire. Voir Fournisseurs personnalisés.Channel: à implémenter pour une nouvelle plateforme de messagerie. Les hooks entrants et sortants sont distincts. Voir Vue d’ensemble des canaux.Outil: implémenter pour une nouvelle capacité intégrée de l’agent. Voir Vue d’ensemble des outils.Memory` : implémenter pour un backend mémoire qui préserve la portée agent/session.Périphérique: implémenter pour les cartes matérielles et les surfaces d’appareil. Voir Vue d’ensemble du matériel.
Les autres traits publics, y compris Observer et RuntimeAdapter, sont des contrats de bas niveau. Utilisez la carte d’architecture et le processus RFC avant de les modifier.
Les nouvelles implémentations doivent rester derrière les contrats de traits zeroclaw-api et passer par la fabrique, le registre ou le feature gate propriétaire de cette surface. La RFC #5574 continue de réduire les dépendances d’implémentation runtime, donc évitez d’ajouter de nouvelles dépendances runtime concrètes sauf si la conception les exige.
Où lire ensuite
- Crates : analyse approfondie par crate
- Cycle de vie des requêtes : streaming, appels d’outils, approbations
- Fournisseurs de modèles → Aperçu
- Sécurité → Aperçu