ARTICLE · 1259868
AI工具推荐 - 不用 root 不用 Termux:一个 APK 把完整 DeepSeek Harness 装进手机
BUILD SHEET · 装机单
DSHA
不用 root 不用 Termux,一个 APK 把完整 DeepSeek Harness 装进手机
约 3,700 字
阅读约 9 分钟
8 节 · 6 个坑
一个安卓安装包,278 兆。
装完之后,你手机里会多出一台完整的 Ubuntu。
不是模拟器,不是裁掉一半的迷你版,是 apt 能敲、PTY 能用、需要现场编译的原生模块真能装上的那种完整。Node.js 24、pnpm 10、Python、git,全在里面,版本都锁死了。
这个东西叫 DSHA,全称是 DeepSeek Harness 安卓启动器。
一句话说完:让你在手机上跑完整的 DeepSeek Harness,不用 root,不用 Termux,装完点开就能用。
听着很像广告对吧,我一开始也这么觉得。

装完之后看到的第一屏
STRATUM 01
01/08
先把这东西是什么说清楚
DeepSeek Harness 是 DeepSeek 官方开源的 agent 运行环境。你可以把它当成一个高度可定制的编程智能体,跟 Claude Code、Codex 是一路东西。
但它有一个前提经常被忽略:它是为 glibc 的 Linux 写的。
这句话搬到安卓上,就变成四件事一起出问题。
原生模块编译不过。link(2) 这个系统调用被 SELinux 挡在外面。沙箱起不来。前端界面按桌面尺寸排版。
STRATUM 01
不是慢一点、差一点,是起不来。

一整柜压进玻璃
所以在安卓上用它的正常路径是这样的:装 Termux,配 pkg,装 Node,装 pnpm,把 dsh 装上去,然后开始一个个处理那些编译不过的原生模块。终端窗口不能关,关了服务就停。
这条路对开发者不算什么。对「我只是想在手机上用一下」的人来说,就是四堵墙。
DSHA 干的事是把这四堵墙一起拆了,做法是把一整台 Ubuntu 封进 APK。
在之前也分享过这个思路,把服务打包成一个安卓安装包,这个也是一样的操作;
装 APK、打开、等它准备环境、进 Web UI 配模型。就这四步。

四步里的配模型
准备环境那一步看着只有一句话,底下是六步流水线:解压离线 rootfs、装基础工具、装 Node.js、装 pnpm、装 dsh、打补丁。
每一步先探测再执行,装完立刻校验,失败只修失败的那一项,不从头重来。

它真的回话了
STRATUM 02
02/08
它绕开的那条路,是所有人都在走的路
安卓上跑 Linux 有两条路,社区里吵了很久。
一条叫 Termux bootstrap 派。做法是在安卓自己的 bionic libc 上裸跑,需要为 bionic 把每个原生模块逐个打补丁或者重编。好处是没有容器层,理论最快。代价是每一个出问题的地方都得自己填。
另一条叫容器派,走 proot,挂一个完整的 glibc 根文件系统上去。好处是你在服务器上怎么用,手机上就怎么用。代价是多了一层转译,系统调用和文件 I/O 都要过一遍。
多数移植项目走的是第三条:把出问题的插件关掉。
DSHA 选了最难的那条。它没有绕开那些编译不过的模块,它把整个 glibc 环境搬过去,让那些模块有地方编译。
这个选择值不值,取决于你怎么用它。
如果你只是想跑通一轮对话,绕开就够了,那些插件你本来也用不上。
但你要真想把它当成一个能干活的东西——装插件、跑脚本、让 agent 自己改点东西——那被关掉的插件就是被砍掉的手。
完整环境的意思不是「跑得起来」,是「装什么都不会因为平台不对而失败」。
apt 能用这句话听着很平淡。可你想想看,一个需要现场装依赖的插件,扔进一个 apt 不能用的环境里,它就是个死物。
代价也很直接,278 兆。
一个普通安卓应用通常也就几十兆,它 278 兆,多出来的全是那套离线 Ubuntu。这是「装上就能用」的代价,躲不掉。不过现在安卓手机都是几百G起步这个大小不是问题;
STRATUM 03
03/08
那句「零开销」到底成不成立
proot 的原理说实话挺聪明。
它用 ptrace 拦截进程的系统调用,在用户态做路径重定向。进程以为自己有一个独立的根文件系统,其实每一次系统调用都被拦下来、看一眼、再放回去。
这就解释了容器派那个「转译开销」是什么。不是虚拟机的开销,是每一次系统调用都要多绕一步。
proroot 想干的事就是把这一步省掉。它没有去拦系统调用,而是换到进程加载这一层:一个启动器,加几个配套的 so 库,路径这件事在程序还没跑起来的时候就处理完了。
没有 ptrace,也就没有那一趟一趟的绕路,所以它敢说自己零 ptrace 开销。

