Documentation API de Configuration

Documentation de référence complète de l'API de gestion de configuration

Gestion de Configuration25 min de lecture

Hiérarchie de Configuration

Gemini CLI utilise un système de configuration hiérarchique qui prend en charge plusieurs sources de configuration et des mises à jour dynamiques

1

Configuration par Défaut

Valeurs de configuration par défaut intégrées

Priorité: Le plus bas
2

Fichier de Configuration Global

~/.gemini/config.toml

Priorité: Bas
3

Fichier de Configuration de Projet

./gemini.toml ou ./.gemini/config.toml

Priorité: Moyen
4

Variables d'Environnement

Variables d'environnement avec le préfixe GEMINI_*

Priorité: Élevé
5

Arguments de Ligne de Commande

Arguments d'exécution passés à la commande

Priorité: Le plus élevé

Options de Configuration

Description détaillée des options de configuration

[api]

Configuration liée à l'API Gemini

OptionTypeDéfautDescription
keyRequisstring-Clé API Google AI
modelstring"gemini-pro"Modèle par défaut à utiliser
temperaturenumber0.7Température de génération (0-1)
max_tokensnumber4096Nombre maximum de tokens
timeoutnumber30000Timeout de requête en millisecondes

[session]

Configuration de gestion de session

OptionTypeDéfautDescription
auto_savebooleantrueSauvegarder automatiquement les sessions
max_historynumber100Nombre maximum de messages d'historique
storage_pathstring"~/.gemini/sessions"Chemin de stockage des sessions
compressionbooleantrueActiver la compression des sessions

[context]

Configuration de traitement du contexte

OptionTypeDéfautDescription
max_filesnumber50Nombre maximum de fichiers
max_file_sizestring"1MB"Taille maximale de fichier par fichier
exclude_patternsarray*.log,*.tmpMotifs d'exclusion de fichiers
auto_detect_languagebooleantrueDétecter automatiquement le langage de programmation

[plugins]

Configuration du système de plugins

OptionTypeDéfautDescription
enabledbooleantrueActiver le système de plugins
auto_loadbooleantrueCharger automatiquement les plugins
plugin_pathsarray~/.gemini/pluginsChemins de recherche des plugins
security_modestring"strict"Mode de sécurité (strict/permissive)

Exemple de Fichier de Configuration

Exemple complet de fichier de configuration TOML

# Fichier de Configuration Gemini CLI (gemini.toml)

[api]
key = "your-api-key-here"
model = "gemini-pro"
temperature = 0.7
max_tokens = 4096
timeout = 30000

[session]
auto_save = true
max_history = 100
storage_path = "~/.gemini/sessions"
compression = true

[context]
max_files = 50
max_file_size = "1MB"
exclude_patterns = [
  "*.log",
  "*.tmp",
  "node_modules/**",
  ".git/**"
]
auto_detect_language = true

[plugins]
enabled = true
auto_load = true
plugin_paths = [
  "~/.gemini/plugins",
  "./plugins"
]
security_mode = "strict"

[logging]
level = "info"
file = "~/.gemini/logs/gemini.log"
max_size = "10MB"
max_files = 5

[ui]
theme = "auto"
color = true
progress_bar = true
confirm_destructive = true

Interface API de Configuration

Définition de l'interface de la classe ConfigManager

ConfigManager

Définition de l'interface de la classe ConfigManager

interface ConfigManager {
  // Obtenir la valeur de configuration
  get<T>(key: string): T | undefined
  get<T>(key: string, defaultValue: T): T

  // Définir la valeur de configuration
  set(key: string, value: any): void

  // Supprimer l'élément de configuration
  delete(key: string): void

  // Vérifier si l'élément de configuration existe
  has(key: string): boolean

  // Obtenir toutes les configurations
  getAll(): Record<string, any>

  // Recharger la configuration
  reload(): Promise<void>

  // Sauvegarder la configuration dans un fichier
  save(): Promise<void>

  // Surveiller les changements de configuration
  watch(key: string, callback: (value: any) => void): void

  // Arrêter de surveiller les changements de configuration
  unwatch(key: string, callback?: (value: any) => void): void

  // Valider la configuration
  validate(): ConfigValidationResult
}

Variables d'Environnement

Liste des variables d'environnement supportées

GEMINI_API_KEY

Clé API Google AI

Exemple:

export GEMINI_API_KEY="your-api-key"

Configuration Correspondante:

api.key

GEMINI_MODEL

Nom du modèle par défaut

Exemple:

export GEMINI_MODEL="gemini-pro"

Configuration Correspondante:

api.model

GEMINI_TEMPERATURE

Température de génération

Exemple:

export GEMINI_TEMPERATURE="0.7"

