Sobre o projeto

Este é um aplicativo shell que traz o DeepSeek Harness (dsh) para celulares Android, com nome DeepCode, pacote com.dsharnessmobile.shell, versão atual 0.14.0-preview e motor embutido @deepseek-ai/dsh 0.1.5-rc.1. A ideia central é "descompactar e executar": o APK incorpora um snapshot do runtime Termux comprimido em xz, contendo node, git, bash, coreutils, dsh, plugins, pnpm e python/perl/ruby. Na primeira inicialização, a descompactação leva de 2 a 4 minutos; depois, o motor escuta em 127.0.0.1:3080 e opera totalmente offline, sem exigir que o usuário instale o aplicativo Termux separadamente. Em termos de runtime e ciclo de vida, há suporte a atualização online do runtime guiada por manifest: download, verificação sha256, troca atômica, reinício automático; a troca de árvore é uma operação de transação única, interrompível com rollback, e não toca nos dados do usuário (sessões, anexos, configurações, credenciais, workspace). A autoatualização do APK precisa ser acionada manualmente na tela inicial pelo botão "Verificar atualizações"; não há verificação automática. Ela consulta o latest release do GitHub e combina os assets conforme a ABI do dispositivo. Os mecanismos de keep-alive incluem serviço em primeiro plano, watchdog de 5 segundos que reinicia automaticamente o motor travado, polling de UI a cada 3 segundos e gate de fallback em caso de crash. Há também um console bash interativo independente, que permite diagnosticar problemas mesmo com o motor parado. O navegador de IA é um segundo workspace WebView totalmente isolado da interface principal; a IA pode abrir várias abas e o usuário também pode visualizá-las diretamente. A resolução é injetada conforme a viewport CSS, com window.innerWidth exatamente igual ao valor solicitado, e suporta alternância de identidade PC/celular. A função de tela virtual cria uma tela independente via canal privilegiado Shizuku para executar apps de terceiros, sem ocupar o primeiro plano do usuário, com limite de 1 instância. A inicialização entre telas usa o caminho am start --display do Shizuku UserService no lado do shell. A entrada de coordenadas na tela virtual usa x/y absolutos mais screenId; coordenadas normalizadas são explicitamente rejeitadas para evitar cliques acidentais na tela real. Capturas de tela caem no displayId de destino e usam os pixels da própria tela como âncora de resolução. A tela virtual é recolhida automaticamente após 10 minutos ociosa. O controle do celular oferece canais duplos: acessibilidade e Shizuku. O canal de acessibilidade cuida da árvore semântica e ações por ref; o canal Shizuku executa como uid 2000 comandos somente leitura e de entrada, como screencap, uiautomator, dumpsys e input, rejeitando qualquer escrita de configuração do sistema. Em anexos e arquivos, o menu suspenso do clipe, com um clique, mostra "Enviar anexo/Enviar imagem", passando respectivamente pelo seletor de arquivos do sistema e pela galeria do sistema. Por meio de "Abrir com outro app/Compartilhar", é possível enviar arquivos diretamente para a sessão, criando automaticamente um workspace temporário com limpeza TTL de 7 dias. A ponte SAF pode mapear o diretório selecionado para um caminho real. O protocolo de ponte v1 expõe 51 métodos @JavascriptInterface; a página faz detecção de recursos por androidBridge.version, portanto o APK e a versão do dsh são desacoplados. Todas as ferramentas visíveis ao modelo vêm de plugins, atualmente 45, divulgadas progressivamente por grupos de capacidade; é necessário chamar primeiro android_capabilities para desbloquear, com grupos como phone, browser e virtual-display. As permissões incluem INTERNET, POST_NOTIFICATIONS, serviço em primeiro plano, MANAGE_EXTERNAL_STORAGE e REQUEST_INSTALL_PACKAGES. A tela virtual e o shell privilegiado exigem que o usuário instale e autorize o Shizuku por conta própria. A distribuição oferece pacotes para duas ABIs, arm64 e x86_64; a ABI deve corresponder ao dispositivo, caso contrário o motor trava ao iniciar. A compilação exige JDK 17+, Android SDK (compileSdk 36); o Gradle 8.11.1 é fornecido pelo wrapper, e a construção e empacotamento do snapshot são feitos no repositório de coordenação. O README alerta claramente: a maioria dos plugins de terceiros do mercado de plugins embutido pode não funcionar no celular e provavelmente tem bugs; na fase beta, o foco é validação de usabilidade e feedback, e por enquanto não é recomendado usá-lo como dependência de produção. O projeto usa licença MIT e fez tratamento de conformidade com GPL.