Gemini Code Assist dans l'IDE
Gemini Code Assist apporte les complétions, le chat et des agents multi-étapes directement dans VS Code et JetBrains, ce qui signifie que le modèle lit votre projet réel au lieu du snippet que vous avez collé dans une fenêtre de chat. Cette seule différence (le contexte complet du dépôt contre un paragraphe isolé) explique pourquoi l'assistant dans l'IDE change votre façon de refactorer, déboguer et livrer.
Cette leçon suppose que vous mamaUtiliser un logiciel pour automatiser les tâches et campagnes marketing répétitives, afin de personnaliser à grande échelle sur des canaux comme l'email, le web et le social.Voir la définition complète →îtrisez déjà les notions de context windowcontext windowLa context window est la quantité maximale de texte (mesurée en tokens) qu'un modèle de langage peut traiter en une seule fois, prompt d'entrée et sortie générée compris.Voir la définition complète → et d'agents. Ici, on entre dans le détail des surfaces exposées par Code Assist, de la conduite d'un vrai refactor avec lui, et des moments précis où l'IDE vaut mieux que l'app Gemini.
Ce qu'est réellement Code Assist
Gemini Code Assist est un plugin. Vous l'installez depuis le VS Code Marketplace ou le registre de plugins JetBrains, vous vous connectez avec un compte Google, et il rattache les modèles Gemini spécialisés code à votre éditeur. La documentation officielle d'installation et de fonctionnalités est sur cloud.google.com/gemini/docs/codeassist.
Il expose trois surfaces distinctes, et savoir dans laquelle vous êtes compte :
- Complétions inline. Le ghost text gris qui apparaît quand vous tapez. Tab pour accepter. C'est local, rapide, et ça réagit au fichier que vous éditez plus aux fichiers ouverts à proximité.
- Panneau de chat. Un panneau latéral où vous posez des questions en langage naturel. Point clé : vous pouvez mentionner des fichiers et dossiers avec
@pour les injecter explicitement dans le contexte. - Mode agent. Vous décrivez un résultat attendu (« ajouter la pagination à l'endpoint orders ») et l'agent planifie, édite plusieurs fichiers, exécute des commandes et vous présente un diff à valider. C'est la surface la plus proche de Gemini CLI, mais elle vit dans le flux de revue de votre éditeur.
Il y a deux niveaux. Le Code Assist for individuals gratuit offre des limites généreuses et suffit pour du travail en solo. Les niveaux Standard et Enterprise se connectent à votre projet Google Cloud, ajoutent des contrôles admin, l'indemnisation IP, et la possibilité de personnaliser l'assistant avec votre code privé via la code customization (il indexe vos dépôts pour que les complétions collent à vos patterns maison). Les détails des niveaux sont sur cloud.google.com/gemini/docs/codeassist/overview.
Pourquoi l'IDE vaut mieux que le copier-coller
Quand vous collez une fonction dans l'app Gemini, vous donnez au modèle un fragment sans aucun environnement. Il ne voit pas le type défini deux fichiers plus loin, le test qui fige le comportement, ni le helper que vous avez déjà écrit et qui fait la moitié du travail. Alors il devine, et vous passez les dix minutes suivantes à corriger des imports et des signatures.
Dans l'IDE, Code Assist résout ce contexte automatiquement. Quand vous lui demandez de modifier une fonction, il voit les appelants, les types et la structure du projet. Résultat : moins d'imports hallucinés et des éditions qui compilent vraiment.
Utilisez l'IDE quand :
- Le changement touche plus d'un fichier ou dépend de types définis ailleurs.
- Vous voulez l'édition livrée sous forme de diff relisible, pas de prose collée que vous recomposez à la main.
- Vous avez besoin que l'assistant lance les tests après édition et réagisse aux échecs.
Utilisez l'app Gemini ou AI Studio quand vous explorez une idée sans codebase, quand vous rédigez un script jetable, ou quand vous réfléchissez à l'architecture avant qu'un seul fichier n'existe. La force de l'app, c'est la réflexion ouverte. La force de l'IDE, c'est l'exécution ancrée dans le réel.
Un refactor concret
Voici un exemple petit mais réel. Vous avez une fonction Python synchrone qui récupère les utilisateurs un par un, et c'est lent. Vous voulez la convertir en async avec des appels concurrents.
Code de départ dans services/users.py :
import requests
def fetch_users(user_ids):
results = []
for uid in user_ids:
resp = requests.get(f"https://api.example.com/users/{uid}")
resp.raise_for_status()
results.append(resp.json())
return resultsÉtape 1 : cadrer la demande avec du contexte
Ouvrez le panneau de chat et mentionnez avec @ le fichier et son test :
Refactore@services/users.pypour utiliserhttpx.AsyncClientet récupérer tous les utilisateurs en parallèle avecasyncio.gather. Garde la même forme de retour. Mets à jour@tests/test_users.pyen conséquence. Ne change pas le nom de la fonction publique.
Regardez ce que fait ce prompt. Il nomme la librairie, la primitive de concurrence, la contrainte sur la forme de retour et la contrainte sur le nom. Code Assist est bon, mais un vague « rends ça async » le laisse inventer des décisions que vous devrez défaire. Spécifiez le contrat ; laissez le modèle gérer la mécanique.
Étape 2 : relire le diff proposé
Le mode agent renvoie un diff de ce type :
import asyncio
import httpx
async def fetch_users(user_ids):
async with httpx.AsyncClient() as client:
tasks = [client.get(f"https://api.example.com/users/{uid}") for uid in user_ids]
responses = await asyncio.gather(*tasks)
results = []
for resp in responses:
resp.raise_for_status()
results.append(resp.json())
return resultsC'est là que la revue dans l'IDE prend toute sa valeur. Le modèle a gardé le nom, gardé la forme de retour, et déplacé les vérifications raise_for_status après le gather. Vous voyez l'avant/après complet dans le visualiseur de diff et vous acceptez fichier par fichier, ou vous rejetez un hunk et demandez une modification dans le même fil de chat.
Étape 3 : lui faire lancer les tests
Dites à l'agent : « Lance la suite de tests et corrige ce qui casse. » Il détectera que fetch_users est désormais une coroutine, trouvera le test qui l'appelle de façon synchrone, et ajoutera @pytest.mark.asyncio plus un await. Comme il peut exécuter la commande et lire la sortie d'erreur, il itère au lieu de deviner. Cette boucle de feedback, vous ne l'obtiendrez tout simplement pas dans l'app de chat.
Étape 4 : vérifier, ne pas faire confiance
Code Assist a pris une décision silencieuse qui mérite d'être repérée : si une seule requête échoue, asyncio.gather lève immédiatement et tout le batch tombe. Le code original échouait aussi à la première erreur, donc le comportement est préservé, mais c'est exactement le genre de détail que vous confirmez dans le diff. L'assistant accélère la frappe ; la sémantique reste la vôtre.
Piloter les complétions volontairement
Les complétions inline paraissent passives, mais vous pouvez les orienter. Le levier le plus puissant, c'est le code que vous avez déjà écrit au-dessus du curseur. Un nom de fonction descriptif et une docstring claire produisent un ghost text nettement meilleur qu'un simple def process():.
Un pattern efficace : écrivez la signature et une docstring d'une ligne, puis faites une pause. Code Assist complète souvent tout le corps correctement parce que l'intention est désormais sans ambiguïté.
def parse_iso_timestamp(value: str) -> datetime:
"""Parse an ISO 8601 string, assuming UTC when no offset is present."""
# la complétion remplit le corps à partir d'iciLes commentaires fonctionnent aussi comme des instructions inline. Tapez # **convertir cette liste de dicts en DataFrame pandas et supprimer les lignes nulles** sur sa propre ligne et la complétion suivante fera généralement exactement cela.
Get started with Gemini Code Assist in VS Code
Configurer le contexte et les règles
Code Assist respecte quelques conventions de projet qui améliorent sensiblement la sortie. Vous pouvez donner à l'agent des instructions persistantes pour cesser de vous répéter dans chaque prompt. Placez un fichier de contexte à la racine de votre dépôt décrivant les standards que l'assistant doit toujours suivre :
# .gemini/styleguide.md is read by Code Assist for code review and chat
rules:
- Prefer httpx over requests for new HTTP code.
- All public functions require type hints and a docstring.
- Use pytest, never unittest, for new tests.
- Raise domain exceptions from errors.py, not bare Exception.Avec ça en place, le refactor ci-dessus aurait choisi httpx et ajouté les type hints sans que vous le demandiez. Les règles persistantes transforment l'assistant d'un développeur génériqueue en un développeur qui colle à votre codebase. Vérifiez le format de configuration actuel dans la documentation, car le nom de fichier exact et le schéma évoluent.
La fonctionnalité code customization d'Enterprise va plus loin : elle se connecte à vos dépôts sources pour que les complétions s'inspirent de vos patterns privés, pas seulement des données d'entraînement publiques. C'est la différence entre « un refactor async correct » et « un refactor async qui utilise le wrapper client exact de votre équipe et vos types d'erreur ».
Vérification des acquis
1. Quel est l'avantage fondamental d'utiliser Gemini Code Assist dans l'IDE plutôt que de coller un snippet dans l'app Gemini ?
2. Vous voulez décrire un résultat attendu du type « ajouter la pagination à l'endpoint orders » et faire en sorte que l'assistant planifie, édite plusieurs fichiers, exécute des commandes et présente un diff à valider. Quelle surface utiliser ?
3. Qu'est-ce qui décrit le mieux le comportement des complétions inline dans Code Assist ?
4. Sélectionnez TOUTES les surfaces que Gemini Code Assist expose dans l'IDE.
Sélectionnez toutes les réponses correctes.
5. Sélectionnez TOUTES les fonctionnalités qui distinguent les niveaux Standard/Enterprise du Code Assist for individuals gratuit.
Sélectionnez toutes les réponses correctes.
Lien avec Gemini CLI et la stack plus large
Code Assist et Gemini CLI partagent la même capacité d'agent sous-jacente, mais ils s'insèrent dans des workflows différents. Le CLI vit dans votre terminal et brille pour les tâches scriptées, headless ou centrées sur git (« résume le diff de cette branche », « scaffolde un nouveau service à partir de cette spec »). Code Assist vit dans l'éditeur et brille quand vous lisez et relisez du code visuellement, hunk par hunk. Beaucoup d'ingénieurs utilisent les deux : le CLI pour l'automatisation en terminal, le plugin IDE pour l'édition interactive.
Les deux se connectent vers l'extérieur via des extensions et le Model Context ProtocolModel Context ProtocolUn standard ouvert qui permet aux assistants IA de se connecter aux outils et données de l'entreprise de façon cohérente et gouvernée, sans intégration sur mesure à chaque fois.Voir la définition complète → (MCP), le standard ouvert pour donner à un agent des outils et des sources de données. Vous pouvez brancher l'agent de Code Assist sur un serveur MCP qui interroge, par exemple, votre outil de suivi des tickets ou le schéma de votre base, pour que l'agent raisonne sur le contexte projet en direct plutôt que de deviner. Le pattern est le même que celui que vous retrouverez dans Gemini CLI et l'Agent Development Kit : décrivez les outils une fois, laissez l'agent les appeler.
Quand un refactor dépasse le cadre de l'IDE (vous voulez un job planifié, un endpoint hébergé, ou un pipelinepipelineL'ensemble des opportunités commerciales actives réparties selon les étapes du processus de vente, avec leur valeur potentielle cumulée et leur probabilité de conclusion.Voir la définition complète → multi-agents), c'est la frontière où vous passez à l'APIAPIApplication Programming Interface : une interface standardisée qui permet aux applications de communiquer et d'échanger des données sans connaître leur fonctionnement interne respectif.Voir la définition complète → Gemini via AI Studio ou à Vertex AI. L'IDE sert à construire le code ; Vertex AI sert à faire tourner les modèles en production. Gardez ces deux rôles distincts dans votre tête et vous choisirez le bon outil plus vite.
Un workflow qui passe à l'échelle
L'erreur est de traiter Code Assist comme un autocomplete plus rapide. Le pattern à plus fort levier consiste à travailler par résultats attendus :
- Énoncez l'objectif et les contraintes dans le chat, avec les fichiers mentionnés en
@. - Laissez le mode agent produire un diff multi-fichiers.
- Relisez chaque hunk ; rejetez ce qui est faux avec un message de suivi.
- Faites-lui lancer les tests et itérer sur les échecs.
- Committez vous-même, après avoir lu le résultat.
Les étapes 3 et 5 ne sont pas négociables. L'assistant comprime le temps entre l'intention et le code qui marche, mais la responsabilité de ce qui atterrit dans le dépôt reste la vôtre.
Points clés
- Passez à l'IDE quand le contexte compte : changements multi-fichiers, dépendances de types, et éditions que vous voulez livrées en diff relisible. Réservez l'app Gemini à l'exploration sans codebase.
- Spécifiez le contrat, pas seulement l'objectif. Nommez la librairie, les contraintes, et ce qui ne doit pas changer. Les prompts vagues poussent l'agent à inventer des décisions que vous devrez défaire.
- Laissez l'agent lancer vos tests. La boucle exécuter-corriger est l'avantage signature de l'IDE sur le copier-coller dans un chat.
- Encodez vos standards une fois dans un fichier de contexte projet (et via la code customization en Enterprise) pour que les complétions collent à votre style maison sans promptingpromptingLe prompt engineering consiste à concevoir et affiner des instructions textuelles pour guider les grands modèles de langage vers des réponses justes, pertinentes et fiables.Voir la définition complète → répété.
- Relisez toujours les diffs hunk par hunk et assumez le commit. Code Assist accélère la frappe ; vous restez responsable de la sémantique.