Présentation
Prospero est un harness de programmation destiné aux grands modèles de langage (LLM) locaux. Développé en C++ avec une interface Dear ImGui à docking, il se démarque par une consommation de mémoire deux ordres de grandeur inférieure à celle des solutions concurrentes, tout en conservant les fonctionnalités classiques d’un chat‑agent. Le produit ne fournit aucun fournisseur de modèle intégré ; l’utilisateur doit le connecter à llama.cpp, OpenRouter, Anthropic, OpenAI ou tout autre endpoint compatible.
Architecture et gestion des ressources
Le cœur du harness se résume à l’équivalent de curl collé à popen(), évitant ainsi les surcoûts liés aux piles web lourdes. Cette approche minimise l’allocation mémoire, ce qui permet d’exécuter Prospero sur des machines de bureau modestes ou des serveurs headless sans déclencher l’OOM killer du noyau Linux. La version « Professional » embarque des moteurs natifs pour x86/x86‑64 et ARM64 sous macOS, Windows et Linux ; le moteur Windows x86 fonctionne même sur Windows XP et inclut des mini‑jeux comme le solitaire, démontrant la portabilité du binaire.
Prospero adopte un rendu passif : les animations se terminent avant que le système n’entre en mode idle, contrairement aux rendus actifs basés sur le vsync. Cette stratégie réduit la charge GPU lorsque l’agent attend, par exemple, la compilation d’un projet.
# Exemple de configuration Prospero (prospero.ini)
model = falstaff/Qwen3.8-27B
[endpoint falstaff]
url = http://falstaff.local/
key = env:FALSTAFF_API_KEY
[model Qwen3.8-27B]
edit_format = replace
template.reasoning_effort = medium
[web]
search = searxng
url = https://search.example.com/
key = env:EXAMPLE_API_KEY
Mécanismes d’agents et de sous‑agents
Dans Prospero, un agent échange des messages avec le modèle via une interface de chat, puis invoque des outils (lecture/écriture de fichiers, exécution de commandes shell). Les appels d’outil sont traités de façon asynchrone : si une commande dépasse le délai imparti, elle passe en arrière‑plan et l’agent reçoit un statut de timeout, évitant ainsi les blocages. Chaque opération possède une échéance stricte, implémentée par des watchdogs et des boîtes aux lettres de taille bornée. La seule exception est le « Plan mode », où l’agent attend indéfiniment une confirmation utilisateur.
Prospero autorise la création de sous‑agents qui s’exécutent en parallèle ou sur des hôtes distants via SSH ou WSL. Cette capacité permet de déployer une copie headless du harness sur d’autres machines, de façon à ce que les agents puissent travailler sur plusieurs systèmes sans partager le même contexte mémoire. Le modèle vision, lorsqu’il est disponible, peut même contrôler le bureau : cliquer, taper ou faire glisser des éléments d’une interface graphique, ce qui ouvre la voie à l’automatisation de tests UI sans scripts spécifiques.
Implications pour le développement et la sécurité
Le faible empreinte mémoire rend Prospero apte à piloter des campagnes de fuzzing sur des serveurs headless ; le processus du harness ne sera pas tué avant le fuzz target, ce qui augmente le taux de couverture. La configuration via fichier INI, avec la possibilité d’inclure des URLs restreintes, simplifie le versionnage et la diffusion de paramètres, tout en imposant des règles de sécurité contre l’injection de commandes shell. Cependant, la confiance reste nécessaire : les fichiers INI peuvent extraire des variables d’environnement pour des clés API, ce qui implique que le fichier doit être protégé contre les accès non autorisés.
En résumé, Prospero propose une approche minimaliste mais complète pour l’interaction LLM‑outil, combinant une architecture légère, une gestion stricte des délais et une extensibilité multi‑plateforme, tout en offrant des garanties contre les fuites de ressources et les processus orphelins.