夜雨聆风学习资料网

ARTICLE · 1259868

AI工具推荐 - 不用 root 不用 Termux:一个 APK 把完整 DeepSeek Harness 装进手机

AI工具推荐 - 不用 root 不用 Termux:一个 APK 把完整 DeepSeek Harness 装进手机

BUILD SHEET · 装机单

MIT

DSHA

不用 root 不用 Termux,一个 APK 把完整 DeepSeek Harness 装进手机

Android
Ubuntu 24.04
arm64
278 MB
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 —

如果这篇让你少走两步弯路

👍 点个赞
👀 在看
↗ 转发

下一个工具,下次见

相关学习资料