01 Codex и Cursor: что выбрать
Это два разных инструмента с разными сценариями, и они хорошо работают вместе.
Codex — консольный агент OpenAI: запускается в терминале внутри папки проекта, сам открывает
нужные файлы, вносит правки, выполняет команды, тесты и git-операции. Cursor — редактор
на базе VS Code, где агенты встроены прямо в интерфейс: подсказки по ходу набора, правки по выделенному
фрагменту, отдельный агентский воркспейс и собственный CLI agent для терминала и скриптов.
| Критерий | Codex CLI | Cursor (редактор) | Cursor CLI (agent) |
|---|---|---|---|
| Что это | Агент в терминале, ставится одной командой | Редактор с агентами, вкладки, чат, агентское окно | Тот же агент Cursor, но в терминале |
| Где работает | Windows, macOS, Linux, WSL2 | Windows 10+, macOS 12+, Linux | macOS, Linux, WSL, Windows |
| Модели | Выбираются в конфиге, включая модели шлюза | Свои модели Cursor (подписка) либо собственные ключи провайдеров | Модели Cursor и режимы Agent / Plan / Ask |
| Работа через шлюз NeuroZal | Да: провайдер задаётся в config.toml | Официально не документирована подмена адреса API | Авторизация ключом Cursor |
| Сильные стороны | Скрипты и CI, точный контроль прав и песочницы, экономия на больших задачах | Скорость повседневной работы: подсказки, правка в контексте файла, визуальный diff | Автоматизация, ревью, запуск в пайплайнах |
| Кому подходит | Тем, кто живёт в терминале и хочет один ключ на все инструменты | Тем, кто работает с кодом визуально и любит контроль в редакторе | Тем, кто автоматизирует задачи и держит агента в скриптах |
Шлюз NeuroZal отдаёт OpenAI-совместимый API по адресу https://api.neurozal.ru/v1:
работают и /v1/chat/completions, и /v1/responses — тот самый протокол, которым
пользуется Codex. Вы получаете один ключ sk-… для Codex, Claude Code, Cursor через терминал,
SDK и своих скриптов, оплату в рублях и пополнение без абонентской платы. Ниже — рабочая настройка,
проверенная на живом шлюзе, и честные результаты проверки моделей.
02 Быстрый старт: 4 шага
Вся последовательность целиком — примерно на пять минут. Подробности по каждому шагу идут дальше.
# 1. Установить Codex CLI (Windows, PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
# 2. Сохранить ключ шлюза в переменную окружения и открыть новый терминал
setx NEUROZAL_API_KEY "sk-ваш-ключ-из-кабинета"
# 3. Указать провайдера и модель в файле ~/.codex/config.toml (см. шаг 3)
# 4. Перейти в проект, запустить агента и проверить связь
cd C:\путь\к\проекту
codex
/status
Дальше коротко: шаг 3 — подключение к шлюзу, Cursor: установка, таблица проверенных моделей, разбор ошибок.
03 Шаг 1. Установка Codex CLI
Codex CLI — консольный агент OpenAI: он запускается в каталоге проекта, сам читает файлы, вносит правки, выполняет команды и проверяет результат. Работает на Windows, macOS и Linux, интерфейс — обычный терминал плюс расширение для редактора, если нужно.
Поставить Codex
# установка
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
# обновление до свежей версии — та же команда
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
Установщик скачивает свежую сборку и кладёт её в профиль пользователя. После установки откройте новое окно терминала — путь к codex появится в переменной PATH.
# установка одной строкой
curl -fsSL https://chatgpt.com/codex/install.sh | sh
Подходит для macOS 12 и новее, Ubuntu 20.04+ и Debian 10+. На сервере без графики это основной способ: Codex работает и в headless-режиме.
npm install -g @openai/codex
Удобно, если Node.js уже стоит и вы держите CLI-инструменты через npm. Обновление — той же командой.
brew install --cask codex
# обновление
brew upgrade --cask codex
Для macOS через Homebrew: пакет ставится как --cask, дальше обновляется вместе с остальными программами.
Проверить установку
codex --version # версия, например: codex-cli 0.153.4
codex doctor # проверка установки, конфига и авторизации
codex --help # список подкоманд и флагов
Если codex --version отвечает номером версии — установка прошла. Команда codex doctor полезна, когда что-то не работает: она покажет, где лежит конфиг, настроена ли авторизация и видит ли Codex окружение.
Вход в аккаунт
При первом запуске Codex просит авторизоваться. Есть два пути:
- Аккаунт ChatGPT — командой
codex loginоткроется браузер, вход по вашей подписке. Так работают с официальным сервисом OpenAI. - Ключ API — авторизация ключом: либо переменная окружения для провайдера (наш случай, шаг 3), либо команда
codex login --with-api-key, которая читает ключ из stdin.
Статус входа в любой момент показывает codex login status, выйти — codex logout.
| Что нужно | Требование |
|---|---|
| Windows | Windows 11: нативный установщик, либо работа через WSL2 |
| macOS | 12 (Monterey) и новее |
| Linux | Ubuntu 20.04+ / Debian 10+ и совместимые сборки |
| Git | 2.23+ — рекомендуется: на нём держатся проверки и подготовка PR |
| Память | 4 ГБ минимум, 8 ГБ рекомендуется |
| Терминал | PowerShell, Terminal, iTerm2, любой современный эмулятор |
Оба варианта рабочие, но смешивать их не стоит: файлы проекта, ключи и конфиг должны жить в той среде,
где запускается codex. Если работаете в WSL2, держите проект внутри файловой системы
WSL — обращение к диску C: из Linux заметно медленнее, и агент будет тормозить на чтении файлов.
04 Шаг 2. Ключ NeuroZal
Ключ шлюза — это единственный секрет, который нужен Codex. Он подходит и для остальных инструментов: Cursor в терминале, SDK, Cline, OpenWebUI. Отдельная подписка OpenAI при этом не требуется.
Создать аккаунт и пополнить баланс
Регистрация и пополнение — в личном кабинете api.neurozal.ru/panel. Оплата в рублях, расход считается по факту запросов — агент списывает ровно столько, сколько потратил.
Создать ключ
В кабинете откройте раздел с ключами и создайте новый. Ключ выглядит как строка с префиксом sk-… и показывается целиком только один раз.
- Скопируйте сразу. Повторно значение не показывается — если потеряли, создайте новый ключ и удалите старый.
- Дайте понятное имя. Например,
codex-ноутбук— так видно, что за инструмент расходует баланс. - Храните в менеджере паролей. Ключ не место в репозитории и не в переписке: он даёт доступ к вашему балансу.
Проверить ключ до настройки агента
Быстрая проверка, что ключ живой и шлюз отвечает (подставьте свой ключ):
curl https://api.neurozal.ru/v1/models \
-H "Authorization: Bearer sk-ВАШ_КЛЮЧ"
curl.exe https://api.neurozal.ru/v1/models `
-H "Authorization: Bearer sk-ВАШ_КЛЮЧ"
В ответ придёт JSON со списком моделей — значит ключ и баланс в порядке. Ошибка 401 означает, что ключ скопирован не полностью или уже удалён.
Тот же ключ работает с Claude Code, Cursor, Cline, OpenWebUI и любым SDK, который умеет OpenAI-совместимый протокол. Баланс общий, поэтому расход по всем инструментам видно в одном месте кабинета.
05 Шаг 3. Подключение Codex к шлюзу
Codex умеет работать с любым OpenAI-совместимым провайдером: достаточно описать его в конфиге и указать,
откуда брать ключ. Шлюз NeuroZal поддерживает оба протокола OpenAI — /v1/responses и
/v1/chat/completions, поэтому Codex работает с ним «из коробки», без прослоек и прокси.
Где лежит конфиг
| Файл | Где | Что задавать |
|---|---|---|
config.toml (пользовательский) |
Windows: C:\Users\имя\.codex\config.tomlmacOS / Linux: ~/.codex/config.toml |
Провайдер, модель, права, MCP, профили — всё основное |
.codex/config.toml (проектный) |
В корне репозитория | Настройки конкретного проекта. Загружается только для проектов, которым вы доверяете |
Проектный слой намеренно не может переопределять провайдера и модель — это защита от «сюрпризов» в чужом репозитории. Провайдера задают один раз в пользовательском конфиге.
Конфиг шлюза
Откройте ~/.codex/config.toml (файл создаётся вручную, если его ещё нет) и добавьте:
# модель по умолчанию и провайдер
model = "gpt-5.5"
model_provider = "neurozal"
model_reasoning_effort = "medium"
# описание провайдера NeuroZal
[model_providers.neurozal]
name = "NeuroZal"
base_url = "https://api.neurozal.ru/v1"
env_key = "NEUROZAL_API_KEY"
wire_api = "responses"
Что здесь важно:
base_url— адрес шлюза с обязательным/v1на конце.env_key— имя переменной окружения, из которой берётся ключ. Сам ключ в конфиге не хранится.wire_api— протокол запросов. Поддерживается значениеresponses(по умолчанию, если не указывать).model— имя модели, которое понимает шлюз. Список — в разделе Модели шлюза.
Переменная окружения с ключом
# только для текущего окна терминала
$env:NEUROZAL_API_KEY = "sk-ВАШ_КЛЮЧ"
# постоянно — для всех новых окон
setx NEUROZAL_API_KEY "sk-ВАШ_КЛЮЧ"
# только для текущего окна
set NEUROZAL_API_KEY=sk-ВАШ_КЛЮЧ
# постоянно
setx NEUROZAL_API_KEY "sk-ВАШ_КЛЮЧ"
# только для текущей сессии
export NEUROZAL_API_KEY="sk-ВАШ_КЛЮЧ"
# постоянно, для новых терминалов
echo 'export NEUROZAL_API_KEY="sk-ВАШ_КЛЮЧ"' >> ~/.zshrc
После setx обязательно откройте новое окно терминала: переменная подхватывается при старте процесса, а уже запущенный Codex её не увидит.
Проверить связь
Самый быстрый способ убедиться, что ключ, адрес и модель настроены верно, — один неинтерактивный запрос:
codex exec "Ответь одним словом: работает" --skip-git-repo-check
Ответ модели в терминале означает, что Codex ходит через шлюз NeuroZal. Если вместо ответа приходит ошибка
авторизации, проверьте три вещи: переменная окружения задана в том же окне, ключ скопирован целиком,
в конфиге указано именно env_key = "NEUROZAL_API_KEY". Диагностика целиком — codex doctor.
Профили: несколько наборов настроек
Если нужно переключаться между «быстрым» и «глубоким» режимами, заведите отдельные файлы профилей в каталоге Codex. Профиль накладывается на основной конфиг поверх него:
model = "gpt-5.4-mini"
model_reasoning_effort = "low"
codex -p fast # запуск с профилем fast
codex -m gpt-5.6 # разово другая модель
codex -c model_reasoning_effort=high # разовое переопределение настройки
Флаг -c принимает пару «ключ=значение» из конфига и действует только на этот запуск — удобно, чтобы проверить настройку, не правя файл.
Второй способ авторизации
Если окружение менять не хочется, ключ можно сохранить во внутреннем хранилище Codex — команда читает его из stdin:
printenv NEUROZAL_API_KEY | codex login --with-api-key
codex login status
Выбирайте один способ: переменная окружения прозрачнее (видно, какой ключ используется), вход через codex login удобнее на машинах, где нет менеджера переменных.
Дополнительные настройки провайдера
Эти ключи описываются в том же блоке [model_providers.neurozal] и нужны в основном на медленных каналах:
| Ключ | Что делает |
|---|---|
name | Человеческое имя провайдера — показывается в интерфейсе |
base_url | Адрес API шлюза |
env_key | Имя переменной окружения с ключом |
wire_api | Протокол запросов: responses |
query_params | Дополнительные параметры строки запроса (пары ключ-значение) |
http_headers | Статические заголовки, если провайдер их требует |
request_max_retries | Сколько раз повторять неудачный запрос |
stream_max_retries | Сколько раз переподключаться к потоку ответа |
stream_idle_timeout_ms | Таймаут простоя потока: помогает на нестабильном соединении |
requires_openai_auth | Использовать авторизацию OpenAI (по умолчанию — нет) |
1. Не добавляйте блок [model_providers.openai] — встроенный провайдер
переопределить нельзя; чтобы сменить адрес для OpenAI-совместимого шлюза, опишите своего провайдера
с другим именем (как в примере выше).
2. Не указывайте ключ прямо в config.toml — только через env_key.
3. Не забывайте про /v1 в адресе: без него шлюз вернёт ошибку маршрута.
06 Шаг 4. Первый запуск
Codex запускается из каталога проекта — он работает с файлами вокруг себя, а не с абстрактным «чатом».
# зафиксировать текущее состояние — точка возврата перед экспериментами
cd C:\путь\к\проекту
git status
git add -A && git commit -m "чекпойнт перед работой с агентом"
# запустить агента
codex
При первом запуске в новом проекте Codex спросит, доверяете ли вы этому каталогу: только после подтверждения
он подхватывает проектный слой настроек .codex/config.toml и правила проекта. Это защита —
в чужом репозитории конфигурация не применяется автоматически.
Задача — обычными словами
«Расскажи про этот проект: стек, точки входа, как запускаются тесты» — рабочий первый запрос. Дальше формулируйте так, как объяснили бы коллеге.
Права видны и управляемы
Команда /permissions показывает активную песочницу и области записи. Меняется на ходу, без перезапуска.
Работу можно прервать
Esc останавливает текущий ход, транскрипт и правки остаются перед глазами. Диффы не применяются молча.
Результат коммитится
Закончили задачу — просмотрите git diff и закоммитьте. Так история остаётся читаемой, а откат — дешёвым.
Что набрать в первые минуты
| Команда | Зачем |
|---|---|
/status | Показать модель, провайдера, песочницу, каталог и активную сессию |
/model | Сменить модель внутри сессии, если задача требует другого класса |
/permissions | Посмотреть и изменить правила: что можно без подтверждения, где разрешена запись |
/approve | Ответить на запрос подтверждения, когда агент просит разрешение |
/clear | Начать тему с чистого контекста |
/exit | Выйти из сессии (или Ctrl+C) |
В /status в качестве провайдера виден ваш блок из конфига, а модель совпадает с той, что
указана в config.toml. Если там подставилась другая модель — значит где-то остался старый
профиль или переопределение через -c.
07 Codex: права, флаги и команды
В Codex две независимые настройки: спрашивать ли разрешение перед действием и насколько широк доступ к файлам и сети. Вместе они дают предсказуемое поведение — от «только чтение» до полной автоматизации.
Режимы подтверждений
| Значение | Поведение |
|---|---|
on-request | Агент сам решает, когда спросить подтверждение — по умолчанию для обычной работы |
never | Разрешения не спрашиваются: результат неудачной команды сразу возвращается модели. Подходит для изолированных сред и CI |
Уровни доступа (песочница)
| Значение | Что разрешено |
|---|---|
read-only | Только чтение: агент изучает проект и предлагает правки, но не применяет их |
workspace-write | Запись в рабочем каталоге — обычный режим для разработки |
danger-full-access | Полный доступ к файловой системе и сети. Только для сред, которые изолированы снаружи |
Задаются в конфиге или флагом на запуск:
approval_policy = "on-request" # когда спрашивать разрешение
sandbox_mode = "workspace-write" # насколько широк доступ
web_search = "cached" # cached | indexed | live | disabled
# Windows: нативная песочница (нужны права администратора)
[windows]
sandbox = "elevated"
Флаги запуска
| Флаг | Что делает |
|---|---|
-m, --model | Модель для этого запуска |
-s, --sandbox | read-only, workspace-write или danger-full-access |
-a, --ask-for-approval | on-request или never |
-C, --cd | Рабочий каталог, если запускаете Codex не из проекта |
--add-dir | Дополнительные каталоги, доступные на запись |
-i, --image | Приложить картинку к первому запросу: скриншот ошибки, макет, схему |
--search | Разрешить живые поисковые запросы в интернете |
-p, --profile | Запуск с профилем из отдельного файла конфига |
-c | Разовое переопределение любого ключа конфига |
--approve-for-me | Запросы подтверждений уходят на автоматическую проверку вместо вас |
--dangerously-bypass-approvals-and-sandbox
Снимает и подтверждения, и песочницу — команды агента выполняются без ограничений. Он предназначен только для окружений, которые изолированы снаружи (контейнер, отдельная виртуалка). На рабочей машине с доступом к боевым серверам и ключам такой запуск использовать нельзя.
08 Codex: сессия, команды и клавиши
Внутри сессии почти всё управляется слэш-командами — их 47, ниже самые нужные в работе.
Команды внутри сессии
| Команда | Что делает |
|---|---|
/model | Выбрать активную модель (и уровень рассуждений, если модель его поддерживает) |
/permissions | Настроить, что агент делает без подтверждения |
/approve | Разрешить повтор после автоматического отказа проверки |
/plan | Перейти в режим плана и, при желании, сразу отправить задачу |
/goal | Поставить, изменить, приостановить или снять цель задачи |
/diff | Показать git-диф, включая ещё не отслеживаемые файлы |
/review | Попросить агента отревьюить рабочее дерево |
/init | Создать заготовку AGENTS.md в текущем каталоге |
/mention | Приложить файл к чату |
/ide | Подтянуть контекст из редактора: открытые файлы, выделение |
/skills | Просмотреть и использовать навыки |
/mcp | Показать инструменты подключённых MCP-серверов |
/hooks | Посмотреть и настроить жизненные хуки |
/plugins · /apps | Плагины и внешние приложения-коннекторы |
/memories | Настроить использование и создание памяти |
/compact | Сжать видимый диалог в сводку, освобождая контекст |
/clear | Очистить терминал и начать новый чат |
/new · /fork | Новый чат в той же сессии / ответвление текущего |
/resume | Продолжить сохранённый чат из списка сессий |
/status | Показать конфигурацию сессии и расход токенов |
/usage | Посмотреть расход по аккаунту |
/ps · /stop | Фоновые терминалы и их вывод / остановить их |
/copy | Скопировать последний готовый ответ |
/theme · /keymap · /vim | Тема подсветки, горячие клавиши, режим Vim |
/exit | Выйти из сессии |
Горячие клавиши
| Действие | Что происходит |
|---|---|
@ | Поиск файла в проекте — путь подставляется в запрос |
! в начале строки | Выполнить локальную команду оболочки с текущими правами и песочницей |
Tab во время работы | Поставить в очередь следующий запрос или команду |
Enter во время работы | Вклинить уточнение в текущий ход, не дожидаясь конца |
Ctrl+R | Поиск по истории запросов |
Ctrl+O | Скопировать последний готовый вывод |
Esc дважды на пустом вводе | Отредактировать прошлое сообщение и ответвиться от него |
Ctrl+C | Закрыть сессию (то же, что /exit) |
09 Codex вне сессии: подкоманды
Кроме интерактивного запуска codex есть отдельные команды — они и делают агента частью рабочего процесса.
| Команда | Назначение |
|---|---|
codex exec | Запуск без интерфейса: разовая задача или пайплайн |
codex review | Ревью без интерфейса: изменения, коммит или ветка |
codex apply | Применить последний диф агента через git apply |
codex resume · codex fork | Продолжить прошлую сессию / сделать её ответвление |
codex login · codex logout | Вход и выход, codex login status — проверка состояния |
codex mcp | Подключение внешних MCP-серверов: list, add, remove, login |
codex plugin | Управление плагинами |
codex mcp-server | Сам Codex как MCP-сервер для других приложений |
codex doctor | Диагностика установки, конфига, авторизации и окружения |
codex sandbox | Запустить команду внутри песочницы Codex |
codex completion | Автодополнение для вашей оболочки |
codex update | Обновление до свежей версии |
codex cloud | Задачи из Codex Cloud и перенос результата локально |
codex features · codex debug | Флаги возможностей и отладочные инструменты |
Разовая задача без интерфейса
# одна задача без интерактивного интерфейса
codex exec "прогони тесты и почини то, что упало"
# машиночитаемый прогресс + человеческая сводка в файл (для CI)
codex exec --json -o summary.md "проверь сборку и опиши риски"
# запуск вне git-репозитория и без сохранения сессии
codex exec --skip-git-repo-check --ephemeral "почисти временные файлы"
Для работы без человека держите --sandbox workspace-write: агент останется внутри проекта.
Если нужно больше каталогов — добавляйте их через --add-dir, а не открывайте полный доступ
(danger-full-access). И держите пару --json вместе с
--output-last-message: первое даёт машинный лог, второе — понятную сводку для отчёта.
10 Cursor: установка и первый проект
Cursor — редактор кода на базе VS Code со встроенными агентами: вы работаете в привычном интерфейсе, а изменения агент показывает прямо в файлах. Отдельно от редактора существует Cursor CLI — тот же агент из терминала (о нём — следующий раздел).
- Windows 10 и новее — нативный установщик
.exeс официального сайта. - Альтернатива: сборка под Windows в приложении Winget или ручная распаковка архива.
После установки: войти в аккаунт и открыть папку проекта (File → Open Folder).
- macOS 12 (Monterey) и новее, установщик
.dmg, поддержка Apple Silicon и Intel.
Первый запуск предложит перенести настройки и расширения из VS Code — это ускоряет старт, но не обязательно.
Debian и Ubuntu (рекомендуемый способ):
# ключ репозитория
curl -fsSL https://downloads.cursor.com/keys/anysphere.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/cursor.gpg > /dev/null
# подключить репозиторий
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/cursor.gpg] https://downloads.cursor.com/aptrepo stable main" | sudo tee /etc/apt/sources.list.d/cursor.list > /dev/null
# установка
sudo apt update
sudo apt install cursor
Для RHEL и Fedora у Cursor есть отдельный репозиторий (файл /etc/yum.repos.d/cursor.repo) — актуальные команды держите на странице загрузки.
Первый проект
- Откройте папку с кодом и дождитесь индексации — по ней агент ищет файлы и понимает структуру.
- Войдите в аккаунт Cursor: без него редактор работать не будет.
- Задайте правила проекта (файл
AGENTS.mdв корне) — это же описание читает и Codex. - Начните с небольшой задачи: «объясни, как этот сервис обрабатывает заказы». Спросите до правок — так виднее, правильно ли агент понял проект.
Cursor — отдельный платный продукт со своей подпиской и своими моделями: аккаунт Cursor нужен всегда. Свой ключ (Bring Your Own Key) добавляется в настройках Cursor Settings → Models и доступен для провайдеров OpenAI, Anthropic, Google, Azure и AWS Bedrock; он расходуется только на чат-модели, автодополнение кода работает на моделях Cursor. Подмена адреса API сторонним шлюзом в документации Cursor не описана — поэтому надёжный способ использовать ключ NeuroZal вместе с Cursor: держать редактор на своём тарифе, а Codex CLI (или другой агент из терминала) запускать во встроенном терминале Cursor, где он работает через шлюз с вашим ключом.
11 Cursor: режимы работы
Режимы задают, что агенту разрешено делать прямо сейчас. Переключение — Shift+Tab или слэш-команда.
| Режим | Что делает | Как включить |
|---|---|---|
| Agent | Полный доступ к инструментам: правки файлов, команды, поиск — для обычной работы | Режим по умолчанию |
| Plan | Сначала разбор задачи и план, вопросы к вам — правок нет, пока план не согласован | Shift+Tab, /plan |
| Ask | Только чтение и объяснения: разобраться в коде без изменений | /ask |
Начинайте с плана
Задача больше одной правки — включите Plan: вы увидите список шагов, спорные места и вопросы до того, как код начнёт меняться.
Контекст через @
Файлы, каталоги и правила подключаются упоминанием: @имя-файла, @правило. Так агент не ищет наугад.
Автодополнение рядом
Автодополнение кода работает отдельно от чата и остаётся включённым даже когда подключён свой ключ API.
Проверяйте команды
Команды в терминале агент предлагает с подтверждением. Точку невозврата лучше не открывать: держите проект под git.
Как формулировать задачи агенту
- Один результат на запрос. «Починить checkout в тестах» отдельно от «отрефакторить модуль оплаты» — так проще проверять.
- Просите сначала объяснить. «Сначала опиши причину, потом правь» отсекает правки наугад.
- Задавайте границы. «Меняй только файлы в
src/api», «не трогай миграции» — агент остаётся в рамках. - Требуйте проверку. «Запусти тесты и покажи результат» — иначе агент считает задачу сделанной после правки.
12 Cursor CLI: агент в терминале
Отдельная программа agent — тот же агент Cursor, но из командной строки. Удобна, когда проект открыт по SSH, или когда задача должна идти из скрипта.
Установка
# macOS, Linux, WSL
curl https://cursor.com/install -fsS | bash
# Windows (PowerShell)
irm 'https://cursor.com/install?win32=true' | iex
# запуск
agent
Вход
# вход через браузер (рекомендуется)
agent login
agent status
# для скриптов и CI — ключ аккаунта Cursor
export CURSOR_API_KEY="ваш_ключ" # ключ берётся в панели Cursor → API Keys
agent "реализуй авторизацию пользователей"
# или ключ разово флагом
agent --api-key "ваш_ключ" "исправь падающий тест"
Если браузер не открывается, добавьте NO_OPEN_BROWSER=1 перед agent login — команда напечатает ссылку, которую можно открыть вручную.
Режимы и запуск без интерфейса
| Что нужно | Команда |
|---|---|
| Интерактивная сессия | agent |
| Сессия сразу с задачей | agent "задача текстом" |
| Режим плана | Shift+Tab, /plan, --plan |
| Режим вопросов (без правок) | /ask, --mode=ask |
| Разовая задача без интерфейса | agent -p "найди и исправь проблемы производительности" --model "gpt-5" |
| Понятный вывод для скрипта | agent -p "проверь изменения на уязвимости" --output-format text |
| Песочница | /sandbox или --sandbox enabled|disabled |
Настройки песочницы и доступа к сети сохраняются между сессиями, поэтому переключать их каждый раз не нужно.
Сессии и продолжение работы
agent ls # список прошлых чатов
agent resume # продолжить последний
agent --continue # продолжить предыдущую сессию
agent --resume="chat-id" # продолжить конкретный чат
Кнопка переноса работы в облако есть и в CLI: если начать сообщение с символа &, задача уйдёт в Cloud Agent и продолжит выполняться, пока вас нет за компьютером. Вернуться к ней можно с сайта или из мобильного приложения.
Настройки CLI
| Файл | Что можно настроить |
|---|---|
~/.cursor/cli-config.json | Основные настройки CLI: режим Vim, канал обновлений, модель, уведомления |
C:\Users\имя\.cursor\cli-config.json | Тот же файл в Windows |
проект/.cursor/cli.json | Только правила разрешений — они применяются к конкретному проекту |
Каталог настроек можно перенести переменной CURSOR_CONFIG_DIR, если нужно держать разные профили. В JSON-выводе режима -p видно, откуда взят ключ (apiKeySource: env, flag или login) — удобно для диагностики в CI.
13 Правила проекта: AGENTS.md и .cursor/rules
Правила — это то, что агент читает перед работой. Один раз описали договорённости команды — и агент соблюдает их без напоминаний в каждом запросе: язык комментариев, стиль, запретные зоны, как запускать тесты.
AGENTS.md — общий файл для Cursor и Codex
Простой markdown в корне проекта. Cursor читает его из корня и из подкаталогов, Codex — как инструкции проекта
(команда /init создаёт заготовку). Если правил немного, начните именно с него.
# Проект: сервис заказов
## Стек
Python 3.11, FastAPI, PostgreSQL, тесты на pytest.
## Как проверять изменения
- Запуск тестов: `pytest -q`
- Линтер: `ruff check .`
- Перед коммитом обязательно зелёный прогон тестов.
## Правила кода
- Комментарии и докстринги — на русском.
- Публичные функции возвращают типизированные модели, не словари.
- Не менять миграции: только добавлять новые.
## Запрещено
- Править файлы в `deploy/` и `.env*`.
- Выполнять команды git push и что-либо с боевыми адресами.
Правила Cursor: файлы .mdc с настройками охвата
Проектные правила лежат в .cursor/rules и версионируются вместе с кодом. Файл должен иметь
расширение .mdc — обычный .md в этом каталоге правила-система игнорирует.
| Тип правила | Когда срабатывает |
|---|---|
alwaysApply: true | В каждом диалоге, без исключений |
globs: … | Автоматически, когда в контексте файлы по маске |
только description | Агент решает сам, что правило уместно |
| без метаданных | Только при упоминании в чате: @имя-правила |
---
description: Правила для эндпоинтов API
globs: src/api/**
alwaysApply: false
---
- Каждый эндпоинт описан схемой ответа.
- Ошибки возвращаются в едином формате: код, сообщение, детали.
- Валидация входных данных — до обращения к базе.
Правила Codex: политика команд
У Codex отдельный механизм — файлы .rules (формат Starlark) в каталоге
rules/ рядом с активным конфигом, например ~/.codex/rules/default.rules.
Они описывают, какие команды разрешены, а какие требуют подтверждения. Когда вы в сессии отвечаете
«разрешить всегда», Codex сам дописывает правило в пользовательский файл — дальше такие команды уже не спрашивают.
Сначала AGENTS.md — что за проект и как его проверять. Потом правила Cursor для отдельных
зон кода. И только затем политика команд Codex: она нужна, когда вы регулярно повторяете одни и те же
разрешения.
14 Навыки: свои сценарии одной командой
Навык — папка с файлом SKILL.md: описание и пошаговая инструкция. Агент подключает её, когда
задача совпадает с описанием. Так повторяющиеся процедуры перестают быть «простыней в чате» и становятся
частью проекта.
Где лежат навыки
| Инструмент | Проект | Личные (на машине) |
|---|---|---|
| Cursor | .cursor/skills/, .agents/skills/ | ~/.cursor/skills/, ~/.agents/skills/ |
| Codex | .agents/skills/ | ~/.agents/skills/, /etc/codex/skills/ (системные) |
Проектные навыки попадают в репозиторий и работают у всей команды. Личные остаются на вашей машине: Cursor не переносит их в облачные агенты автоматически, а Codex подхватывает только из домашнего каталога Codex.
---
name: release
description: Подготовить релиз: тесты, changelog, тег, черновик PR
---
1. Запусти `pytest -q` и `ruff check .` — при ошибках остановись.
2. Собери changelog из git-лога с последнего тега, сгруппируй по типам.
3. Обнови версию в `pyproject.toml` и `CHANGELOG.md`.
4. Создай тег и черновик PR с описанием изменений.
5. Ничего не публикуй без подтверждения.
Как вызвать
- Cursor: навык подключается автоматически по описанию; команда
/create-skillпомогает создать структуру,/migrate-to-skillsпереносит подходящие правила в навыки. - Codex:
/skillsпоказывает доступные навыки, вызов — по имени в запросе (символ$перед именем).
Всё, что вы объясняете агенту второй раз: порядок релиза, чек-лист ревью, разбор инцидента, генерация отчёта, подготовка карточек товара. Первый раз — обычный запрос, второй раз — пора заводить навык.
15 Хуки: автоматика вокруг агента
Хук — внешняя программа, которую агент запускает на определённых событиях. Она получает данные по stdio в формате JSON и может ответить: пропустить, спросить подтверждение или запретить. Так в цикл работы агента встраиваются ваши правила — без надежды на память модели.
Где задаются (Cursor)
| Файл | Область | Откуда запускаются скрипты |
|---|---|---|
~/.cursor/hooks.json | Личные, для всех проектов | Из каталога ~/.cursor/ |
проект/.cursor/hooks.json | Только этот проект | Из корня проекта |
Обратите внимание на пути: в личных хуках пишут ./hooks/format.sh, в проектных — .cursor/hooks/format.sh.
{
"version": 1,
"hooks": {
"afterFileEdit": [{ "command": "./hooks/format.sh" }]
}
}
Основные события
| Событие | Когда срабатывает |
|---|---|
beforeSubmitPrompt | Перед отправкой вашего запроса агенту |
beforeReadFile | Перед чтением файла агентом |
beforeShellExecution · afterShellExecution | До и после запуска команды в терминале |
afterFileEdit | После правки файла — сюда вешают форматтеры и линтеры |
afterAgentResponse · afterAgentThought | После ответа и после хода рассуждения агента |
beforeMCPExecution · afterMCPExecution | Вокруг вызовов внешних MCP-инструментов |
Что ими решают на практике
- Форматирование после правок. Агент закончил файл — хук запустил форматтер, и код всегда в едином стиле.
- Защита секретов. Хук перед записью файла проверяет, не попал ли в него ключ или пароль, и блокирует правку.
- Гейт опасных операций. Запись в базу, удаление каталогов, отправка писем — всё, что требует вашего решения.
- Аналитика. Запись событий в журнал: какие инструменты агент вызывает и где тратит время.
Если один и тот же хук возвращает разные ответы из разных источников, побеждает более строгий: запрет сильнее запроса подтверждения, подтверждение сильнее разрешения.
Жизненные хуки смотрят и настраивают командой /hooks; запуск хуков требует подтверждённого
доверия к источнику, поэтому включать их нужно осознанно. Команда /create-hook в Cursor
помогает сгенерировать файл настроек и скрипт.
16 MCP: подключение внешних сервисов
MCP (Model Context Protocol) — общий способ отдать агенту доступ к внешним данным и действиям: базе знаний, тикетам, документации, внутренним API. Оба инструмента поддерживают его, отличаются только файлы настроек.
Cursor
| Файл | Область действия |
|---|---|
.cursor/mcp.json | Только этот проект (файл можно положить в репозиторий) |
~/.cursor/mcp.json | Все проекты на машине |
Поддерживаются локальные серверы (запускаются как процесс) и удалённые — по SSE или Streamable HTTP, с авторизацией через OAuth.
{
"mcpServers": {
"files": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
},
"docs": {
"url": "https://mcp.example.com"
}
}
}
Codex
Серверы описываются таблицами в ~/.codex/config.toml или в проектном .codex/config.toml:
[mcp_servers.files]
command = "npx" # команда запуска сервера
args = ["-y", "@modelcontextprotocol/server-filesystem", "."]
env = { LOG_LEVEL = "info" } # переменные для процесса
[mcp_servers.docs]
url = "https://mcp.example.com" # удалённый сервер
Управлять можно и командами: codex mcp add, codex mcp list, codex mcp remove, а для серверов с авторизацией — codex mcp login.
Всё, что подключено через MCP, агент видит как обычные инструменты. Поэтому подключайте только серверы, которым доверяете, выдавайте ключи с минимальными правами и храните их в переменных окружения, а не в файле настроек.
17 Разрешения и безопасность
Агент с доступом к терминалу может сделать всё, что можете вы. Поэтому доступ выдаётся по задаче, а не «на всякий случай»: сначала только чтение, потом запись в проекте, и лишь для изолированных сред — полный доступ.
Рабочие сочетания в Codex
| Задача | Подтверждения | Песочница |
|---|---|---|
| Разобраться в незнакомом проекте | on-request | read-only |
| Обычная разработка | on-request | workspace-write |
| Автономная работа в контейнере | never | workspace-write |
| Разовые доверенные скрипты | never | danger-full-access — только в изолированной среде |
Нужен доступ к соседним каталогам — добавляйте их точечно флагом --add-dir, вместо того чтобы
открывать всю файловую систему. На Windows песочница включается в конфиге: [windows] sandbox = "elevated"
(режим unelevated — запасной, если нет прав администратора).
Права в Cursor CLI
В cli-config.json есть списки permissions.allow и permissions.deny:
что разрешено без запроса, а что запрещено всегда. Из проекта настраивается только этот раздел —
файл проект/.cursor/cli.json держится в репозитории и задаёт правила для команды.
Плюс режим песочницы: --sandbox enabled ограничивает команды агента, а доступ к сети
включается отдельно.
Гигиена ключей
- Отдельный ключ на инструмент. Ключ шлюза для Codex не стоит использовать ещё и в скриптах выгрузки: если он утечёт, отзывать придётся в одном месте, а не везде.
- Ключи — только в переменных окружения. Файлы конфигов часто попадают в бэкапы и синхронизацию; ключ в
config.toml— плохая идея. - Проверяйте расход. Команды
/status,/usageв Codex и дашборд шлюза показывают, сколько уходит на задачи — аномалия видна сразу. - Не давайте агенту боевые доступы. Токены продакшена, ключи платёжных систем и SSH-доступы держите вне рабочего окружения агента.
Не запускайте Codex с флагом --dangerously-bypass-approvals-and-sandbox вне изолированного
окружения и не добавляйте в правила «разрешить всё, что просит агент». Скилл или правило из чужого
репозитория — это тоже код: сначала прочитайте, потом разрешайте.
18 Автоматизация и CI
Оба инструмента умеют работать без человека. Это самый практичный сценарий: агент выполняет повторяющуюся проверку или рутину, а вы читаете короткий отчёт вместо логов.
Codex: разовые задачи и конвейеры
# зависимости и агент
npm install -g @openai/codex
# ключ шлюза приходит из секретов CI
export NEUROZAL_API_KEY="$NEUROZAL_API_KEY"
# задача без интерфейса: машинный лог + сводка в файл
codex exec --json -o summary.md \
--sandbox workspace-write \
"прогони тесты и линтер; если что-то падает — почини только причину падения,
ничего не рефактори; в конце опиши, что менял"
cat summary.md
Флаг --output-schema принимает файл со схемой JSON — тогда финальный ответ агента приходит
в нужной структуре, и его можно сразу разбирать скриптом. Флаг --ephemeral не сохраняет сессию
на диск, а --skip-git-repo-check позволяет запускать задачу вне репозитория.
Ревью изменений
# Codex: ревью без интерфейса — по незакоммиченным правкам, коммиту или ветке
codex review
# Cursor CLI: то же самое, но с понятным выводом в терминал
agent -p "проверь изменения на уязвимости и регрессии" --output-format text
Ревью не меняет рабочее дерево: агент сообщает находки по приоритету, а решение остаётся за вами.
Что автоматизировать в первую очередь
| Задача | Чем запускать |
|---|---|
| Ночная проверка сборки и тестов | codex exec по расписанию, отчёт в файл или в мессенджер |
| Ревью каждого pull request | codex exec или agent -p в задании CI |
| Разбор журналов падений | codex exec с путём к логу в запросе |
| Рутинные правки по списку файлов | codex exec --sandbox workspace-write с ограничением каталога |
В CI ключ живёт только в секретах и не попадает в логи. Песочница — workspace-write,
полный доступ не открывается никогда. Агент не должен уметь публиковать: пусть создаёт правки и отчёт,
а «нажимает кнопку» отдельный шаг, который вы контролируете.
19 Модели шлюза: что проверено
Шлюз NeuroZal отдаёт два интерфейса, и Codex умеет работать с обоими: /v1/chat/completions
(классический формат чата) и /v1/responses (формат Responses, который Codex использует по
умолчанию). На живом шлюзе проверено: ответ приходит, потоковая передача работает, вызов инструментов
(tool use) возвращается корректно в обоих интерфейсах.
В конфиге достаточно указать wire_api = "responses" — ничего обходить и «подделывать»
под OpenAI не нужно. Протокол шлюза совпадает с протоколом, к которому Codex обращается у провайдера
по умолчанию.
Кого выбирать под задачи
| Модель | Для чего | Проверка на шлюзе |
|---|---|---|
gpt-5.5 | Основная рабочая модель: правки, отладка, рутина в проекте | Ответ, поток, инструменты — ок |
gpt-5.6 | Задачи побольше: разбор модуля, рефакторинг под тесты | Ответ — ок |
gpt-5.6-reasoning | Архитектура и сложные баги, где важен ход рассуждений | Ответ — ок |
gpt-5.5-reasoning | Глубокий разбор без спешки | Ответ — ок |
gpt-5.4 · gpt-5.4-mini | Быстрые правки и мелкие задачи: скорость важнее глубины | Ответ — ок |
claude-sonnet-5 · claude-opus-4.8 | Второе мнение по коду, работа с большими текстами и документами | Ответ, инструменты — ок |
gemini-3.8-flash | Быстрые ответы и длинный контекст | Ответ — ок |
deepseek-v4-flash · deepseek-v4-pro | Массовые дешёвые операции: сверки, разбор логов, черновики | Ответ — ок |
grok-4.6 | Независимый взгляд на задачу | Ответ — ок |
Как выбрать модель на практике
- Начните с
gpt-5.5— на нём проверена и работа с инструментами, и потоковая передача. - Тяжёлую задачу («почему падает прод», «спроектируй схему миграции») отправляйте на reasoning-модель: думает дольше, ошибается меньше.
- Мелочь и повтор — на быстрых моделях: не нужно платить за рассуждения там, где их не читают.
- Переключайтесь на ходу командой
/modelвнутри сессии или флагом-mпри запуске.
Актуальный состав моделей и цены — в каталоге Модели и цены. Если модель есть в списке, но отвечает ошибкой провайдера — это видно сразу по тексту ошибки, и об этом стоит написать в поддержку: канал быстро приводится в рабочее состояние.
20 12 рабочих рецептов
Формулировки, которые дают предсказуемый результат и в Cursor, и в Codex. Копируйте и меняйте под свой проект.
Разобраться в незнакомом проекте
Изучи репозиторий: назначение, стек, точки входа, как запускаются тесты. Затем создай AGENTS.md с самыми важными правилами проекта.
Получаете и понимание проекта, и файл, по которому дальше работают оба агента.
Найти причину бага по стектрейсу
Вот ошибка и стектрейс. Найди корневую причину, не лечи симптом. Сначала объясни, что происходит, потом предложи минимальную правку.
Требование «сначала объясни» отсекает правки наугад.
Покрыть тестами то, что уже работает
Прочитай src/api и напиши модульные тесты на ветвления, где нет покрытия. Стиль существующих тестов сохрани, запусти их и добейся зелёного прогона.
Агент сам запускает тесты и правит, пока они не проходят.
Ревью собственных изменений до коммита
/diff
Затем: что в этих изменениях самое рискованное при выкатке и что я мог упустить в тестах?
Ревью агента дешевле, чем разбор инцидента в проде.
Безопасное обновление библиотек
Обнови зависимости до свежих версий так, чтобы сборка осталась рабочей. На каждое несовместимое место покажи, что изменилось и почему.
Механическая работа с проверкой — идеальный случай для агента.
Перевод модуля на другую библиотеку
Переведи этот файл с requests на httpx, сохранив поведение и обработку ошибок. По одному модулю за шаг, после каждого — тесты.
«По одному модулю за шаг» не даёт утонуть в огромном дифе.
Документация на русском
Допиши докстринги ко всем публичным функциям в src/, на русском, по шаблону из уже задокументированных файлов. Поведение кода не меняй.
Один раз заданный шаблон агент соблюдает во всех файлах.
Ускорить тяжёлый SQL-запрос
Вот запрос и план выполнения. Предложи вариант быстрее, объясни выигрыш по числу читаемых строк и покажи нужные индексы.
Агент читает план запроса, а не угадывает.
Разбор журналов падения
Прочитай logs/app.log за последний час, сгруппируй ошибки и назови три самые частые причины с номерами строк в файлах.
Ссылки на файлы и строки легко проверить руками.
Проверка безопасности перед релизом
/review-security
По каждой находке оцени последствия для прода и дай минимальную правку.
Отдельный проход по безопасности ловит то, что не видно в обычном ревью.
Ночная проверка в CI
codex exec --json -o summary.md --sandbox workspace-write "прогони тесты и линтер; почини только причину падения"
Утром вы читаете одну страницу сводки вместо логов сборки.
Объяснить чужой код простыми словами
Прочитай этот модуль и объясни его работу так, чтобы понял новый разработчик: назначение, основные потоки, где легко ошибиться.
Режим Ask и такие запросы дают документацию без правок кода.
21 Как экономить токены
Расход определяет не длина вашего сообщения, а объём контекста, который агент читает на каждом шаге. Поэтому экономия — это дисциплина разговора, а не «короткие промпты».
| Приём | Что даёт |
|---|---|
/compact (Codex) | Сжимает видимый диалог в сводку — длинная сессия перестаёт «съедать» контекст |
/clear · /new (Codex), новый чат в Cursor | Новая тема начинается с чистого контекста, старые файлы больше не перечитываются |
Модель по задаче (/model, -m) | Reasoning-модель нужна для сложного разбора, а не для правок в одном файле |
План до работы (/plan, режим Plan) | Согласованный план дешевле, чем откат большой неудачной правки |
| Явные границы: «только в папке X» | Агент не читает половину репозитория ради одной задачи |
| Путь к логу вместо вставки лога | Файл агент читает выборочно, а вставленный текст навсегда остаётся в контексте |
| Короткие и точные правила | AGENTS.md и правила читаются в каждой сессии — раздутый файл стоит дорого |
/status · /usage | Видно фактический расход — аномалию замечаешь до счёта |
Агент перестал отвечать по делу, повторяет уже отменённые решения или ссылается на файлы, которых в проекте нет, — контекст засорён. Быстрее выйти из сессии и сформулировать задачу заново, чем уговаривать модель вспомнить договорённости.
22 Типичные ошибки и что делать
401 · «Недействительный токен» или «Invalid API key»
Ключ не дошёл до шлюза. Проверьте по порядку:
- Ключ действительно лежит в переменной окружения:
NEUROZAL_API_KEY(Windows — в новом окне терминала послеsetx). - В
config.tomlв полеenv_keyуказано ровно то же имя переменной. - Ключ скопирован целиком, без пробела и переноса строки в конце.
- Ключ активен и баланс пополнен — это видно в кабинете.
Ответ обрывается или приходит «stream error»
Обычно это сеть: сторонний прокси, VPN или нестабильный канал рвут длинный поток. Попробуйте без
прокси, увеличьте stream_idle_timeout_ms и число повторов
(stream_max_retries, request_max_retries) в блоке провайдера.
Codex использует не ту модель, которую я указал
Значит, настройка перекрыта: проверьте профиль запуска (-p), разовые переопределения
-c и переменные окружения, которые задают модель. Команда /status покажет
фактическую конфигурацию сессии.
Проектный .codex/config.toml не работает
Так и должно быть, если проект не отмечен как доверенный: Codex подхватывает проектный слой настроек только после вашего подтверждения. Учтите также, что провайдера и модель можно задавать только в пользовательском конфиге — проектный слой их не переопределяет.
400 · «upstream request failed» на конкретной модели
Ошибка пришла от канала-провайдера, а не от шлюза: сама модель в списке есть, но запрос у поставщика не прошёл. Смените модель на соседнюю из той же группы и сообщите в поддержку — канал переключат.
Мой ключ в Cursor не влияет на автодополнение
Так устроен Cursor: собственный ключ работает только для чат-моделей, а автодополнение кода обслуживается моделями Cursor и тарифом редактора.
Агент изменил не то, что нужно
Смотрите git diff до коммита и держите практику чекпойнта: коммит перед задачей —
точка возврата. Правку легко снять (git restore), а чтобы это не повторялось, задавайте
границы: «меняй только файлы в этой папке».
MCP-инструменты не появились
Проверьте, что сервер действительно запускается вручную (та же команда из настроек), затем —
/mcp в Codex или список инструментов в Cursor. Частая причина: сервер требует ключ
в переменной окружения, которая не передана процессу.
23 Чек-лист настройки
24 Вопросы и ответы
Нужна ли подписка ChatGPT, чтобы работать в Codex?
При работе через свой ключ (в нашем случае — ключ шлюза) вход в ChatGPT не требуется: Codex обращается к провайдеру из вашего конфига. Вход по подписке нужен тем, кто пользуется официальным сервисом OpenAI напрямую.
Можно ли использовать один ключ шлюза и в Codex, и в других инструментах?
Да, ключ один. Дополнительно создавать ничего не нужно — шлюз отдаёт и чат-формат, и Responses, и Anthropic-формат. Но для удобства диагностики лучше завести отдельные ключи под разные задачи: так видно, что именно расходует баланс.
Получится ли направить сам Cursor на шлюз?
В документации Cursor описано только добавление своих ключей к провайдерам (OpenAI, Anthropic, Google, Azure, AWS) — замены адреса API там нет, поэтому рассчитывать на это не стоит. Рабочая схема: редактор Cursor работает на своём тарифе, а к шлюзу подключается Codex CLI прямо во встроенном терминале Cursor.
Codex работает на Windows без WSL?
Да, для Windows есть нативный установщик, а песочница включается настройкой [windows] sandbox = "elevated". Вариант с WSL2 тоже поддерживается — выбирайте по удобству.
Как обновлять агенты?
Codex: команда codex update или повторный запуск установщика. Cursor обновляется сам; CLI-версия обновляется каналом обновлений из cli-config.json.
Можно ли работать с моделями Anthropic и Google из Codex?
Да. В шлюзе они отвечают в том же OpenAI-совместимом формате, поэтому выбираются флагом -m или командой /model. Удобно для второго мнения: одна задача — две разные модели.
Где взять актуальный список моделей и цены?
В каталоге Модели и цены — он обновляется вместе с составом моделей. Внутри сессии список доступного показывает /model.
Что почитать дальше?
Общую страницу протоколов и примеров — документация API: там описаны варианты подключения для Claude Code, Cline, SDK и OpenWebUI. И отдельный гайд по Claude Code, если работаете и с ним.