Документация API Конфигурации

Полная справочная документация API управления конфигурацией

Управление Конфигурацией25 мин чтения

Иерархия Конфигурации

Gemini CLI использует иерархическую систему конфигурации, которая поддерживает множественные источники конфигурации и динамические обновления

1

Конфигурация по Умолчанию

Встроенные значения конфигурации по умолчанию

Приоритет: Самый низкий
2

Глобальный Файл Конфигурации

~/.gemini/config.toml

Приоритет: Низкий
3

Файл Конфигурации Проекта

./gemini.toml или ./.gemini/config.toml

Приоритет: Средний
4

Переменные Окружения

Переменные окружения с префиксом GEMINI_*

Приоритет: Высокий
5

Аргументы Командной Строки

Аргументы времени выполнения, переданные команде

Приоритет: Самый высокий

Опции Конфигурации

Подробное описание опций конфигурации

[api]

Конфигурация, связанная с Gemini API

ОпцияТипПо умолчаниюОписание
keyОбязательноstring-Ключ Google AI API
modelstring"gemini-pro"Модель по умолчанию для использования
temperaturenumber0.7Температура генерации (0-1)
max_tokensnumber4096Максимальное количество токенов
timeoutnumber30000Таймаут запроса в миллисекундах

[session]

Конфигурация управления сессиями

ОпцияТипПо умолчаниюОписание
auto_savebooleantrueАвтоматически сохранять сессии
max_historynumber100Максимальное количество сообщений в истории
storage_pathstring"~/.gemini/sessions"Путь хранения сессий
compressionbooleantrueВключить сжатие сессий

[context]

Конфигурация обработки контекста

ОпцияТипПо умолчаниюОписание
max_filesnumber50Максимальное количество файлов
max_file_sizestring"1MB"Максимальный размер файла
exclude_patternsarray*.log,*.tmpШаблоны исключения файлов
auto_detect_languagebooleantrueАвтоматически определять язык программирования

[plugins]

Конфигурация системы плагинов

ОпцияТипПо умолчаниюОписание
enabledbooleantrueВключить систему плагинов
auto_loadbooleantrueАвтоматически загружать плагины
plugin_pathsarray~/.gemini/pluginsПути поиска плагинов
security_modestring"strict"Режим безопасности (strict/permissive)

Пример Файла Конфигурации

Полный пример файла конфигурации TOML

# Файл Конфигурации 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

Интерфейс API Конфигурации

Определение интерфейса класса ConfigManager

ConfigManager

Определение интерфейса класса ConfigManager

interface ConfigManager {
  // Получить значение конфигурации
  get<T>(key: string): T | undefined
  get<T>(key: string, defaultValue: T): T

  // Установить значение конфигурации
  set(key: string, value: any): void

  // Удалить элемент конфигурации
  delete(key: string): void

  // Проверить, существует ли элемент конфигурации
  has(key: string): boolean

  // Получить все конфигурации
  getAll(): Record<string, any>

  // Перезагрузить конфигурацию
  reload(): Promise<void>

  // Сохранить конфигурацию в файл
  save(): Promise<void>

  // Отслеживать изменения конфигурации
  watch(key: string, callback: (value: any) => void): void

  // Прекратить отслеживание изменений конфигурации
  unwatch(key: string, callback?: (value: any) => void): void

  // Валидировать конфигурацию
  validate(): ConfigValidationResult
}

Переменные Окружения

Список поддерживаемых переменных окружения

GEMINI_API_KEY

Ключ Google AI API

Пример:

export GEMINI_API_KEY="your-api-key"

Соответствующая Конфигурация:

api.key

GEMINI_MODEL

Имя модели по умолчанию

Пример:

export GEMINI_MODEL="gemini-pro"

Соответствующая Конфигурация:

api.model

GEMINI_TEMPERATURE

Температура генерации

Пример:

export GEMINI_TEMPERATURE="0.7"

Соответствующая Конфигурация:

api.temperature

GEMINI_CONFIG_PATH

Путь к файлу конфигурации

Пример:

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

Соответствующая Конфигурация:

N/A

GEMINI_LOG_LEVEL

Уровень логирования

Пример:

export GEMINI_LOG_LEVEL="debug"

Соответствующая Конфигурация:

logging.level

GEMINI_PLUGIN_PATH

Путь к плагинам

Пример:

export GEMINI_PLUGIN_PATH="/path/to/plugins"

Соответствующая Конфигурация:

plugins.plugin_paths

Примеры Использования

Практические примеры применения управления конфигурацией

Основные Операции Конфигурации

Чтение и установка значений конфигурации

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

const config = new ConfigManager()

// Получить значения конфигурации
const apiKey = config.get('api.key')
const model = config.get('api.model', 'gemini-pro')

// Установить значения конфигурации
config.set('api.temperature', 0.8)
config.set('session.auto_save', false)

// Сохранить конфигурацию
await config.save()

Отслеживание Конфигурации

Прослушивание изменений конфигурации

// Отслеживать изменения API ключа
config.watch('api.key', (newKey) => {
  console.log('API key changed:', newKey)
  // Переинициализировать клиент
  reinitializeClient(newKey)
})

// Отслеживать изменения модели
config.watch('api.model', (newModel) => {
  console.log('Model changed to:', newModel)
})

Валидация Конфигурации

Проверка действительности конфигурации

// Валидировать конфигурацию
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')

Динамические Обновления Конфигурации

Обновления конфигурации во время выполнения

// Динамическое обновление конфигурации
async function updateConfig(updates: Record<string, any>) {
  for (const [key, value] of Object.entries(updates)) {
    config.set(key, value)
  }

  // Валидировать новую конфигурацию
  const validation = config.validate()
  if (!validation.isValid) {
    throw new Error('Invalid configuration')
  }

  // Сохранить конфигурацию
  await config.save()

  console.log('Configuration updated successfully')
}

Соображения Безопасности

Лучшие практики для безопасности конфигурации

Безопасность API Ключей

Лучшие практики для защиты API ключей

  • Использовать переменные окружения для хранения API ключей
  • Избегать жесткого кодирования ключей в файлах конфигурации
  • Устанавливать соответствующие права доступа к файлам (600)
  • Регулярно ротировать API ключи

Права Доступа к Файлам Конфигурации

Настройки безопасности для файлов конфигурации

  • Устанавливать файлы конфигурации только для чтения (chmod 600)
  • Избегать коммита чувствительных конфигураций в систему контроля версий
  • Использовать .gitignore для исключения файлов конфигурации
  • Регулярно проверять содержимое файлов конфигурации

Безопасность Плагинов

Соображения безопасности для конфигурации плагинов

  • Включить строгий режим безопасности
  • Проверять источники и подписи плагинов
  • Ограничивать область разрешений плагинов
  • Регулярно обновлять версии плагинов

Валидация Конфигурации

Правила валидации конфигурации и реализация

// Правила валидации конфигурации
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
    }
  }
}

// Валидировать конфигурацию
function validateConfig(config: any): ConfigValidationResult {
  const errors: ConfigError[] = []

  // Валидировать 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
  }
}

Продолжить Обучение

Изучить протокол MCP и разработку расширений