diff --git a/README.en.md b/README.en.md index ce94e77..12a7856 100644 --- a/README.en.md +++ b/README.en.md @@ -38,6 +38,8 @@ The setup does not require administrator privileges or `sudo`. Codex Desktop int Claude Desktop is configured separately in the app's official Developer Mode → Configure Third-Party Inference screen. The installer does not silently change the app's private settings; follow the [Claude Desktop guide](https://neuroapi.host/docs/claude-desktop). If an older connection failed, follow the [reconnection guide](docs/reconnect-after-update.md) before retrying. +For a manual alternative, the [copy-and-paste guide (Russian)](docs/copy-paste-setup.md) lists the exact Windows/macOS file paths, Codex CLI and Claude Code snippets, Codex Desktop setup using the installer's protected credential helper, and the Claude Desktop form fields. It keeps the real key out of TOML and JSON. + ## Secret model - The key is never accepted as a setup command-line argument. @@ -66,6 +68,7 @@ Claude Code also uses the `haiku` alias for background work. If no recommended H - [Security model](docs/security.md) - [Manual setup and installed paths](docs/manual-setup.md) +- [Manual copy-and-paste setup (Russian)](docs/copy-paste-setup.md) - [Reconnect after an older failed setup](docs/reconnect-after-update.md) - [Troubleshooting](docs/troubleshooting.md) - [Codex guide](https://neuroapi.host/codex-api) diff --git a/README.md b/README.md index 09d3391..75cc54e 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,8 @@ bash setup-macos.command Если вы уже пробовали подключиться и получали ошибки, сначала пройдите [восстановление старой настройки](docs/reconnect-after-update.md). Оно сохраняет ваши проекты и помогает найти старый URL, профиль или источник ключа. +**Хотите настроить всё вручную?** В [инструкции с готовыми фрагментами](docs/copy-paste-setup.md) указаны точные пути для Windows и macOS, содержимое файлов Codex CLI и Claude Code, ручная настройка Codex Desktop с защищённым helper и поля формы Claude Desktop. Настоящий ключ вводится скрыто в терминале или в форме приложения; в TOML/JSON его вставлять не нужно. + ## Что именно делает установщик | Действие | Windows | macOS | @@ -142,6 +144,7 @@ Uninstaller удаляет только installer-owned файлы и локал - [Модель безопасности](docs/security.md) - [Ручная настройка и созданные файлы](docs/manual-setup.md) +- [Ручное подключение: что скопировать и что заменить](docs/copy-paste-setup.md) - [Как переподключиться после неудачной старой настройки](docs/reconnect-after-update.md) - [Решение проблем](docs/troubleshooting.md) - [Codex через NeuroAPI](https://neuroapi.host/codex-api) diff --git a/docs/copy-paste-setup.md b/docs/copy-paste-setup.md new file mode 100644 index 0000000..1d29e39 --- /dev/null +++ b/docs/copy-paste-setup.md @@ -0,0 +1,170 @@ +# Ручное подключение: какие файлы открыть и что вставить + +Эта альтернатива нужна, если вы хотите настроить клиенты сами. Для автоматического пути скачайте [установщик](../README.md#установка-в-один-запуск). Если уже пробовали подключение, сначала сохраните конфиги и пройдите [проверку старых настроек](reconnect-after-update.md). Команды ниже не записывают ключ в историю команд, TOML или JSON: его вводят скрыто в текущем терминале либо хранят через helper установщика. + +## Что заменить в шаблонах + +1. Создайте или откройте ключ на [странице API-ключей](https://neuroapi.host/login?redirect=/dashboard/tokens). Вводите **всю** строку, включая `sk-`, без слова `Bearer`. Не вставляйте настоящий ключ в примеры конфигов ниже. +2. Узнайте **точный ID** доступной ключу модели в [каталоге](https://neuroapi.host/price) или в ответе своего `/v1/models`. `gpt-6-sol` и `claude-sonnet-5-5` ниже — примеры, доступность которых зависит от вашего ключа и тарифа. Меняйте только значение `model` на фактически доступный ID. +3. Адрес Codex: `https://codex.neuroapi.host/v1`; адрес Claude: `https://claude.neuroapi.host`. Не дописывайте `/responses` или `/v1/messages` к **базовому** адресу клиента. + +| Клиент | Файл или экран | Что меняется | +|---|---|---| +| Codex CLI | `~/.codex/neuroapi-manual.config.toml` или `%USERPROFILE%\.codex\neuroapi-manual.config.toml` | `model`, `model_provider`, `base_url`, `env_key` | +| Codex Desktop | `~/.codex/config.toml` или `%USERPROFILE%\.codex\config.toml` | root `model`/`model_provider` и секция провайдера; нужен защищённый helper | +| Claude Code | отдельный `~/.claude/neuroapi-manual-settings.json` или `%USERPROFILE%\.claude\neuroapi-manual-settings.json` | `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL`; ключ только в терминале | +| Claude Desktop | `Developer → Configure Third-Party Inference` | Gateway URL, ключ и схема авторизации в форме приложения | + +Если задан `CODEX_HOME`, профиль **CLI** кладите в ``. Обычный GUI Codex Desktop настраивается в пользовательском `~/.codex/config.toml` (`%USERPROFILE%\.codex\config.toml` на Windows). Не создавайте для Codex provider только в проектном `.codex/config.toml`: текущий клиент игнорирует там эти параметры по соображениям безопасности. + +## Codex CLI без установщика + +### 1. Введите ключ скрыто + +macOS, Terminal (ключ вставляется **после** запуска команды и не попадает в историю): + +```bash +printf 'Ключ NeuroAPI: ' +read -r -s NEUROAPI_API_KEY +printf '\n' +export NEUROAPI_API_KEY +``` + +Windows, PowerShell: + +```powershell +$secret = Read-Host 'Ключ NeuroAPI' -AsSecureString +$ptr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret) +try { $env:NEUROAPI_API_KEY = [Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr) } +finally { [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ptr) } +Remove-Variable secret, ptr +``` + +Переменная существует только в этом терминале и его дочерних процессах. Не записывайте строку ключа через `export ...="sk-..."`, `setx` или в файл настроек. + +### 2. Создайте отдельный профиль + +macOS: `mkdir -p ~/.codex && nano ~/.codex/neuroapi-manual.config.toml`. Windows: `New-Item -ItemType Directory -Force "$HOME\.codex" | Out-Null; notepad "$HOME\.codex\neuroapi-manual.config.toml"`. Если установлен `CODEX_HOME`, откройте файл в нём. Вставьте весь блок: + +```toml +model = "gpt-6-sol" # замените только ID модели, если вашему ключу доступна другая +model_provider = "neuroapi_manual" +web_search = "disabled" + +[features] +multi_agent = false +goals = false +apps = false +browser_use = false + +[model_providers.neuroapi_manual] +name = "NeuroAPI" +base_url = "https://codex.neuroapi.host/v1" +wire_api = "responses" +supports_websockets = true +env_key = "NEUROAPI_API_KEY" +``` + +Сохраните файл и **из того же терминала** запустите `codex --profile neuroapi-manual`. В клиенте проверьте `/debug-config`, затем поручите короткую файловую задачу. При проблеме с WebSocket замените только `supports_websockets = true` на `false`, перезапустите CLI и повторите задачу по HTTP/SSE. При ручном профиле меню Codex может содержать модели, которых нет у вашего ключа; используйте точный ID из каталога. После работы закройте терминал либо выполните `unset NEUROAPI_API_KEY` (macOS) / `Remove-Item Env:NEUROAPI_API_KEY` (PowerShell). + +## Claude Code без установщика + +В **том же терминале**, где временно введён `NEUROAPI_API_KEY`, создайте отдельный файл настроек. macOS: `mkdir -p ~/.claude && nano ~/.claude/neuroapi-manual-settings.json`. Windows: `New-Item -ItemType Directory -Force "$HOME\.claude" | Out-Null; notepad "$HOME\.claude\neuroapi-manual-settings.json"`. Вставьте: + +```json +{ + "env": { + "ANTHROPIC_BASE_URL": "https://claude.neuroapi.host", + "ANTHROPIC_MODEL": "claude-sonnet-5-5" + } +} +``` + +Замените `claude-sonnet-5-5` точным доступным ID. Для запуска передайте ключ клиенту **только в текущей сессии**: + +macOS: + +```bash +export ANTHROPIC_API_KEY="$NEUROAPI_API_KEY" +claude --settings "$HOME/.claude/neuroapi-manual-settings.json" +``` + +Windows PowerShell: + +```powershell +$env:ANTHROPIC_API_KEY = $env:NEUROAPI_API_KEY +claude --settings "$HOME\.claude\neuroapi-manual-settings.json" +``` + +В Claude Code проверьте `/status`: `Anthropic base URL` должен быть `https://claude.neuroapi.host`, источник credential — `ANTHROPIC_API_KEY`. Если вывод показывает другой URL, `ANTHROPIC_AUTH_TOKEN`, `apiKeyHelper` или claude.ai login, найдите старое переопределение в `~/.claude/settings.json`, переменных среды или политике организации; не удаляйте весь файл. После работы удалите переменные `ANTHROPIC_API_KEY` и `NEUROAPI_API_KEY` из терминала или закройте его. Для постоянного безопасного доступа используйте helper установщика: простое копирование ключа в `settings.json` оставляет его открытым текстом. + +## Codex Desktop вручную с уже сохранённым ключом + +Для обычного запуска Desktop из Dock/Start временная переменная терминала не подходит. Ниже — ручное редактирование **после** запуска setup-файла без опции Codex Desktop: setup уже сохранил ключ в Keychain/DPAPI и создал helper. Если setup уже настроил Desktop, повторно вставлять блок не нужно. Если установщика вообще не было, сперва используйте его для защищённого сохранения ключа или подготовьте собственный credential helper; запись ключа прямо в `config.toml` здесь не предлагается. + +1. Полностью закройте Codex Desktop. Скопируйте существующий `config.toml` в резервную копию с датой. macOS: `cp -p ~/.codex/config.toml ~/.codex/config.toml.before-neuroapi-$(date +%Y%m%d-%H%M%S)` (если файла ещё нет, пропустите). Windows PowerShell: `Copy-Item "$HOME\.codex\config.toml" "$HOME\.codex\config.toml.before-neuroapi-$(Get-Date -Format yyyyMMdd-HHmmss)"` (если файл существует). +2. Проверьте наличие helper: macOS — `~/.local/share/neuroapi-agents/bin/get-neuroapi-key.sh`; Windows — `%LOCALAPPDATA%\NeuroAPIAgents\bin\get-neuroapi-key.ps1` и `%LOCALAPPDATA%\NeuroAPIAgents\secret\api-key.dpapi`. Не запускайте helper для диагностики с выводом на экран: он печатает секрет. +3. Откройте `~/.codex/config.toml` (Windows: `%USERPROFILE%\.codex\config.toml`). Если файл пустой, вставьте соответствующий блок ниже целиком. Если уже содержит настройки, **замените** существующие root `model` и `model_provider`, добавьте `web_search = "disabled"` в root, а секцию `[model_providers.neuroapi_manual_desktop]` с auth добавьте один раз в конец. Не создавайте второй `[features]`: обновите указанные поля внутри существующей секции. Не удаляйте другие провайдеры. + +macOS: в `command` замените `ИМЯ_ПОЛЬЗОВАТЕЛЯ` на имя домашней папки из `echo "$HOME"` (например, `roman`): + +```toml +model = "gpt-6-sol" +model_provider = "neuroapi_manual_desktop" +web_search = "disabled" + +[features] +multi_agent = false +goals = false +apps = false +browser_use = false + +[model_providers.neuroapi_manual_desktop] +name = "NeuroAPI" +base_url = "https://codex.neuroapi.host/v1" +wire_api = "responses" +supports_websockets = false + +[model_providers.neuroapi_manual_desktop.auth] +command = "/Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.local/share/neuroapi-agents/bin/get-neuroapi-key.sh" +timeout_ms = 5000 +refresh_interval_ms = 300000 +``` + +Windows: сначала выполните `$env:LOCALAPPDATA` в PowerShell. Подставьте **выведенный абсолютный путь** вместо `C:/Users/ИМЯ/AppData/Local` в обоих аргументах. В TOML удобно писать прямые слэши `/`; строку `%LOCALAPPDATA%` буквально вставлять нельзя: + +```toml +model = "gpt-6-sol" +model_provider = "neuroapi_manual_desktop" +web_search = "disabled" + +[features] +multi_agent = false +goals = false +apps = false +browser_use = false + +[model_providers.neuroapi_manual_desktop] +name = "NeuroAPI" +base_url = "https://codex.neuroapi.host/v1" +wire_api = "responses" +supports_websockets = false + +[model_providers.neuroapi_manual_desktop.auth] +command = "powershell.exe" +args = ["-NoLogo", "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-File", "C:/Users/ИМЯ/AppData/Local/NeuroAPIAgents/bin/get-neuroapi-key.ps1", "-SecretPath", "C:/Users/ИМЯ/AppData/Local/NeuroAPIAgents/secret/api-key.dpapi"] +timeout_ms = 5000 +refresh_interval_ms = 300000 +``` + +Также замените `model` на доступный ключу ID. Этот **ручной** Desktop-вариант не создаёт управляемый `model_catalog_json`, поэтому встроенный список моделей может содержать посторонние варианты. Перезапустите приложение, создайте **новую локальную** задачу и проверьте её в [истории NeuroAPI](https://neuroapi.host/dashboard/logs). Не удаляйте helper/ключ через uninstaller, пока Desktop-config ссылается на него. Если захотите перейти на автоматическое управление Desktop, сначала уберите ручную секцию и верните прежние root-настройки из сохранённой копии, затем повторите setup с опцией Desktop: иначе последующее удаление установщика может восстановить конфиг, который всё ещё ссылается на удаляемый helper. + +## Claude Desktop вручную + +Откройте приложение → `Developer` → `Configure Third-Party Inference`. В форме выберите inference provider `Gateway`, credential kind `Static API key`, укажите gateway base URL `https://claude.neuroapi.host`, вставьте **полный ключ** NeuroAPI в поле Gateway API key и выберите auth scheme `Bearer`. Сохраните, начните новый локальный чат и проверьте запрос в [истории NeuroAPI](https://neuroapi.host/dashboard/logs). Настройка Claude Code CLI на Desktop не переносится. Не редактируйте `claude_desktop_config.json`: это файл подключений MCP, а не настройки inference gateway. Подробности и актуальный вид формы: [наша инструкция](https://neuroapi.host/docs/claude-desktop) и [официальная инструкция Anthropic](https://claude.com/docs/third-party/claude-desktop/gateway). + +## После любой ручной настройки + +Проверьте реальную задачу и запись в [истории запросов NeuroAPI](https://neuroapi.host/dashboard/logs). Если запроса нет, клиент обращается к другому URL или использует другое удостоверение; проверьте `/debug-config` в Codex и `/status` в Claude Code. Если запрос есть, но завершился ошибкой, используйте [решение проблем](troubleshooting.md). Не публикуйте ключ, дамп полного конфига с секретами или raw HTTP-лог в issue. + +Имена полей сверены с [официальным справочником Codex](https://learn.chatgpt.com/docs/config-file/config-reference), [инструкцией Anthropic для Claude Code gateway](https://code.claude.com/docs/en/llm-gateway-connect) и [инструкцией Anthropic для Claude Desktop gateway](https://claude.com/docs/third-party/claude-desktop/gateway). diff --git a/docs/manual-setup.md b/docs/manual-setup.md index 0b1d34b..a8bd762 100644 --- a/docs/manual-setup.md +++ b/docs/manual-setup.md @@ -1,6 +1,6 @@ # Что настраивают установщики -Эта страница объясняет как выполнить настройку вручную и какие файлы создаёт автоматический установщик. Самый простой путь — [setup-файл для вашей ОС](../README.md#установка-в-один-запуск). Если старая настройка уже не работала, начните с [пошагового восстановления](reconnect-after-update.md). +Эта страница объясняет, как выполнить настройку вручную и какие файлы создаёт автоматический установщик. Самый простой путь — [setup-файл для вашей ОС](../README.md#установка-в-один-запуск). Если старая настройка уже не работала, начните с [пошагового восстановления](reconnect-after-update.md). Для самостоятельного копирования файлов и замены конкретных значений есть [пошаговые шаблоны](copy-paste-setup.md). ## Адреса и ключ @@ -71,7 +71,7 @@ claude В PowerShell эквивалентные команды — `$env:ANTHROPIC_API_KEY = $env:NEUROAPI_API_KEY`, `$env:ANTHROPIC_BASE_URL = 'https://claude.neuroapi.host'`, `$env:ANTHROPIC_MODEL = 'claude-sonnet-5-5'`, затем `claude`. Проверьте `/status` и `/model`. Старые `ANTHROPIC_AUTH_TOKEN`, Bedrock/Vertex/Foundry overrides и пользовательские settings могут иметь иной приоритет; [порядок восстановления](reconnect-after-update.md) помогает найти конфликт. При выходе из тестового терминала удалите временный ключ (`unset NEUROAPI_API_KEY ANTHROPIC_API_KEY` на macOS; `Remove-Item Env:NEUROAPI_API_KEY, Env:ANTHROPIC_API_KEY` в PowerShell) или просто закройте окно. -Codex Desktop не наследует переменную из терминала при обычном запуске через GUI. Для него выбирайте опцию в установщике либо [ручную настройку Desktop](https://neuroapi.host/docs/codex-desktop). Claude Desktop настраивается только в [официальной форме приложения](https://neuroapi.host/docs/claude-desktop). +Codex Desktop не наследует переменную из терминала при обычном запуске через GUI. Для постоянной настройки Desktop нужен credential helper, доступный приложению без терминала: безопасный готовый helper создаёт установщик. Точные пути и пример ручного `config.toml` после установки helper приведены в [пошаговых шаблонах](copy-paste-setup.md#codex-desktop-вручную-с-уже-сохранённым-ключом). Claude Desktop настраивается только в [официальной форме приложения](https://neuroapi.host/docs/claude-desktop). ## Codex CLI diff --git a/docs/reconnect-after-update.md b/docs/reconnect-after-update.md index b37b1ec..a44b93b 100644 --- a/docs/reconnect-after-update.md +++ b/docs/reconnect-after-update.md @@ -24,7 +24,7 @@ ### Вручную (если установщик не подходит) -Следуйте [ручной настройке](manual-setup.md): там приведены временный безопасный ввод ключа, профиль Codex и переменные Claude Code. Для Codex Desktop используйте [отдельную инструкцию](https://neuroapi.host/docs/codex-desktop), для Claude Desktop — [штатную форму приложения](https://neuroapi.host/docs/claude-desktop). Вручную настроенное меню моделей может отличаться от каталога, который получает managed launcher. +Следуйте [готовым ручным шаблонам](copy-paste-setup.md): там указаны точные пути, временный безопасный ввод ключа, профиль Codex и файл Claude Code для Windows/macOS. Для Codex Desktop там же есть шаблон с защищённым helper после setup; Claude Desktop подключается через штатную форму приложения. Вручную настроенное меню моделей может отличаться от каталога, который получает managed launcher. ## 3. Уберите старый конфликт точечно