+180 XP

Gemini CLI: agentic coding im Terminal

# Gemini CLI: agentic coding im Terminal

Gemini CLI ist Googles Open-Source-Tool für agentic coding, das in Ihrem Terminal läuft: Es liest Ihr Projekt, bearbeitet Dateien und führt Befehle für Sie aus, alles über einen dialogorientierten Prompt. Sie bleiben dort, wo Sie ohnehin arbeiten (in der Shell), und der Agent übernimmt die Schleife aus Dateien durchsuchen, bearbeiten und Tests ausführen.

Diese Lektion führt Sie durch eine echte Session nach dem Muster „behebe diesen Bug und führe die Tests aus“, inklusive Installation. Am Ende wissen Sie, wie Sie das Tool auf ein Repo richten, Änderungen vorschlagen lassen, sie freigeben und mit einem Testlauf verifizieren.

Was Gemini CLI tatsächlich ist

Es ist ein Command-Line-Agent. Sie formulieren eine Anfrage in natürlicher Sprache, und er plant, liest Dateien, schlägt Änderungen vor und führt Shell-Befehle in Ihrem Arbeitsverzeichnis aus. Es ist dieselbe agentische Fähigkeit, die Gemini Code Assist in der IDE antreibt, nur ausgekoppelt in ein Terminal-Tool, das Sie skripten und in Pipes einbinden können.

Drei Dinge machen es für Sie als fortgeschrittenen Nutzer interessant:

  • Umgang mit großem Kontext. Der lange Kontext von Gemini bedeutet, dass der Agent viele Dateien gleichzeitig einbeziehen kann, statt aus einem einzelnen Snippet zu raten. Bei großen Refactorings liest er breit, bevor er handelt.
  • Eingebaute Tools. Er kann Ihre Codebasis durchsuchen (grep), Dateien lesen und schreiben, Shell-Befehle ausführen und Antworten mit Google Search grounden, wenn er aktuelle Informationen braucht.
  • Open Source und erweiterbar. Sie können hineinschauen, es pro Projekt konfigurieren und über das Model Context Protocol (MCP) erweitern, den offenen Standard zur Verbindung von Agenten mit externen Tools und Daten.

Das offizielle Repo und die Docs finden Sie unter github.com/google-gemini/gemini-cli.

Installation

Sie brauchen eine Node.js-Installation (eine aktuelle LTS-Version). Dann installieren Sie die CLI global mit npm:

bash
npm install -g @google/gemini-cli
gemini

Beim ersten Start von gemini werden Sie durch die Authentifizierung geführt. Der einfachste Weg für Einzelpersonen ist die Anmeldung mit dem persönlichen Google-Konto, das einen großzügigen Free Tier für die CLI freischaltet. Wenn Sie höhere Limits brauchen oder gegen ein Projekt abrechnen wollen, können Sie stattdessen einen GEMINI_API_KEY aus Google AI Studio setzen oder sich für den Enterprise-Einsatz gegen Vertex AI authentifizieren.

bash
export GEMINI_API_KEY="your-key-from-aistudio"

Wählen Sie pro Umgebung eine Auth-Methode und bleiben Sie dabei. Persönliches Login und API-Key in derselben Shell zu mischen ist die häufigste Quelle der Verwirrung „warum nutzt es die falsche Quota“.

Die Agent-Schleife: wie ein Turn abläuft

Verstehen Sie vor dem Walkthrough die Schleife, denn Schritte intelligent freizugeben ist hier die eigentliche Fähigkeit.

1. Sie prompten. In einfacher Sprache: „der Date-Parser scheitert an ISO-Strings, behebe das und bring die Tests zum Laufen.“

2. Er sammelt Kontext. Der Agent liest relevante Dateien, sucht oft per grep nach Symbolen und öffnet benachbarte Dateien.

3. Er schlägt eine Aktion vor. Eine Dateiänderung (als Diff dargestellt) oder einen Shell-Befehl (vor der Ausführung angezeigt).

4. Sie geben frei oder lehnen ab. Nichts landet auf der Platte oder wird ausgeführt ohne Ihr Ja, es sei denn, Sie aktivieren Auto-Approval.

5. Er beobachtet das Ergebnis. Testausgaben, Error-Traces und Exit-Codes fließen zurück ein.

6. Er iteriert, bis das Ziel erreicht ist oder er Sie um eine Richtung bittet.

Dieses Beobachten und Iterieren unterscheidet das Ganze von Autocomplete. Ein fehlgeschlagener Test ist keine Sackgasse, sondern der nächste Input.

Walkthrough: einen Bug beheben und die Tests ausführen

