Documentation API de Configuration
Documentation de référence complète de l'API de gestion de configuration
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
Configuration par Défaut
Valeurs de configuration par défaut intégrées
Fichier de Configuration Global
~/.gemini/config.toml
Fichier de Configuration de Projet
./gemini.toml ou ./.gemini/config.toml
Variables d'Environnement
Variables d'environnement avec le préfixe GEMINI_*
Arguments de Ligne de Commande
Arguments d'exécution passés à la commande
Options de Configuration
Description détaillée des options de configuration
[api]
Configuration liée à l'API Gemini
Option | Type | Défaut | Description |
---|---|---|---|
key Requis | string | - | Clé API Google AI |
model | string | "gemini-pro" | Modèle par défaut à utiliser |
temperature | number | 0.7 | Température de génération (0-1) |
max_tokens | number | 4096 | Nombre maximum de tokens |
timeout | number | 30000 | Timeout de requête en millisecondes |
[session]
Configuration de gestion de session
Option | Type | Défaut | Description |
---|---|---|---|
auto_save | boolean | true | Sauvegarder automatiquement les sessions |
max_history | number | 100 | Nombre maximum de messages d'historique |
storage_path | string | "~/.gemini/sessions" | Chemin de stockage des sessions |
compression | boolean | true | Activer la compression des sessions |
[context]
Configuration de traitement du contexte
Option | Type | Défaut | Description |
---|---|---|---|
max_files | number | 50 | Nombre maximum de fichiers |
max_file_size | string | "1MB" | Taille maximale de fichier par fichier |
exclude_patterns | array | *.log,*.tmp | Motifs d'exclusion de fichiers |
auto_detect_language | boolean | true | Détecter automatiquement le langage de programmation |
[plugins]
Configuration du système de plugins
Option | Type | Défaut | Description |
---|---|---|---|
enabled | boolean | true | Activer le système de plugins |
auto_load | boolean | true | Charger automatiquement les plugins |
plugin_paths | array | ~/.gemini/plugins | Chemins de recherche des plugins |
security_mode | string | "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