Files
unlimitedcoding/codex/README.md
delta-cloud-208e 82830c971d fix(qwen): patch regional dashscope endpoints + inline validator
Qwen patcher had two issues:
1. Only patched dashscope.aliyuncs.com but missed regional endpoints
   (cn-hongkong, dashscope-intl, dashscope-us). Users in those regions
   would still hit Aliyun directly.
2. --validate raised ModuleNotFoundError (referenced removed updater/
   package). Replaced with self-contained inline checker — 13 GREEN
   targets covering cli.js markers, settings.json, env vars.

Also bump Codex version to v0.122.0 across all READMEs (was v0.116.0).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 10:26:55 +00:00

327 lines
11 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Codex CLI — Patched
Patched OpenAI Codex CLI for use with custom API endpoints.
Latest: **v0.122.0** (6 config patches).
> Codex CLI — это compiled Rust binary. В отличие от Claude Code и Gemini CLI (JavaScript),
> патчинг выполняется через `config.toml` + переменные окружения.
## Установка
### Требования
- **Python 3.11+** (для `tomllib`) — на Windows опционально (есть PowerShell-fallback)
- **curl** (Linux/macOS) или **PowerShell 5+** (Windows 10+ — встроенный)
- Поддерживаемые платформы: **Linux x86_64/aarch64**, **macOS x86_64/arm64**, **Windows x86_64**
### Установка одной командой
**Linux (Debian/Ubuntu/RHEL/Fedora):**
```bash
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.sh \
-o /tmp/ucodex_install.sh && sudo bash /tmp/ucodex_install.sh
```
**macOS (Intel & Apple Silicon):**
```bash
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.sh \
-o /tmp/ucodex_install.sh && sudo bash /tmp/ucodex_install.sh
```
> Бинарь устанавливается в `/usr/local/bin/.codex-bin`, wrapper — в `/usr/local/bin/codex`.
> Env vars (`OPENAI_API_KEY`, `OPENAI_BASE_URL`) пробрасываются через `launchctl setenv`
> и `~/.zshrc` / `~/.bashrc` (на Linux — `/etc/environment` + `/etc/profile.d/codex-env.sh`).
**Windows (PowerShell as Administrator):**
```powershell
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.ps1" -OutFile "$env:TEMP\ucodex_install.ps1" -Headers $h
. "$env:TEMP\ucodex_install.ps1"
```
**Windows (CMD as Administrator):**
```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.ps1' -OutFile \"$env:TEMP\ucodex_install.ps1\" -Headers $h; & \"$env:TEMP\ucodex_install.ps1\""
```
> Windows: бинарь ставится в `%LOCALAPPDATA%\Programs\codex\codex.exe` и автоматически
> добавляется в PATH пользователя. Env vars (`OPENAI_API_KEY`, `OPENAI_BASE_URL`) ставятся
> через `setx` + `[Environment]::SetEnvironmentVariable("...", "...", "User")`.
> **После установки перезапустите CMD/PowerShell** для подхвата env vars и PATH.
### Установка из репозитория (любая платформа)
```bash
git clone https://git.sensey24.ru/aibot777/unlimitedcoding.git
cd unlimitedcoding/codex
# 1) Настроить конфиг
cp codex_config.example.json codex_config.json
# Редактировать base_url и api_key в codex_config.json
# 2a) Linux/macOS:
sudo bash ucodex_install.sh
# 2b) Windows PowerShell (Administrator):
powershell -ExecutionPolicy Bypass -File ucodex_install.ps1
```
### Ручная установка (шаг за шагом, Linux/macOS)
**Шаг 1 — Установить бинарник Codex CLI:**
```bash
# Скачать последнюю версию с GitHub
sudo bash update-codex.sh
codex --version # Должно показать: codex-cli 0.122.0
```
**Шаг 2 — Настроить конфиг:**
```bash
cp codex_config.example.json codex_config.json
```
Отредактировать `codex_config.json`:
```json
{
"base_url": "https://your-api-endpoint.example.com",
"api_key": "YOUR_API_KEY",
"model": "gpt-5.2-codex"
}
```
**Шаг 3 — Применить патчи:**
```bash
sudo python3 codex_patcher.py --apply --config codex_config.json
```
Вывод:
```
Codex CLI Patcher
Version: 0.111.0
Binary: /usr/local/bin/codex
Proxy: https://your-api-endpoint.example.com
[OK] Target 1: base_url configured
[OK] Target 2: codex login: ok
[OK] Target 3: analytics disabled
[OK] Target 4: approval_policy=never, sandbox=danger-full-access
[OK] Target 5: model=gpt-5.2-codex, effort=high
[OK] Target 6: Set 2 env var(s) in /etc/environment
All patches applied successfully!
```
**Шаг 4 — Проверить:**
```bash
# Validate
python3 update_codex_patcher.py --validate
# Test
codex exec "What is 2+2? Reply with just the number"
```
## Обновление
### Одной командой
**Linux / macOS:**
```bash
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.sh \
-o /tmp/ucodex_update.sh && sudo bash /tmp/ucodex_update.sh
```
**Windows (PowerShell as Administrator):**
```powershell
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1" -OutFile "$env:TEMP\ucodex_update.ps1" -Headers $h
. "$env:TEMP\ucodex_update.ps1"
```
**Windows (CMD as Administrator):**
```cmd
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1' -OutFile \"$env:TEMP\ucodex_update.ps1\" -Headers $h; & \"$env:TEMP\ucodex_update.ps1\""
```
### Обновить бинарник Codex CLI вручную (Linux/macOS)
```bash
cd unlimitedcoding/codex
sudo bash update-codex.sh
```
Скрипт автоматически:
- Проверяет последнюю версию на GitHub
- Скачивает musl-совместимый бинарник
- Заменяет `/usr/local/bin/codex`
### Обновить конфиг-патчи (после обновления бинарника)
```bash
sudo python3 codex_patcher.py --apply
```
### Полный автоматический цикл
```bash
sudo python3 update_codex_patcher.py --auto
```
Выполняет: check → update binary → apply patches → validate → test.
### Обновить сам патчер (новая версия скриптов)
```bash
cd unlimitedcoding
git pull
cd codex
sudo python3 codex_patcher.py --apply
```
## Что патчится (6 targets)
| # | Target | Что делает |
|---|--------|------------|
| 1 | api_endpoint | Redirect API через `[model_providers.custom]` в config.toml |
| 2 | authentication | API key auth вместо ChatGPT OAuth (`codex login --with-api-key`) |
| 3 | telemetry | Отключить analytics: `[analytics] enabled = false` |
| 4 | permissions | `approval_policy = "never"`, `sandbox_mode = "danger-full-access"` |
| 5 | model_config | Модель, reasoning effort, отключить auto-update |
| 6 | system_env | `/etc/environment`: `OPENAI_BASE_URL`, `OPENAI_API_KEY` |
## Конфигурация
Файл `~/.codex/config.toml` (генерируется патчером):
```toml
model = "gpt-5.2-codex"
model_reasoning_effort = "xhigh"
model_provider = "custom"
approval_policy = "never"
sandbox_mode = "danger-full-access"
check_for_update_on_startup = false
forced_login_method = "api"
[analytics]
enabled = false
[model_providers.custom]
name = "custom"
base_url = "https://your-api-endpoint.example.com/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"
```
## Удаление (Uninstall)
**Linux / macOS:**
```bash
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_uninstall.sh \
-o /tmp/ucodex_uninstall.sh && sudo bash /tmp/ucodex_uninstall.sh
```
**Windows (PowerShell as Administrator):**
```powershell
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
Set-ExecutionPolicy Bypass -Scope Process -Force
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_uninstall.ps1" -OutFile "$env:TEMP\ucodex_uninstall.ps1" -Headers $h
. "$env:TEMP\ucodex_uninstall.ps1"
```
Удаляются: бинарь, `~/.codex/`, env vars, wrapper, PATH-запись.
## Rollback
Восстановить оригинальный конфиг:
```bash
python3 codex_patcher.py --rollback
```
## Troubleshooting
### "Error loading configuration: missing field `name`"
Обновите патчер (`git pull`) и перезапустите: `python3 codex_patcher.py --apply`
### codex не запускается (segfault / GLIBC) — Linux
Скрипт `update-codex.sh` скачивает musl-версию для совместимости. Если проблема остаётся:
```bash
file /usr/local/bin/.codex-bin
ldd /usr/local/bin/.codex-bin # Должно быть "not a dynamic executable" (static)
```
### macOS: "codex" cannot be opened because the developer cannot be verified
```bash
xattr -d com.apple.quarantine /usr/local/bin/.codex-bin
```
### Windows: "codex is not recognized"
Перезапустите CMD/PowerShell. Либо вручную обновите PATH в текущей сессии:
```powershell
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
```
### "OPENAI_API_KEY not set"
**Linux:**
```bash
source /etc/environment
# или
export OPENAI_BASE_URL="https://your-endpoint/v1"
export OPENAI_API_KEY="your-key"
```
**macOS:**
```bash
source /etc/codex-env.sh
# или перезайти в shell (zsh подхватит из ~/.zshrc)
```
**Windows (PowerShell):**
```powershell
[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "your-key", "User")
[System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "https://your-endpoint/v1", "User")
# Перезапустите PowerShell
```
**Windows (CMD):**
```cmd
setx OPENAI_API_KEY "your-key"
setx OPENAI_BASE_URL "https://your-endpoint/v1"
```
### Permissions промпты всё ещё появляются
Убедитесь что config.toml содержит `approval_policy = "never"`:
Linux/macOS: `cat ~/.codex/config.toml | grep approval`
Windows: `type %USERPROFILE%\.codex\config.toml | findstr approval`
## Структура файлов
```
codex/
├── codex_patcher.py # Главный патчер (6 targets)
├── codex_config.json # Ваш конфиг (не коммитить!)
├── codex_config.example.json # Пример конфига
├── update_codex_patcher.py # Pipeline CLI
├── update-codex.sh # Бинарный updater с GitHub
├── ucodex_install.sh # One-liner installer (Linux/macOS)
├── ucodex_install.ps1 # One-liner installer (Windows)
├── ucodex_update.sh # Update script (Linux/macOS)
├── ucodex_update.ps1 # Update script (Windows)
├── ucodex_uninstall.sh # Uninstaller (Linux/macOS)
├── ucodex_uninstall.ps1 # Uninstaller (Windows)
└── updater/
├── __init__.py
└── config_validator.py # Валидация 6 targets
```