Blog Zenika

#CodeTheWorld

Autres

🤖 Gemini dans votre terminal avec Gemini CLI

👉 CLI, Kezako?

Les Command Line Interface (CLI) sont  des outils en ligne de commande qui permettent d’interagir avec une application en saisissant “du texte” formant des commandes. Ils existent depuis le début de l’informatique et sont toujours utilisés au quotidien par les développeurs·euses, SRE/OPS et toute autre personne aimant passer du temps dans les terminaux 😁.

Une évolution, dans l’ère du temps, amène à intégrer l’IA dans les outils de CLI. Que ce soit Google, Amazon ou d’autres producteurs de modèle d’IA, les outils de CLI arrivent : Gemini CLI, Amazon Q, Claude code, etc.

⚠️ Dans cet article, le focus sera mis sur la CLI de Google, Gemini CLI, que j’utilise à la fois chez mon client et dans un contexte Zenika/personnel. Ce tour d’horizon vous permettra de découvrir le fonctionnement de cette CLI ainsi que les fonctionnalités disponibles. 

Je ne ferai pas de comparatif avec les autres solutions du marché, faute de les connaître et de les avoir testé suffisamment. Je vous recommande cependant la conférence de Faye Ellis au DevFest Nantes sur la CLI d’Amazon (voir le replay)..

⚙️Gemini CLI

Gemini CLI est un projet open source publié en juin 2025 conçu pour accroître la productivité des équipes à l’aide de l’IA directement dans votre terminal.

Pour l’installation, vous devez avoir initié ou identifié un projet Google Cloud Platform avec l’API Gemini d’activée. Gemini CLI s’installe ensuite à l’aide de la commande npx https://github.com/google-gemini/gemini-cli ou bien avec brew brew install gemini-cli. Une fois la variable d’environnement GOOGLE_CLOUD_PROJECT configurée, l’ouverture de Gemini se fait simplement avec la commande gemini.

Interface de ligne de commande affichant le titre 'GEMINI' avec des conseils pour commencer, notamment poser des questions, éditer des fichiers ou exécuter des commandes.

🚀 Fonctionnalités offertes par Gemini CLI

La fonctionnalité principale de Gemini CLI est de permettre aux utilisateurs et utilisatrices de solliciter les modèles Gemini depuis le terminal, tout en intégrant des outils capables d’interagir avec leur environnement. 

Ces sollicitations peuvent prendre plusieurs formes : demander des informations sur un sujet, obtenir de l’aide sur la résolution d’une problématique, ou encore générer un contenu spécifique. Dans cet exemple, je lui ai demandé de faire un tableau comparatif entre 2 frameworks Java du moment, Quarkus et Springbot.

Tableau comparatif entre les frameworks Java Quarkus et Spring Boot, soulignant leurs différences en termes de philosophie, de caractéristiques et d'approches de développement.

Ce type de requête, identique à celle que nous ferons sur un moteur de recherche, est possible grâce à un outil que Gemini CLI intègre nativement : GoogleSearch. Cet outil n’est pas seul, je vous détaillerai cette partie par la suite de l’article. 

Il y a quelques mois, lorsque nous utilisions des Large Langage Model (LLM), nous étions limités dans la “fraîcheur” des données. Avec cet outil, les recherches vont permettre d’avoir des résultats à jour. 

Ce biais peut-être vérifié avec deux requêtes simples telles que “donne moi la date du jour” et “dis moi si un ancien président français est en prison et si oui depuis quand” (ce test a été fait le 23/10/2025 et ne me demandez pas pourquoi j’ai eu cette question en tête en premier 🤷) :

Capture d'un terminal affichant la réponse à la commande 'give me the date of the day', indiquant que la date est le jeudi 23 octobre 2025, avec des informations sur l'utilisation de fichiers GEMINI.md et de serveurs MCP.
Capture d'écran de Gemini CLI montrant une requête de recherche Google concernant l'ancien président français Nicolas Sarkozy et son statut d'emprisonnement.

Dans la seconde requête, Gemini CLI nous indique son raisonnement et les outils utilisés pour répondre à nos questions. Dans ma requête spécifique, GoogleSearch est bien appelé, nous donnant une explication et une première justification sur la réponse donnée. 

🗒️ Les commandes

Gemini CLI intègre plusieurs commandes permettant notamment de :  

  • configurer ou modifier son authentification Google, 
  • régler ses préférences et options, 
  • soumettre un bug, 
  • copier le résultat d’une requête dans le presse papier..