Hier eine konkrete Session. Stellen Sie sich ein kleines Python-Projekt mit einem fehlschlagenden Test in einer Date-Utility vor.

Starten Sie die CLI aus dem Projekt-Root, damit sie das richtige Arbeitsverzeichnis hat:

bash
cd ~/projects/invoice-tool
gemini

Jetzt geben Sie die Aufgabe. Seien Sie präzise bei Symptom und Erfolgsbedingung:

> The function parse_due_date in billing/dates.py raises ValueError on
  ISO 8601 strings with a timezone offset. Find the bug, fix it, then
  run the test suite and confirm it passes.

Was Sie der Reihe nach sehen:

Er liest den Code. Der Agent öffnet billing/dates.py und die zugehörige Testdatei. Weil er echten Kontext hat, erfindet er keine Funktionssignaturen, sondern arbeitet gegen das, was tatsächlich da ist.

Er schlägt eine Änderung als Diff vor. Er könnte zum Beispiel feststellen, dass der Code datetime.strptime mit einem festen Format nutzt, und auf datetime.fromisoformat wechseln, das Offsets verarbeitet. Der Diff wird zur Prüfung angezeigt:

diff
- return datetime.strptime(raw, "%Y-%m-%d")
+ return datetime.fromisoformat(raw)

Sie lesen den Diff und tippen y, um ihn anzuwenden. Das ist der Moment, tatsächlich hinzuschauen. Der Agent ist gut, nicht unfehlbar. Ein Diff, der Dateien berührt, die Sie nicht erwartet haben, ist ein Signal, abzulehnen und nachzufragen.

Er schlägt einen Befehl vor. Als Nächstes schlägt er vor, die Tests auszuführen. Er zeigt den exakten Befehl vor der Ausführung:

bash
pytest -q

Geben Sie ihn frei. Der Agent führt pytest aus, erfasst die Ausgabe und liest sie.

Er iteriert, wenn nötig. Nehmen wir an, zwei Tests laufen nun durch, ein dritter scheitert weiter wegen eines Vergleichs zwischen naive und aware datetime. Der Agent sieht den Traceback, schlägt eine Folgeänderung vor (Normalisierung der Zeitzonen-Behandlung), zeigt den Diff und führt die Suite erneut aus. Wenn alles grün ist, fasst er zusammen, was er geändert hat und warum.

Der entscheidende Schritt auf Ihrer Seite: Sie haben die Erfolgsbedingung geliefert („Tests laufen durch“), also hatte der Agent ein objektives Maß, gegen das er iterieren konnte. Vage Ziele erzeugen vage Arbeit. Testbare Ziele erzeugen verifizierbare Arbeit.

Getting started with Gemini CLI

Watch on YouTube

Steuern, was der Agent darf

Jeden Schritt freizugeben ist sicher, aber langsam. Für vertraute, repetitive Arbeit können Sie den Approval-Modus ändern. Innerhalb einer Session können Sie für den aktuellen Turn auf einen Auto-Approve-Modus umschalten, und für vollständig unbeaufsichtigte Läufe gibt es einen YOLO-artigen Modus, der Aktionen automatisch freigibt. Nutzen Sie den nur in Wegwerf-Umgebungen oder Sandboxes, niemals gegen ein Repo mit nicht committeter Arbeit, die Ihnen wichtig ist.

Eine sicherere Angewohnheit: committen, bevor Sie starten. Ein sauberer Git-Zustand bedeutet, dass jede Agent-Änderung ein git diff von der Prüfung und ein git checkout vom Rückgängigmachen entfernt ist.

Projektgedächtnis mit GEMINI.md

Sie können dem Agenten dauerhafte, projektspezifische Anweisungen geben, indem Sie eine Datei GEMINI.md im Repo-Root ablegen. Die CLI liest sie automatisch und behandelt sie als festen Kontext für jede Session. Hier codieren Sie Konventionen, damit Sie sie nicht immer neu eintippen müssen.

markdown
# Project conventions
- Python 3.12. Use `uv` for env management, not pip directly.
- Run tests with `pytest -q`. Lint with `ruff check .`.
- Prefer `datetime.fromisoformat` over manual format strings.
- Never edit files under `migrations/` without asking first.

Jetzt bedeutet „führe die Tests aus“ zuverlässig pytest -q, und der Agent kennt die No-go-Zonen. Betrachten Sie GEMINI.md als das Onboarding-Dokument des Projekts für den Agenten.

Wissenscheck

1. Was beschreibt am besten, was Gemini CLI im Kern ist?

2. Warum ist der Umgang mit großem Kontext bei Gemini CLI für große Refactorings wichtig?

