CLI-Anything est un plugin open-source pour les agents de codage IA (principalement Claude Code) qui génère une interface de ligne de commande complète pour tout logiciel disposant d'une base de code. Dirigez-le vers GIMP, Blender, LibreOffice, ou toute autre application, et il analyse le code source et produit une interface de ligne de commande structurée que votre agent IA peut utiliser pour contrôler ce logiciel par programmation.
Le problème : les agents IA ne peuvent pas utiliser les logiciels à interface graphique
La pile logicielle actuelle est divisée en deux mondes qui communiquent à peine.
D'un côté, vous avez les services modernes "API-first" : stockage cloud, processeurs de paiement, fournisseurs de messagerie, plateformes d'analyse. Ceux-ci parlent HTTP. Un agent IA peut les appeler directement sans outil spécial.
De l'autre côté, vous avez les logiciels dont dépendent la plupart des flux de travail professionnels : GIMP pour l'édition d'images, Blender pour le travail en 3D, LibreOffice pour les documents, Audacity pour l'audio. Ceux-ci ont été conçus pour que les humains cliquent. Ils exposent des interfaces graphiques, pas des API structurées.
Lorsque vous essayez de connecter un agent IA à cette deuxième catégorie de logiciels, les options sont limitées. Vous pouvez écrire des wrappers personnalisés à la main, ce qui prend des semaines et se casse lorsque le logiciel est mis à jour. Vous pouvez essayer les outils d'automatisation des processus robotiques (RPA), qui automatisent les interactions GUI via des captures d'écran et des clics de pixels. Mais le RPA est fragile. Il se brise lorsque les agencements de fenêtres changent, lorsque les thèmes sont mis à jour, lorsque la mise à l'échelle de l'affichage se modifie.
CLI-Anything adopte une approche différente : au lieu de simuler un humain cliquant à travers des menus, il analyse le code source du logiciel pour trouver les API sous-jacentes que l'interface graphique appelle déjà. Ensuite, il génère une véritable interface de ligne de commande qui appelle ces API directement.
Votre agent IA n'a pas besoin de "voir" l'écran. Il émet des commandes structurées. Le logiciel fait le travail.
bouton
Ce que fait CLI-Anything
CLI-Anything est un plugin open-source créé par HKUDS (Hong Kong University Data Science Lab). Son créateur, Chao Huang, l'a formulé ainsi dans l'annonce du projet :
"Les logiciels d'aujourd'hui servent les humains. Les utilisateurs de demain seront des agents. CLI-Anything : combler le fossé entre les agents IA et les logiciels du monde. Une ligne de commande pour rendre tout logiciel prêt pour les agents."
Au moment de la rédaction, le projet compte plus de 6 100 étoiles sur GitHub.
Le plugin fonctionne au sein de Claude Code (et expérimentalement dans Codex et OpenCode). Vous le dirigez vers la base de code d'un logiciel et il exécute un pipeline automatisé en 7 phases :
- Analyse - Scanne le code source, mappe les actions GUI aux API sous-jacentes et produit un document de procédure opérationnelle standard spécifique au logiciel.
- Conception - Architecture des groupes de commandes, des modèles d'état et des formats de sortie.
- Implémentation - Construit une interface de ligne de commande Python basée sur Click avec un mode REPL, un support de sortie
--json, et annuler/rétablir. - Planification des tests - Crée un fichier
TEST.mdavec des plans de tests unitaires et de bout en bout. - Écriture des tests - Écrit
test_core.py(tests unitaires avec des données synthétiques) ettest_full_e2e.py(tests de bout en bout avec des fichiers réels). - Documentation - Exécute pytest et ajoute les résultats complets à
TEST.md. - Publication - Crée
setup.py, configure les points d'entrée des scripts de console, installe dans le PATH.
À la fin de la phase 7, vous disposez d'une interface de ligne de commande fonctionnelle installée sur votre système. Votre agent IA peut la découvrir avec which cli-anything-gimp, l'inspecter avec cli-anything-gimp --help, et commencer à émettre des commandes.
Toutes les interfaces de ligne de commande générées suivent une conception cohérente : sortie tabulaire lisible par l'homme par défaut, sortie JSON lisible par machine avec le drapeau --json, état de projet persistant, annuler/rétablir, et un mode REPL interactif. Cette cohérence est importante : votre agent n'a pas besoin d'apprendre une interface différente pour chaque outil.
Installation de CLI-Anything
CLI-Anything est un plugin basé sur Python. Ce n'est pas un package npm. Vous l'installez dans votre agent de codage IA, et les interfaces de ligne de commande générées sont des packages Python installés avec pip install -e ..
Prérequis :
- Python 3.10+
- Le logiciel cible installé sur votre système
- Un agent de codage IA pris en charge (Claude Code est le principal ; Codex et OpenCode sont expérimentaux)
Claude Code (méthode principale)
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
Ceci installe le plugin et rend les commandes slash /cli-anything disponibles dans votre session Claude Code.
OpenCode
Clonez le dépôt, puis copiez les fichiers de commande et HARNESS.md vers ~/.config/opencode/commands/. Ceci ajoute cinq commandes slash : /cli-anything, /cli-anything-refine, /cli-anything-test, /cli-anything-validate, et /cli-anything-list.
Codex
bash CLI-Anything/codex-skill/scripts/install.sh
Qodercli
bash CLI-Anything/qoder-plugin/setup-qodercli.sh
Note pour Windows
Le plugin nécessite Git pour Windows (qui inclut bash et cygpath) ou WSL. Le shell Windows natif n'est pas pris en charge. Si vous voyez cygpath: command not found, installez Git pour Windows et réessayez.
Installation de l'interface de ligne de commande générée
Après que le plugin ait généré une interface de ligne de commande pour votre logiciel, installez-la dans votre PATH :
cd <logiciel>/agent-harness
pip install -e .
Ceci utilise le mode d'installation éditable (-e), ce qui signifie que vos modifications apportées à la source générée persistent sans réinstallation.
Générer votre première interface de ligne de commande
Une fois le plugin installé, la génération se fait en une seule commande. Voici le flux de travail pour GIMP :
Dans Claude Code :
/cli-anything ./gimp
Ou depuis un dépôt GitHub :
/cli-anything https://github.com/blender/blender
Le plugin lance le pipeline en 7 phases. Cela prend quelques minutes selon la taille de la base de code et le nombre de surfaces d'API exposées par le logiciel.
Pendant la phase 1 (Analyse), le plugin lit le code source et construit une carte des actions GUI vers leurs appels API sous-jacents. Pour un éditeur d'images comme GIMP, cela signifie trouver toutes les fonctions qui créent des calques, appliquent des filtres, exportent des fichiers et gèrent des projets. Il produit un document de procédure opérationnelle standard (SOP) spécifique au logiciel (GIMP.md) qui décrit l'ensemble complet des opérations.
Pendant la phase 3 (Implémentation), il construit l'interface de ligne de commande en utilisant le framework Click de Python. Chaque commande prend en charge la sortie --json. Chaque opération avec état (ouvrir un fichier, créer un projet) stocke l'état dans un fichier JSON. L'interface de ligne de commande inclut un REPL interactif avec des invites colorées et un historique persistant.
La structure de répertoire générée ressemble à ceci :
gimp/
agent-harness/
GIMP.md # Document SOP du logiciel
setup.py
cli_anything/ # Package de l'espace de noms (pas de __init__.py - PEP 420)
gimp/
README.md
gimp_cli.py # Point d'entrée principal de l'interface de ligne de commande
core/ # Modules de projet, de session, d'exportation
utils/ # Habillage REPL, utilitaires
tests/
test_core.py
test_full_e2e.py
TEST.md
Toutes les interfaces de ligne de commande générées vivent sous l'espace de noms cli_anything.* (par exemple, cli_anything.gimp). Cela évite les conflits de noms si vous générez des interfaces de ligne de commande pour plusieurs applications.
Utiliser l'interface de ligne de commande générée
Après avoir exécuté pip install -e . dans le répertoire agent-harness, vous disposez d'une nouvelle interface de ligne de commande :
cli-anything-gimp --help
Ceci affiche tous les groupes de commandes disponibles et leurs sous-commandes. La nomenclature est cohérente : chaque outil génère une interface de ligne de commande nommée cli-anything-<logiciel>.
Sortie lisible par l'homme (par défaut)
# Démarrer un nouveau projet
cli-anything-gimp project new --width 1920 --height 1080
# Lister les calques
cli-anything-gimp layer list
# Ajouter un calque
cli-anything-gimp layer add --name "Background" --type solid --color "#ffffff"
# Appliquer un filtre
cli-anything-gimp filter apply --name "gaussian-blur" --radius 3
# Exporter
cli-anything-gimp export save --format png --output ./output.png
Sortie JSON pour les agents IA
Lorsque votre agent IA appelle l'interface de ligne de commande, il utilise --json pour obtenir une sortie lisible par machine :
cli-anything-gimp --json project new --width 1920 --height 1080
# Retourne : {"status": "ok", "project_id": "proj_abc123", "width": 1920, "height": 1080}
cli-anything-gimp --json layer add -n "Background"
# Retourne : {"status": "ok", "layer_id": "layer_001", "name": "Background"}
La sortie JSON est cohérente pour toutes les commandes : status, champs spécifiques à l'opération et détails d'erreur en cas de problème.
Mode REPL interactif
Pour les sessions étendues, lancez le REPL :
cli-anything-gimp
Ceci vous plonge dans un shell interactif avec des invites colorées, la complétion par tabulation et un historique persistant. Utile lorsque vous construisez un flux de travail et que vous voulez essayer des commandes de manière interactive avant de les scripter.
Annuler/rétablir
Les opérations qui modifient l'état prennent en charge une pile d'annulation de 50 niveaux :
cli-anything-gimp undo
cli-anything-gimp redo
Affiner et tester votre interface de ligne de commande
Les interfaces de ligne de commande générées ne sont pas toujours complètes au premier passage. La commande /cli-anything:refine effectue une analyse des lacunes et ajoute les commandes manquantes.
Affinement général
/cli-anything:refine /home/user/gimp
Ceci scanne l'interface de ligne de commande existante par rapport à la surface API du logiciel, identifie les opérations qui ne sont pas couvertes et ajoute de nouvelles commandes pour combler les lacunes.
Affinement ciblé
/cli-anything:refine /home/user/blender "systèmes de particules et simulation physique"
Lorsque vous savez quelle zone nécessite plus de couverture, transmettez une description de la cible. Le plugin cible cette partie de la base de code au lieu de tout ré-analyser.
Exécuter les tests
/cli-anything:test /home/user/gimp
Ceci exécute les suites de tests et met à jour TEST.md avec les résultats. Le projet rapporte plus de 1 508 tests réussis sur 11 applications avec un taux de réussite de 100 %.
Validation
/cli-anything:validate /home/user/gimp
Vérifie le harnais CLI par rapport à la spécification HARNESS.md pour confirmer qu'il répond à toutes les exigences structurelles.
Lister les interfaces de ligne de commande disponibles
/cli-anything:list
/cli-anything:list --json # Sortie lisible par machine
/cli-anything:list --path /home # Rechercher dans un répertoire spécifique
Cas d'utilisation réels
CLI-Anything a été démontré sur 11 applications. Voici comment chaque catégorie se traduit en flux de travail réels.
Pipelines de traitement d'images avec GIMP
Un agent IA peut traiter un lot d'images de produits : redimensionner aux dimensions standard, appliquer un filigrane cohérent, exporter dans plusieurs formats. Chaque étape est une commande CLI structurée. L'agent peut gérer des centaines d'images sans aucune interaction humaine.
cli-anything-gimp project open --file product.jpg
cli-anything-gimp layer add --name "Watermark" --type image --source watermark.png
cli-anything-gimp layer position --name "Watermark" --x 10 --y 10
cli-anything-gimp export save --format webp --output product-final.webp
Génération de documents avec LibreOffice
LibreOffice génère de vrais PDF. Un agent peut créer des factures, des rapports ou des contrats à partir de modèles, remplir des données dynamiques et exporter en PDF, le tout à partir d'un script.
cli-anything-libreoffice document open --template invoice-template.ods
cli-anything-libreoffice cell set --address "B5" --value "Acme Corp"
cli-anything-libreoffice cell set --address "C10" --value "1500.00"
cli-anything-libreoffice export pdf --output invoice-2026-001.pdf
Rendu 3D avec Blender
Les rendus Blender prennent du temps, mais ils sont scriptables. Un agent peut mettre en file d'attente des travaux de rendu, configurer les paramètres de scène et gérer la sortie sans l'interface graphique :
cli-anything-blender scene open --file product-scene.blend
cli-anything-blender render set --samples 256 --output /renders/product
cli-anything-blender render start --format png
Automatisation du streaming avec OBS Studio
OBS est un outil de diffusion. Avec CLI-Anything, vous pouvez scripter les transitions de scène, la gestion des sources et les contrôles d'enregistrement :
cli-anything-obs scene set --name "Main Camera"
cli-anything-obs recording start
cli-anything-obs scene set --name "Screen Share"
cli-anything-obs recording stop --output session.mp4
Intégration CI/CD
Chacun de ces éléments peut s'intégrer dans un pipeline CI/CD. Une action GitHub qui construit un rendu Blender à chaque commit, ou un flux de travail qui génère des notes de version PDF à partir d'un modèle LibreOffice, deviennent tous deux simples.
Construire des flux de travail d'agent avec Apidog
CLI-Anything gère les logiciels locaux. Mais la plupart des flux de travail d'agent en production doivent également appeler des API externes : télécharger l'image traitée vers un CDN, pousser le PDF généré vers un système de gestion de documents, envoyer la vidéo rendue vers une plateforme de révision.
Apidog gère ce côté. C'est un client API gratuit pour tester, documenter et automatiser les appels API REST.
Voici un exemple concret : vous construisez un agent qui traite des images de produits avec GIMP et les télécharge vers une API de stockage cloud. CLI-Anything vous donne les commandes GIMP. Apidog vous permet de tester l'API de stockage avant d'écrire tout code d'application.
Dans Apidog, vous feriez :
- Configurer un environnement avec vos identifiants API stockés comme variables
- Tester le point de terminaison de téléchargement avec un exemple de fichier pour confirmer le format de la requête
- Exécuter des assertions sur la réponse pour vérifier que l'URL du fichier est correctement renvoyée
- Exporter la requête fonctionnelle comme une commande curl ou un extrait de code à insérer dans votre script d'agent
Ceci permet d'économiser le cycle de débogage où vous écrivez du code, l'exécutez, obtenez une erreur cryptique et essayez de comprendre si le problème vient de vos commandes GIMP ou de votre appel API. Vous savez que l'API fonctionne avant de l'intégrer.
Apidog prend également en charge les suites de tests automatisées. Une fois votre flux de travail opérationnel, vous pouvez ajouter des assertions de test qui s'exécutent à chaque exécution pour détecter les régressions.
Limitations à connaître
Le support Windows nécessite Git Bash ou WSL
Les interfaces de ligne de commande générées sont basées sur Python et s'appuient sur la gestion des chemins de style bash. Sous Windows, vous avez besoin de Git pour Windows (qui inclut bash et cygpath) ou de WSL. PowerShell natif n'est pas pris en charge.
Le logiciel cible doit être installé
CLI-Anything n'inclut pas le logiciel qu'il enveloppe. GIMP, Blender, LibreOffice et d'autres outils doivent être installés sur la même machine où vous exécutez l'interface de ligne de commande générée. L'interface de ligne de commande appelle directement les backends de l'application réelle.
Sortie Python uniquement
Toutes les interfaces de ligne de commande générées sont des applications Python Click. Il n'y a pas d'option pour générer des interfaces de ligne de commande dans d'autres langages. Si votre flux de travail nécessite un wrapper CLI Node.js ou Go, vous devrez le construire séparément.
Claude Code est la plateforme stable
Claude Code est l'environnement principal et le plus testé. L'intégration de Codex et OpenCode est marquée comme expérimentale. Les fonctionnalités peuvent fonctionner de manière incohérente en dehors de Claude Code.
La qualité de la génération dépend de la base de code
Le plugin analyse le code source pour trouver les API derrière les actions de l'interface graphique. Si la base de code est mal structurée, fortement obfusquée ou étroitement liée à l'état de l'interface graphique, l'analyse peut manquer des commandes ou générer des wrappers incomplets. L'étape d'affinage aide, mais les logiciels propriétaires complexes peuvent être plus difficiles à envelopper proprement.
bouton
FAQ
CLI-Anything fonctionne-t-il avec n'importe quel logiciel ?
En principe, oui. Il peut générer une interface de ligne de commande pour tout logiciel disposant d'une base de code accessible. En pratique, il fonctionne mieux avec les logiciels open-source où le code source mappe clairement les actions de l'interface graphique aux appels API sous-jacents. Le projet l'a démontré sur GIMP, Blender, Inkscape, Audacity, Kdenlive, Shotcut, OBS Studio, Draw.io, LibreOffice, AnyGen et Zoom.
Le projet est-il gratuit ?
Oui. CLI-Anything est sous licence MIT et entièrement open source sur github.com/HKUDS/CLI-Anything.
Dois-je connaître Python pour l'utiliser ?
Non. Vous n'écrivez pas de Python. Le plugin génère tout le code Python. Vous avez cependant besoin de Python 3.10+ installé sur votre système pour exécuter les interfaces de ligne de commande générées.
Puis-je utiliser l'interface de ligne de commande générée depuis mon propre code, et pas seulement depuis un agent IA ?
Oui. L'interface de ligne de commande générée est un outil en ligne de commande standard. Vous pouvez l'appeler depuis des scripts shell, des Makefiles, du code Python ou tout ce qui peut exécuter un sous-processus.
Qu'est-ce que le fichier HARNESS.md ?
HARNESS.md est le document de spécification qui définit à quoi doit ressembler un harnais généré par CLI-Anything. Il couvre la structure des commandes, les formats de sortie, les exigences de test et le packaging. L'étape de validation vérifie votre interface de ligne de commande générée par rapport à cette spécification.
Puis-je générer des interfaces de ligne de commande pour les outils internes créés par mon entreprise ?
Oui. Dirigez le plugin vers n'importe quelle base de code sur votre système de fichiers, y compris les outils internes privés. Le plugin s'exécute localement et n'envoie votre code source nulle part.
Comment cela se compare-t-il au protocole de contexte de modèle (MCP) ?
Le MCP connecte les agents IA à des services externes via un protocole serveur standardisé. CLI-Anything génère des wrappers CLI locaux pour les applications GUI qui n'ont pas d'API. Ils abordent des problèmes différents. Vous pourriez utiliser les deux : MCP pour les services cloud, CLI-Anything pour les logiciels de bureau.
