Les trois articles précédents ont disséqué chacun une couche de l'architecture à trois niveaux de BoxAgnts :
Mais la véritable valeur de l’architecture ne réside pas dans ce que chaque couche fait individuellement, mais dans la manière dont elles collaborent. Cet article examine cette collaboration à travers cinq perspectives.
┌───────────────────────────────── ─────────────────────────────────┐ │ COUCHE EXTERNE │ │ │ │ CLI (clap 6 paramètres) │ Tableau de bord (Vue 3 × 10 pages) │ API REST │ │ ────────────────────────────── ─────────────────────────────── │ │ Interface utilisateur · Visualisation · Ingestion de demande · │ │ Réponse en streaming · Authentification · Hébergement de site │ │ │ │ Ressources préinstallées : 7 outils WASM · 5 compétences · │ │ AGENTS.md · Service de fichiers statiques │ │ │ └────────────────────────────┬──── ─────────────────────────────────┘ │ HTTP REST / WebSocket │ (Routeur Axum) ┌────────────────────────────┴──── ─────────────────────────────────┐ │ COUCHE INTERMÉDIAIRE │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ boxagnts-api │ │boxagnts-query│ │ boxagnts-tools │ │ │ │ LlmProvider │ │ run_query │ │ Trait d'outil │ │ │ │ 20+ fournisseurs │ │ _loop() │ │ registre du gestionnaire d'outils│ │ │ └──────┬───────┘ └──────┬───────┘ └──────────┬───────────┘ │ │ │ │ │ │ │ ┌──────┴─────────────────┴──── ──────────────────┴───────────┐ │ │ │ boxagnts-gateway · Cron · Site │ │ │ │ boxagnts-espace de travail · SQLite · JSON │ │ │ └────────────────────────────── ──────────────────────────────┘ │ │ │ │ Abstractions de base : trait d'outil · QueryConfig (20 champs) · │ │ QueryOutcome │ │ Mécanismes de base : récupération de jeton · Compactage du contexte · │ │ Repli · Budget · Gestionnaire │ └────────────────────────────┬──── ─────────────────────────────────┘ │ Trait d'outil → exécuter() ┌────────────────────────────┴──── ─────────────────────────────────┐ │ COUCHE INFÉRIEURE │ │ │ │ ┌───────────────────────────── ─────────────────────────────┐ │ │ │ WasmTool.execute() → Wasmtime Engine → Composants .wasm │ │ │ │ RunOption (11-dim) · Interception WASI · Défense à 3 couches │ │ │ └───────────────────────────── ─────────────────────────────┘ │ │ │ │ Dimensions de sécurité : Autorisation · Mémoire · Pile · Temps · │ │ Carburant · Fichier · Réseau │ │ Interface de composant : JSON stdin → WASM Exécution → JSON stdout │ │ Système d'extension : Compétence (SKILL.md) · Service (.wasm) │ └───────────────────────────────── ─────────────────────────────────┘L'excellence d'une architecture en couches dépend de ses interfaces inter-couches. BoxAgnts définit trois interfaces claires qui relient chaque couche comme les articulations du corps humain :
C'est la frontière entre l'interaction utilisateur et la logique métier :
Tableau de bord (Vue 3) │ ├── API REST (Axum) ──→ gateway/api/chat.rs, config.rs, cron.rs... │ Format de réponse unifié { succès, données, erreur } │ └── WebSocket ──→ server/dashboard/ws.rs Communication bidirectionnelle en temps réel type_commande : "chat_execute" | "chat_execute_cancel"Décision de conception clé : l'envoi de commandes de chat et la réception de réponses utilisent deux canaux différents :
Événement de requête(en temps réel, unidirectionnel)Cette séparation évite le problème de longue interrogation de REST et évite également que WebSocket transporte toutes les données.
C'est la fr...
[Courte citation de 8% de l'article original]