# Reasonix через RouterAI: coding-агент на DeepSeek V4.1 Flash, GLM 5.3 и Claude

## Reasonix

Reasonix — открытый coding-агент для терминала с десктопным приложением и интеграцией с редакторами. Исходники лежат в репозитории [esengine/DeepSeek-Reasonix](https://github.com/esengine/DeepSeek-Reasonix), лицензия MIT, текущая версия CLI — 2.57.0. Устроен он как один Go-бинарник: движок, терминальный интерфейс, настольное приложение и ACP-сервер для редакторов работают поверх одной и той же локальной сессии.

Агент читает и правит файлы, запускает команды, ведёт план задачи, поддерживает скиллы, MCP-серверы и контрольные точки для отката изменений. Отдельно он считает расход: после каждого запроса показывает, сколько токенов ушло, сколько из них попало в кеш и во сколько это обошлось.

Reasonix ставит DeepSeek пресетом по умолчанию, но провайдеры задаются в конфиге: глобальный `~/.reasonix/config.toml`, проектный `reasonix.toml` в корне репозитория. Любой OpenAI-совместимый сервис — это одна запись в конфиге, поэтому RouterAI подключается без правки кода. В одном агенте получаете DeepSeek, GLM и Claude из [каталога моделей](/models), работу из России без VPN и оплату в рублях.

## Требования

- macOS, Linux или Windows (PowerShell, Git Bash или Windows Terminal)
- Node.js не нужен: `npm i -g reasonix` ставит готовый бинарник под вашу платформу
- API-ключ из [личного кабинета](/settings/keys)
- Go 1.26+ — только если собираете из исходников

## Установка

CLI и TUI:

```bash
npm i -g reasonix
reasonix --version
```

На macOS тот же бинарник ставится через Homebrew:

```bash
brew install esengine/reasonix/reasonix
```

Готовые архивы под `darwin|linux|windows × amd64|arm64` и `SHA256SUMS` лежат на странице [релизов](https://github.com/esengine/DeepSeek-Reasonix/releases).

Настольное приложение Reasonix Studio скачивается с [официальной страницы](https://reasonix.io/): `.dmg` для macOS, `.exe` или portable `.zip` для Windows, `.deb`, `.rpm` и `.AppImage` для Linux. Внутри тот же движок и тот же домашний каталог `~/.reasonix`, отдельная установка npm для него не требуется.

Расширение для VS Code ставится после CLI — оно запускает локальный `reasonix acp` и не содержит собственного бинарника:

- VS Code — из [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=SivanLiu.reasonix-agent)
- VSCodium и Eclipse Theia — из [Open VSX](https://open-vsx.org/extension/SivanLiu/reasonix-agent)

## Подключение к RouterAI

С версии 1.8.1 у Reasonix один домашний каталог: `~/.reasonix` на macOS и Linux, `%APPDATA%\reasonix` на Windows. Переопределяется переменной `REASONIX_HOME`. Внутри:

- `config.toml` — глобальный конфиг (CLI и Studio читают его оба);
- `.env` — ключи провайдеров;
- `skills/`, `commands/` и остальные пользовательские данные.

Проектный конфиг называется `reasonix.toml` и кладётся в корень проекта. Приоритет такой: флаги командной строки, затем `./reasonix.toml`, затем глобальный `config.toml`, затем встроенные значения.

### Мастер настройки

Быстрый путь — `reasonix setup`. Это пошаговый менеджер провайдеров: он показывает список подключений, умеет добавлять OpenAI- и Anthropic-совместимые сервисы, править адреса и списки моделей, проверять ключ и обновлять список моделей.

![reasonix setup: провайдер routerai — OpenAI-совместимый, 3 модели, ключ сохранён; пункты меню для добавления провайдера](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/f484677e6de63bf9bb40f06e481f9b7f.png)

Внутри интерактивной сессии тот же мастер открывается командой `/setup`, `/auth` — её псевдоним.

### Запись в конфиге

Провайдер RouterAI описывается блоком `[[providers]]`. Ключи в конфиге не хранятся — вместо значения указывается имя переменной в `api_key_env`, а сама переменная живёт в `<Reasonix home>/.env`:

```dotenv
ROUTERAI_API_KEY=sk-xxxxxxxxxxxxxxxx
```

Глобальный `~/.reasonix/config.toml`:

```toml
config_version = 12
default_model = "routerai/deepseek/deepseek-v4.1-flash"

[[providers]]
name        = "routerai"
kind        = "openai"
base_url    = "https://routerai.ru/api/v1"
models      = ["deepseek/deepseek-v4.1-flash", "deepseek/deepseek-v4-pro", "z-ai/glm-5.3"]
default     = "deepseek/deepseek-v4.1-flash"
api_key_env = "ROUTERAI_API_KEY"
```

Поля простые: `name` — идентификатор подключения, он же префикс в ссылке на модель; `kind = "openai"` — протокол OpenAI-совместимого чата; `base_url` — адрес API RouterAI с обязательным `/v1`; `models` — список id из каталога; `default` — модель, которую берёт сессия, если не указана другая; `api_key_env` — имя переменной с ключом.

![Файл ~/.reasonix/config.toml: провайдер routerai с base_url https://routerai.ru/api/v1, списком моделей и api_key_env](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/5551cec28f2ab92c4ad263d43576b40d.png)

Проектный вариант — тот же блок в `./reasonix.toml`. Отличие в одном: Reasonix запускает код из проектного конфига, поэтому такой файл нужно сначала одобрить.

```bash
reasonix trust --yes --allow-providers
```

Без этого предупреждения `ignored: it runs only after you approve it` остаются, и провайдер из проекта не применяется. После любой правки провайдера — адреса, ключа или модели — подтверждение запрашивается заново.

Ключи читаются только из `<Reasonix home>/.env`. Переменная окружения в шелле, `export` в `~/.zshrc`, проектный `.env` и связка ключей ОС провайдерными источниками не считаются — если ключ не виден, проверьте именно этот файл.

## Выбор модели

Id проверены по [каталогу RouterAI](/models); актуальные цены смотрите там же — они меняются.

| Модель | Для чего |
| --- | --- |
| `deepseek/deepseek-v4.1-flash` | Основная рабочая модель: правки, тесты, разбор кода; контекст 1M токенов |
| `deepseek/deepseek-v4-pro` | Сложные многошаговые задачи, где важно качество рассуждения |
| `z-ai/glm-5.3` | Альтернатива DeepSeek: длинный контекст, другой стиль правок |
| `anthropic/claude-sonnet-5.5` | Сложный рефакторинг и архитектурные решения |
| `anthropic/claude-haiku-5.5` | Быстрые мелкие запросы и вспомогательные подзадачи |

Сменить модель в сессии — команда `/model`, переключить провайдера — `/provider`. Обе открывают поиск по настроенным подключениям. Однократный запуск с другой моделью:

```bash
reasonix --model routerai/anthropic/claude-sonnet-5.5
```

Ссылка на модель состоит из имени провайдера и id из каталога. Две модели можно совмещать: исполнитель в `default_model` и планировщик в `[agent].planner_model` работают в отдельных сессиях и не мешают друг другу.

## Проверка подключения

Самый быстрый способ — одноразовый запуск без интерфейса:

```bash
cd ~/projects/invoices
reasonix run "Прогони npm test и покажи результат"
```

Команда выполнит запрос, покажет вызовы инструментов и вернёт ответ в терминал. Если ключ не найден, Reasonix сообщит об этом прямо: `no stored key for ROUTERAI_API_KEY`.

Интерактивная сессия запускается командой `reasonix` без аргументов. Задача формулируется обычным текстом, правки агент показывает диффом, команды просит подтвердить.

![Сессия Reasonix: diff правки invoices.js с функцией totalByCustomer, счётчик токенов turn и запрос разрешения на команду bash](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/e149f723064f13e6f71302d9be3640e4.png)

Для проверки без подтверждений на каждый шаг есть режимы разрешений: `--permission-mode acceptEdits` применяет правки файлов автоматически, `--permission-mode bypassPermissions` (он же `--yolo`) снимает запросы совсем, оставляя песочницу и правила запретов.

![Итог задачи в Reasonix: функция totalByCustomer, четыре зелёных теста npm test и статусная строка с моделью deepseek/deepseek-v4.1-flash](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/68e0cb170bd607c072a6f8430e72b25d.png)

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

### `no stored key for DEEPSEEK_API_KEY`

Reasonix взял пресет DeepSeek вместо вашего провайдера: в `default_model` осталась модель без префикса или проектный конфиг не одобрен. Проверьте, что в `default_model` стоит `routerai/<id модели>`, а провайдер виден в `reasonix setup`.

### `ignored: it runs only after you approve it`

Проектный `reasonix.toml` не подтверждён. Выполните `reasonix trust --yes --allow-providers` в каталоге проекта. Отдельного подтверждения мало: без флага `--allow-providers` провайдер, которому передаётся ключ, остаётся неодобренным.

### `bash sandbox requested but unavailable on this host`

Для запуска команд Reasonix использует bubblewrap. В контейнерах и на хостах без поддержки пространств имён он отказывается выполнять шелл «без изоляции». Варианты: поставить `bubblewrap`, либо отключить песочницу для bash в `[sandbox] bash = "off"` — осознанно, понимая, что команды пойдут без изоляции.

### `edit_file blocked by permission policy`

Неинтерактивный запуск (`reasonix run`) некому подтверждать правки. Запускайте с `--permission-mode acceptEdits` или опишите разрешения в `[permissions]`:

```toml
[permissions]
mode  = "allow"
allow = ["Bash(npm test:*)", "Bash(node --test:*)"]
```

Правило сравнивается с началом команды, поэтому `cd /work && npm test` под шаблон `Bash(npm test:*)` не подходит — нужен отдельный шаблон на `cd` либо запуск из нужного каталога.

### 401 или 404 от провайдера

401 — ключ не тот или не попал в `.env`. 404 — почти всегда адрес: для OpenAI-совместимого протокола нужен `https://routerai.ru/api/v1`, с `/v1`. Если сервис отвечает 402, закончились средства на балансе — пополните его в разделе [Биллинг](/settings/billing).

## Что дальше

- [Каталог моделей](/models) — цены и контекст всех доступных моделей
- [ACP (Agent Client Protocol)](/pages/acp-agent-client-protocol) — как редакторы общаются с агентом; Reasonix поднимает ACP-сервер командой `reasonix acp`
- [Codewhale через RouterAI](/pages/codewhale-routerai) и [Hermes Agent](/pages/hermes-agent-routerai) — другие терминальные агенты с любым Base URL
- [Документация Reasonix](https://github.com/esengine/DeepSeek-Reasonix/blob/main-v2/docs/CLI.md) — все подкоманды и слэш-команды
