Documentation technique Assistia

Vue technique de l'application desktop Tauri + React : architecture, flux runtime, interaction entre fichiers, commandes Tauri et points de maintenance.

Mise à jour : 24 juin 2026 Tauri v2 + Rust React + Vite + Zustand Ollama + ComfyUI + Aider

Sommaire

Architecture générale

Interface React

src/app.tsx orchestre la navigation, les pages, les hooks de statut, les installations et les providers de conversation.

Pont Tauri

src/services/tauris.ts centralise les appels invoke vers les commandes Rust exposées par src-tauri/src/main.rs.

Runtime local

Le backend démarre et supervise Ollama sur 127.0.0.1:11434 et ComfyUI sur 127.0.0.1:8188.

Agent développeur

dev_agent.rs installe Aider, valide les paramètres, lance Aider dans le projet cible et construit un diff avant/après.

Vue des couches

Diagramme chargé depuis diagrammes/vue-couches.mmd

Le module openwebui.rs existe encore pour compatibilité et certaines commandes d'installation, mais la navigation principale actuelle utilise le chat intégré plutôt qu'une interface Open WebUI lancée par Assistia.

Schémas techniques

Diagramme de séquence : message de chat

Diagramme chargé depuis diagrammes/sequence-chat.mmd

Diagramme de séquence : génération d'image

Diagramme chargé depuis diagrammes/sequence-generation-image.mmd

Diagramme d'activité : lancement et disponibilité

Diagramme chargé depuis diagrammes/activite-lancement.mmd

Schéma d'interaction entre les fichiers

Diagramme chargé depuis diagrammes/interaction-fichiers.mmd

Flux principaux

Flux Entrée frontend Commandes / modules backend Sortie utilisateur
Chat local ChatPage + ChatContext search_web optionnel, puis send_ollama_chat_message et ollama::send_chat_message Réponse assistant affichée dans le chat, avec sources web si SearXNG a été utilisé.
Téléchargement modèle Ollama ChatModelsSection + useChatModelActions pull_ollama_model, ollama pull Modèle visible dans la liste du chat après rafraîchissement.
Génération image ImageGeneratorPage + workflow JSON queue_comfyui_image_generation, API /prompt et /history Image encodée en data URL puis possibilité d'enregistrement.
Modèles ComfyUI ImageModelsSection download_comfyui_model_files, delete_comfyui_model_files Fichiers présents ou supprimés dans ComfyUI/models.
Agent développeur DeveloperAgentPage + paramètres persistés send_developer_agent_message, aider-chat, snapshot de projet Résumé, stdout/stderr tronqués, statut Git et diff détecté.
Installation InstallationSection + useRuntimeOperations install_all, install_ollama, ensure_comfyui_installed, ensure_developer_agent_installed Composants locaux prêts ou message d'erreur dans les logs.

Frontend React

