Retour à l'accueil

Agent IA pour les mathématiques sur Mac mini

Est décrite la création d'un laboratoire mathématique autonome sur Mac mini utilisant Wolfram Engine, Qwen Code CLI et Delta Chat. Le système accepte les tâches depuis le messager, génère et exécute le code Wolfram localement, retourne les résultats avec des graphiques et sauvegarde l'historique complet de la session.

Laboratoire mathématique sur Mac mini : IA + Wolfram
Advertisement 728x90

Agent IA pour la recherche mathématique : Wolfram Engine + Qwen Code CLI sur Mac mini

Un laboratoire entièrement autonome dédié à la recherche mathématique a été créé, accessible via une application de messagerie — sans API cloud, sans serveurs externes et sans perte de contrôle sur le code ni les données. Le système s’exécute localement sur un Mac mini, reçoit des tâches depuis Delta Chat, génère des algorithmes en Wolfram Language grâce à Qwen Code CLI, les exécute via Wolfram Engine et renvoie les résultats avec des graphiques directement dans le chat. Il ne s’agit pas d’une interface vers une solution préfabriquée : c’est un environnement de recherche qui capture l’intégralité du processus de pensée, de la formulation du problème jusqu’à la vérification.

Architecture sans services intermédiaires

L’ensemble du pipeline de traitement des messages est mis en œuvre sous forme d’un flux de travail local, sans aucune dépendance vis-à-vis d’API tierces ou de plateformes SaaS. L’avantage clé réside dans le contrôle total sur les prompts d’entrée, le code exécuté et les cycles de vie des données. Il n’y a ni appels cachés au cloud, ni envoi automatique de code vers des services LLM, ni collecte de métriques hors de la machine de l’utilisateur.

Un message provenant de Delta Chat (via IMAP/SMTP) arrive dans le bot Python math_bot.py, qui :

Google AdInline article slot
  • Valide l’expéditeur par rapport à une WHITELIST_EMAIL ;
  • Démarrer une nouvelle session ou reprendre une session existante ;
  • Construit un prompt atomique incluant un préambule système issu de QWEN_PREAMBLE et le contexte des étapes précédentes ;
  • Exécute qwen en mode headless avec les flags --yolo --continue ;
  • Capture stdout au format JSON ;
  • Analyse les fichiers graphiques situés dans /tmp/mrl_graphics/ selon leurs extensions .png, .jpg, .svg, .pdf ;
  • Renvoie le résultat dans le chat tout en sauvegardant l’historique dans sessions/.

Il est important de noter que Qwen Code CLI n’est pas utilisé comme une « boîte noire ». Il est lancé en tant que sous-processus local, et toutes les commandes wolframscript sont exécutées dans un répertoire strictement défini avec des spécifications de chemin explicites. Les graphiques ne sont exportés que dans un dossier temporaire dédié — aucun effet secondaire n’est écrit dans le répertoire personnel ni dans ~/Downloads.

Exigences d’environnement et sécurité d’exécution

Le système est conçu pour macOS 14+, mais il est également compatible avec Linux et Windows grâce à des composants multiplateformes. Les dépendances critiques incluent :

  • Wolfram Engine 14.1+ — la version gratuite du moteur disponible pour un usage personnel. Elle est installée via pkg, ajoutant le binaire wolframscript à PATH. Toutes les calculs se font localement ; aucune expression n’est envoyée vers Wolfram Cloud.
  • Qwen Code CLI v3.5 Plus — une version headless du modèle fonctionnant sur Node.js. Elle ne nécessite pas de clé API. Le modèle est chargé localement, pèse environ 2,1 Go (quantisé GGUF), et est lancé via la CLI qwen avec --model qwen3.5-plus.Q4_K_M.gguf.
  • Delta Chat RPC Server — un binaire natif (deltachat-rpc-server) qui gère la connexion à la boîte mail. Il fonctionne en mode --no-verify-ssl uniquement lorsqu’il est utilisé localement ; le chiffrement PGP via QR code est recommandé pour une protection de bout en bout.

La configuration de sécurité est mise en œuvre à trois niveaux :

Google AdInline article slot
  • Réseau : Delta Chat utilise les ports IMAP/SMTP standard sans redirection de port, VPN ni IP blanchies. Le trafic est chiffré avec TLS 1.3.
  • Processus : Qwen est lancé avec une limite de temps de QWEN_TIMEOUT=600, limitant l’exécution de tâches complexes. Si cette limite est dépassée, le processus est forcé de s’arrêter via subprocess.run(..., timeout=...).
  • Fichier : Tous les graphiques sont sauvegardés exclusivement dans /tmp/mrl_graphics/, et les sessions sont stockées dans PROJECT_DIR/sessions/. Le chemin GRAPHICS_DIR est vérifié pour sa validité absolue et son existence via is_dir() avant utilisation.

Mise en œuvre du cycle de vie des sessions

