gac Kommandozeilen-Nutzung

June 22, 2026 · View on GitHub

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Рус../ | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano

Dieses Dokument beschreibt alle verfügbaren Flags und Optionen für das uvx gac CLI-Werkzeug.

Inhaltsverzeichnis

Grundlegende Nutzung

uvx gac init
# Dann folgen Sie den Aufforderungen, um Ihren Anbieter, Ihr Modell und Ihre API-Schlüssel interaktiv zu konfigurieren
uvx gac

Generiert eine KI-gestützte Commit-Nachricht für gestagete Änderungen und fordert zur Bestätigung auf. Der Bestätigungs-Prompt akzeptiert:

  • y oder yes - Mit dem Commit fortfahren
  • n oder no - Den Commit abbrechen
  • r oder reroll - Die Commit-Nachricht mit demselben Kontext neu generieren
  • e oder edit - Die Commit-Nachricht bearbeiten. Standardmäßig wird eine In-Place-TUI mit vi/emacs-Keybindings geöffnet. Setzen Sie GAC_EDITOR, um stattdessen Ihren bevorzugten Editor zu öffnen (z.B. GAC_EDITOR=code gac für VS Code, GAC_EDITOR=vim gac für vim)
  • Jeder andere Text - Neu generieren mit diesem Text als Feedback (z.B. make it shorter, focus on performance)
  • Leere Eingabe (nur Enter) - Den Prompt erneut anzeigen

Kern-Workflow-Flags

Flag / OptionKurzBeschreibung
--add-all-aAlle Änderungen vor dem Committen stagen
--stage-SDateien interaktiv mit baumbasierter TUI zum Staging auswählen
--group-gGestagete Änderungen in mehrere logische Commits gruppieren
--push-pÄnderungen nach dem Committen auf das Remote pushen
--yes-yAutomatisch den Commit bestätigen ohne Aufforderung
--dry-runZeigen, was passieren würde, ohne Änderungen vorzunehmen
--message-onlyNur die generierte Commit-Nachricht ohne eigentlichen Commit ausgeben
--no-verifyPre-commit und lefthook Hooks beim Committen überspringen
--skip-secret-scanSicherheits-Scan für Geheimnisse in gestageten Änderungen überspringen
--no-verify-sslSSL-Zertifikatüberprüfung überspringen (nützlich für Unternehmensproxys)
--signoffSigned-off-by Zeile zur Commit-Nachricht hinzufügen (DCO-Konformität)
--interactive-iFragen zu Änderungen stellen für bessere Commits

Hinweis: --stage und --add-all schließen sich gegenseitig aus. Verwenden Sie --stage, um interaktiv Dateien zum Staging auszuwählen, und --add-all, um alle Änderungen auf einmal zu stagen.

Hinweis: Kombinieren Sie -a und -g (d.h. -ag) um ALLE Änderungen zuerst zu staggen, dann sie in Commits zu gruppieren.

Hinweis: Bei Verwendung von --group wird das maximale Ausgabe-Token-Limit automatisch basierend auf der Anzahl der Dateien, die committet werden, skaliert (2x für 1-9 Dateien, 3x für 10-19 Dateien, 4x für 20-29 Dateien, 5x für 30+ Dateien). Dies stellt sicher, dass die KI genügend Tokens hat, um alle gruppierten Commits ohne Abschneidung zu generieren, selbst bei großen Änderungssätzen.

Hinweis: --message-only und --group schließen sich gegenseitig aus. Verwenden Sie --message-only, wenn Sie die Commit-Nachricht für externe Verarbeitung benötigen, und --group, wenn Sie mehrere Commits im aktuellen Git-Workflow organisieren möchten.

Hinweis: Das --interactive-Flag liefert zusätzlichen Kontext an die KI, indem es Fragen zu Ihren Änderungen stellt, was zu genaueren und detaillierteren Commit-Nachrichten führt. Dies ist besonders nützlich für komplexe Änderungen oder wenn Sie sicherstellen möchten, dass die Commit-Nachricht den vollen Kontext Ihrer Arbeit erfasst.

Nachrichten-Anpassung

Flag / OptionKurzBeschreibung
--one-liner-oEine einzeilige Commit-Nachricht generieren
--verbose-vDetaillierte Commit-Nachrichten mit Motivation, Architektur & Auswirkungen generieren
--hint <text>-hEinen Hinweis hinzufügen, um die KI zu leiten
--model <model>-mDas zu verwendende Modell für diesen Commit angeben
--language <lang>-lSprache überschreiben (Name oder Code: 'Spanish', 'es', 'zh-CN', 'ja')
--scope-sEinen geeigneten Scope für den Commit herleiten
--50-72Die 50/72-Regel für Commit-Nachrichten-Formatierung erzwingen

Hinweis: Das --50-72 Flag erzwingt die 50/72-Regel, wobei:

  • Betreffzeile: maximal 50 Zeichen
  • Body-Zeilen: maximal 72 Zeichen pro Zeile
  • Dies hält Commit-Nachrichten in git log --oneline und GitHub's UI lesbar

