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.
This commit is contained in:
1 parent
039cf29b95
commit
cb600bcaa8
8 files changed
+462
-3
No files matched your search
@@ -0,0 +1,91 @@
|
||||
# Отдельный запуск 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-пакета.
|
||||
Reference in new issue
Block a user