Capture d'écran de Gemini CLI affichant des commandes et descriptions pour l'agent de codage GitHub et d'autres fonctionnalités.
/settings command interface displaying various configuration options including 'Vim Mode', 'Enable Prompt Completion', and session management settings.

La commande /init est intéressante. Elle permet de générer un fichier GEMINI.MD à votre projet. 

Ce fichier Markdown (vous l’avez deviné avec son extension .md 🙃) contient le contexte de votre projet. Gemini CLI va parcourir les fichiers de votre projet et rassembler les informations nécessaires pour adapter ses futures réponses de Gemini CLI en fonction de votre contexte. 

Il est également possible de créer vos propres commandes personnalisées. Il suffit de créer un répertoire “commands” soit dans le répertoire .gemini de votre session ou de votre projet concerné par cette commande. 

Le nom du fichier .toml correspond au nom de la commande et doit posséder au minimum une description de prompt pour expliquer son raisonnement.

Par exemple, la commande /translate peut être configurée en ajoutant le fichier translate.toml dans le répertoire .gemini. 

Capture d'écran du fichier 'translate.toml' dans un projet .GEMINI, montrant la configuration d'une commande pour traduire du texte du français vers l'anglais.

Dans Gemini CLI, la commande est disponible et permet d’avoir rapidement une traduction français -> anglais.

Un terminal affichant une commande pour traduire un texte avec une interface de ligne de commande.
/translate command in use, output showing 'Hello world' translation for 'Coucou le monde'.

🤖 Un assistant de code “agentic”

En tant que développeur, j’ai intégré dans mes IDEs du moment, VsCode et Intellij, le plugin Gemini, m’accompagnant dans la rédaction de documentation, l’explication du code et l’aide pour résoudre des problèmes. L’arrivée du monde “agentic” a permis de renforcer la partie “assistant” de code en permettant aux outils de proposer des mises à jour des fichiers dans les projets. Le plugin Gemini dispose depuis plusieurs mois la possibilité d’activer le mode “Agent” : 

Interface utilisateur de Gemini CLI affichant un message de bienvenue personnalisé et des instructions sur les invites à essayer.

Gemini CLI peut être ouvert dans un terminal, comme celui par défaut disponible sur Mac, dans des applications de terminaux comme Ghostty (celle que j’utilise) ou bien directement dans le terminal de votre IDE.

Capture d'écran de l'interface de terminal de l'application Gemini CLI dans Visual Studio Code, affichant des instructions et des conseils pour commencer à l'utiliser.

Gemini CLi, en plus de pouvoir modifier vos fichiers, peut exécuter les commandes disponibles sur votre poste. Par exemple, lors de la demande d’aide de création d’un nouveau projet en Go, Gemini CLI va interagir avec votre environnement, en vérifiant pour commencer si Go est installé sur votre poste. 

Interface en ligne de commande montrant un utilisateur demandant de l'aide pour créer un projet Go, avec une réponse indiquant si Go est installé.
Capture d'écran d'une interface de terminal affichant une commande git et un message demandant la permission d'exécuter la commande.

Une autre commande à connaître, c’est /ide qui permet de connecter Gemini CLI à votre IDE. Les propositions de code s’ouvriront dans votre IDE, ce qui facilite leur relecture.. Dans cet exemple j’ai demandé à Gemini de me générer des tests et la première étape est bien d’ajouter Junit dans mon projet Java 

Capture d'écran d'un éditeur de code montrant des modifications dans un fichier pom.xml, avec des ajouts de dépendances pour JUnit dans une section de 'dépendances'.

Une fois (pour mon exemple) la proposition de Gemini validé, il continue son traitement et me propose de créer une classe de Test pour le code non testé (Oui je sais ce n’est pas bien 😁)

Capture d'écran d'un éditeur de code montrant un fichier Java modifié, avec des lignes de code et des messages de terminal concernant l'écriture de fichiers et des assertions dans les tests.

La sous commande /ide status permet de voir l’état de cet intégration 

Capture d'écran du terminal affichant la commande '/ide status' avec le message indiquant une connexion réussie à VS Code.

🧩 Les extensions

Au-delà des fonctionnalités citées précédemment, Gemini CLI possède son système d’extensions qui permet d’accroître notre productivité.

Une commande /extensions est disponible. Accompagnée des sous-commandes list et update, vous allez pouvoir visualiser les extensions que vous avez et de les mettre à jour.

Capture d'écran montrant la commande '/extensions list' dans un terminal, indiquant les extensions installées : 'code-review (v0.1.0) - active (up to date)' et 'gemini-cli-security (v0.3.0) - active (up to date)'.