Sie können auch GAC_USE_50_72_RULE=true in Ihrer .gac.env Datei setzen, um diese Regel immer anzuwenden.

Hinweis: Sie können Feedback interaktiv geben, indem Sie es einfach am Bestätigungs-Prompt eingeben - kein Präfix mit 'r' erforderlich. Geben Sie r für ein einfaches Reroll, e zum Bearbeiten der Nachricht (standardmäßig In-Place-TUI, oder $GAC_EDITOR falls gesetzt), oder geben Sie Ihr Feedback direkt ein wie make it shorter.

Ausgabe und Ausführlichkeit

Flag / OptionKurzBeschreibung
--quiet-qAlle außer Fehlern unterdrücken
--log-level <level>Log-Level setzen (debug, info, warning, error)
--show-promptDen KI-Prompt für die Commit-Nachrichtengenerierung ausgeben

Hilfe und Version

Flag / OptionKurzBeschreibung
--versiongac-Version anzeigen und beenden
--helpHilfe-Nachricht anzeigen und beenden

Beispiel-Workflows

  • Alle Änderungen stagen und committen:

    uvx gac -a
    
  • Committen und pushen in einem Schritt:

    uvx gac -ap
    
  • Eine einzeilige Commit-Nachricht generieren:

    uvx gac -o
    
  • Eine detaillierte Commit-Nachricht mit strukturierten Abschnitten generieren:

    uvx gac -v
    
  • Einen Hinweis für die KI hinzufügen:

    uvx gac -h "Refactor authentication logic"
    
  • Scope für den Commit herleiten:

    uvx gac -s
    
  • Gestagete Änderungen in logische Commits gruppieren:

    uvx gac -g
    # Gruppiert nur die Dateien, die Sie bereits gestagt haben
    
  • Alle Änderungen gruppieren (gestagt + ungestagt) und automatisch bestätigen:

    uvx gac -agy
    # Staged alles, gruppiert es und bestätigt automatisch
    
  • Ein bestimmtes Modell nur für diesen Commit verwenden:

    uvx gac -m anthropic:claude-haiku-4-5
    
  • Commit-Nachricht in einer bestimmten Sprache generieren:

    # Sprachcodes verwenden (kürzer)
    uvx gac -l zh-CN
    uvx gac -l ja
    uvx gac -l es
    
    # Vollständige Namen verwenden
    uvx gac -l "Simplified Chinese"
    uvx gac -l Japanese
    uvx gac -l Spanish
    
  • Trockenlauf (sehen, was passieren würde):

    uvx gac --dry-run
    
  • Nur die Commit-Nachricht erhalten (für Skript-Integration):

    uvx gac --message-only
    # Ausgabe: feat: add user authentication system
    
  • Commit-Nachricht im Einzeilenformat erhalten:

    uvx gac --message-only --one-liner
    # Ausgabe: feat: add user authentication system
    
  • Interaktiven Modus für Kontext verwenden:

    uvx gac -i
    # Was ist das Hauptziel dieser Änderungen?
    # Welches Problem lösen Sie?
    # Gibt es Implementierungsdetails, die erwähnt werden sollten?
    
  • Interaktiver Modus mit detaillierter Ausgabe:

    uvx gac -i -v
    # Fragen stellen und detaillierte Commit-Nachrichten generieren
    

Erweitert

  • Kombinieren Sie Flags für leistungsfähigere Workflows (z.B. uvx gac -ayp zum stagen, automatischen Bestätigen und pushen)
  • Verwenden Sie --show-prompt zum Debuggen oder Überprüfen des an die KI gesendeten Prompts
  • Passen Sie die Ausführlichkeit mit --log-level oder --quiet an
  • Verwenden Sie --message-only für Skript-Integration und automatisierte Workflows

Skript-Integration und externe Verarbeitung

Das Flag --message-only ist für Skript-Integration und externe Tool-Workflows gedacht. Es gibt nur die rohe Commit-Nachricht ohne zusätzliche Formatierung, Spinner oder UI-Elemente aus.

Anwendungsfälle:

  • Agent-Integration: KI-Agenten können Commit-Nachrichten abrufen und Commits selbst ausführen
  • Alternative VCS: Generierte Nachrichten mit anderen Versionskontrollsystemen verwenden (Mercurial, Jujutsu usw.)
  • Benutzerdefinierte Commit-Workflows: Nachricht vor dem Commit weiterverarbeiten oder anpassen
  • CI/CD-Pipelines: Commit-Nachrichten für automatisierte Prozesse extrahieren

Beispiel-Skriptverwendung:

#!/bin/bash
# Commit-Nachricht abrufen und mit benutzerdefinierter Commit-Funktion verwenden
MESSAGE=20 20 12 61 79 80 81 98 701 33 100 204 250 395 398 399 400uvx gac --message-only --add-all --yes)
git commit -m "$MESSAGE"
# Python-Integrationsbeispiel
import subprocess


def get_commit_message() -> str:
    result = subprocess.run(
        ["gac", "--message-only", "--yes"],
        capture_output=True,
        text=True,
        check=False,
    )
    return result.stdout.strip()


message = get_commit_message()
print(f"Generated message: {message}")

