DSHBox 是在 Android(ARM64)上运行 DeepSeek Harness(DSH) 的完整运行环境应用。 它把 Debian 根文件系统 + Node.js + DSH(DeepSeek Agent Runtime)打包成分层运行环境, 用 PRoot 做用户态 Linux 沙箱(无需 root),并在 App 内以 WebView 内嵌 DSH 的 WebUI, 附加文件管理、持久终端与一体化的运行环境/DSH 更新管理。装 APK 即用。
- 更新 DSH(在线)重构:新界面并行探测各 npm 源(官方 / 阿里 npmmirror / 腾讯云 / 华为云)的版本号与网络延迟 → 选源选版本(降级二次确认)→ 沙箱内用 npm 从所选源拉取
@deepseek-ai/dsh及完整依赖树 → 自动重启生效;实时日志流、可取消、退出界面不中断安装。 - 离线导入修复:运行环境包官方 zip 导入失败、DSH 层包版本变 unknown 且重启被内置层覆盖、损坏/截断/加密 zip 闪退——均已修复;导入全链路异常转为可读提示。
- 存储占用与清理:占用按系统同口径统计(分配块、含应用缓存、进设置页自动刷新、可手动刷新);新增「清理缓存与垃圾文件」(应用缓存 / 访客临时文件 / 运行日志 / apt 缓存,逐项勾选;回滚备份可选),与后台安装/导入互斥,绝不触碰 user-data/.dsh 与运行环境本体。
- 导入格式全覆盖:层归档支持
.tar.zst / .tar.gz / .tar / .tgz / .bz2 / .xz(按魔数识别);支持裸base.tar层归档与「外层 tar 装层归档」布局。
- DeepSeek Harness 全内嵌:DSH(Agent Runtime)随 APK 内置,
DSH标签页通过内嵌 WebView 打开http://127.0.0.1:3080(移动模式 WebView,原生键盘自适应);首页也可一键用系统浏览器打开。 - 完整分层运行环境:Debian(base)+ Node.js(node)+ PRoot(android-side)+ DSH 层, PRoot 用户态沙箱,与 Android 宿主隔离,无需 root;运行环境与用户数据相互独立。
- 更新/导入管理:设置页可离线导入运行环境包、离线/在线更新 DSH(内置多镜像源)、
装配 DSH 移动端适配插件(cordis
@local/dsh-mobile-adapt),并带实时进度与失败回滚。 - 在线更新新界面(v1.1.0):并行探测各 npm 源(官方 / 阿里 npmmirror / 腾讯云 / 华为云)的版本与延迟,选源选版本(降级二次确认),沙箱内用 npm 拉取完整依赖树并自动重启;实时日志、可取消。
- 存储占用与清理(v1.1.0):系统同口径统计(分配块、含缓存、自动刷新);设置页「清理缓存与垃圾文件」按项勾选清理临时文件/日志/apt 缓存(回滚备份可选),与后台安装互斥,不触碰工作区与对话数据。
- 文件管理:沙盒/工作区双视图(
/root/projects工作区 + 沙盒根),导入/导出引导,目录 ZIP, 搜索、排序、网格/列表切换。 - 持久终端:App 内常驻 shell 会话(
terminal-session模块)。 - 前台服务保活 + 常驻通知(Android 13+ 已支持
POST_NOTIFICATIONS运行时权限)。 - 运行环境独立性:
src/main/assets不含运行环境大层;运行时从分层包/导入包装配到runtime-current/{base,node,android-side,dsh},互不写入用户数据。
| 标签 | 功能 |
|---|---|
| 首页 | 沙箱/DSH 状态,启动/停止/重启,复制地址,在系统浏览器中打开 DSH |
| 文件 | 沙盒 + 工作区双视图浏览、导入/导出、目录 ZIP、搜索/排序 |
| DSH | 内嵌 WebView 加载 http://127.0.0.1:3080 的 DSH WebUI |
| 终端 | App 内持久 shell 会话 |
| 设置 | 运行环境包导入、DSH 离线/在线更新、移动端适配装配、诊断、版本信息 |
环境要求:JDK 21、Android SDK(compileSdk/targetSdk 36、build-tools 36.0.0)、Gradle wrapper 8.11.1(离线缓存)。
运行环境大层不在本仓库(见下节),构建前请先获取 ../runtime/。
./gradlew :terminal-session:testDebugUnitTest :app:assembleRelease
# 产物:app/build/outputs/apk/release/app-release.apk运行环境层的构建脚本与说明见 runtime-bundle/(base/node/android-side 各层 tar.zst 由
build_base.sh / build_node.sh / build_android_side.sh 在 Linux/root 环境构建,再纳入 runtime/android-assets)。
本仓库(source/)不包含运行环境大层:base / node / android-side 的 .tar.zst、DSH 层 0.1.1-rc.2-patched.tar.zst;
也不包含签名密钥(keystore.properties、local.properties)。
- 大层位置与获取:这些大文件随发布包放在发布目录
../runtime/(整包dshapp-runtime-debian-arm64-0.1.0.zip+android-assets/{runtime,dsh}/分层 + DSH 层),或从对应发布/下载源获取。 - 引用方式:
app/build.gradle.kts通过assets.srcDirs("../../runtime/android-assets")引用发布目录的runtime/, 构建完整版 APK 时把它们内嵌进assets/runtime/*与assets/dsh/*。 - 构建前置条件:
assembleRelease前需先获取runtime/(若目录缺失则无法内嵌完整运行环境)。 - 签名密钥:
keystore.properties、local.properties未包含;请用tools/create_keystore.sh自建开发签名后构建 release APK。
运行环境主体(base + node + android-side)对外以一个文件 dshapp-runtime-debian-arm64-0.1.0.zip
交付,在设置页「离线导入运行环境包」选择即可;DSH 更新走「更新 DSH(离线)」单文件 0.1.1-rc.2-patched.tar.zst。
本项目采用 GPL v3 许可(见 LICENSE)。第三方组件许可见 THIRD_PARTY_NOTICES.md:
PRoot(GPL-2+)、talloc(LGPL-3+)、Debian rootfs(各包按 Debian 版权文件)、DeepSeek Harness / Cordis(MIT)、
Termux terminal-emulator / terminal-view(Apache-2.0,未修改)等,均按其各自原许可继续适用。