Utilisation en ligne de commande de gac

June 22, 2026 · View on GitHub

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

Ce document décrit tous les drapeaux et options disponibles pour l'outil CLI uvx gac.

Table des matières

Utilisation de base

uvx gac init
# Suivez ensuite les invites pour configurer votre fournisseur, modèle et clés API de manière interactive
uvx gac

Génère un message de commit alimenté par l'IA pour les changements indexés et demande confirmation. L'invite de confirmation accepte :

  • y ou yes - Procéder au commit
  • n ou no - Annuler le commit
  • r ou reroll - Régénérer le message de commit avec le même contexte
  • e ou edit - Éditer le message de commit. Par défaut, ouvre une TUI intégrée avec les bindings vi/emacs. Définissez GAC_EDITOR pour ouvrir votre éditeur préféré à la place (ex., GAC_EDITOR=code gac pour VS Code, GAC_EDITOR=vim gac pour vim)
  • Tout autre texte - Régénérer avec ce texte comme feedback (ex: "rends-le plus court", "concentre-toi sur les performances")
  • Entrée vide (juste Entrée) - Afficher l'invite à nouveau

Drapeaux de workflow principaux

Drapeau / OptionCourtDescription
--add-all-aIndexer tous les changements avant le commit
--stage-SSélectionner interactivement les fichiers à indexer avec une TUI arborescente
--group-gGrouper les changements indexés en multiples commits logiques
--push-pPousser les changements vers le distant après le commit
--yes-yConfirmer automatiquement le commit sans demande
--dry-runMontrer ce qui se passerait sans faire de changements
--message-onlyAfficher uniquement le message de commit généré sans effectuer le commit
--no-verifySauter les hooks pre-commit et lefthook lors du commit
--skip-secret-scanSauter l'analyse de sécurité pour les secrets dans les changements indexés
--no-verify-sslSauter la vérification des certificats SSL (utile pour les proxies d'entreprise)
--signoffAjouter une ligne Signed-off-by au message de commit (conformité DCO)
--interactive-iPoser des questions sur les changements pour générer de meilleurs commits

Note : --stage et --add-all sont mutuellement exclusifs. Utilisez --stage pour sélectionner interactivement les fichiers à indexer, et --add-all pour indexer tous les changements d'un coup.

Note : Combinez -a et -g (c'est-à-dire -ag) pour indexer TOUS les changements d'abord, puis les grouper en commits.

Note : Lors de l'utilisation de --group, la limite de tokens de sortie maximale est automatiquement mise à l'échelle en fonction du nombre de fichiers commités (2x pour 1-9 fichiers, 3x pour 10-19 fichiers, 4x pour 20-29 fichiers, 5x pour 30+ fichiers). Cela assure que l'IA a assez de tokens pour générer tous les commits groupés sans troncation, même pour les ensembles de changements volumineux.

Note : --message-only et --group sont mutuellement exclusifs. Utilisez --message-only lorsque vous souhaitez récupérer le message de commit pour un traitement externe, et --group lorsque vous souhaitez organiser plusieurs commits dans le workflow git actuel.

Note : Le drapeau --interactive vous pose des questions sur vos changements pour fournir un contexte additionnel à l'IA, résultant en des messages de commit plus précis et détaillés. Ceci est particulièrement utile pour les changements complexes ou quand vous voulez vous assurer que le message de commit capture le contexte complet de votre travail.

Personnalisation des messages

Drapeau / OptionCourtDescription
--one-liner-oGénérer un message de commit sur une seule ligne
--verbose-vGénérer des messages de commit détaillés avec motivation, architecture et impact
--hint <text>-hAjouter un indice pour guider l'IA
--model <model>-mSpécifier le modèle à utiliser pour ce commit
--language <lang>-lRemplacer la langue (nom ou code : 'Spanish', 'es', 'zh-CN', 'ja')
--scope-sInférer une portée appropriée pour le commit
--50-72Appliquer la règle 50/72 pour le formatage des messages de commit

Note : Le flag --50-72 applique la règle 50/72 où :

  • Ligne de sujet : maximum 50 caractères
  • Lignes du corps : maximum 72 caractères par ligne
  • Cela garde les messages de commit lisibles dans git log --oneline et l'interface de GitHub

Vous pouvez aussi définir GAC_USE_50_72_RULE=true dans votre fichier .gac.env pour toujours appliquer cette règle.

Note : Vous pouvez fournir un feedback de manière interactive en le tapant simplement à l'invite de confirmation - pas besoin de préfixer avec 'r'. Tapez r pour une relance simple, e pour éditer le message (TUI intégrée par défaut, ou $GAC_EDITOR si défini), ou tapez votre feedback directement comme "rends-le plus court".

Sortie et verbosité

Drapeau / OptionCourtDescription
--quiet-qSupprimer toute sortie sauf les erreurs
--log-level <level>Définir le niveau de log (debug, info, warning, error)
--show-promptAfficher le prompt de l'IA utilisé pour la génération de message de commit

Aide et version

Drapeau / OptionCourtDescription
--versionAfficher la version de gac et quitter
--helpAfficher le message d'aide et quitter

Exemples de workflows

  • Indexer tous les changements et commiter :

    uvx gac -a
    
  • Commiter et pousser en une étape :

    uvx gac -ap
    
  • Générer un message de commit sur une seule ligne :

    uvx gac -o
    
  • Générer un message de commit détaillé avec sections structurées :

    uvx gac -v
    
  • Ajouter un indice pour l'IA :

    uvx gac -h "Refactoriser la logique d'authentification"
    
  • Inférer la portée pour le commit :

    uvx gac -s
    
  • Grouper les changements indexés en commits logiques :

    uvx gac -g
    # Groupe uniquement les fichiers que vous avez déjà indexés
    
  • Grouper tous les changements (indexés + non indexés) et confirmer automatiquement :

    uvx gac -agy
    # Indexe tout, le groupe, et confirme automatiquement
    
  • Utiliser un modèle spécifique juste pour ce commit :

    uvx gac -m anthropic:claude-haiku-4-5
    
  • Générer un message de commit dans une langue spécifique :

    # Utilisant les codes de langue (plus court)
    uvx gac -l zh-CN
    uvx gac -l ja
    uvx gac -l es
    
    # Utilisant les noms complets
    uvx gac -l "Simplified Chinese"
    uvx gac -l Japanese
    uvx gac -l Spanish
    
  • Test à blanc (voir ce qui se passerait) :

    uvx gac --dry-run
    
  • Récupérer uniquement le message de commit (pour intégration par script) :

    uvx gac --message-only
    # Sortie : feat : ajouter un système d'authentification utilisateur
    
  • Récupérer le message de commit au format une seule ligne :

    uvx gac --message-only --one-liner
    # Sortie : feat : ajouter un système d'authentification utilisateur
    
  • Utiliser le mode interactif pour fournir du contexte :

    uvx gac -i
    # Quel est le but principal de ces changements ?
    # Quel problème résolvez-vous ?
    # Y a-t-il des détails d'implémentation dignes d'être mentionnés ?
    
  • Mode interactif avec sortie détaillée :

    uvx gac -i -v
    # Poser des questions et générer un message de commit détaillé
    

Avancé

  • Combinez les drapeaux pour des workflows plus puissants (ex: uvx gac -ayp pour indexer, confirmer automatiquement et pousser)
  • Utilisez --show-prompt pour déboguer ou revoir le prompt envoyé à l'IA
  • Ajustez la verbosité avec --log-level ou --quiet
  • Utilisez --message-only pour l'intégration par script et les workflows automatisés

Intégration par script et traitement externe

Le drapeau --message-only est conçu pour l'intégration par script et les workflows d'outils externes. Il affiche uniquement le message de commit brut, sans mise en forme, spinners ou éléments d'interface supplémentaires.

Cas d'utilisation :

  • Intégration avec des agents : Permettre aux agents IA de récupérer les messages de commit et de gérer eux-mêmes les commits
  • VCS alternatifs : Utiliser les messages générés avec d'autres systèmes de contrôle de version (Mercurial, Jujutsu, etc.)
  • Workflows de commit personnalisés : Traiter ou modifier le message avant de commiter
  • Pipelines CI/CD : Extraire les messages de commit pour des processus automatisés

Exemple de script :

#!/bin/bash
# Récupérer le message de commit et l'utiliser avec une fonction de commit personnalisée
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"
# Exemple d'intégration Python
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}")

Caractéristiques clés pour l'utilisation dans des scripts :

  • Sortie propre sans mise en forme Rich ni spinners
  • Contourne automatiquement les invites de confirmation
  • Aucun commit git réel n'est effectué
  • Fonctionne avec --one-liner pour une sortie simplifiée
  • Peut être combiné avec d'autres drapeaux comme --hint, --model, etc.

Sauter les hooks Pre-commit et Lefthook

Le drapeau --no-verify vous permet de sauter tous les hooks pre-commit ou lefthook configurés dans votre projet :

uvx gac --no-verify  # Sauter tous les hooks pre-commit et lefthook

Utilisez --no-verify lorsque :

  • Les hooks pre-commit ou lefthook échouent temporairement
  • Vous travaillez avec des hooks chronophages
  • Vous commitez du code en cours de travail qui ne passe pas encore toutes les vérifications

Note : Utilisez avec prudence car ces hooks maintiennent les standards de qualité du code.

Analyse de sécurité

uvx gac inclut une analyse de sécurité intégrée qui détecte automatiquement les secrets potentiels et clés API dans vos changements indexés avant tout appel à une API d'IA. Si un secret est détecté, le workflow est immédiatement abandonné — aucun appel API n'est effectué. Cela garantit que vos données sensibles ne sont jamais envoyées à un modèle d'IA. L'analyseur utilise la correspondance de motifs basée sur des regex, pas des LLM, l'analyse est donc rapide et s'exécute entièrement en local.

Sauter les analyses de sécurité :

uvx gac --skip-secret-scan  # Sauter l'analyse de sécurité pour ce commit

Pour désactiver de manière permanente : Définissez GAC_SKIP_SECRET_SCAN=true dans votre fichier .gac.env.

Quand sauter :

  • Commiter du code d'exemple avec des clés de remplacement
  • Travailler avec des fixtures de test qui contiennent des identifiants factices
  • Lorsque vous avez vérifié que les changements sont sûrs

Note : L'analyseur utilise la correspondance de motifs basée sur des regex (pas des LLM) pour détecter les formats de secrets courants. Il s'exécute avant tout appel à une API d'IA — si un secret est trouvé, aucun appel API n'est effectué. Revoyez toujours vos changements indexés avant de commiter.

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.

Vérification des certificats SSL

Le drapeau --no-verify-ssl vous permet de sauter la vérification des certificats SSL pour les appels API :

uvx gac --no-verify-ssl  # Sauter la vérification SSL pour ce commit

Pour configurer de manière permanente : Définissez GAC_NO_VERIFY_SSL=true dans votre fichier .gac.env.

Utilisez --no-verify-ssl lorsque :

  • Les proxies d'entreprise interceptent le trafic SSL (proxies MITM)
  • Les environnements de développement utilisent des certificats auto-signés
  • Vous rencontrez des erreurs de certificat SSL dues aux paramètres de sécurité réseau

Note : N'utilisez cette option que dans des environnements réseau de confiance. Désactiver la vérification SSL réduit la sécurité et peut rendre vos requêtes API vulnérables aux attaques de type man-in-the-middle.

Ligne Signed-off-by (Conformité DCO)

uvx gac prend en charge l'ajout d'une ligne Signed-off-by aux messages de commit, qui est requise pour la conformité au Developer Certificate of Origin (DCO) dans de nombreux projets open source.

Ajouter signoff :

uvx gac --signoff  # Ajouter une ligne Signed-off-by au message de commit (conformité DCO)

Pour activer de manière permanente : Définissez GAC_SIGNOFF=true dans votre fichier .gac.env, ou ajoutez signoff=true à votre configuration.

Ce que cela fait :

  • Ajoute Signed-off-by: Votre Nom <votre.email@example.com> au message de commit
  • Utilise votre configuration git (user.name et user.email) pour la ligne
  • Requis pour des projets comme Cherry Studio, noyau Linux et autres utilisant DCO

Configuration de l'identité git :

Assurez-vous que votre configuration git a le bon nom et email :

git config --global user.name "Your Full Name"
git config --global user.email "your.email@example.com"

Note : La ligne Signed-off-by est ajoutée par git lors du commit, pas par l'IA lors de la génération du message. Vous ne la verrez pas dans la prévisualisation, mais elle sera dans le commit final (vérifiez avec git log -1).

Notes de configuration

  • La méthode recommandée pour configurer gac est d'exécuter uvx gac init et de suivre les invites interactives.
  • Vous avez déjà configuré la langue et devez juste changer de fournisseurs ou de modèles ? Exécutez uvx gac model pour répéter la configuration sans questions de langue.
  • Vous utilisez Claude Code ? Consultez le guide de configuration Claude Code pour les instructions d'authentification OAuth.
  • Vous utilisez ChatGPT OAuth ? Consultez le guide de configuration ChatGPT OAuth pour les instructions d'authentification basées sur le navigateur.
  • Vous utilisez GitHub Copilot ? Consultez le guide de configuration GitHub Copilot pour les instructions d'authentification Device Flow.
  • gac charge la configuration dans l'ordre de priorité suivant :
    1. Drapeaux CLI
    2. .gac.env au niveau projet
    3. ~/.gac.env au niveau utilisateur
    4. Variables d'environnement

Options de configuration avancées

Vous pouvez personnaliser le comportement de gac avec ces variables d'environnement optionnelles :

  • GAC_EDITOR=code --wait - Remplace l'éditeur utilisé lorsque vous appuyez sur e à l'invite de confirmation. Par défaut, e ouvre une TUI intégrée ; définir GAC_EDITOR passe à un éditeur externe. Prend en charge toute commande d'éditeur avec arguments. Les drapeaux d'attente (--wait/-w) sont automatiquement insérés pour les éditeurs GUI connus (VS Code, Cursor, Zed, Sublime Text) afin que le processus se bloque jusqu'à la fermeture du fichier
  • GAC_ALWAYS_INCLUDE_SCOPE=true - Inférer et inclure automatiquement la portée dans les messages de commit (ex: feat(auth): vs `feat:)
  • GAC_ALWAYS_GROUPED=true - Toujours utiliser le mode de commits groupés (équivalent à toujours passer le flag -g ou --group)
  • GAC_VERBOSE=true - Générer des messages de commit détaillés avec sections motivation, architecture et impact
  • GAC_USE_50_72_RULE=true - Toujours appliquer la règle 50/72 pour les messages de commit (sujet ≤50 caractères, lignes du corps ≤72 caractères)
  • GAC_SIGNOFF=true - Toujours ajouter la ligne Signed-off-by aux commits (pour la conformité DCO)
  • GAC_TEMPERATURE=0.7 - Contrôler la créativité de l'IA (0.0-1.0, plus bas = plus focus)
  • GAC_REASONING_EFFORT=medium - Contrôler la profondeur de raisonnement/réflexion pour les modèles qui prennent en charge la réflexion étendue (low, medium, high, max). Laisser non défini pour utiliser la valeur par défaut de chaque modèle. Envoyé uniquement aux fournisseurs compatibles (style OpenAI ; non Anthropic).
  • GAC_MAX_OUTPUT_TOKENS=4096 - Tokens maximum pour les messages générés (automatiquement mis à l'échelle 2-5x lors de l'utilisation de --group basé sur le nombre de fichiers ; remplacer pour aller plus haut ou plus bas)
  • GAC_WARNING_LIMIT_TOKENS=4096 - Avertir quand les prompts dépassent ce nombre de tokens
  • GAC_SYSTEM_PROMPT_PATH=/path/to/custom_prompt.txt - Utiliser un prompt système personnalisé pour la génération de messages de commit
  • GAC_LANGUAGE=Spanish - Générer des messages de commit dans une langue spécifique (ex: Spanish, French, Japanese, German). Supporte les noms complets ou codes ISO (es, fr, ja, de, zh-CN). Utilisez uvx gac language pour sélection interactive
  • GAC_TRANSLATE_PREFIXES=true - Traduire les préfixes de commits conventionnels (feat, fix, etc.) dans la langue cible (par défaut : false, garde les préfixes en anglais)
  • GAC_SKIP_SECRET_SCAN=true - Désactiver l'analyse de sécurité automatique pour les secrets dans les changements indexés (utiliser avec prudence)
  • GAC_NO_VERIFY_SSL=true - Sauter la vérification des certificats SSL pour les appels API (utile pour les proxies d'entreprise qui interceptent le trafic SSL)
  • GAC_DISABLE_STATS=true - Désactiver le suivi des statistiques d'utilisation (aucune lecture ou écriture de fichier de statistiques ; les données existantes sont préservées). Seules les valeurs truthy désactivent les statistiques ; définir à false/0/no/off les maintient activées, comme si la variable n'était pas définie

Voir .gac.env.example pour un modèle de configuration complet.

Pour des conseils détaillés sur la création de prompts système personnalisés, voir docs/CUSTOM_SYSTEM_PROMPTS.fr.md.

Sous-commandes de configuration

Les sous-commandes suivantes sont disponibles :

  • uvx gac init — Assistant de configuration interactif pour le fournisseur, le modèle et la langue
  • uvx gac model — Configuration fournisseur/modèle/clé API sans invites de langue (idéal pour les changements rapides)
  • uvx gac auth — Afficher le statut d'authentification OAuth pour tous les fournisseurs
  • uvx gac auth claude-code login — Se connecter à Claude Code en utilisant OAuth (ouvre le navigateur)
  • uvx gac auth claude-code logout — Se déconnecter de Claude Code et supprimer le token stocké
  • uvx gac auth claude-code status — Vérifier le statut d'authentification de Claude Code
  • uvx gac auth chatgpt login — Se connecter à ChatGPT en utilisant OAuth (ouvre le navigateur)
  • uvx gac auth chatgpt logout — Se déconnecter de ChatGPT et supprimer le token stocké
  • uvx gac auth chatgpt status — Vérifier le statut d'authentification de ChatGPT
  • uvx gac auth copilot login — Se connecter à GitHub Copilot via Device Flow
  • uvx gac auth copilot login --host ghe.mycompany.com — Se connecter à Copilot sur une instance GitHub Enterprise
  • uvx gac auth copilot logout — Se déconnecter de Copilot et supprimer les tokens stockés
  • uvx gac auth copilot status — Vérifier le statut d'authentification Copilot
  • uvx gac config show — Afficher la configuration actuelle
  • uvx gac config set KEY VALUE — Définir une clé de configuration dans $HOME/.gac.env
  • uvx gac config get KEY — Obtenir une valeur de configuration
  • uvx gac config unset KEY — Supprimer une clé de configuration de $HOME/.gac.env
  • uvx gac language (ou uvx gac lang) — Sélecteur de langue interactif pour les messages de commit (définit GAC_LANGUAGE)
  • uvx gac editor (ou uvx gac edit) — Sélecteur interactif d'éditeur pour la touche e au prompt de confirmation (définit GAC_EDITOR)
  • uvx gac diff — Afficher le git diff filtré avec des options pour les changements indexés/non indexés, la couleur et la troncature
  • uvx gac serve — Démarrer GAC en tant que serveur MCP pour l'intégration d'agents IA (transport stdio)
  • uvx gac stats show — Voir vos statistiques d'utilisation de gac (totaux, séries, activité quotidienne et hebdomadaire, utilisation des tokens, projets principaux avec fichiers moyens, modèles principaux avec vitesse et latence)
  • uvx gac stats models — Statistiques détaillées pour tous les modèles avec répartition des tokens, vitesse, latence et graphiques latence par commit
  • uvx gac stats projects — Statistiques pour tous les projets avec répartition des tokens et fichiers moyens par gac
  • uvx gac stats recent — 10 derniers gacs avec tokens, vitesse, latence et fichiers par gac (-n 20 pour plus)
  • uvx gac stats reset — Réinitialiser toutes les statistiques à zéro (demande confirmation)
  • uvx gac stats reset model <model-id> — Réinitialiser les statistiques d'un modèle spécifique (insensible à la casse)

Mode Interactif

Le drapeau --interactive (-i) améliore la génération de messages de commit de gac en vous posant des questions ciblées sur vos changements. Ce contexte additionnel aide l'IA à créer des messages de commit plus précis, détaillés et contextuellement appropriés.

Comment ça fonctionne

Quand vous utilisez --interactive, gac vous posera des questions telles que :

  • Quel est le but principal de ces changements ? - Aide à comprendre l'objectif de haut niveau
  • Quel problème résolvez-vous ? - Fournit le contexte sur la motivation
  • Y a-t-il des détails d'implémentation dignes d'être mentionnés ? - Capture les spécificités techniques
  • Y a-t-il des changements cassants ? - Identifie les problèmes d'impact potentiel
  • Ceci est-il lié à un problème ou ticket ? - Lie à la gestion de projet

Quand utiliser le mode interactif

Le mode interactif est particulièrement utile pour :

  • Changements complexes où le contexte n'est pas évident depuis le diff seul
  • Travail de refactoring qui s'étend sur plusieurs fichiers et concepts
  • Nouvelles fonctionnalités qui requièrent l'explication du but global
  • Corrections de bugs où la cause racine n'est pas immédiatement visible
  • Optimisations de performance où le raisonnement n'est pas évident
  • Préparation de code review - les questions vous aident à réfléchir à vos changements

Exemples d'utilisation

Mode interactif de base :

uvx gac -i

Ceci fera :

  1. Vous montrer un résumé des changements indexés
  2. Vous poser des questions sur les changements
  3. Générer un message de commit incorporant vos réponses
  4. Demander une confirmation (ou confirmer automatiquement si combiné avec -y)

Mode interactif avec changements indexés :

uvx gac -ai
# Indexe tous les changements, puis pose des questions pour un meilleur contexte

Mode interactif avec indices spécifiques :

uvx gac -i -h "Migration de base de données pour les profils utilisateur"
# Poser des questions tout en fournissant un indice spécifique pour focaliser l'IA

Mode interactif avec sortie détaillée :

uvx gac -i -v
# Poser des questions et générer un message de commit détaillé et structuré

Mode interactif auto-confirmé :

uvx gac -i -y
# Poser des questions mais confirmer automatiquement le commit résultant

Workflow Questions-Réponses

Le workflow interactif suit ce modèle :

  1. Revoir les changements - gac montre un résumé de ce que vous commitez
  2. Répondre aux questions - répondez à chaque invite avec des détails pertinents
  3. Amélioration du contexte - vos réponses sont ajoutées au prompt de l'IA
  4. Génération de message - l'IA crée un message de commit avec le contexte complet
  5. Confirmation - révisez et confirmez le commit (ou confirmez automatiquement avec -y)

Conseils pour fournir des réponses utiles :

  • Soyez concis mais complet - fournissez les détails clés sans être trop verbeux
  • Focalisez-vous sur le "pourquoi" - expliquez le raisonnement derrière vos changements
  • Mentionnez les contraintes - notez les limitations ou considérations spéciales
  • Liez au contexte externe - référencez les issues, documentation ou documents de conception
  • Les réponses vides sont acceptables - si une question ne s'applique pas, appuyez juste sur Entrée

Combinaison avec d'autres drapeaux

Le mode interactif fonctionne bien avec la plupart des autres drapeaux :

# Indexer tous les changements et poser des questions
uvx gac -ai

# Poser des questions avec sortie détaillée
uvx gac -i -v

Meilleures pratiques

  • Utiliser pour les PRs complexes - particulièrement utile pour les demandes de pull qui ont besoin de descriptions détaillées
  • Collaboration d'équipe - les questions vous aident à réfléchir aux changements que d'autres réviseront
  • Préparation de documentation - vos réponses peuvent aider à former la base des notes de version
  • Outil d'apprentissage - les questions renforcent les bonnes pratiques de messages de commit
  • Sauter pour les changements simples - pour les corrections triviales, le mode de base peut être plus rapide

Statistiques d'utilisation

uvx gac suit des statistiques d'utilisation légères pour que vous puissiez voir votre activité de commits, séries, utilisation des tokens, et projets et modèles les plus actifs. Les statistiques sont stockées localement dans ~/.gac_stats.json et ne sont jamais envoyées nulle part — il n'y a pas de télémétrie.

Ce qui est suivi : nombre total d'exécutions gac, nombre total de commits, total des tokens de prompt, output et de raisonnement, dates de première/dernière utilisation, comptes quotidiens et hebdomadaires (gacs, commits, tokens), série actuelle et la plus longue, activité par projet (gacs, commits, tokens) et activité par modèle (gacs, tokens).

Ce qui n'est PAS suivi : messages de commit, contenu de code, chemins de fichiers, informations personnelles ou quoi que ce soit au-delà des comptes, dates, noms de projets (dérivés du remote ou du répertoire git) et noms de modèles.

Opt-in ou Opt-out

uvx gac init vous demande si vous souhaitez activer les statistiques et explique exactement ce qui est stocké. Vous pouvez changer d'avis à tout moment :

  • Activer les statistiques : supprimez GAC_DISABLE_STATS ou définissez-le à false/0/no/off/vide.
  • Désactiver les statistiques : définissez GAC_DISABLE_STATS à une valeur truthy (true, 1, yes, on).

Lorsque vous refusez les statistiques lors de uvx gac init et qu'un fichier ~/.gac_stats.json existant est détecté, il vous sera proposé de le supprimer.

Sous-commandes de statistiques

CommandeDescription
uvx gac statsAfficher vos statistiques (identique à uvx gac stats show)
uvx gac stats showAfficher les statistiques complètes : totaux, séries, activité quotidienne et hebdomadaire, utilisation des tokens, projets principaux, modèles principaux
uvx gac stats modelsStatistiques détaillées pour tous les modèles avec répartition des tokens, vitesse, latence et graphiques latence par commit
uvx gac stats projectsStatistiques pour tous les projets avec répartition des tokens et fichiers moyens par gac
uvx gac stats recent10 derniers gacs (-n 20 pour plus), avec tokens, vitesse, latence et fichiers par gac
uvx gac stats resetRéinitialiser toutes les statistiques à zéro (demande confirmation)
uvx gac stats reset model <model-id>Réinitialiser les statistiques d'un modèle spécifique (insensible à la casse)

Exemples

# Voir vos statistiques globales
uvx gac stats

# Répartition détaillée de tous les modèles utilisés
uvx gac stats models

# Statistiques de tous les projets
uvx gac stats projects

# Historique des gacs récents
uvx gac stats recent -n 20

# Réinitialiser toutes les statistiques (avec confirmation)
uvx gac stats reset

# Réinitialiser les statistiques d'un modèle spécifique
uvx gac stats reset model wafer:deepseek-v4-pro

Ce que vous verrez

Exécuter uvx gac stats affiche :

  • Gacs et commits totaux — combien de fois vous avez utilisé gac et combien de commits il a créés
  • Série actuelle et la plus longue — jours consécutifs avec activité gac (🔥 à 5+ jours)
  • Résumé d'activité — gacs, commits et tokens d'aujourd'hui et de cette semaine vs votre pic quotidien et hebdomadaire
  • Projets principaux — vos 5 dépôts les plus actifs par comptes gac + commits, avec fichiers moyens par gac et utilisation des tokens
  • Modèles principaux — vos 5 modèles les plus utilisés avec vitesse globale, latence et utilisation des tokens

Exécuter uvx gac stats projects affiche tous les projets (pas seulement les 5 premiers) avec :

  • Tableau de tous les projets — chaque projet trié par activité, avec nombre de gac, nombre de commits, ratio commits par gac, fichiers moyens par gac, tokens de prompt, tokens de output, tokens de raisonnement, tokens totaux et part des gacs totaux
  • Graphique à barres d'activité — barres horizontales montrant le nombre relatif de gacs par projet
  • Graphique à barres d'utilisation des tokens — barres horizontales montrant la consommation relative de tokens par projet

Exécuter uvx gac stats models affiche tous les modèles (pas seulement les 5 premiers) avec :

  • Tableau de tous les modèles — chaque modèle utilisé trié par activité, avec nombre de gac, nombre de commits, vitesse globale (tokens/sec), latence globale, tokens de prompt, tokens de output, tokens de raisonnement et tokens totaux
  • Graphique de comparaison de vitesse (30j) — un graphique à barres horizontales des vitesses récentes (30 derniers jours) des modèles, triés du plus rapide au plus lent, colorés par percentile de vitesse (🟡 éclair, 🟢 rapide, 🔵 modéré, 🔘 lent)
  • Graphique de comparaison de latence (30j) — un graphique à barres horizontales de la latence récente par appel, triée de la plus courte à la plus longue
  • Graphique de latence par commit (30j) — un graphique à barres horizontales de la latence récente divisée par le nombre de commits, montrant le temps d'attente réel par commit (un modèle qui fait 5 commits dans un gac de 10s coûte 2s/commit vs un qui fait 1 commit dans un gac de 25s à 25s/commit)
  • Célébrations de records — 🏆 trophées quand vous établissez de nouveaux records quotidiens, hebdomadaires, de tokens ou de série ; 🥈 pour les égaler
  • Messages d'encouragement — suggestions contextuelles basées sur votre activité

Exécuter uvx gac stats recent affiche vos 10 derniers gacs (configurable avec -n) :

  • Tableau des gacs récents — chaque gac avec temps relatif, projet, modèle, nombre de commits, fichiers, vitesse, latence et répartition des tokens par gac

Désactiver les statistiques

Définissez la variable d'environnement GAC_DISABLE_STATS avec une valeur truthy :

# Désactiver le suivi des statistiques
export GAC_DISABLE_STATS=true

# Ou dans .gac.env
GAC_DISABLE_STATS=true

Les valeurs falsy (false, 0, no, off, vide) maintiennent les statistiques activées — comme si la variable n'était pas définie.

Quand désactivé, gac ignore tout enregistrement de statistiques — aucune lecture ou écriture de fichier n'a lieu. Les données existantes sont préservées mais ne seront pas mises à jour tant que vous ne les réactivez pas.


Notifications de Webhook Discord

gac peut notifier un canal Discord à chaque fois que vous effectuez un commit, en utilisant une URL de webhook depuis les paramètres d'intégration de votre canal. L'intégration est opt-in : elle ne fait rien jusqu'à ce que vous configuriez explicitement une URL de webhook.

Configuration

Utilisez le groupe de sous-commandes discord dédié :

uvx gac discord setup     # configurer interactivement une URL de webhook
uvx gac discord show      # afficher si un webhook est configuré (URL masquée)
uvx gac discord test      # envoyer une notification de test au webhook configuré
uvx gac discord remove    # supprimer l'URL du webhook configuré

Alternativement, définissez la variable directement dans $HOME/.gac.env (ou ./.gac.env):

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

Comportement

  • Se déclenche après chaque commit réussi (flux de travail individuels et groupés). Ignoré avec --dry-run et --message-only.
  • Publie un embed style GitHub avec une bande verte, repo + branche comme ligne d'auteur, le sujet du commit comme titre, le corps du commit comme description et le SHA court dans le pied de page.
  • Utilise l'avatar gac et le nom d'utilisateur gac.
  • Les échecs de webhook sont journalisés en WARNING et ne bloquent jamais votre commit.
  • Laissez GAC_DISCORD_WEBHOOK_URL non défini (ou vide) pour désactiver. gac init n'est pas affecté — la configuration Discord vit uniquement sous gac discord.

Obtenir de l'aide