Wichtige Eigenschaften für Skripte:

  • Saubere Ausgabe ohne Rich-Formatierung oder Spinner
  • Umgeht Bestätigungs-Prompts automatisch
  • Es wird kein tatsächlicher Git-Commit ausgeführt
  • Funktioniert mit --one-liner für vereinfachte Ausgabe
  • Kann mit anderen Flags wie --hint, --model usw. kombiniert werden

Pre-commit und Lefthook Hooks überspringen

Das --no-verify-Flag ermöglicht es Ihnen, alle in Ihrem Projekt konfigurierten pre-commit oder lefthook Hooks zu überspringen:

uvx gac --no-verify  # Alle pre-commit und lefthook Hooks überspringen

Verwenden Sie --no-verify, wenn:

  • Pre-commit oder lefthook Hooks vorübergehend fehlschlagen
  • Bei zeitintensiven Hooks arbeiten
  • Bei Arbeit in Bearbeitung befindlichem Code, der noch nicht allen Prüfungen standhält

Hinweis: Verwenden Sie mit Vorsicht, da diese Hooks Codequalitätsstandards aufrechterhalten.

Sicherheits-Scanning

uvx gac enthält integriertes Sicherheits-Scanning, das automatisch potenzielle Geheimnisse und API-Schlüssel in Ihren gestageten Änderungen erkennt, bevor ein AI-API-Aufruf erfolgt. Wenn ein Geheimnis erkannt wird, wird der Workflow sofort abgebrochen — es erfolgt kein API-Aufruf. Dadurch werden Ihre sensiblen Daten niemals an ein KI-Modell gesendet. Der Scanner verwendet regex-basiertes Pattern-Matching, keine LLMs, sodass das Scannen schnell ist und vollständig lokal ausgeführt wird.

Sicherheits-Scans überspringen:

uvx gac --skip-secret-scan  # Sicherheits-Scan für diesen Commit überspringen

Permanent deaktivieren: Setzen Sie GAC_SKIP_SECRET_SCAN=true in Ihrer .gac.env-Datei.

Wann überspringen:

  • Committen von Beispielcode mit Platzhalter-Schlüsseln
  • Arbeiten mit Test-Fixtures, die Dummy-Anmeldeinformationen enthalten
  • Wenn Sie überprüft haben, dass die Änderungen sicher sind

Hinweis: Der Scanner verwendet regex-basiertes Pattern-Matching (keine LLMs), um gängige Geheimnisformate zu erkennen. Er wird vor jedem AI-API-Aufruf ausgeführt — wenn ein Geheimnis gefunden wird, erfolgt kein API-Aufruf. Überprüfen Sie immer Ihre gestageten Änderungen vor dem Committen.

Binary File Detection

uvx gac includes automatic detection of binary files in staged changes, preventing accidental commits of compiled files, images, and other binary assets that typically should not be in version control. The detector uses multiple strategies:

  • Extension-based detection - Fast recognition of 60+ binary file types
  • Null byte detection - Reliable indicator of binary content
  • UTF-8 validity checking - Text files should be valid UTF-8 or ASCII
  • Magic byte identification - Detects file types from file signatures

Supported binary types:

  • Executables: .exe, .dll, .so, .dylib, .bin, .o, .obj, .lib, .a
  • Archives: .zip, .tar, .gz, .bz2, .7z, .rar, .xz, .zst
  • Images: .png, .jpg, .jpeg, .gif, .bmp, .ico, .svg, .tiff, .webp
  • Media: .mp3, .wav, .ogg, .flac, .m4a, .aac, .mp4, .avi, .mkv, .mov, .wmv
  • Fonts: .ttf, .otf, .woff, .woff2, .eot
  • Documents: .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx
  • Databases: .db, .sqlite, .sqlite3, .mdb, .accdb
  • Compiled code: .class, .jar, .war, .ear, .pyc, .pyd, .pyo, .beam, .hi

When binary files are detected:

uvx gac
# Output:
# BINARY FILE WARNING: Binary files detected!
#
#   • image.png
#     Type: Image file
#     Size: 2.3 MB
#
# Binary files should typically be excluded from version control.
# Use .gitignore to prevent accidental commits of binary files.
#
# Options:
#   [a] Abort commit (recommended)
#   [c] Continue anyway (you know what you are doing)
#   [r] Unstage binary file(s) and continue
#
# Choose an option [a]:

Best practices:

  1. Add binary patterns to .gitignore:

    # Compiled files
    *.exe
    *.dll
    *.so
    *.dylib
    *.o
    *.a
    
    # Images
    *.png
    *.jpg
    *.jpeg
    *.gif
    
    # Archives
    *.zip
    *.tar.gz
    
    # Python
    *.pyc
    __pycache__/
    
  2. Use Git LFS for large binary files that must be tracked:

    git lfs track "*.psd"
    git lfs track "*.zip"
    
  3. Commit binary files only when necessary:

    • Icons and assets that are part of the codebase
    • Test fixtures that need to be versioned
    • Documentation images

Note: Binary detection runs automatically during the commit workflow (similar to secret scanning). There is no flag to disable it, as binary files generally should not be committed unless there is a specific reason. If you need to commit a binary file, choose the "Continue anyway" option or ensure it is properly documented in your project guidelines.

