AI из браузера
Период относительного затишья в блоге имел ещё одну причину, о которой я не сказал в прошлый раз.
Я немного реорганизовывал своё рабочее пространство — из-за чего у меня временами отсутствовал доступ к AI-помощникам. Рабочее место переехало, и теперь я реже попадаю за компьютер. В какой-то момент я задумался и решил исправить ситуацию, взглянув на неё немного под другим углом: вывести AI-ассистента в браузер — чтобы доступ к нему был из любого места, в том числе с мобильных устройств.
Это немного отвлекло меня от основного проекта — дало разрядку мозгам, повод переключиться и поломать голову над не всегда очевидными вещами: как совместить несколько разрозненных компонентов в одну систему.
Так появился ai-box.
Проект не очень большой — всего полтыщи строк. Но его сложность в другом. Стек выглядит так: браузерный терминал на xterm.js подключается по WebSocket к FastAPI-бэкенду, который через PTY общается с tmux-сессией. Внутри tmux живёт AI-ассистент. Всё это упаковано в Docker-контейнер; снаружи — nginx с SSL. Volume на хосте хранит авторизацию и рабочие файлы — перезапуск контейнера ничего не стирает.
Ключевое — tmux. Он удерживает сессию живой, пока работает контейнер. Соединение рвётся, браузер закрывается — tmux не замечает. При переподключении браузер просто присоединяется к уже живой сессии.
Я потерял на этом некоторое количество времени — зато теперь доступ к AI из любой точки, с любых устройств. И что самое главное: связь не разрывается, не нужно восстанавливать контекст — можно продолжать прямо с того места, на котором остановились в последний раз.
Этот пост я набираю прямо в нём. Проверить, как работает…