每个都查一遍
DSHA 把两个都装进去了:默认 proot,你可以到配置里切成 proroot。
有意思的是它对 proroot 的措辞。
它没有写「proroot 更快,建议开启」。它写的是:实际兼容结果依机型;有同台设备的有限样本,但设备、缓存和插件状态影响明显,不作为普遍引擎排名;proroot 在鉴权前明确退出且没有插件故障时,才在确认 guest 退出之后重试一次 proot;慢启动不触发回退。
我特别喜欢最后这一条。
慢启动不是故障。把它当故障降级,用户会以为是自己手机不行。
一个宣称零开销的东西,在自己的产品里被降成了一个选项,还给它配了这么保守的边界。这个态度比那句宣称本身更值得信。
STRATUM 04
04/08
手机第一次成了它的手
写到这里才是这篇真正想说的部分。
前面那些都只是让它跑起来。跑起来之后,它要干什么?

手机成了它的手
DSHA 把手机的能力分成三条通道接给 agent,而且是分层降级的。
第一条是无障碍。开了无障碍服务,agent 就能读屏,读到的是结构化输出,每一个可点的地方都带坐标。它也能按文字或者坐标点按、输入、滑动、截图。这条通道不需要 ADB,不需要连电脑,不需要配对。
第二条是 ADB 无线直连。走的是安卓自己的无线调试,配对用 TLS 1.3-PSK 加 SPAKE2,不需要装 Shizuku。配好之后 DSHA 自己保活重连,手机重启也会自己恢复。验证方法很朴素:在内置终端里敲 adb shell id,出来 uid=2000(shell) 就通了。
第三条是 Shizuku 和 root,当备用。
这三条合起来的意思,就是我一直觉得最准确的那句分界线:别的方案是「在手机上跑 DSH」,手机只是个运行宿主,跟跑在树莓派上没本质区别;DSHA 是「让 AI 操作这台手机」。
还有第四条,我看了半天才反应过来它在干嘛,叫虚拟屏。
它会在手机上创建一块独立的第二屏幕,把应用启动到那块屏上。agent 在那块屏上操作,你的主屏还是你自己的。
这个设计解决的是一个很具体的尴尬:agent 要用你的手机,但你正在用你的手机。
STRATUM 05
05/08
我最喜欢的一个细节
如果只让我挑一个功能说,我会挑悬浮条。
它是一条贴在屏幕顶部的窄条,AI 的输出实时滚在上面,像歌词。
不只是输出。工具调用会被翻译成人话——不是 read_file(...) 这种,是「它正在读你刚才给它的那个文件」。危险命令可以直接在悬浮条上批准。
为什么这条比那些能力清单更打动我?
因为手机上跑 agent 最大的问题从来不是算力。
STRATUM 05
是它在干嘛,你看不见。
你在别的 App 里回消息,它在后台干活,你不知道它走到第三步还是第十七步,不知道它是卡住了还是在等你。你只能切回去看。切回去的成本很高,高到你干脆就不切了,然后你就彻底不知道它在干什么。
悬浮条把那个黑盒子变成了一行字幕。
这个改动的技术含量很低。但它改的是信任——一个你不知道它在干什么的东西,你不敢让它干长活。
顺带说一句,这个环境是能装主题的,社区里已经有人把它换成了鲸鱼娘的皮肤、加了桌宠、把聊天气泡改成粉色。一个能装主题的环境,最后一定会长出这种东西。
STRATUM 06
06/08
坏了能自己说清哪坏了
还有一个功能,我觉得是这类东西的分水岭,但它不好讲,因为它不产生任何效果。
自检。它有六项组件体检:证书、npm、DNS、会话写入补丁这些。查出来哪项有问题就只修那一项,不动别的。
它有启动诊断。装不上、起不来的时候,它会把阶段、实际报错的插件、退出码都存下来,最近五次,脱敏保留。
它有配置快照。每次改配置之前自动留一份,三份健康的、三份修复前的,坏了能滚回去。
它还有一条叫独立应急 DSH 的东西。正式环境彻底坏了,能进一个单独的运行根,那边只读诊断先行,要写要修得一步一步确认。
最后一条是更新。它做了一件很重的事:新环境不直接覆盖,先在隔离区真启动一遍,验证端口、鉴权、会话读写、插件加载,四项全过才切换过来,任何一项失败就自动回切。
所以它更新是会慢一点的。这个慢不是没做完,是它宁可多花两分钟验证,也不想让你在某个早上打开发现环境没了。

