Об этом проекте

Это оболочка-приложение, переносящее DeepSeek Harness (dsh) на Android-телефон. Имя приложения — DeepCode, имя пакета — com.dsharnessmobile.shell, текущая версия — 0.14.0-preview, встроенный движок — @deepseek-ai/dsh 0.1.5-rc.1. Основная идея — «распаковал и запустил»: внутри APK встроен сжатый xz снимок среды Termux, включающий node, git, bash, coreutils, dsh, плагины, pnpm, а также python/perl/ruby. При первом запуске требуется 2–4 минуты на распаковку, после чего движок слушает 127.0.0.1:3080 и работает полностью офлайн, без необходимости отдельно устанавливать приложение Termux. В части среды выполнения и жизненного цикла поддерживается управляемое манифестом онлайн-обновление среды выполнения: загрузка, проверка sha256, атомарное переключение, автоматический перезапуск. Смена дерева — это одна транзакция, прерывание можно откатить, при этом пользовательские данные (сессии, вложения, настройки, учётные данные, рабочая область) не затрагиваются. Самообновление APK запускается вручную нажатием «Проверить обновления» на стартовой странице, автоматическая проверка не выполняется; оно обращается к GitHub latest release и сопоставляет ресурсы по ABI устройства. Механизмы поддержки активности включают фоновую службу, 5-секундный сторожевой таймер, автоматически перезапускающий зависший движок, 3-секундный опрос UI и аварийный шлюз отката при сбое. Также имеется отдельная интерактивная консоль bash, позволяющая диагностировать проблемы даже при неработающем движке. AI-браузер — это второе рабочее пространство WebView, полностью изолированное от главного интерфейса. AI может открывать несколько вкладок, человек также может их просматривать напрямую. Разрешение внедряется через CSS-вьюпорт, window.innerWidth точно равен запрошенному значению, поддерживается переключение идентичности PC/телефон. Функция виртуального экрана создаёт отдельный экран через привилегированный канал Shizuku для запуска сторонних приложений, не вытесняя пользовательский передний план; лимит — 1 экземпляр. Межэкранный запуск идёт по пути am start --display через Shizuku UserService на стороне оболочки. Ввод координат на виртуальном экране использует абсолютные x/y плюс screenId; нормализованные координаты явно отклоняются во избежание ошибочного нажатия на реальном экране. Скриншоты сохраняются в целевой displayId и используют пиксели самого этого экрана в качестве опорного разрешения. Простаивающий виртуальный экран автоматически освобождается через 10 минут. Управление телефоном предоставляется через два канала — Accessibility и Shizuku: канал Accessibility отвечает за семантическое дерево и действия по ref; канал Shizuku выполняет от имени uid 2000 команды только для чтения и ввода, такие как screencap, uiautomator, dumpsys, input, а любые операции записи в системные настройки отклоняются. В части вложений и файлов: одиночный клик по меню-скрепке сразу вызывает «Загрузить вложение/Загрузить изображение», которые идут соответственно через системный выбор файлов и системную галерею. Через «Открыть в другом приложении/Поделиться» можно доставить файл прямо в сессию, автоматически создаётся временная рабочая область с очисткой по TTL 7 дней. Мост SAF позволяет отобразить выбранный каталог в реальный путь. Протокол моста v1 предоставляет 51 метод @JavascriptInterface; страница выполняет проверку возможностей по androidBridge.version, поэтому версии APK и dsh развязаны. Все инструменты, видимые модели, происходят из плагинов, сейчас их 45; они постепенно раскрываются по группам возможностей и требуют предварительного вызова android_capabilities для разблокировки, делятся на группы phone, browser, virtual-display и другие. Разрешения включают INTERNET, POST_NOTIFICATIONS, фоновую службу, MANAGE_EXTERNAL_STORAGE, REQUEST_INSTALL_PACKAGES. Для виртуального экрана и привилегированной оболочки пользователю необходимо самостоятельно установить и авторизовать Shizuku. Публикуются пакеты с двумя ABI — arm64 и x86_64; ABI должен соответствовать устройству, иначе движок падает сразу при запуске. Для сборки требуются JDK 17+, Android SDK (compileSdk 36); Gradle 8.11.1 предоставляется wrapper, сборка снимка и упаковка выполняются в координирующем репозитории. В README явно указано: большинство сторонних плагинов из встроенного магазина плагинов не обязательно будут работать на телефоне и с большой вероятностью содержат ошибки; на этапе beta основное внимание уделяется проверке работоспособности и обратной связи, пока не рекомендуется использовать их как производственную зависимость. Проект распространяется под лицензией MIT и прошёл процедуру соблюдения требований GPL.