+170 XP

Gemini Code Assist in der IDE

# Gemini Code Assist in der IDE

Gemini Code Assist bringt Completions, Chat und mehrstufige Agents direkt in VS Code und JetBrains. Das Modell liest also Ihr echtes Projekt und nicht nur das Snippet, das Sie gerade in ein Chatfenster kopiert haben. Dieser eine Unterschied (vollständiger Repository-Kontext gegen einen einsamen Absatz) ist der Grund, warum der IDE-Assistent verändert, wie Sie refactoren, debuggen und ausliefern.

Diese Lektion setzt voraus, dass Sie Context Windows und Agents konzeptionell verstehen. Hier gehen wir in die Tiefe: welche Surfaces Code Assist konkret bietet, wie Sie damit ein echtes Refactoring durchziehen und in welchen Momenten die IDE der Gemini-App überlegen ist.

Was Code Assist tatsächlich ist

Gemini Code Assist ist ein Plugin. Sie installieren es aus dem VS Code Marketplace oder der JetBrains-Plugin-Registry, melden sich mit einem Google-Konto an, und es hängt die auf Code getunten Gemini-Modelle an Ihren Editor. Die offizielle Setup- und Feature-Referenz finden Sie unter cloud.google.com/gemini/docs/codeassist.

Es bietet drei verschiedene Surfaces, und es macht einen Unterschied, in welchem Sie sich befinden:

  • Inline-Completions. Grauer Ghost-Text während des Tippens. Tab zum Annehmen. Das ist lokal, schnell und reagiert auf die Datei, die Sie bearbeiten, plus benachbarte offene Dateien.
  • Chat-Panel. Ein Seitenpanel, in dem Sie Fragen in natürlicher Sprache stellen. Entscheidend: Sie können Dateien und Ordner per @ erwähnen, um sie explizit in den Kontext zu holen.
  • Agent Mode. Sie beschreiben ein Ergebnis („füge Pagination zum Orders-Endpoint hinzu"), und der Agent plant, bearbeitet mehrere Dateien, führt Befehle aus und zeigt Ihnen ein Diff zur Freigabe. Dieses Surface kommt der Gemini CLI am nächsten, lebt aber im Review-Flow Ihres Editors.

Es gibt zwei Tiers. Das kostenlose Code Assist for individuals hat großzügige Limits und reicht für Einzelarbeit. Die Tiers Standard und Enterprise verbinden sich mit Ihrem Google-Cloud-Projekt, ergänzen Admin-Kontrollen, IP-Indemnification und die Möglichkeit, den Assistenten über Code Customization mit Ihrem privaten Code anzupassen (es indexiert Ihre Repos, damit Completions zu Ihren hausinternen Patterns passen). Details zu den Tiers unter cloud.google.com/gemini/docs/codeassist/overview.

Warum die IDE besser ist als Copy-Paste

Wenn Sie eine Funktion in die Gemini-App kopieren, geben Sie dem Modell ein Fragment ohne jede Umgebung. Es sieht nicht den Typ, der zwei Dateien weiter definiert ist, nicht den Test, der das Verhalten festnagelt, und nicht den Helper, den Sie schon geschrieben haben und der die halbe Arbeit erledigt. Also rät es, und Sie verbringen die nächsten zehn Minuten damit, Imports und Signaturen zu korrigieren.

In der IDE löst Code Assist diesen Kontext automatisch auf. Wenn Sie es bitten, eine Funktion zu ändern, sieht es die Aufrufer, die Typen und die Projektstruktur. Das Ergebnis sind weniger halluzinierte Imports und Änderungen, die tatsächlich kompilieren.

Nutzen Sie die IDE, wenn:

  • Die Änderung mehr als eine Datei betrifft oder von Typen abhängt, die anderswo definiert sind.
  • Sie die Änderung als überprüfbares Diff wollen und nicht als eingefügten Prosatext, den Sie von Hand zusammensetzen.
  • Sie wollen, dass der Assistent nach der Änderung die Tests ausführt und auf Fehler reagiert.

Nutzen Sie die Gemini-App oder AI Studio, wenn Sie eine Idee ohne bestehende Codebasis erkunden, ein Wegwerf-Skript entwerfen oder über Architektur nachdenken, bevor es Dateien gibt. Die Stärke der App ist offenes Denken. Die Stärke der IDE ist fundierte Ausführung.

Ein konkretes Refactoring

Hier ein kleines, aber reales Beispiel. Sie haben eine synchrone Python-Funktion, die Nutzer einzeln abruft, und sie ist langsam. Sie wollen sie auf async mit parallelen Abrufen umstellen.

Ausgangscode in services/users.py:

python
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

Schritt 1: Die Anfrage mit Kontext rahmen

Öffnen Sie das Chat-Panel und erwähnen Sie per @ die Datei plus ihren Test:

> Refactore @services/users.py so, dass httpx.AsyncClient verwendet wird und alle Nutzer mit asyncio.gather parallel abgerufen werden. Behalte die gleiche Rückgabeform. Passe @tests/test_users.py entsprechend an. Ändere den öffentlichen Funktionsnamen nicht.

Beachten Sie, was der Prompt leistet. Er benennt die Library, das Concurrency-Primitiv, die Einschränkung zur Rückgabeform und die Einschränkung zum Namen. Code Assist ist gut, aber ein vages „mach das async" lässt es Entscheidungen erfinden, die Sie später zurücknehmen müssen. Legen Sie den Vertrag fest; die Mechanik überlassen Sie dem Modell.

Schritt 2: Das vorgeschlagene Diff prüfen

Agent Mode liefert ein Diff wie dieses:

python
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 results

Hier zahlt sich das Review in der IDE aus. Das Modell hat den Namen behalten, die Rückgabeform behalten und die raise_for_status-Prüfungen hinter gather verschoben. Sie sehen das vollständige Vorher/Nachher im Diff-Viewer und können es Datei für Datei annehmen oder einen Hunk ablehnen und im gleichen Chat-Thread eine Änderung verlangen.

Schritt 3: Lassen Sie es die Tests ausführen

Sagen Sie dem Agent: „Führe die Testsuite aus und behebe alles, was bricht." Er erkennt, dass fetch_users jetzt eine Coroutine ist, findet den Test, der sie synchron aufruft, und ergänzt @pytest.mark.asyncio plus ein await. Weil er den Befehl ausführen und die Fehlerausgabe lesen kann, iteriert er statt zu raten. Diesen Feedback-Loop bekommen Sie in der Chat-App einfach nicht.

Schritt 4: Verifizieren, nicht vertrauen

Code Assist hat eine stille Entscheidung getroffen, die man bemerken sollte: Wenn ein einzelner Request fehlschlägt, wirft asyncio.gather sofort und der ganze Batch stirbt. Der ursprüngliche Code scheiterte ebenfalls beim ersten Fehler, das Verhalten bleibt also erhalten, aber genau solche Details bestätigen Sie im Diff. Der Assistent beschleunigt das Tippen; die Semantik gehört weiter Ihnen.

Completions bewusst steuern

Inline-Completions wirken passiv, aber Sie können sie lenken. Der stärkste Hebel ist der Code, den Sie oberhalb des Cursors schon geschrieben haben. Ein beschreibender Funktionsname und ein klarer Docstring erzeugen dramatisch besseren Ghost-Text als ein nacktes def process():.

Ein praktisches Muster: Schreiben Sie die Signatur und einen einzeiligen Docstring, dann pausieren Sie. Code Assist vervollständigt den kompletten Body oft korrekt, weil die Absicht nun eindeutig ist.

python
def parse_iso_timestamp(value: str) -> datetime:
    """Parse an ISO 8601 string, assuming UTC when no offset is present."""
    # Completion füllt den Body von hier an

Kommentare funktionieren ebenfalls als Inline-Anweisungen. Tippen Sie # convert this list of dicts to a pandas DataFrame and drop null rows in eine eigene Zeile, und die nächste Completion macht meist genau das.

Kontext und Regeln konfigurieren

Code Assist respektiert einige Projektkonventionen, die den Output merklich verbessern. Sie können dem Agent dauerhafte Anweisungen geben, damit Sie sich nicht in jedem Prompt wiederholen. Legen Sie eine Kontextdatei im Root Ihres Repos ab, die die Standards beschreibt, an die sich der Assistent immer halten soll:

yaml
# .gemini/styleguide.md wird von Code Assist für Code Review und Chat gelesen
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.

Mit dieser Datei hätte das Refactoring oben ohne Nachfrage httpx gewählt und Type Hints ergänzt. Dauerhafte Regeln machen aus dem Assistenten statt eines generischen Coders einen, der zu Ihrer Codebasis passt. Prüfen Sie das aktuelle Config-Format in der Doku, da sich Dateiname und Schema weiterentwickeln.

Das Enterprise-Feature Code Customization geht weiter: Es verbindet sich mit Ihren Quell-Repositories, sodass Completions aus Ihren privaten Patterns gezogen werden und nicht nur aus öffentlichen Trainingsdaten. Das ist der Unterschied zwischen „ein korrektes Async-Refactoring" und „ein Async-Refactoring, das den exakten Client-Wrapper und die Error-Types Ihres Teams verwendet".

Wissenscheck

1. Was ist der grundlegende Vorteil von Gemini Code Assist in der IDE gegenüber dem Einfügen eines Snippets in die Gemini-App?

2. Sie wollen ein Ergebnis beschreiben wie „füge Pagination zum Orders-Endpoint hinzu" und möchten, dass der Assistent plant, mehrere Dateien bearbeitet, Befehle ausführt und ein Diff zur Freigabe vorlegt. Welches Surface nutzen Sie?

3. Was beschreibt das Verhalten von Inline-Completions in Code Assist am besten?

MEHRFACHAUSWAHL

4. Wählen Sie ALLE Surfaces, die Gemini Code Assist in der IDE bietet.

Wählen Sie alle richtigen Antworten aus.

MEHRFACHAUSWAHL

5. Wählen Sie ALLE Features, die die Standard-/Enterprise-Tiers vom kostenlosen Code Assist for individuals unterscheiden.

Wählen Sie alle richtigen Antworten aus.

Das Verhältnis zur Gemini CLI und zum größeren Stack

Code Assist und Gemini CLI teilen die gleiche zugrunde liegende Agent-Fähigkeit, passen aber in unterschiedliche Workflows. Die CLI lebt in Ihrem Terminal und glänzt bei skriptbaren, headless oder git-zentrierten Aufgaben („fasse das Diff auf diesem Branch zusammen", „scaffolde einen neuen Service aus dieser Spec"). Code Assist lebt im Editor und glänzt, wenn Sie Code visuell lesen und prüfen, Hunk für Hunk. Viele Engineers nutzen beides: die CLI für terminalgetriebene Automatisierung, das IDE-Plugin für interaktives Editieren.

Beide verbinden sich nach außen über Extensions und das Model Context Protocol (MCP), den offenen Standard, um einem Agent Tools und Datenquellen zu geben. Sie können den Agent von Code Assist an einen MCP-Server hängen, der etwa Ihren Issue-Tracker oder Ihr Datenbankschema abfragt, damit der Agent über lebenden Projektkontext nachdenkt statt zu raten. Das Muster ist dasselbe, das Sie in der Gemini CLI und im Agent Development Kit sehen werden: Tools einmal beschreiben, den Agent sie aufrufen lassen.

Wenn ein Refactoring der IDE entwächst (Sie wollen einen geplanten Job, einen gehosteten Endpoint oder eine Multi-Agent-Pipeline), ist das die Grenze, an der Sie zur Gemini API über AI Studio oder zu Vertex AI wechseln. Die IDE ist zum Bauen des Codes; Vertex AI ist zum Betreiben von Modellen in Produktion. Halten Sie die beiden Rollen im Kopf getrennt, dann greifen Sie schneller zum richtigen Werkzeug.

Ein Workflow, der wirklich skaliert

Der Fehler ist, Code Assist als schnellere Autovervollständigung zu behandeln. Das Muster mit mehr Hebel ist, in Ergebnissen zu arbeiten:

1. Formulieren Sie Ziel und Einschränkungen im Chat, mit per @ erwähnten Dateien.

2. Lassen Sie Agent Mode ein Multi-File-Diff erzeugen.

3. Prüfen Sie jeden Hunk; lehnen Sie Falsches mit einer Folgenachricht ab.

4. Lassen Sie die Tests laufen und bei Fehlern iterieren.

5. Committen Sie selbst, nachdem Sie das Ergebnis gelesen haben.

Schritte 3 und 5 sind nicht verhandelbar. Der Assistent verkürzt die Zeit von der Absicht zu funktionierendem Code, aber die Verantwortung für das, was im Repo landet, bleibt bei Ihnen.

Key Takeaways

  • Greifen Sie zur IDE, wenn Kontext zählt: Multi-File-Änderungen, Typabhängigkeiten und Änderungen, die Sie als überprüfbares Diff wollen. Nutzen Sie die Gemini-App nur für Exploration ohne Codebasis.
  • Legen Sie den Vertrag fest, nicht nur das Ziel. Benennen Sie Library, Einschränkungen und was unverändert bleiben muss. Vage Prompts lassen den Agent Entscheidungen erfinden, die Sie danach zurücknehmen müssen.
  • Lassen Sie den Agent Ihre Tests ausführen. Der Execute-and-Fix-Loop ist der charakteristische Vorteil der IDE gegenüber Copy-Paste in den Chat.
  • Kodieren Sie Ihre Standards einmal in einer Projekt-Kontextdatei (und mit Code Customization in Enterprise), damit Completions zu Ihrem Hausstil passen, ohne dass Sie es jedes Mal prompten.
  • Prüfen Sie Diffs immer Hunk für Hunk und verantworten Sie den Commit. Code Assist beschleunigt das Tippen; für die Semantik bleiben Sie zuständig.