3. Warum rät die Lektion dazu, pro Umgebung eine Authentifizierungsmethode zu wählen und dabei zu bleiben?

MEHRFACHAUSWAHL

4. Wählen Sie ALLE eingebauten Fähigkeiten aus, die die Lektion Gemini CLI zuschreibt.

Wählen Sie alle richtigen Antworten aus.

MEHRFACHAUSWAHL

5. Wählen Sie ALLE Aussagen aus, die korrekt wiedergeben, was Gemini CLI bemerkenswert macht und wie es sich zu Gemini Code Assist verhält.

Wählen Sie alle richtigen Antworten aus.

Die CLI mit Tools und MCP erweitern

Von Haus aus liest der Agent Dateien, führt Befehle aus und groundet mit Google Search. Die echte Stärke für fortgeschrittene Workflows liegt darin, ihn über MCP-Server mit Ihren eigenen Systemen zu verbinden.

Ein MCP-Server stellt dem Agenten Tools (Funktionen) und Daten über ein Standardprotokoll bereit. Verbinden Sie einen für Ihren Issue-Tracker, Ihre Datenbank oder eine interne API, und der Agent kann auch auf diesen Systemen handeln: „suche das fehlerhafte Ticket in unserem Tracker, reproduziere es, behebe es.“

Sie konfigurieren Server in einer Settings-Datei, typischerweise .gemini/settings.json in Ihrem Projekt. Ein minimales Beispiel, das einen lokalen MCP-Server anbindet:

json
{
  "mcpServers": {
    "tickets": {
      "command": "node",
      "args": ["./tools/ticket-mcp-server.js"]
    }
  }
}

Nach der Registrierung kann der Agent die Tools dieses Servers während einer Session entdecken und aufrufen. So kommen Sie von „behebe den Code vor mir“ zu „behebe das, was in unseren Systemen beschrieben ist“. Für den Bau umfangreicherer mehrstufiger Agenten jenseits der CLI ist Googles Agent Development Kit (ADK) das Framework, zu dem man weitergeht; die CLI ist der schnelle, interaktive Einstieg.

Skripten (nicht-interaktiver Modus)

Weil es eine CLI ist, können Sie sie nicht-interaktiv ausführen und ihre Ausgabe in Pipes leiten. Damit ist sie in Skripten und CI-nahem Tooling nutzbar. Übergeben Sie einen Prompt direkt und lassen Sie sie headless laufen:

bash
gemini -p "Summarize the changes in the last commit and flag any
  function that lost test coverage." > review-notes.md

Kombinieren Sie das mit git Hooks oder einem manuellen Schritt vor dem PR, um einen ersten automatisierten Review-Durchgang zu erhalten. Halten Sie diese Prompts eng und read-only, wenn sie unbeaufsichtigt laufen; reservieren Sie Läufe mit Dateiänderungen für interaktive, freigegebene Sessions.

Wann CLI, wann Code Assist

Beide nutzen dieselbe agentische Engine, die Wahl hängt also davon ab, wo Sie arbeiten.

  • Gemini CLI, wenn Sie im Terminal sind: schnelle Fixes, gescriptete Läufe, Server ohne IDE oder Ausgaben, die in andere Tools weitergeleitet werden.
  • Gemini Code Assist, wenn Sie in Ihrem Editor sind (VS Code, JetBrains usw.) und Inline-Diffs, Chat direkt neben dem Code und enge IDE-Integration wollen.

Viele Entwickler nutzen beides am selben Tag. Die CLI ist das Schweizer Taschenmesser, Code Assist die Werkbank. Die nächste Lektion behandelt Code Assist im Detail.

Key Takeaways

  • Installieren mit npm install -g @google/gemini-cli, gemini aus dem Projekt-Root starten und pro Umgebung eine einzige Auth-Methode wählen (persönliches Login, ein API-Key aus AI Studio oder Vertex AI).
  • Geben Sie dem Agenten immer eine testbare Erfolgsbedingung („bring die Tests zum Laufen“), damit er Ergebnisse beobachten und iterieren kann statt zu raten.
  • Committen Sie vor dem Start und prüfen Sie jeden Diff und jeden Befehl vor der Freigabe; Auto-Approve-Modi bleiben Sandboxes vorbehalten.
  • Nutzen Sie eine GEMINI.md-Datei, um Projektkonventionen und No-go-Zonen einmal festzuhalten, damit der Agent keine Erinnerungen mehr braucht.
  • Erweitern Sie die CLI mit MCP-Servern in .gemini/settings.json, damit sie auf Ihren echten Systemen handeln kann, und gehen Sie zum ADK weiter, wenn Sie eigenständige Agenten bauen wollen.