Configuration Correspondante:

api.temperature

GEMINI_CONFIG_PATH

Chemin du fichier de configuration

Exemple:

export GEMINI_CONFIG_PATH="/path/to/config.toml"

Configuration Correspondante:

N/A

GEMINI_LOG_LEVEL

Niveau de log

Exemple:

export GEMINI_LOG_LEVEL="debug"

Configuration Correspondante:

logging.level

GEMINI_PLUGIN_PATH

Chemin des plugins

Exemple:

export GEMINI_PLUGIN_PATH="/path/to/plugins"

Configuration Correspondante:

plugins.plugin_paths

Exemples d'Utilisation

Exemples d'application pratique de la gestion de configuration

Opérations de Configuration de Base

Lecture et définition des valeurs de configuration

import { ConfigManager } from '@gemini-cli/core'

const config = new ConfigManager()

// Obtenir les valeurs de configuration
const apiKey = config.get('api.key')
const model = config.get('api.model', 'gemini-pro')

// Définir les valeurs de configuration
config.set('api.temperature', 0.8)
config.set('session.auto_save', false)

// Sauvegarder la configuration
await config.save()

Surveillance de Configuration

Écouter les changements de configuration

// Surveiller les changements de clé API
config.watch('api.key', (newKey) => {
  console.log('API key changed:', newKey)
  // Réinitialiser le client
  reinitializeClient(newKey)
})

// Surveiller les changements de modèle
config.watch('api.model', (newModel) => {
  console.log('Model changed to:', newModel)
})

Validation de Configuration

Valider la validité de la configuration

// Valider la configuration
const validation = config.validate()

if (!validation.isValid) {
  console.error('Configuration errors:')
  validation.errors.forEach(error => {
    console.error(`- ${error.path}: ${error.message}`)
  })
  process.exit(1)
}

console.log('Configuration is valid')

Mises à Jour Dynamiques de Configuration

Mises à jour de configuration à l'exécution

// Mise à jour dynamique de configuration
async function updateConfig(updates: Record<string, any>) {
  for (const [key, value] of Object.entries(updates)) {
    config.set(key, value)
  }

  // Valider la nouvelle configuration
  const validation = config.validate()
  if (!validation.isValid) {
    throw new Error('Invalid configuration')
  }

  // Sauvegarder la configuration
  await config.save()

  console.log('Configuration updated successfully')
}

Considérations de Sécurité

Meilleures pratiques pour la sécurité de configuration

Sécurité des Clés API

Meilleures pratiques pour protéger les clés API

  • Utiliser des variables d'environnement pour stocker les clés API
  • Éviter le codage en dur des clés dans les fichiers de configuration
  • Définir des permissions de fichier appropriées (600)
  • Faire tourner régulièrement les clés API

Permissions des Fichiers de Configuration

Paramètres de sécurité pour les fichiers de configuration

  • Définir les fichiers de configuration en lecture seule (chmod 600)
  • Éviter de committer des configurations sensibles dans le contrôle de version
  • Utiliser .gitignore pour exclure les fichiers de configuration
  • Examiner régulièrement le contenu des fichiers de configuration

Sécurité des Plugins

Considérations de sécurité pour la configuration des plugins

  • Activer le mode de sécurité strict
  • Vérifier les sources et signatures des plugins
  • Limiter la portée des permissions des plugins
  • Mettre à jour régulièrement les versions des plugins

Validation de Configuration

Règles de validation de configuration et implémentation

// Règles de validation de configuration
const configSchema = {
  api: {
    key: {
      type: 'string',
      required: true,
      minLength: 10,
      pattern: /^[A-Za-z0-9_-]+$/
    },
    model: {
      type: 'string',
      enum: ['gemini-pro', 'gemini-pro-vision'],
      default: 'gemini-pro'
    },
    temperature: {
      type: 'number',
      min: 0,
      max: 1,
      default: 0.7
    }
  },
  session: {
    max_history: {
      type: 'number',
      min: 1,
      max: 1000,
      default: 100
    },
    storage_path: {
      type: 'string',
      required: true
    }
  }
}

// Valider la configuration
function validateConfig(config: any): ConfigValidationResult {
  const errors: ConfigError[] = []

  // Valider la configuration API
  if (!config.api?.key) {
    errors.push({
      path: 'api.key',
      message: 'API key is required'
    })
  }

  if (config.api?.temperature < 0 || config.api?.temperature > 1) {
    errors.push({
      path: 'api.temperature',
      message: 'Temperature must be between 0 and 1'
    })
  }

  return {
    isValid: errors.length === 0,
    errors
  }
}

Continuer l'Apprentissage

Explorer le protocole MCP et le développement d'extensions