更新先试启动再切换
代价是:更新这件事本身变成了一个需要你腾出时间、停掉服务、等它跑完的动作。不是点一下就完事。
STRATUM 07
07/08
装之前要知道的六件事
好话说在头里,往下是具体会踩的东西。

装之前确认来源和作者
第一件,权限档位默认是 danger-full-access。
它的 bash 沙箱其实用不了。bubblewrap 要 unprivileged user namespace,安卓的 sepolicy 不给,容器派和 Termux 派都一样绕不过。所以约束只能靠 dsh 自己的权限档位,而默认档位是 danger-full-access。
装上之后第一件事应该是去配置页把它改成 workspace-write 或者 read-only,要开的时候再开。
这个东西默认信任你。你得自己决定要不要被信任。
第二件,只有 arm64。
32 位和 x86 一律装不上。这是官方写在已知限制里的结论,不是大家猜的。
第三件,278 兆,加首次解压。
装完第一次启动要解压那套离线环境。低配机这一趟会明显久,久到你会怀疑它卡死了。
第四件,虚拟屏吃机型。
它现在还是实验性功能,需要先授权 ADB、Shizuku 或者 root 里任意一条通道——只开无障碍是不会创建虚拟屏的。
而且版本上有一批真机问题:小米的 HyperOS 配 Android 16,创建虚拟屏会报连接异常,问题单还开着;一加的 ColorOS 16 配 Android 16 上有同一类问题,那条已经关掉了;Android 16 配 vivo 的机器上,无障碍服务会被系统在设置、QQ、微信里禁用,这一条也还开着。
这些是 2026 年 10 月下旬这批版本的实况,不是早期版本的老账。
第五件,备份恢复和键盘布局这批小毛病。
最新那个正式版 v0.2.1-rc.2(2026-10-22)上,备份恢复仍会连着报三个错误码;键盘收起再切回来的时候,网页的 innerHeight 会停在 451 像素,比正常少了三百多,输入框位置就飘了;终端里粘贴长文本会卡,有时候直接卡死。
都不是致命问题。但每一个都会让你停一下。
第六件,性能是结构性差一截,不是没优化好。
容器转译的开销是真的,官方自己也写了「实际耗时依设备与场景」。你在手机上跑一轮,跟在一台普通笔记本上跑一轮,不是一个体感。
这话不是唱衰。proroot 能缓解,缓解不等于消除。
六件事说完了。第一件和第六件其实是同一件事的两面:它把最大的自由交给了你,也把最大的判断留给了你。
STRATUM 08
08/08
回到那个「不用 root」
开头我说,「不用 root、不用 Termux」听着像广告。
写到这儿我想把它拆开看一下,它到底省了什么。
STRATUM 08
它省的不是那几行命令。
root 是不可逆的。你为了试一个东西,先把保修、把银行 App、把某个必须装的企业软件一起赌上去,这个决定没多少人愿意做。
Termux 是一整套要维护的环境。它不是一个应用,是一个你得记住路径、记得更新、记得它装了什么的第二操作系统。为了试一个 agent 先养一个新系统,这个交换也不划算。
所以「不用 root、不用 Termux」真正省掉的,是「我要不要先把我的手机搞乱」这个决定。
这个门槛劝退的人,比技术难度劝退的人多得多。
我见过太多这样的项目:技术上没问题,文档写得也清楚,但那个「先改造你的设备」的前提,让它永远停在小圈子里。
DSHA 的做法是把前提删掉。你要付出的只是 278 兆,和你点一下安装的那两秒。
而你拿到的东西,是一台不知道自己在一台手机里的 Ubuntu。
它以为自己在一台服务器上。它有 apt,有一个叫 root 的家,有那一整套在服务器环境里养成的直觉。它不知道自己的键盘是屏幕上的玻璃,它的网卡紧挨着一块电池。
你要做的,只是让它知道:这台手机归你了。
再补充一个玩法,最近网上流行的养大肥鱼,但是会出现的问题就是,你需要一台不关机的服务器,而这个手机版就可以作为服务器24小时运行;
不过这个是具有危险性的玩法,如果崩了可能会导致大肥鱼数据丢失嘎掉;
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。
/ 作者:Patrick
/ 这里分享好用的AI工具和skill
/ 创作不易,三连支持一下吧~
— END OF BUILD —
如果这篇让你少走两步弯路
下一个工具,下次见















































































