00:00:00L'un des moyens les plus simples de rendre vos agents IA plus puissants est de leur donner
00:00:03accès à bash, mais cela peut s'avérer complexe. Il faut un vrai shell, un système de fichiers,
00:00:09des serveurs, des conteneurs... bref, toute une infrastructure. Du moins, c'était le cas avant.
00:00:13Et s'il existait une méthode plus simple ? Vous pouvez en fait utiliser une implémentation TypeScript
00:00:18de bash. Je sais, ça peut paraître un peu fou, mais croyez-moi, c'est génial
00:00:22et ça pourrait même vous faire économiser de l'argent. Laissez-moi vous montrer comment.
00:00:30Voici un nouveau package appelé “justbash”. On peut lire sur le Readme : “Environnement bash
00:00:34simulé avec un système de fichiers virtuel en mémoire écrit en TypeScript. Ceci est
00:00:38conçu pour les agents IA nécessitant un environnement bash sécurisé et isolé.”
00:00:42Avant de vous montrer comment l'associer à vos agents pour booster leurs capacités,
00:00:45je veux vous présenter un code très simple pour que vous compreniez le principe.
00:00:48Ici, j'initialise un nouvel environnement bash via le package justbash,
00:00:53et nous pouvons y exécuter nos commandes. Nous utilisons env.exec et là, je lance
00:00:57simplement la commande bash “echo hello” pour l'enregistrer dans un fichier nommé
00:01:01greeting.txt. À la ligne suivante, je relance exec dans le même environnement
00:01:06pour lire ce fichier greeting.txt. Et comme vous le voyez, on peut afficher
00:01:10la sortie standard du résultat obtenu, le code de sortie ainsi que les variables
00:01:14d'environnement. En l'exécutant, on constate que le fichier a été écrit puis lu avec succès.
00:01:18On obtient un code de sortie 0 et les variables d'environnement dans notre shell
00:01:22bash simulé. Mais n'oubliez pas le point crucial : comme je l'ai dit, c'est une simulation,
00:01:26c'est littéralement une version de ces commandes bash réécrites en TypeScript.
00:01:30Ce n'est rattaché à aucun vrai shell ; il convertit simplement la commande
00:01:34fournie en TypeScript pour l'exécuter. Ainsi, ce fichier greeting.txt
00:01:39n'existe sur aucun disque physique, c'est un système de fichiers virtuel en mémoire,
00:01:44même s'il est possible d'en connecter un réel. Pour simplifier,
00:01:47il prend la commande bash écrite dans la fonction exec
00:01:51et la transforme en une fonction JavaScript qu'il exécute. Il n'a donc pas
00:01:55besoin de shell réel, et on peut le voir dans le code source ici. Quand j'utilise echo
00:01:59dans exec, cela lance cette fonction JavaScript. On y voit la logique
00:02:03pour analyser les drapeaux (flags) de la commande echo de bash, les traduire en JavaScript,
00:02:08puis simplement afficher le texte qui suit. Et vous pouvez voir
00:02:11plus bas qu'elle renvoie un objet contenant la sortie standard,
00:02:15l'erreur standard et un code de sortie. Si vous doutez de sa capacité
00:02:19à gérer les bases de bash, regardez cette liste des commandes supportées.
00:02:23Il y en a énormément : cat, copy, awk,
00:02:27base64... et même des outils avancés comme jq, Python 3 ou SQLite.
00:02:33Vous pouvez même faire des requêtes réseau avec curl via une whitelist sécurisée.
00:02:36Il y a aussi les fonctionnalités du shell : pipes, redirections, enchaînement de commandes...
00:02:41Bref, tout ce qu'offre un shell bash classique. Le package est donc très complet,
00:02:45mais vous vous demandez sûrement pourquoi utiliser du bash en TypeScript,
00:02:48comment cela aide vos agents et comment cela vous fait économiser.
00:02:53Pour répondre, voici un cas d'usage avec une application de chat très simple.
00:02:57Imaginons que je veuille discuter de ce fichier JSON. Il contient énormément
00:03:02d'enregistrements et je voudrais demander à l'IA d'extraire des infos spécifiques
00:03:06ou d'analyser certains champs. C'est un fichier massif. L'une des méthodes
00:03:11les plus simples, mais clairement la mauvaise, consiste à copier tout le contenu
00:03:15du fichier directement dans le prompt. J'utilise ici l'IA SDK avec GPT-5.2.
00:03:19Si on lance cet agent pour lui demander de récupérer un enregistrement précis,
00:03:24l'assistant répond. C'est correct, car ces grands modèles sont doués
00:03:28pour extraire des valeurs de leur vaste contexte. Le problème,
00:03:33c'est que cela a consommé 133 000 tokens. De plus, le modèle va ramer
00:03:39sur des questions complexes, comme de la manipulation de données sur des plages précises.
00:03:43Comme je l'ai dit, c'est la mauvaise approche. Une autre solution classique
00:03:48serait le RAG ou de donner à l'agent un sandbox pour exécuter des commandes bash
00:03:51et manipuler les données. Mais ces approches demandent beaucoup d'infrastructure.
00:03:56À la place, simulons cela avec justbash. Avec l'IA SDK,
00:04:00on peut utiliser le package bash-tool, basé sur justbash.
00:04:05Cela nous permet, dans notre point de terminaison API du chat, de créer un nouvel outil bash
00:04:09auquel on transmet les fichiers que l'on veut dans notre environnement simulé.
00:04:13Ici, je passe le gros fichier JSON de tout à l'heure.
00:04:17Je définis ensuite la destination de ces fichiers : ils iront dans un répertoire
00:04:21simulé nommé /workspace. Ensuite, dans le flux de notre IA SDK,
00:04:26il suffit de passer l'outil bash. J'ai aussi inclus des instructions
00:04:31pour l'agent, disponibles dans le dossier node_modules. Ce sont des instructions
00:04:34fournies par le package pour aider l'IA à comprendre comment utiliser l'outil bash.
00:04:39Avec cette configuration simple, si on pose la même question à l'assistant
00:04:42pour extraire une info du JSON, au lieu de fouiller dans son propre contexte
00:04:46comme s'il cherchait une aiguille dans une botte de foin, il va
00:04:50exécuter des commandes bash. Encore une fois, c'est dans notre environnement TypeScript simulé.
00:04:54Ici, il a tenté une commande jq qui a échoué. Ensuite,
00:04:58il a lancé une commande head pour voir la structure du fichier,
00:05:02ce qui lui a permis de trouver le bon format jq et de donner la réponse. Alors oui,
00:05:06on obtient le même résultat et c'est peut-être un peu plus lent,
00:05:10mais l'essentiel est là : cela n'a consommé que 6 000 tokens en entrée,
00:05:15contre 133 000 auparavant. C'est une méthode bien plus efficace pour gérer les contextes longs.
00:05:19Et ce n'est pas le seul avantage. Cela devient bien plus puissant
00:05:24quand on pose des questions complexes sur les données. Par exemple,
00:05:28si je demande combien d'enregistrements entre 1 000 et 2 500 ont le champ metadata.active à true,
00:05:33il peut simplement lancer une commande bash et obtenir la réponse instantanément.
00:05:37Avec l'autre version, cela sature le contexte et le modèle risquerait
00:05:41de donner une réponse fausse basée sur des suppositions. Ici, c'est bien plus précis,
00:05:45car c'est comme si l'agent avait un accès complet à un shell bash,
00:05:49même si techniquement ce n'est pas le cas. C'est un ajout de valeur simple et gratuit
00:05:53pour vos agents, sans aucune infrastructure supplémentaire. C'est ce que j'adore.
00:05:57J'espère avoir bien illustré ce cas d'usage, mais croyez-moi,
00:06:01il y en a plein d'autres. On peut utiliser Python, SQL ou curl,
00:06:05et on peut même connecter un vrai système de fichiers si besoin. Dites-moi
00:06:10ce que vous pensez de justbash en commentaire. N'oubliez pas de vous abonner,
00:06:14et comme toujours, on se retrouve dans la prochaine vidéo.
00:06:18and as always see you in the next one