Документация API Конфигурации
Полная справочная документация API управления конфигурацией
Иерархия Конфигурации
Gemini CLI использует иерархическую систему конфигурации, которая поддерживает множественные источники конфигурации и динамические обновления
Конфигурация по Умолчанию
Встроенные значения конфигурации по умолчанию
Глобальный Файл Конфигурации
~/.gemini/config.toml
Файл Конфигурации Проекта
./gemini.toml или ./.gemini/config.toml
Переменные Окружения
Переменные окружения с префиксом GEMINI_*
Аргументы Командной Строки
Аргументы времени выполнения, переданные команде
Опции Конфигурации
Подробное описание опций конфигурации
[api]
Конфигурация, связанная с Gemini API
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
keyОбязательно | string | - | Ключ Google AI API |
model | string | "gemini-pro" | Модель по умолчанию для использования |
temperature | number | 0.7 | Температура генерации (0-1) |
max_tokens | number | 4096 | Максимальное количество токенов |
timeout | number | 30000 | Таймаут запроса в миллисекундах |
[session]
Конфигурация управления сессиями
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
auto_save | boolean | true | Автоматически сохранять сессии |
max_history | number | 100 | Максимальное количество сообщений в истории |
storage_path | string | "~/.gemini/sessions" | Путь хранения сессий |
compression | boolean | true | Включить сжатие сессий |
[context]
Конфигурация обработки контекста
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
max_files | number | 50 | Максимальное количество файлов |
max_file_size | string | "1MB" | Максимальный размер файла |
exclude_patterns | array | *.log,*.tmp | Шаблоны исключения файлов |
auto_detect_language | boolean | true | Автоматически определять язык программирования |
[plugins]
Конфигурация системы плагинов
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | boolean | true | Включить систему плагинов |
auto_load | boolean | true | Автоматически загружать плагины |
plugin_paths | array | ~/.gemini/plugins | Пути поиска плагинов |
security_mode | string | "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.keyGEMINI_MODEL
Имя модели по умолчанию
Пример:
export GEMINI_MODEL="gemini-pro"Соответствующая Конфигурация:
api.modelGEMINI_TEMPERATURE
Температура генерации
Пример:
export GEMINI_TEMPERATURE="0.7"Соответствующая Конфигурация:
api.temperatureGEMINI_CONFIG_PATH
Путь к файлу конфигурации
Пример:
export GEMINI_CONFIG_PATH="/path/to/config.toml"Соответствующая Конфигурация:
N/AGEMINI_LOG_LEVEL
Уровень логирования
Пример:
export GEMINI_LOG_LEVEL="debug"Соответствующая Конфигурация:
logging.levelGEMINI_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 и разработку расширений