SSL-Zertifikatüberprüfung

Das --no-verify-ssl-Flag ermöglicht es Ihnen, die SSL-Zertifikatüberprüfung für API-Aufrufe zu überspringen:

uvx gac --no-verify-ssl  # SSL-Überprüfung für diesen Commit überspringen

Um permanent einzustellen: Setzen Sie GAC_NO_VERIFY_SSL=true in Ihrer .gac.env-Datei.

Verwenden Sie --no-verify-ssl wenn:

  • Unternehmensproxys SSL-Verkehr abfangen (MITM-Proxys)
  • Entwicklungsumgebungen selbstsignierte Zertifikate verwenden
  • Sie SSL-Zertifikatfehler aufgrund von Netzwerk-Sicherheitseinstellungen erhalten

Hinweis: Verwenden Sie diese Option nur in vertrauenswürdigen Netzwerkumgebungen. Das Deaktivieren der SSL-Überprüfung verringert die Sicherheit und kann Ihre API-Anfragen anfällig für Man-in-the-Middle-Angriffe machen.

Signed-off-by Zeile (DCO-Konformität)

uvx gac unterstützt das Hinzufügen einer Signed-off-by-Zeile zu Commit-Nachrichten, was für die Developer Certificate of Origin (DCO)-Konformität in vielen Open-Source-Projekten erforderlich ist.

Signoff hinzufügen:

uvx gac --signoff  # Signed-off-by Zeile zum Commit hinzufügen

Dauerhaft aktivieren: Setzen Sie GAC_SIGNOFF=true in Ihrer .gac.env-Datei oder fügen Sie signoff=true zu Ihrer Konfiguration hinzu.

Was es macht:

  • Fügt Signed-off-by: Ihr Name <ihre.email@beispiel.com> zur Commit-Nachricht hinzu
  • Verwendet Ihre Git-Konfiguration (user.name und user.email) für die Zeile
  • Erforderlich für Projekte wie Cherry Studio, Linux-Kernel und andere mit DCO

Git-Identität einrichten:

Stellen Sie sicher, dass Ihre Git-Konfiguration den richtigen Namen und die richtige E-Mail hat:

git config --global user.name "Ihr Vollständiger Name"
git config --global user.email "ihre.email@beispiel.com"

Hinweis: Die Signed-off-by-Zeile wird von Git während des Commits hinzugefügt, nicht von der KI während der Nachrichtengenerierung. Sie sehen sie nicht in der Vorschau, aber sie wird im endgültigen Commit sein (prüfen Sie mit git log -1).

Konfigurationshinweise

  • Die empfohlene Methode zur Einrichtung von gac ist, uvx gac init auszuführen und den interaktiven Aufforderungen zu folgen.
  • Bereits konfigurierte Sprache und nur Anbieter oder Modelle wechseln müssen? Führen Sie uvx gac model aus, um die Einrichtung ohne Sprachfragen zu wiederholen.
  • Claude Code verwenden? Siehe die Claude Code-Einrichtungsanleitung für OAuth-Authentifizierungsanweisungen.
  • ChatGPT OAuth verwenden? Siehe die ChatGPT OAuth-Einrichtungsanleitung für browserbasierte Authentifizierungsanweisungen.
  • GitHub Copilot verwenden? Siehe die GitHub Copilot-Einrichtungsanleitung für Device-Flow-Authentifizierungsanweisungen.
  • gac lädt Konfiguration in der folgenden Rangfolge:
    1. CLI-Flags
    2. Projekt-weites .gac.env
    3. Benutzer-weites ~/.gac.env
    4. Umgebungsvariablen

Erweiterte Konfigurationsoptionen

