smart_ide/docs/system-architecture.md
2026-03-21 17:43:45 +01:00

6.0 KiB
Raw Blame History

Architecture système — IDE, agents, runtime, mémoire

Répartition physique (première cible)

Pour le premier déploiement, un poste Linux (client) établit des sessions SSH vers un serveur qui concentre :

  • Ollama, AnythingLLM (et extensions du socle IA) ;
  • les dépôts et lexécution des agents / OpenShell sur chemins autorisés.

Léditeur et une partie de lUX peuvent rester sur le client ; le gateway, le policy-runtime et les knowledge-services (fichiers RAG, workspaces AnythingLLM) sont cohérents côté serveur, sauf architecture hybride explicitement documentée. Voir deployment-target.md.

Couches fonctionnelles (vue cible)

Couche Rôle
Agents ia_dev Noyau métier et opératoire (existant) ; sous-agents, recettes, tools
OpenShell Sécurité et exécution : sandboxes, politiques, résolution contrôlée
Éditeur (ex. Lapce) Interaction : texte léger, terminal, palette, timeline, UX intentionnelle
Orchestrateur maison Routage : pas « dintelligence » au sens LLM, mais décision de flux
Ollama Backend dinférence locale
AnythingLLM Mémoire documentaire et RAG ; un workspace par projet (anythingllm-workspaces.md)
ONLYOFFICE Backend documentaire métier (documents, feuilles, présentations)

Flux type : demande utilisateur → orchestrateur → préparation (scripts / tools génériques) → agents → besoin LLM → Ollama ; besoin doc / RAG → AnythingLLM ; besoin bureautique → ONLYOFFICE.

Orchestrateur — décisions de routage

Décider notamment :

  • quelle commande utilisateur appelle quel agent principal ;
  • quel agent appelle quel sous-agent ;
  • quand privilégier un script vs un tool générique vs ia_dev ;
  • quand ia_dev peut escalader vers Ollama ;
  • quand interroger AnythingLLM ;
  • quand passer par ONLYOFFICE ;
  • quand refuser.

Descripteur stable par agent

Chaque agent devrait exposer au minimum : nom, rôle, entrées, sorties, droits, dépendances, scripts appelés, modèles éventuels, préconditions, postconditions, timeouts, coût, niveau de risque.

Un protocole unique couvre les implémentations hétérogènes (script, workflow, wrapper doutil, appel IA).

Hiérarchie agent → sous-agent : à formaliser explicitement pour éviter un graphe implicite ingouvernable.

Événements normalisés (exemples)

started, tool_selected, script_started, model_called, waiting_validation, completed, failed, rolled_back, artifact_created.

Sortie événementielle uniforme vers léditeur ; journalisation ; possibilité de rejouer, diagnostiquer, convertir en recette stable.

Sécurité — OpenShell central

  • Chaque nouvelle résolution devrait pouvoir devenir recipe, tool ou sous-agent stable (travail des commandes UX de haut niveau).
  • Les agents ne devraient pas exécuter directement sur lhôte sans contrôle : sandboxes avec droits dérivés du type dagent et du projet.

Exemples de profils de policy : lecture seule ; lecture + scripts locaux ; écriture bornée ; déploiement pprod / prod ; génération documentaire ; accès tickets ; accès base ; accès ONLYOFFICE.

Pas de fallback implicite non spécifié : refus ou erreur explicite selon les règles du projet.

Couche de normalisation (registre agents)

Registre unifié des agents ia_dev, chacun exposé comme objet standardisé :

  • identité, catégorie, commandes déclenchantes, permissions, environnements compatibles, mode dexécution, outils requis, politiques OpenShell, formats dentrée/sortie, stratégies de rejet (pas de fallback silencieux), journalisation, possibilité dappeler dautres agents.

Sans cette couche, lIDE reste dépendant de conventions implicites du dépôt.

Agent gateway (adaptateur)

Ne pas brancher le dépôt ia_dev directement dans léditeur : passer par une agent gateway qui :

  1. Charge le registre
  2. Valide les permissions
  3. Résout les dépendances
  4. Ouvre la sandbox OpenShell adaptée
  5. Injecte le contexte autorisé
  6. Lance lagent
  7. Capture les événements
  8. Uniformise les sorties
  9. Publie le flux vers léditeur
  10. Journalise
  11. Gère rollbacks et statuts

Modules logiciels (découpage)

Module Responsabilité
editor-shell Éditeur texte léger, terminal, explorer mode expert, onglets, palette de commandes, timeline, UX
agent-gateway Adaptateur uniforme UX ↔ ia_dev
policy-runtime OpenShell, profils de policy, providers, sandboxes, journaux
knowledge-services AnythingLLM, mémoire projet, index documentaire, routage RAG
doc-services ONLYOFFICE, flux present, write, sheet

Les agents restent le noyau opératoire ; les modules encadrent et exposent.

UX — masquage des agents

Lutilisateur ne « choisit pas un agent » dans le flux nominal : il exprime une intention (ask, fix, …). Le routeur sélectionne lagent ou la chaîne dagents.

Socle éditeur : Lapce

Lapce (open source, Rust, rendu natif / GPU) est le candidat retenu pour un éditeur rapide et léger avec agents, au lieu dun IDE historique très chargé. Positionnement aligné avec le rôle « coquille + orchestration + transparence contextuelle » décrit dans ux-navigation-model.md.

Taxonomie des droits

Les droits doivent être nommés, vérifiables et traçables (lien avec OpenShell et le registre dagents). Pas de contournement par défaut.

Mémoire dexécution

Conserver une mémoire dexécution exploitable : rejouer, auditer, promouvoir une exécution réussie en recette versionnée.