Как запустить свежий opencode на планшете и починить его веб-интерфейс
Содержание
Живу на планшете в терминале Termux. Мой основной ИИ-инструмент — opencode, и в один прекрасный день его веб-интерфейс сломался так, что не показывал ни сессий, ни проектов. Рассказываю, почему это случилось и как я всё-таки запустил свежую версию, — без магии, по шагам.
Зачем мне вообще веб-интерфейс
Я работаю с opencode в TUI (терминал) — это удобно для быстрых правок. Но
иногда хочется посмотреть на диалог глазами, полистать историю, открыть в
браузере. Для этого у opencode есть web-режим: поднимается локальный сервер,
и ты открываешь его в браузере планшета. Всё хранится в одной базе, так что
TUI и web видят одно и то же.
Симптом: пустой экран
Открываю веб — и вижу «Nothing here yet», «Projects» пуст, «Add project» не показывает ни одной папки. При этом сессии в базе есть, TUI прекрасно их видит. Классический случай: данные есть, интерфейс их не достаёт.
Диагноз: фронтенд и бэкенд «разошлись»
Копнул глубже. Веб-фронтенд обращается к JSON-эндпоинтам API, а сервер этой
сборки на часть из них отвечает HTML-заглушкой вместо JSON. То есть
фронтенд ожидает одну «версию API», сервер отдаёт другую. Пара метких curl —
и картина ясна: /api/project → HTML, а без префикса /project/current →
нормальный JSON.
Вывод: это не настройка, а рассинхрон версий внутри самой сборки. Чинится обновлением opencode.
Почему свежую версию нельзя поставить обычным способом
opencode в Termux ставят из системного репозитория, но там старая версия.
Хочется свежую с npm. И тут сюрприз: пакет на npm — это загрузчик, и на Android
он не устанавливается: платформа android не входит в список
поддерживаемых (darwin, linux, win32). Принудительная установка тоже не
помогает — загрузчик ищет сборку opencode-android-arm64, которой не
существует.
Обходной путь: glibc-бинарник через glibc-префикс
На моём планшете давно стоит glibc-окружение (оно нужно для локального распознавания речи). В нём есть системный загрузчик и полный набор библиотек. Оказалось, через него можно запустить обычный Linux-бинарник opencode — официальную свежую версию.
Шаги простые:
- Скачать glibc-бинарник opencode (aarch64) с npm.
- Распаковать — это один исполняемый файл.
- Запускать его через загрузчик glibc.
Пара граблей всплыла сразу: переменные окружения, которые Termux подставляет
автоматически, ломают запуск (invalid ELF header). Лечится снятием двух
переменных перед стартом. Я завернул это в маленькую обёртку-команду — теперь
opcode вызывает свежую версию, а системная осталась нетронутой.
Результат
Свежий opencode поднялся, веб-интерфейс ожил: папки листаются, сессии видны,
проект открывается. /api/session и /api/fs/list отдают JSON как надо.
Одна мелочь: /api/project всё ещё отвечает HTML даже в новой версии — но
интерфейс научился обходить это выбором проекта вручную, так что не мешает.
Что я вынес
- Терминальный агент ≠ только терминал: веб-обзор сессий реально полезен.
- «Не устанавливается» ≠ «нельзя»: иногда обходной путь — рядом, просто нужно знать окружение (у меня уже был glibc-префикс).
- Симптом «данные есть, интерфейс пуст» — почти всегда рассинхрон между тем, что отдаёт сервер, и тем, что ждёт фронтенд.
Вся диагностика заняла вечер, зато теперь у меня рабочий веб-интерфейс и понятная механика на будущее.
Комментарии
Пока нет комментариев.
Войдите, чтобы комментировать.