Résultat clé : Espace de travail multi-agent entièrement automatisé avec mémoire persistante FTS5, 21 compétences personnalisées et 24 tâches d'orchestration cron actives
Résumé : Conception et déploiement d'un réseau autonome de multi-agents fonctionnant sur un VPS dédié Google Cloud. Le système fait office d'exécuteur numérique unifié, acheminant les communications de plusieurs passerelles de messagerie (Telegram, Discord, WhatsApp, e-mail) vers un cœur cognitif unique basé sur Obsidian avec mémoire persistante inter-sessions. De plus, Oz est configuré pour communiquer directement avec mon projet Hermes Agent afin de coordonner les flux de travail distribués.
Le Problème
Défi :
Fragmentation multi-canal : Gestion de flujos de informations disparates sur plusieurs canaux de communication.
Exécution autonome à grande vitesse : Besoin d'une exécution planifiée et continue des sauvegardes, des e-mails, des mises à jour système et des audits de coffres.
Amnésie de session : Les agents LLM traditionnels manquent de mémoire persistante, ce qui dégrade la continuité des échanges sur plusieurs jours ou semaines.
Complexité du coffre Obsidian : Maintien de la cohérence structurelle, des formats de schéma et de l'aiguillage des notes pour un coffre Obsidian de plus de 230 fichiers.
Vulnérabilités de sécurité : Profil de menace élevé provenant des passerelles de messagerie publiques nécessitant une défense stricte contre l'injection de prompts et des contrôles d'accès rigoureux.
Audience : Espace de travail de productivité personnelle, assistant de base de connaissances et opérateur système automatisé.
Contraintes :
Restrictions d'API de moteur de recherche : Aucune clé API de recherche autorisée, imposant un repli sur une couche d'abstraction de scraping personnalisée multi-moteur de recherche.
Limites du VPS : Déploiement sur un VPS Google Cloud à 4 vCPUs / 15 Go de RAM sans swap, exigeant une gestion minutieuse de la mémoire.
Blocages d'authentification : Toutes les opérations GitHub sont limitées à l'authentification par clé SSH en raison d'environnements clients non authentifiés.
Stockage de données : Limité aux fichiers plats locaux (Markdown, JSON, SQLite) plutôt qu'à des bases de données externes distribuées.
Approche & Décisions
Architecture : Un modèle de répartiteur centralisé où Oz agit comme orchestrateur principal, acheminant de manière dynamique les tâches entrantes vers des sous-agents spécialisés basés sur les rôles en fonction de la complexité de la tâche.
Décisions clés :
Intégration de Claude-Mem : Implémentation d'une base de données SQLite + FTS5 pour injecter automatiquement du contexte inter-sessions dans les exécutions actives.
Stockage orienté Obsidian : Choix de fichiers markdown plats pour faciliter la visualisation, la portabilité et l'analyse manuelle des graphes.
Chaîne de repli multi-modèle : Configuration de DeepSeek V4 Flash comme moteur principal économique, avec des solutions de secours vers les modèles Google Gemini et Grok pour maintenir la disponibilité.
Compromis :
Sondage (Polling) vs Webhooks : Choix d'une vérification d'e-mail basée sur cron et de signaux de keepalive (gratuit et sans configuration dans la passerelle OpenClaw) mais introduisant jusqu'à 8 heures de latence pour les vérifications de courriels.
Base de connaissances en fichiers plats : Markdown et SQLite nécessitent moins de gestion d'infrastructure mais limitent les agrégations de requêtes multi-nœuds en temps réel par rapport aux bases de données vectorielles complètes.
Résultats clés & Impact
Résultat : Exécution réussie d'un exécuteur autonome gérant les commits automatiques quotidiens, le traitement des e-mails, l'automatisation en arrière-plan et l'archivage des notes.
Comparaison : Remplacement des journaux mis à jour manuellement, du scraping multi-applications complexe et des chats déconnectés par un assistant d'espace de travail unique, persistant et intelligent.
Impact : Réalisation d'opérations automatisées robustes avec des capacités de secours garantissant un service continu même lors des pannes du modèle principal.
Métriques principales
Métrique
Valeur
Source / Détail
LLM Principal
DeepSeek V4 Flash
openclaw.json (agents.defaults)
Registre des modèles
27 modèles (3 fournisseurs)
Pool de secours personnalisé (DeepSeek, Gemini, Grok)
Tâches Cron actives
24 planifiées
Sortie de cron list
Coffre Obsidian
232 notes (37 Mo)
Espace de travail personnel & base de mémoire
Base de données mémoire
323 entrées (11 Mo)
Système SQLite + FTS5 Claude-Mem
Compétences personnalisées
21 compétences d'espace de travail
Plugins personnalisés et scripts d'automatisation
Ressources serveur
4 vCPUs / 15 Go de RAM
Google Cloud VPS (Ubuntu 22.04 LTS)
Utilisation RAM
~1,8 Go / 15 Go
Empreinte mémoire moyenne au repos
Latence de réponse
1 - 3 secondes
Cache actif de DeepSeek (jusqu'à 15s lors des lancements à froid multi-agents)
Passerelles actives
Telegram, Discord, WhatsApp
Mentions, DMs ouverts et groupes de diffusion
Incursion technique approfondie
Détails notables :
imap-smtp-email : Intègre iCloud SMTP avec un routage de chaîne CC obligatoire (oz@franzdomingo.dev → liste CC) exécuté via des scripts d'assistance Node.js.
multi-search-engine : Agrège 16 moteurs de recherche (globaux et régionaux) sans nécessiter de clés API actives.
self-improving-agent : Prend en charge la persistance de l'apprentissage en enregistrant les expériences directement dans un dossier .learnings/ pour façonner les futurs paramètres d'exécution.
prompt-injection-guard : Classification des messages en temps réel, validation de hachage de mot de passe et détection d'usurpation d'identité.
Vérification : Surveillance via des tours d'agent isolés et liés à la session, des commits Git automatisés et des diffusions périodiques de logs sur Telegram.
Optimisations : Mise en place d'un routage sensible aux coûts, orientant les tâches simples vers les modèles économiques et réservant les modèles de raisonnement premium pour les tâches logiques complexes.
Réflexions
Ce que je ferais différemment : J'explorerais la migration de certaines actions de sondage (polling) vers des intégrations de webhooks afin d'obtenir une latence plus faible sur les entrées (telles que les mises à jour d'e-mails) au lieu de dépendre uniquement d'un sondage planifié.
Succès : Le modèle de répartiteur centralisé s'est avéré extrêmement fiable, isolant les flux de travail spécialisés (prose, récupération, code) dans des environnements de sous-agents dédiés et propres.
Leçons : Les structures de fichiers plats sont exceptionnellement portables et efficaces à moyenne échelle (~200+ notes), mais à mesure que le coffre approchera des 1 000+ notes, l'indexation et la récupération nécessiteront une migration vers une base de données de cache structurée.
Mes Contributions
Architecture système & Déploiement : Configuration et déploiement du runtime Node.js/OpenClaw sur Google Cloud, gestion des configurations d'accès SSH, de la gestion des processus VPS et des liaisons systemd personnalisées.
Ingénierie des compétences (Skills) : Développement à partir de zéro de la bibliothèque d'espace de travail contenant 21 compétences, implémentation des relais d'e-mail iCloud, des scrapers de recherche sans clé, des utilitaires PDF et des bases de données d'injection de mémoire.
Sécurité et intégrité : Conception du sous-système Prompt Injection Guard pour maintenir la sécurité des accès via les points de terminaison publics exposés (bot Telegram, serveurs Discord).
Pipeline d'automatisation : Configuration du planificateur cron de 24 tâches exécutant les sauvegardes quotidiennes, la synchronisation du code et les signaux de vie (health heartbeats).
Architecture du Projet
Le système utilise un modèle de répartiteur centralisé pour acheminer et exécuter les entrées à travers trois couches opérationnelles principales :
Couche
Composants
Rôle & Flux de données
Passerelles d'entrée
Telegram, Discord, WhatsApp, WebChat
Sert d'interface utilisateur, recevant les requêtes et formatant les réponses adaptées au canal.
Routage central
Agent principal Oz (Répartiteur)
Évalue la complexité de la charge utile, détermine la cascade de répartition et gère le cycle de vie des agents exécuteurs (workers).
Pool d'exécution
Plus de 15 sous-agents spécialisés
Exécute des tâches personnalisées de l'espace de travail (récupération, scripting, exécution, sécurité).
Répartiteur principal Oz — Point de décision unique. Évalue la complexity des charges utiles entrantes (simple=0 répartition, complexe=1-2, ultra=5+) et délègue au bon spécialiste. Maintient des limites de profondeur : pas plus de 5 appels d'outils consécutifs sans validation de l'utilisateur.
Triade du Coffre — Trois agents spécialisés gèrent le cycle de vie du coffre Obsidian :
Librarian (Bibliothécaire) — Gère l'index du coffre ainsi que les pipelines de recherche et de récupération. Oz ne fait jamais de grep direct ; Librarian confirme les chemins, puis Oz gère la sortie. Exécute sa propre tâche cron d'archivage quotidien.
Writer (Écrivain) — Spécialisé dans la rédaction de prose, de rapports et de fichiers de documentation. Formé sur Hemingway, Orwell, Strunk & White, King. Gère la grammaire, la sélection du registre et l'application du principe "montrer plutôt que raconter". Produit tout le contenu écrit du coffre.
Keeper (Gardien) — Gère les modèles de métadonnées, la conformité du frontmatter et l'archivage des éléments obsolètes. Exécute une tâche cron de maintenance tous les 3 jours. Impose une structure de coffre hautement évolutive à travers les notes et répertoires.
Moteur Claude-Mem — Se connecte directement à une base SQLite locale (FTS5, gérée par systemd), récupère les embeddings de recherche et injecte l'historique inter-sessions dans les prompts des LLM. Met en cache les requêtes de contexte pendant 60 secondes pour éviter de surcharger le système. Disjoncteur (circuit breaker) : 3 échecs consécutifs = 30 secondes de refroidissement. Les agents exclus (coder, math-solver, front-end-developer, multimedia-specialist) doivent l'interroger manuellement via le point de terminaison curl. Une interface Web privée est disponible pour la navigation manuelle. Notez que ce mécanisme réduit considérablement l'utilisation globale des jetons.
Pool de sous-agents exécuteurs (Workers) (14 spécialistes nommés + Oz) — Tous les agents du réseau ont accès à Claude Code, Gemini CLI et Antigravity, chacun équipé de ses compétences intégrées respectives :
Passerelles de canaux — 4 actives (Telegram : 3 groupes, Discord : 1 serveur filtré par mentions, WhatsApp : DMs ouverts, WebChat), 2 désactivées (Signal, SMS). L'e-mail fonctionne comme une compétence externe (iCloud SMTP), pas comme une passerelle.
Enveloppe de ressources : 4 vCPUs, 15 Go de RAM, 49 Go de disque (rempli à 63 %), Node v22.22.2, Ubuntu 22.04 LTS sur GCP. 24 tâches cron planifiées.
Note d'hébergement & opérationnelle :
Oz est activement hébergé sur Google Cloud Platform et exécuté localement sur un MacBook Air de développement. Le code source sous-jacent et le dépôt restent privés.