# Gemini CLI — Пропатченный

<!-- VERSION_BADGE:START -->
Пропатченный Gemini CLI для работы с кастомными API endpoints.
Последняя версия: **v0.29.5** (6 патчей).
<!-- VERSION_BADGE:END -->

## Установка через npm (Рекомендуется)

**Шаг 1 — Установить патченный CLI:**

**Linux / macOS:**
```bash
npm config set @google:registry https://npm.sensey24.ru/
npm install -g @google/gemini-cli
```

**Windows (PowerShell):**
```powershell
npm config set "@google:registry" "https://npm.sensey24.ru/"
npm install -g @google/gemini-cli
```

> Требуется Node.js. Установить: https://nodejs.org/

**Шаг 2 — Настроить окружение:**

npm-пакет содержит патченные URL прокси и фиксы sandbox (патчи 1-4).
Авторизацию и переменные окружения нужно настроить вручную (патчи 5-6):

**Linux / macOS:**
```bash
# Переменные окружения
echo 'export GEMINI_API_KEY="ClauderAPI"' >> ~/.bashrc
echo 'export GOOGLE_GEMINI_BASE_URL="https://ai.37-187-136-86.sslip.io"' >> ~/.bashrc
source ~/.bashrc

# Настройка авторизации (переключить с OAuth на API key)
mkdir -p ~/.gemini
cat > ~/.gemini/settings.json << 'EOF'
{
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  },
  "telemetry": {
    "enabled": false,
    "logPrompts": false
  }
}
EOF
```

**Windows (PowerShell):**
```powershell
# Переменные окружения
[System.Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "ClauderAPI", "User")
[System.Environment]::SetEnvironmentVariable("GOOGLE_GEMINI_BASE_URL", "https://ai.37-187-136-86.sslip.io", "User")

# Настройка авторизации
$geminiDir = "$env:USERPROFILE\.gemini"
New-Item -ItemType Directory -Force -Path $geminiDir | Out-Null
@'
{
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  },
  "telemetry": {
    "enabled": false,
    "logPrompts": false
  }
}
'@ | Set-Content "$geminiDir\settings.json" -Encoding UTF8
```

**Шаг 3 — Проверить:**
```bash
gemini -p "Привет"
```

### Что входит в npm-пакет, а что нужно настроить вручную

| Патч | Что | Входит в npm? |
|------|-----|:-:|
| 1-2 | URL прокси (API + Vertex) | Да |
| 3-4 | Фиксы sandbox (env vars + whitelist) | Да |
| 5 | Настройки (~/.gemini/settings.json) | **Нет — Шаг 2** |
| 6 | Env vars (GEMINI_API_KEY, BASE_URL) | **Нет — Шаг 2** |

### Обновление

Те же команды установки — npm скачает последнюю пропатченную версию.
Настройки и env vars сохраняются при обновлении.

## Установка одной командой (Альтернатива)

```bash
curl -fsSL https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_install.sh | sudo bash
```

Скрипт автоматически:
1. Проверит Node.js >= 20 и Python3
2. Установит `@google/gemini-cli` если нужно
3. Скачает и применит 6 патчей
4. Настроит авторизацию и env vars
5. Проверит тестовым запросом

## Ручная установка

```bash
# 1. Установить Gemini CLI
npm install -g @google/gemini-cli

# 2. Скачать патчер
curl -fsSL https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/gemini_patcher.py -o /tmp/gemini_patcher.py
curl -fsSL https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/gemini_config.json -o /tmp/gemini_config.json

# 3. Применить патчи
sudo python3 /tmp/gemini_patcher.py --apply --config /tmp/gemini_config.json

# 4. Проверить
gemini -p "Привет"
```

## Что патчится

| # | Цель | Описание |
|---|------|----------|
| 1 | `gemini_base_url` | API через прокси |
| 2 | `vertex_base_url` | Vertex AI через прокси |
| 3 | `sanitize_env_url` | Поддержка URL в .env |
| 4 | `auth_env_whitelist` | URL прокси в sandbox |
| 5 | `user_settings` | API key авторизация, отключение телеметрии |
| 6 | `system_env` | Системные переменные окружения |

## Доступные модели

- `gemini-2.5-pro` — Основная модель
- `gemini-2.5-flash` — Быстрая (по умолчанию)
- `gemini-2.5-flash-lite` — Самая быстрая
- `gemini-3-pro-preview` — Следующее поколение (preview)
- `gemini-3-flash-preview` — Flash нового поколения (preview)

## Решение проблем

**"GEMINI_API_KEY not set"**
```bash
export GEMINI_API_KEY="ClauderAPI"
export GOOGLE_GEMINI_BASE_URL="https://ai.37-187-136-86.sslip.io"
```

**"IneligibleTierError"**
```bash
python3 gemini_patcher.py --settings-only
```

**Откат**
```bash
sudo python3 gemini_patcher.py --rollback
```