Le bot prend en charge sept commandes de gestion des sessions, chacune modifiant l’état dans SESSIONS_DIR :

  • /start — crée une nouvelle session avec un UUID unique, initialise session_YYYYMMDD_HHMMSS.md et _assets/.
  • /continue — reprend la dernière session active.
  • /resume <id> — ouvre une session spécifique par ID.
  • /peek — affiche les dernières PEEK_LINES=40 lignes du journal actuel.
  • /archive — déplace une session dans archived/, la retirant de l’index.
  • /close — finalise une session : copie solution.wl dans algorithms/, génère summary.md et vide _assets/.
  • /help — affiche l’aide sans accès aux chemins internes.

Chaque session est un fichier Markdown documentant le dialogue de manière chronologique, chaque étape contenant quatre blocs obligatoires :

  • Algorithme verbal (étapes numérotées) ;
  • Code Wolfram Language (texte exact prêt à être exécuté) ;
  • Résultat réel de wolframscript (stdout/stderr) ;
  • Interprétation du résultat (1–2 phrases).

Cela garantit la reproductibilité : toute étape peut être répétée manuellement via wolframscript -code "...", et tous les graphiques peuvent être régénérés à partir de Export[...].

Google AdInline article slot

Exemple d’interaction fonctionnelle

Un utilisateur envoie le message suivant dans le chat :

Trouvez les points d’intersection entre y = x^2 et y = 2x + 3. Tracez le graphique.

Le bot transmet la requête à Qwen Code CLI avec le préambule :

Utilisez uniquement wolframscript (pas Python). Enregistrez les graphiques dans /tmp/mrl_graphics/. Les labels sur les graphiques doivent être en caractères latins.

Trouvez les points d’intersection entre y = x^2 et y = 2x + 3. Tracez le graphique.

Qwen renvoie une réponse structurée :

  • Algorithme verbal

1. Égalisez les fonctions : x^2 == 2x + 3

2. Réorganisez en forme standard : x^2 - 2x - 3 == 0

3. Résolvez l’équation quadratique

4. Tracez les deux fonctions sur le même graphique

  • Code Wolfram

---wl---

eq = x^2 == 2 x + 3;

solutions = Solve[eq, x];

Plot[{x^2, 2 x + 3}, {x, -3, 5},

Epilog -> {Red, PointSize[Large],

Point[{x, x^2} /. solutions]},

PlotLabel -> "Intersection de y=x^2 et y=2x+3",

AxesLabel -> {"x", "y"}]

Export["/tmp/mrl_graphics/intersection.png", %]

---wl---

  • Résultat de Wolframscript

{{x -> -1}, {x -> 3}}

$Graphics$

  • Interprétation du résultat

Points d’intersection : (-1, 1) et (3, 9). Le graphique est enregistré sous le nom intersection.png.

Le bot extrait le PNG de /tmp/mrl_graphics/, l’envoie dans le chat et ajoute ce bloc au journal de la session.

Ce qui compte

  • L’exécution locale garantit la confidentialité : aucun objet mathématique, formule ou graphique ne quitte jamais la machine de l’utilisateur.
  • Wolfram Engine n’est pas un remplaçant de Python — c’est une calculatrice spécialisée : elle fournit une algèbre symbolique précise, de la visualisation et des méthodes numériques sans avoir besoin d’écrire des solveurs personnalisés.
  • Qwen Code CLI agit comme un générateur de code, pas comme un solveur : le modèle ne produit jamais une « réponse finale » mais seulement du code exécutable et attend le résultat réel de wolframscript.
  • Delta Chat assure un chiffrement de bout en bout sans serveurs : les clés PGP sont échangées via QR code, et les messages sont chiffrés sur l’appareil.
  • La structure algorithms/ crée un référentiel de solutions reproductibles : chaque algorithme comprend description.md, reasoning.md et solution.wl — prêts à être intégrés dans des pipelines CI/CD ou des documents.

Installation et déploiement

Pour déployer, vous devrez :

  • Installer Wolfram Engine depuis le site officiel et exécuter wolframscript --install.
  • Installer Node.js 20+ et exécuter npm install -g qwen-cli.
  • Créer un environnement conda : conda create -n mathbot python=3.12 && conda activate mathbot.
  • Installer les dépendances : pip install -r requirements.txt.
  • Configurer config.py : spécifier WHITELIST_EMAIL, PROJECT_DIR et QWEN_CMD.
  • Effectuer l’initialisation : bash init.sh — cela créera sessions/, algorithms/ et _index.md.
  • Démarrer le bot : python math_bot.py.

Après le démarrage, le bot commence à interroger la boîte mail toutes les 30 secondes. Pour les tests, envoyez simplement /start depuis une adresse e-mail autorisée. Les sessions sont enregistrées en temps réel, et les erreurs sont consignées dans math_bot.log.

— Editorial Team

Advertisement 728x90

Lire ensuite