Sie können das Verhalten von gac mit diesen optionalen Umgebungsvariablen anpassen:

  • GAC_EDITOR=code --wait - Überschreibt den Editor, der beim Drücken von e am Bestätigungs-Prompt verwendet wird. Standardmäßig öffnet e eine In-Place-TUI; durch Setzen von GAC_EDITOR wird auf einen externen Editor umgeschaltet. Unterstützt jeden Editorbefehl mit Argumenten. Wait-Flags (--wait/-w) werden für bekannte GUI-Editoren (VS Code, Cursor, Zed, Sublime Text) automatisch eingefügt, sodass der Prozess blockiert, bis Sie die Datei schließen
  • GAC_ALWAYS_INCLUDE_SCOPE=true - Automatisch Scope herleiten und in Commit-Nachrichten einbeziehen (z.B. feat(auth): vs `feat:)
  • GAC_ALWAYS_GROUPED=true - Immer gruppierter Commit-Modus verwenden (entspricht immer die Option -g oder --group angeben)
  • GAC_VERBOSE=true - Detaillierte Commit-Nachrichten mit Motivation, Architektur und Auswirkungs-Abschnitten generieren
  • GAC_USE_50_72_RULE=true - Die 50/72-Regel für Commit-Nachrichten immer erzwingen (Betreff ≤50 Zeichen, Body-Zeilen ≤72 Zeichen)
  • GAC_SIGNOFF=true - Immer Signed-off-by Zeile zu Commits hinzufügen (für DCO-Konformität)
  • GAC_TEMPERATURE=0.7 - KI-Kreativität steuern (0.0-1.0, niedriger = fokussierter)
  • GAC_REASONING_EFFORT=medium - Steuert die Argumentations-/Denktiefe für Modelle, die erweitertes Denken unterstützen (low, medium, high, max). Nicht setzen, um den Standard des jeweiligen Modells zu verwenden. Wird nur an kompatible Anbieter gesendet (OpenAI-Stil; nicht Anthropic).
  • GAC_MAX_OUTPUT_TOKENS=4096 - Maximale Tokens für generierte Nachrichten (automatisch 2-5x skaliert bei Verwendung von --group basierend auf Dateianzahl; überschreiben, um höher oder niedriger zu gehen)
  • GAC_WARNING_LIMIT_TOKENS=4096 - Warnen, wenn Prompts diese Token-Anzahl überschreiten
  • GAC_SYSTEM_PROMPT_PATH=/path/to/custom_prompt.txt - Einen benutzerdefinierten System-Prompt für die Commit-Nachrichtengenerierung verwenden
  • GAC_LANGUAGE=Spanish - Commit-Nachrichten in einer bestimmten Sprache generieren (z.B. Spanish, French, Japanese, German). Unterstützt vollständige Namen oder ISO-Codes (es, fr, ja, de, zh-CN). Verwenden Sie uvx gac language für interaktive Auswahl
  • GAC_TRANSLATE_PREFIXES=true - Konventionelle Commit-Präfixe (feat, fix, etc.) in die Zielsprache übersetzen (Standard: false, behält Präfixe in Englisch)
  • GAC_SKIP_SECRET_SCAN=true - Automatisches Sicherheits-Scanning für Geheimnisse in gestageten Änderungen deaktivieren (mit Vorsicht verwenden)
  • GAC_NO_VERIFY_SSL=true - SSL-Zertifikatüberprüfung für API-Aufrufe überspringen (nützlich für Unternehmensproxys, die SSL-Verkehr abfangen)
  • GAC_DISABLE_STATS=true - Erfassung von Nutzungsstatistiken deaktivieren (keine Lese- oder Schreibzugriffe auf die Statistikdatei; bestehende Daten bleiben erhalten). Nur truthy-Werte deaktivieren Statistiken; die Einstellung auf false/0/no/off hält Statistiken aktiviert, genauso wie das Weglassen der Variable

Siehe .gac.env.example für eine vollständige Konfigurationsvorlage.

Für detaillierte Anleitung zum Erstellen benutzerdefinierter System-Prompts siehe docs/CUSTOM_SYSTEM_PROMPTS.md.

Konfigurations-Unterbefehle

Die folgenden Unterbefehle sind verfügbar:

  • uvx gac init — Interaktiver Einrichtungs-Assistent für Anbieter, Modell und Sprachkonfiguration
  • uvx gac model — Anbieter/Modell/API-Schlüssel-Einrichtung ohne Sprachaufforderungen (ideal für schnelle Wechsel)
  • uvx gac auth — Zeige OAuth-Authentifizierungsstatus für alle Anbieter an
  • uvx gac auth claude-code login — Anmelden zu Claude Code mit OAuth (öffnet Browser)
  • uvx gac auth claude-code logout — Abmelden von Claude Code und gespeichertes Token entfernen
  • uvx gac auth claude-code status — Claude Code-Authentifizierungsstatus prüfen
  • uvx gac auth chatgpt login — Anmelden zu ChatGPT mit OAuth (öffnet Browser)
  • uvx gac auth chatgpt logout — Abmelden von ChatGPT und gespeichertes Token entfernen
  • uvx gac auth chatgpt status — ChatGPT-Authentifizierungsstatus prüfen
  • uvx gac auth copilot login — Login zu GitHub Copilot mit Device Flow
  • uvx gac auth copilot login --host ghe.mycompany.com — Login zu Copilot auf einer GitHub Enterprise-Instanz
  • uvx gac auth copilot logout — Von Copilot abmelden und gespeicherte Tokens entfernen
  • uvx gac auth copilot status — Copilot-Authentifizierungsstatus prüfen
  • uvx gac config show — Aktuelle Konfiguration anzeigen
  • uvx gac config set KEY VALUE — Konfigurationsschlüssel in $HOME/.gac.env setzen
  • uvx gac config get KEY — Konfigurationswert abrufen
  • uvx gac config unset KEY — Konfigurationsschlüssel aus $HOME/.gac.env entfernen
  • uvx gac language (oder uvx gac lang) — Interaktiver Sprachselektor für Commit-Nachrichten (setzt GAC_LANGUAGE)
  • uvx gac editor (oder uvx gac edit) — Interaktiver Editor-Selektor für die e-Taste am Bestätigungsprompt (setzt GAC_EDITOR)
  • uvx gac diff — Gefiltertes git diff mit Optionen für gestufte/ungestufte Änderungen, Farbe und Kürzung anzeigen
  • uvx gac serve — GAC als MCP-Server für KI-Agenten-Integration starten (stdio-Transport)
  • uvx gac stats show — Ihre gac-Nutzungsstatistiken anzeigen (Summen, Streaks, tägliche & wöchentliche Aktivität, Token-Nutzung, Top-Projekte mit Ø Dateien pro Gac, Top-Modelle mit Geschwindigkeit und Latenz)
  • uvx gac stats models — Detaillierte Statistiken für alle Modelle mit Token-Aufschlüsselung, Geschwindigkeit, Latenz und Latenz-pro-Commit-Vergleichsdiagrammen
  • uvx gac stats projects — Statistiken für alle Projekte mit Token-Aufschlüsselung und Ø Dateien pro Gac
  • uvx gac stats recent — Letzte 10 Gacs mit Tokens, Geschwindigkeit, Latenz und Dateien pro Gac (-n 20 für mehr)
  • uvx gac stats reset — Alle Statistiken auf Null zurücksetzen (mit Bestätigungsaufforderung)
  • uvx gac stats reset model <model-id> — Statistiken für ein bestimmtes Modell zurücksetzen (Groß-/Kleinschreibung wird nicht berücksichtigt)

Interaktiver Modus

Das --interactive (-i) Flag verbessert die Commit-Nachrichtengenerierung von gac, indem es gezielte Fragen zu Ihren Änderungen stellt. Dieser zusätzliche Kontext hilft der KI, genauere, detailliertere und kontextbezogene Commit-Nachrichten zu erstellen.

Wie es funktioniert

Wenn Sie --interactive verwenden, stellt gac Fragen wie:

  • Was ist das Hauptziel dieser Änderungen? - Hilft, das übergeordnete Ziel zu verstehen
  • Welches Problem lösen Sie? - Liefert Kontext über die Motivation
  • Gibt es Implementierungsdetails, die erwähnt werden sollten? - Erfasst technische Spezifikationen
  • Gibt es Breaking Changes? - Identifiziert potenzielle Auswirkungsprobleme
  • Ist dies mit einem Issue oder Ticket verbunden? - Verbindet mit dem Projektmanagement

Wann man den interaktiven Modus verwenden sollte

Der interaktive Modus ist besonders nützlich für:

  • Komplexe Änderungen, bei denen der Kontext nicht allein aus dem diff ersichtlich ist
  • Refactoring-Arbeiten, die sich über mehrere Dateien und Konzepte erstrecken
  • Neue Funktionen, die eine Erklärung des übergeordneten Zwecks erfordern
  • Bug-Fixes, bei denen die Ursache nicht sofort sichtbar ist
  • Performance-Optimierungen, bei denen die Logik nicht offensichtlich ist
  • Code Review-Vorbereitung - Fragen helfen Ihnen, über Ihre Änderungen nachzudenken

Nutzungsbeispiele

Grundlegender interaktiver Modus:

uvx gac -i

Dies wird:

  1. Eine Zusammenfassung der gestageten Änderungen anzeigen
  2. Fragen zu den Änderungen stellen
  3. Eine Commit-Nachricht mit Ihren Antworten generieren
  4. Um Bestätigung bitten (oder automatisch bestätigen, wenn mit -y kombiniert)

Interaktiver Modus mit gestageten Änderungen:

uvx gac -ai
# Alle Änderungen stagen, dann Fragen für besseren Kontext stellen

Interaktiver Modus mit spezifischen Hinweisen:

uvx gac -i -h "Datenbankmigration für Benutzerprofile"
# Fragen stellen, während ein spezifischer Hinweis zur Fokussierung der KI bereitgestellt wird

Interaktiver Modus mit detaillierter Ausgabe:

uvx gac -i -v
# Fragen stellen und eine detaillierte, strukturierte Commit-Nachricht generieren

Automatisch bestätigter interaktiver Modus:

uvx gac -i -y
# Fragen stellen, aber den resultierenden Commit automatisch bestätigen

Frage-Antwort-Workflow

Der interaktive Workflow folgt diesem Muster:

  1. Änderungsüberprüfung - gac zeigt eine Zusammenfassung dessen, was Sie committen
  2. Auf Fragen antworten - Beantworten Sie jede Aufforderung mit relevanten Details
  3. Kontextverbesserung - Ihre Antworten werden zum KI-Prompt hinzugefügt
  4. Nachrichtengenerierung - Die KI erstellt eine Commit-Nachricht mit vollem Kontext
  5. Bestätigung - Überprüfen und bestätigen Sie den Commit (oder automatisch mit -y)

Tipps für nützliche Antworten:

  • Kurz aber vollständig - Wichtige Details liefern, ohne übermäßig ausführlich zu sein
  • Auf "warum" konzentrieren - Die Begründung hinter Ihren Änderungen erklären
  • Einschränkungen erwähnen - Einschränkungen oder besondere Überlegungen notieren
  • Mit externem Kontext verlinken - Auf Issues, Dokumentation oder Designdokumente verweisen
  • Leere Antworten sind in Ordnung - Wenn eine Frage nicht zutrifft, einfach Enter drücken

Kombination mit anderen Flags

Der interaktive Modus funktioniert gut mit den meisten anderen Flags:

# Alle Änderungen stagen und Fragen stellen
uvx gac -ai

# Fragen mit detaillierter Ausgabe stellen
uvx gac -i -v

Bewährte Praktiken

  • Für komplexe PRs verwenden - Besonders nützlich für Pull Requests, die detaillierte Erklärungen benötigen
  • Team-Zusammenarbeit - Fragen helfen Ihnen, über Änderungen nachzudenken, die andere überprüfen werden
  • Dokumentationsvorbereitung - Ihre Antworten können die Grundlage für Release Notes bilden
  • Lernwerkzeug - Fragen stärken gute Praktiken für Commit-Nachrichten
  • Bei einfachen Änderungen überspringen - Für trivial Fixes kann der grundlegende Modus schneller sein

Nutzungsstatistiken

uvx gac erfasst leichtgewichtige Nutzungsstatistiken, damit Sie Ihre Commit-Aktivität, Streaks, Token-Nutzung und aktivsten Projekte und Modelle sehen können. Statistiken werden lokal in ~/.gac_stats.json gespeichert und niemals versendet — es gibt keine Telemetrie.

Was erfasst wird: Gesamtzahl der gac-Ausführungen, Gesamtzahl der Commits, Gesamtzahl der Prompt-, Output- und Reasoning-Tokens, erste/letzte Verwendungsdaten, tägliche und wöchentliche Zähler (gacs, Commits, Tokens), aktuelle und längste Streak, Aktivitätszähler pro Projekt (gacs, Commits, Tokens) sowie Aktivitätszähler pro Modell (gacs, Tokens).

Was NICHT erfasst wird: Commit-Nachrichten, Code-Inhalte, Dateipfade, persönliche Informationen oder sonst etwas über Zähler, Daten, Projektnamen (abgeleitet vom Git-Remote/Verzeichnisnamen) und Modellnamen hinaus.

Opt-in oder Opt-out

uvx gac init fragt, ob Sie Statistiken aktivieren möchten, und erklärt genau, was gespeichert wird. Sie können Ihre Meinung jederzeit ändern:

  • Statistiken aktivieren: GAC_DISABLE_STATS entfernen oder auf false/0/no/off/leer setzen.
  • Statistiken deaktivieren: GAC_DISABLE_STATS auf einen truthy-Wert setzen (true, 1, yes, on).

Wenn Sie Statistiken während uvx gac init ablehnen und eine vorhandene ~/.gac_stats.json erkannt wird, wird Ihnen die Möglichkeit angeboten, diese zu löschen.

Statistik-Unterbefehle

BefehlBeschreibung
uvx gac statsIhre Statistiken anzeigen (gleich wie uvx gac stats show)
uvx gac stats showVollständige Statistiken anzeigen: Summen, Streaks, tägliche & wöchentliche Aktivität, Token-Nutzung, Top-Projekte, Top-Modelle
uvx gac stats modelsDetaillierte Statistiken für alle verwendeten Modelle mit Token-Aufschlüsselung, Geschwindigkeit, Latenz und Latenz-pro-Commit-Diagrammen
uvx gac stats projectsStatistiken für alle Projekte mit Token-Aufschlüsselung und Ø Dateien pro Gac
uvx gac stats recentLetzte 10 Gacs (-n 20 für mehr), mit Tokens, Geschwindigkeit, Latenz und Dateien pro Gac
uvx gac stats resetAlle Statistiken auf Null zurücksetzen (mit Bestätigungsaufforderung)
uvx gac stats reset model <model-id>Statistiken für ein bestimmtes Modell zurücksetzen (Groß-/Kleinschreibung wird nicht berücksichtigt)

Beispiele

# Ihre Gesamtstatistiken anzeigen
uvx gac stats

# Detaillierte Aufschlüsselung aller verwendeten Modelle
uvx gac stats models

# Statistiken für alle Projekte
uvx gac stats projects

# Letzte Gac-Verlauf
uvx gac stats recent -n 20

# Alle Statistiken zurücksetzen (mit Bestätigungsaufforderung)
uvx gac stats reset

# Statistiken für ein bestimmtes Modell zurücksetzen
uvx gac stats reset model wafer:deepseek-v4-pro

Was Sie sehen werden

Die Ausführung von uvx gac stats zeigt:

  • Gesamtanzahl gacs und Commits — wie oft Sie gac verwendet haben und wie viele Commits es erstellt hat
  • Aktuelle und längste Streak — aufeinanderfolgende Tage mit gac-Aktivität (🔥 ab 5+ Tagen)
  • Aktivitätszusammenfassung — heutige und diese Woche gacs, Commits und Tokens im Vergleich zu Ihrem Spitzentag und Ihrer Spitzenwoche
  • Top-Projekte — Ihre 5 aktivsten Repos nach gac- + Commit-Anzahl, mit Ø Dateien pro Gac und Token-Nutzung
  • Top-Modelle — Ihre 5 am häufigsten verwendeten Modelle mit Gesamtgeschwindigkeit, Latenz und Token-Nutzung

Die Ausführung von uvx gac stats projects zeigt alle Projekte (nicht nur die Top 5) mit:

  • Alle Projekte-Tabelle — jedes Projekt sortiert nach Aktivität, mit Gac-Anzahl, Commit-Anzahl, Commits-pro-Gac-Verhältnis, Ø Dateien pro Gac, Prompt-Token, Output-Token, Reasoning-Token, Gesamt-Token und Anteil an Gesamt-Gacs
  • Aktivitätsbalkendiagramm — horizontale Balken mit relativer Gac-Anzahl pro Projekt
  • Token-Nutzungsbalkendiagramm — horizontale Balken mit relativem Token-Verbrauch pro Projekt

Die Ausführung von uvx gac stats models zeigt alle Modelle (nicht nur die Top 5) mit:

  • Alle Modelle-Tabelle — jedes verwendete Modell sortiert nach Aktivität, mit Gac-Anzahl, Commit-Anzahl, Gesamtgeschwindigkeit (Tokens/Sek), Gesamtlatenz, Prompt-Token, Output-Token, Reasoning-Token und Gesamt-Token
  • Geschwindigkeitsvergleich (30d)-Diagramm — ein horizontales Balkendiagramm der letzten (30 Tage) Modellgeschwindigkeiten, sortiert von schnellstem zu langsamstem, farbcodiert nach Geschwindigkeitsperzentil (🟡 blitzschnell, 🟢 schnell, 🔵 moderat, 🔘 langsam)
  • Latenzvergleich (30d)-Diagramm — ein horizontales Balkendiagramm der letzten Latenz pro Aufruf, sortiert von kürzester zu längster
  • Latenz-pro-Commit (30d)-Diagramm — ein horizontales Balkendiagramm der letzten Latenz geteilt durch Commit-Anzahl, zeigt die echte Wartezeit pro Commit (ein Modell, das 5 Commits in einem 10s-Gac macht, kostet 2s/Commit vs. eines, das 1 Commit in einem 25s-Gac bei 25s/Commit macht)
  • Highscore-Feiern — 🏆 Trophäen, wenn Sie neue tägliche, wöchentliche, Token- oder Streak-Rekorde aufstellen; 🥈 wenn Sie diese einstellen
  • Ermutigungsnachrichten — kontextbezogene Ermutigungen basierend auf Ihrer Aktivität

Die Ausführung von uvx gac stats recent zeigt Ihre letzten 10 Gacs (konfigurierbar mit -n):

  • Letzte Gacs-Tabelle — jeder Gac mit relativer Zeit, Projekt, Modell, Commit-Anzahl, Dateien, Geschwindigkeit, Latenz und Token-Aufschlüsselung pro Gac

Statistiken deaktivieren

Setzen Sie die Umgebungsvariable GAC_DISABLE_STATS auf einen truthy-Wert:

# Statistikerfassung deaktivieren
export GAC_DISABLE_STATS=true

# Oder in .gac.env
GAC_DISABLE_STATS=true

Falsy-Werte (false, 0, no, off, leer) halten Statistiken aktiviert — genauso wie das Weglassen der Variable.

Wenn deaktiviert, überspringt gac die gesamte Statistikerfassung — es finden keine Lese- oder Schreibzugriffe auf Dateien statt. Bestehende Daten bleiben erhalten, werden jedoch erst aktualisiert, wenn Sie sie wieder aktivieren.


Discord-Webhook-Benachrichtigungen

gac kann einen Discord-Kanal jedes Mal anpingen, wenn du einen Commit landest, unter Verwendung einer Webhook-URL aus den Integrationseinstellungen deines Kanals. Die Integration ist opt-in: Sie tut nichts, bis du explizit eine Webhook-URL konfigurierst.

Einrichtung

Verwende die dedizierte discord-Subcommand-Gruppe:

uvx gac discord setup     # interaktive Konfiguration einer Webhook-URL
uvx gac discord show      # zeigt an, ob ein Webhook konfiguriert ist (URL maskiert)
uvx gac discord test      # sendet eine Testbenachrichtigung an den konfigurierten Webhook
uvx gac discord remove    # entfernt die konfigurierte Webhook-URL

Alternativ kannst du die Variable direkt in $HOME/.gac.env (oder ./.gac.env) setzen:

GAC_DISCORD_WEBHOOK_URL='https://discord.com/api/webhooks/XXXX/YYYY'

Verhalten

  • Feuert nach jedem erfolgreichen Commit (einzelne und gruppierte Workflows). Wird bei --dry-run und --message-only übersprungen.
  • Postet ein Embed im GitHub-Stil mit einem grünen Streifen, Repo + Branch als Autorenzeile, der Commit-Betreff als Titel, der Commit-Body als Beschreibung und der kurze SHA im Footer.
  • Verwendet den gac-Avatar und den Benutzernamen gac.
  • Webhook-Fehler werden auf WARNING geloggt und blockieren niemals deinen Commit.
  • Lass GAC_DISCORD_WEBHOOK_URL ungesetzt (oder leer) um zu deaktivieren. gac init ist davon nicht betroffen — Discord-Einrichtung lebt nur unter gac discord.

Hilfe erhalten