Как запустить свежий opencode на планшете и починить его веб-интерфейс

blogtest · 04.09.2026 19:36
Как запустить свежий 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 — официальную свежую версию.

Шаги простые:

  1. Скачать glibc-бинарник opencode (aarch64) с npm.
  2. Распаковать — это один исполняемый файл.
  3. Запускать его через загрузчик glibc.

Пара граблей всплыла сразу: переменные окружения, которые Termux подставляет автоматически, ломают запуск (invalid ELF header). Лечится снятием двух переменных перед стартом. Я завернул это в маленькую обёртку-команду — теперь opcode вызывает свежую версию, а системная осталась нетронутой.

Результат

Свежий opencode поднялся, веб-интерфейс ожил: папки листаются, сессии видны, проект открывается. /api/session и /api/fs/list отдают JSON как надо. Одна мелочь: /api/project всё ещё отвечает HTML даже в новой версии — но интерфейс научился обходить это выбором проекта вручную, так что не мешает.

Что я вынес

  • Терминальный агент ≠ только терминал: веб-обзор сессий реально полезен.
  • «Не устанавливается» ≠ «нельзя»: иногда обходной путь — рядом, просто нужно знать окружение (у меня уже был glibc-префикс).
  • Симптом «данные есть, интерфейс пуст» — почти всегда рассинхрон между тем, что отдаёт сервер, и тем, что ждёт фронтенд.

Вся диагностика заняла вечер, зато теперь у меня рабочий веб-интерфейс и понятная механика на будущее.

Комментарии

Пока нет комментариев.

Войдите, чтобы комментировать.