Fichier Responsabilité
src/main.tsx Point d'entrée React. Monte App dans le DOM.
src/app.tsx Composant racine : langue, navigation, statuts, démarrage automatique, providers de chat et pages actives.
src/i18n.ts et src/i18n/* Contrat et dictionnaires de traduction français/anglais.
src/services/tauris.ts Façade unique pour les commandes Tauri et types partagés avec le frontend.
src/store/launcherStore.ts Store Zustand pour progression, statut runtime et logs.
src/contexts/ChatContext.tsx Historique du chat, modèle sélectionné, brouillon et message assistant en attente.
src/contexts/DeveloperAgentChatContext.tsx Historique et brouillon du chat de l'agent développeur.
src/hooks/useServiceStatus.ts Interroge les statuts toutes les 5 secondes, avec fallback sur Ollama seul.
src/hooks/useRuntimeEvents.ts Écoute launcher-log et launcher-status et alimente Zustand.
src/hooks/useRuntimeOperations.ts Regroupe installation, démarrage Ollama, démarrage ComfyUI, démarrage SearXNG et feedbacks d'action.
src/hooks/useChatModelAvailability.ts et useChatModelActions.ts Liste, télécharge et supprime les modèles Ollama.
src/hooks/useImageGeneratorModelAvailability.ts et useImageGeneratorModelActions.ts Vérifie, télécharge et supprime les fichiers de modèles ComfyUI.
src/hooks/useDeveloperAgentSettings.ts Charge et sauvegarde URL Ollama, dossier projet et modèle de l'agent.
src/hooks/useWebSearchSettings.ts Charge et sauvegarde l'activation de la recherche web, l'URL SearXNG et le nombre de résultats.
src/components/pages/* Pages fonctionnelles : chat, générateur d'image, agent développeur, paramètres et logs.
src/components/settings/* Sous-sections de la page Paramètres : composants, modèles chat, modèles image et agent développeur.
src/utils/* Parsing de progression, traduction des messages runtime et construction des workflows ComfyUI.

Backend Rust / Tauri

Fichier Responsabilité Points clés
src-tauri/src/main.rs Enregistre les commandes Tauri et arrête les services à la fermeture. start_runtime, start_comfyui, start_searxng, send_ollama_chat_message, queue_comfyui_image_generation.
src-tauri/src/common.rs Types partagés, settings JSON, événements Tauri, streaming stdout/stderr et gestion des processus. emit_runtime_log, emit_runtime_status, run_streaming_command, kill_process_tree.
src-tauri/src/ollama.rs Détection Ollama, démarrage ollama serve, liste/pull/delete de modèles et appel HTTP /api/chat. Gère les timeouts, le décodage HTTP chunked et les chemins configurés.
src-tauri/src/comfyui.rs Détection/démarrage ComfyUI, fichiers modèles, requêtes HTTP ComfyUI, lecture et sauvegarde d'images. Protège les chemins relatifs, attend /history jusqu'au retour d'une image.
src-tauri/src/dev_agent.rs Paramètres Aider, environnement local, exécution de l'agent et diff avant/après. Snapshot limité à 5000 fichiers, 4 Mo au total, 512 Ko par fichier.
src-tauri/src/web_search.rs Paramètres de recherche web et interrogation d'une instance SearXNG compatible JSON. Construit /search?q=...&format=json, limite les résultats transmis au modèle et supporte HTTP/HTTPS via curl ou PowerShell.
src-tauri/src/searxng.rs Installation locale, configuration, démarrage et arrêt de SearXNG. Télécharge l'archive officielle, crée un venv Python 3.11, active le format JSON et lance python -m searx.webapp sur 127.0.0.1:8888.
src-tauri/src/installation.rs Installation Ollama, Open WebUI compatibilité, ComfyUI, Aider, SearXNG, uv et Python. ComfyUI utilise Python 3.13 ; Open WebUI, Aider et SearXNG utilisent Python 3.11.
src-tauri/src/python.rs Détection Python 3.11 et uv, construction des commandes d'installation uv. Supporte macOS, Linux et Windows.
src-tauri/src/openwebui.rs Module de compatibilité Open WebUI : chemins, installation gérée, démarrage et arrêt. Encore présent côté backend, non central dans le parcours UI actuel.
src-tauri/src/system.rs Utilitaire système minimal. Retourne la mémoire totale en Mo.

Commandes Tauri exposées

Groupe Commandes
Runtime check_ollama_status, get_services_status, start_runtime, stop_runtime, start_comfyui, start_searxng, stop_comfyui.
Installation start_ollama_installation, start_open_webui_installation, start_comfyui_installation, start_developer_agent_installation, start_searxng_installation, start_full_installation.
Chat et modèles Ollama list_ollama_models, pull_ollama_model, delete_ollama_model, send_ollama_chat_message.
ComfyUI get_comfyui_model_availability, download_comfyui_model_files, delete_comfyui_model_files, queue_comfyui_image_generation, save_comfyui_generated_image.
Agent développeur get_developer_agent_settings, set_developer_agent_settings, send_developer_agent_message.
Recherche web get_web_search_settings, set_web_search_settings, search_web, start_searxng_installation.
Liens externes open_documentation, open_patreon, open_ollama_installation, open_ollama_terms, open_comfyui, open_webui.

État, événements et stockage

État frontend

L'état durable de l'interface est réparti entre les contexts de chat et le store launcherStore. Les hooks gardent les états transitoires d'action.

Événements backend

Les processus longs émettent launcher-log pour les logs et launcher-status pour le message de progression et le pourcentage.

Configuration persistée

common.rs lit et écrit launcher-settings.json dans le dossier applicatif Tauri. Il contient les chemins et paramètres de l'agent.

Données locales

ComfyUI, Open WebUI compatibilité, Aider et SearXNG sont installés sous app_data_dir dans des dossiers gérés par Assistia.

Maintenance

Commandes de développement

npm install
npm run dev
npm run tauri dev
npm run build

Points d'attention

Cette page est volontairement centrée sur les modules actifs de l'application. Les détails bas niveau restent dans le code source, qui fait autorité en cas d'écart.