# Скрипт установки в один клик

Одна команда — и всё готово к работе: скрипт автоматически измеряет скорость и выбирает самый быстрый endpoint, запрашивает API-ключ, записывает конфигурацию, при необходимости устанавливает Node.js и CLI, а в конце отправляет минимальный запрос для проверки соединения. **Сначала выберите свою операционную систему:**

> 📖 Перед запуском подготовьте API-ключ с префиксом `cr_` в [консоли QCode.cc](https://qcode.cc/dashboard); во время работы скрипт попросит вставить его (ввод не отображается на экране).

## 🍎 macOS / 🐧 Linux

Откройте терминал и вставьте команду (sudo не требуется):

### Claude Code

```bash
curl -fsSL https://qcode.cc/install/claude-code.sh | bash
```

### Codex

```bash
curl -fsSL https://qcode.cc/install/codex.sh | bash
```

## Interface language / Язык интерфейса

```bash
# macOS / Linux
curl -fsSL https://qcode.cc/install/claude-code.sh | bash -s -- --lang en
```

```powershell
# Windows PowerShell
$env:QCODE_LANG='en'; irm https://qcode.cc/install/claude-code.ps1 | iex
```

`--lang zh` / `--lang en`. Same for `codex`.

Конфигурация записывается в файл настроек shell (управляемый блок в `~/.zshrc` / `~/.bashrc`) или в `~/.codex/`; если Node.js отсутствует, он устанавливается через nvm в каталог пользователя.

## 🪟 Windows

**Достаточно обычного PowerShell — без WSL и без прав администратора.** Откройте «Терминал Windows» или PowerShell и вставьте команду:

### Claude Code

```powershell
irm https://qcode.cc/install/claude-code.ps1 | iex
```

### Codex

```powershell
irm https://qcode.cc/install/codex.ps1 | iex
```

### No `irm` / blocked by execution policy

**In CMD (Command Prompt):**

```
powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://qcode.cc/install/claude-code.ps1 | iex"
```

**Double-click, or `iex` blocked by policy:**

```
curl -fsSL https://qcode.cc/install/claude-code.cmd -o "%TEMP%\qcode.cmd" && "%TEMP%\qcode.cmd"
```

**For future PowerShell sessions (no admin rights needed):**

```powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
```

Особенности версии для Windows:

- Конфигурация записывается в **переменные окружения уровня пользователя** (Codex — в `%USERPROFILE%\.codex\`), старые значения автоматически сохраняются в резервную копию в `%USERPROFILE%\.qcode\`
- Если Node.js отсутствует, LTS-версия устанавливается через winget; если winget недоступен, скрипт подскажет, как установить вручную с [nodejs.org](https://nodejs.org/)
- После настройки конфигурация автоматически действует в **новых** окнах PowerShell / терминала; редакторы вроде VS Code нужно перезапустить один раз
- Если скрипт блокируется политикой выполнения, сначала выполните `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` и повторите попытку

## Что делает скрипт

1. **Выбор самого быстрого endpoint** — отправляет по одному лёгкому запросу на каждый из трёх endpoint (api / asia / us) и рекомендует самый быстрый (выбор можно изменить вручную)
2. **Запись конфигурации** — Claude Code: на macOS/Linux — управляемый блок в конфигурации shell, на Windows — переменные окружения уровня пользователя; Codex: `~/.codex/config.toml` + `auth.json` (модель по умолчанию выбирается на месте, рекомендуется `gpt-6-sol`)
3. **Установка окружения** (можно пропустить) — проверяет наличие Node.js ≥ 20, при отсутствии устанавливает LTS-версию через nvm (macOS/Linux) или winget (Windows), затем устанавливает CLI командой `npm install -g`; всё выполняется в каталоге пользователя
4. **Проверка соединения** — отправляет минимальный запрос с вашим ключом; при неудаче выдаёт целевые подсказки по устранению проблемы в зависимости от HTTP-кода состояния
5. **Резервное копирование перед записью** — все изменяемые файлы сначала копируются в `.bak.<метка времени>`; на Windows старые переменные окружения сохраняются в `%USERPROFILE%\.qcode\`

## Неинтерактивный режим (CI / без подтверждений)

macOS / Linux:

```bash
curl -fsSL https://qcode.cc/install/claude-code.sh | bash -s -- --key cr_xxx --yes
```

| Параметр | Описание |
|------|------|
| `--key <cr_...>` | API-ключ; если указан, интерактивный ввод пропускается |
| `--domain <api\|asia\|us>` | Явно задаёт endpoint, пропуская замер скорости |
| `--model <id>` | Codex: задаёт модель по умолчанию, пропуская меню выбора; Claude Code: закрепляет модель по умолчанию (пишет `ANTHROPIC_MODEL`) — без параметра используется модель по умолчанию самого Claude Code, которая обновляется вместе с ним |
| `--lang <zh\|en>` | Interface language (default: system locale) |
| `--target <app\|cli>` | (codex only) Config only / also install the CLI |
| `--yes` / `-y` | Все подтверждения принимают значения по умолчанию |
| `--no-install` | Только записать конфигурацию, не устанавливать Node / CLI |
| `--no-verify` | Пропустить проверку соединения |
| `--help` | Показать все параметры |

Вызов с параметрами на Windows (параметры соответствуют таблице выше: `-Key`, `-Domain`, `-Model`, `-Yes`, `-NoInstall`, `-NoVerify`):

```powershell
& ([scriptblock]::Create((irm https://qcode.cc/install/claude-code.ps1))) -Key cr_xxx -Yes
```

(для `codex.ps1` — аналогично)

## Какие файлы записываются / как выполнить откат

| Инструмент / платформа | Куда записывается | Способ отката |
|------|------|------|
| Claude Code (macOS/Linux) | Управляемый блок `# >>> qcode.cc claude-code >>>` в `~/.zshrc` или `~/.bashrc` | Удалить весь управляемый блок или восстановить из резервной копии `.bak.<метка времени>` в том же каталоге |
| Claude Code (Windows) | Переменные окружения уровня пользователя ×4 (`ANTHROPIC_BASE_URL` / `ANTHROPIC_AUTH_TOKEN` / `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` / `CLAUDE_CODE_AUTO_MODE_SERVER`; плюс `ANTHROPIC_MODEL` при использовании `-Model`) | Восстановить старые значения из `%USERPROFILE%\.qcode\backup-*.json` |
| Codex (все платформы) | `~/.codex/config.toml` + `~/.codex/auth.json` | Восстановить из резервной копии `.bak.<метка времени>` в том же каталоге |

Повторный запуск скрипта всегда безопасен: управляемый блок обновляется на месте, а файлы конфигурации сначала копируются в резервную копию и только потом перезаписываются.

## Частые вопросы

- **Проверка возвращает 401** — ключ недействителен или истёк: сверьте его в [консоли](https://qcode.cc/dashboard) (убедитесь, что префикс `cr_` скопирован полностью) и запустите скрипт заново
- **Проверка возвращает 404** — неверный адрес подключения: BASE_URL для Claude Code должен быть `https://{домен}/api`, для Codex — `https://{домен}/openai`, без слэша в конце
- **Сетевой таймаут** — запустите скрипт заново с другим endpoint (например, `--domain asia`); статус всех endpoint в реальном времени — на [probe.qcode.cc](https://probe.qcode.cc/)
- **После установки на Windows не находится команда claude / codex** — откройте новое окно PowerShell (PATH обновляется только в новой сессии)
- **Не хотите, чтобы скрипт устанавливал Node** — добавьте `--no-install` (Windows: `-NoInstall`), будет записана только конфигурация
- **Хотите сначала посмотреть содержимое скрипта** — просто откройте <https://qcode.cc/install/claude-code.sh> и прочитайте исходный код; скрипт не требует sudo / прав администратора и не пишет ни в какие системные каталоги
- **"The API key contains invalid characters"** — quotes / spaces / smart punctuation were pasted with the key. Copy it again from the [dashboard](https://qcode.cc/dashboard)
- **"You are running this script with sudo"** — sudo is not needed; it writes the config into root's home. Re-run without sudo
- **"Config was written, but verification did not pass"** — config files are in place, only the final connectivity check failed. Fix per the status code and re-run
- **Codex работает всё медленнее и повторяет «Reconnecting… / stream disconnected»** — обычно в сессии накопилось много скриншотов и изображений: Codex на каждом шаге заново отправляет весь диалог (со всеми изображениями), поэтому десятки скриншотов дают запросы по десятки МБ, которые медленный канал не успевает передать. Начните новую сессию командой `/new` (кратко опишите задачу); если сессия уже очень большая, не используйте `/compact` — запрос на сжатие тоже отправляет всю историю целиком. В дальнейшем вставляйте меньше скриншотов в одну сессию или предварительно уменьшайте их

## Codex: desktop App or CLI

The script asks which client you use:

1. **Codex desktop App** (default) — config files only, no Node.js / CLI install
2. **Codex CLI** — also applies to the App; installs Node.js and the CLI as needed

Non-interactive: `--target app` / `--target cli` (Windows: `-Target app` / `-Target cli`).

> ⚠️ `~/.codex/config.toml` is overwritten as a whole. Existing MCP servers / profiles are not
> preserved; restore them from the `.bak.<timestamp>` backup in the same directory.