Pour le moment, j’ai installé ces deux extensions qui sont très pratiques pour faire une revue et faire un audit de sécurité sur la branche sur laquelle on développe. Il existe déjà une liste très intéressante d’extensions disponible sur ce site : https://geminicli.com/extensions/.

Si la génération d’image est quelque chose que vous faites régulièrement, je vous recommande l’extension nanobanana (modèle de génération d’image de Google).

Interface affichant la page des extensions de Gemini CLI avec la possibilité de rechercher des extensions par nom.

Pour les personnes qui se demanderaient pourquoi je n’ai pas installé cette extension que j’annonce être intéressante, la raison est assez simple, j’utilise ce modèle de génération d’image dans d’autres contextes 😎. 

🙌 MCP

Les MCP (Model Context Protocol) permettent de faciliter les appels à des APIs. Gemini CLI offre la possibilité de configurer les MCP que vous avez développés et/ou ceux déjà disponibles. Et ça c’est vraiment intéressant. Pour ma part, j’ai intégré les MCP GitHub, GitLab et Atlassian chez mon client. Cela fait quelques semaines que j’essaye d’en utiliser régulièrement et cela peut très vite être un gain de temps. Envie de créer une issue GitHub ou GitLab ? Écris le à Gemini CLI et passe rapidement à autre chose. De la même façon, la création d’un ticket Jira se fait en quelques mots dans le terminal, pratique.

Comment cela fonctionne? Gemini CLI gère sa configuration dans le fichier .gemini/settings.json à la racine de votre compte. Ce fichier contient l’ensemble des configurations liées à l’utilisation dans votre IDE, les thèmes graphiques appliqués mais aussi la configuration des MCP.

La configuration du serveur MCP de GItHub se fait avec cette configuration : 

 "github": {
   "httpUrl": "https://api.githubcopilot.com/mcp/", 
   "headers": {
      "Authorization": "Bearer xxxxxx"
   },
  "timeout": 5000    

Côté GitLab, cela peut se faire à l’aide de commande npx. Certains MCP peuvent se configurer avec la modification de ce fichier settings.json, alors que pour d’autres, ils nécessitent de les installer une seule fois sur votre poste, avec de ce que j’ai vu pour la plupart du temps, des commandes npx.

   "GitLab": {
     "command": "npx",
     "args": [
       "mcp-remote",
       "https://gitlab.com/api/v4/mcp",
       "--static-oauth-client-metadata",
       "{\"scope\": \"mcp\"}"
    ]
  }

Une fois configuré, il sera possible de récupérer des informations directement dans Gemini CLI à partir des ressources mises à disposition. Dans cet exemple, je veux récupérer les issues de mon projet. Gemini CLI les affiche de manière brute en json mais termine par un affichage plus lisible.

Capture d'écran du terminal affichant des instructions sur l'utilisation de Gemini CLI pour interagir avec des issues GitHub, incluant des détails sur l'état et les métadonnées des issues.

Concernant ma demande sur les PR ouvertes, Gemini CLi me les (enfin la dans mon exemple) restitue

Capture d'écran montrant les demandes de tirage ouvertes pour le projet zenika-open-source/agent-Z-communication-assistant, avec des détails sur une demande spécifique, y compris le numéro, le corps, la date de création et l'auteur.

📊 Les stats

A la fermeture de Gemini CLI, des statistiques de notre session sont restituées, notamment le nombre d’appels, le pourcentage de succès et les tokens consommés. Ces données sont à tout moment disponibles avec la commande /stats.

Capture d'écran des statistiques de session de Gemini CLI, affichant des informations sur les appels d'outil, le taux de réussite et les performances, avec détails sur l'utilisation des modèles Gemini.

🚀 Un outil du quotidien ?

Clairement oui ! Bien que j’apprécie beaucoup GitLab Duo et leur plateforme agentique (https://dev.to/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47), l’utilisation de Gemini CLI est très appréciable. Mon terminal Ghostty, que je dédie à Gemini CLI, me permet de faire toute les activités qui gravitent autour du développement.

L’intégration des extensions et des MCP est un réel atout pour trouver une information rapidement. Bien sûr, pour des actions plus conséquentes sur GitHub, GitLab ou toute autre application configurable avec MCP, vous serez plus productifs·ves à aller sur l’application en question. Mais pour toute action rapide, l’utilisation des MCP est très intéressante et pertinente. 

Voici quelques articles autour de la CLI et des MCP : 

Auteur/Autrice

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

En savoir plus sur Blog Zenika

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture