Files
dotfiles/docs/specs/2026-08-17-chatgpt-proxy-launcher-design.md
T
ddadmin cb600bcaa8 feat(chatgpt): добавлен отдельный запуск через прокси
- Зачем:
  - приложение должно явно работать через прокси и сохранять настройку после обновлений.
- Что:
  - добавлены отдельный ярлык ChatGPT Proxy и запускатель на основе proxy-client.
  - исключено смешение прямого и проксированного режимов существующего процесса.
  - установка, документация и автоматические проверки дополнены новым Stow-пакетом.
- Проверка:
  - bash tests/test_chatgpt_proxy_launcher.sh.
  - bash tests/test_proxy_launchers.sh.
  - bash tests/test_install.sh.
2026-08-17 01:09:59 +03:00

6.7 KiB

Отдельный запуск ChatGPT через прокси

Проблема

Linux-приложение ChatGPT не применяет обычные proxy-переменные ко всему Chromium-трафику и при штатном запуске выходит в интернет напрямую. Правка файлов Debian-пакета недолговечна: обновление приложения их заменит.

Цели

  • Дать отдельный и явно названный ярлык ChatGPT Proxy.
  • Использовать активные настройки и проверку доступности proxy-client.
  • Не допускать тихого запуска напрямую при ошибке прокси.
  • Сохранить штатный ярлык ChatGPT для прямого запуска.
  • Переживать обновления Debian-пакета ChatGPT.

Не входит в задачу

  • Изменение системного прокси GNOME.
  • Перенаправление трафика других приложений.
  • Изменение файлов в /usr/lib/chatgpt и /usr/share/applications.
  • Автоматический запуск или переключение прокси.

Рассмотренные варианты

  • Подменить штатный пользовательский ярлык. Удобно для обязательного прокси, но стирает различие между прямым и проксированным запуском.
  • Добавить отдельный пользовательский ярлык. Оба режима видны явно, а файлы приложения остаются нетронутыми.
  • Включить системный прокси GNOME. Решение переживает обновления, но меняет поведение всех приложений рабочего стола.
  • Перенаправлять трафик на сетевом уровне. Это даёт более жёсткую изоляцию, но заметно усложняет личную конфигурацию.
  • Оставить всё как есть. Тогда пользователь должен каждый раз помнить о прямом соединении ChatGPT.

Решение

В dotfiles хранится отдельный пользовательский ярлык ChatGPT Proxy и его запускатель. Штатный ChatGPT остаётся прямым аналогично паре codex и pcodex.

Запускатель получает окружение от proxy-client, а для сетевого слоя Chromium добавляет явные параметры сервера и списка обхода. Если прокси недоступен, ChatGPT не запускается, а GNOME показывает уведомление с причиной и командой для диагностики.

Если ChatGPT уже работает через тот же прокси, повторный запуск передаёт ему запрос: Electron поднимает существующее окно. Если работает прямой экземпляр или экземпляр с другими настройками прокси, запуск отклоняется. Уведомление предлагает полностью завершить ChatGPT через системный лоток. Встроенный перезапуск для обновления сохраняет режим, в котором приложение было открыто.

Ярлык и запускатель устанавливаются в пользовательские каталоги через Stow. Они не заменяют одноимённые файлы Debian-пакета, поэтому обновление ChatGPT их не затрагивает.

Отклонённые решения

  • Подмена штатного ярлыка отклонена: отдельное имя лучше показывает выбранный режим и не скрывает возможность прямого запуска.
  • Системный прокси отклонён из-за слишком широкой области действия.
  • Сетевое перенаправление отложено как избыточное для одного приложения.
  • Переход на прямое соединение при ошибке запрещён: имя ChatGPT Proxy должно быть гарантией, а не пожеланием.

Риски и защита

  • Уже работающий прямой процесс не примет новые параметры. Запускатель отличает его от экземпляра с теми же параметрами прокси и отказывает только при конфликте режимов.
  • Одних proxy-переменных может быть недостаточно для Chromium. Запускатель передаёт параметры прокси явно и одновременно сохраняет окружение для дочерних процессов.
  • Ошибка графического запуска может остаться незаметной. Причина выводится в stderr и дублируется уведомлением GNOME.
  • Формат списка обхода отличается у NO_PROXY и Chromium. Запускатель явно преобразует список перед запуском приложения.

Проверка

  • При доступном прокси ChatGPT получает proxy-переменные и параметры Chromium.
  • Адреса из NO_PROXY попадают в список обхода Chromium.
  • При недоступном прокси приложение не запускается и появляется уведомление.
  • При повторном прокси-запуске поднимается окно уже работающего проксированного экземпляра.
  • При работающем прямом экземпляре появляется уведомление с инструкцией завершить его через системный лоток.
  • Штатный системный ярлык не меняется.
  • Повторное применение dotfiles восстанавливает пользовательский ярлык после обновления Debian-пакета.