在已 Root 的 Android 设备上运行 MiMo Code。
⚠️ 实验性项目本项目处于早期阶段,尚未大规模设备验证。如遇问题,大部分可通过 AI(ChatGPT、Claude、MiMo 自身等)辅助排查解决。欢迎提交 Issue 反馈设备兼容性。
把 MiMo Code 搬到 Android 上,需要解决三个层面的不兼容:
1. 运行库。 MiMo Code 是 glibc 编译的 Linux 二进制。Android 只有 bionic libc,无法直接运行。需要从 Debian 引入完整的 glibc 运行时(ld-linux、libc、libstdc++、libgcc 等),通过 ld-linux --library-path 加载。
2. 子进程 shell。 MiMo Code 执行命令时会启动 $SHELL。Android 的 /system/bin/sh 是 bionic 链接的,不能和 glibc 程序混用——设置 LD_LIBRARY_PATH 会导致其崩溃,不设置则缺少 glibc 库。所以需要引入 glibc 版本的 bash 作为 MiMo 的默认 shell。
3. 系统配置。 glibc 硬编码读取 /etc/resolv.conf(DNS)、/etc/hosts(本地解析)、/etc/nsswitch.conf(名称服务)、/etc/ssl/certs(HTTPS 证书)。Android 的 /etc 分区是 EROFS 物理只读,这些文件全部不存在或不可写。使用 proot —— 一个基于 ptrace 的 syscall 拦截器 —— 在进程和内核之间插入路径翻译。glibc 以打开 /etc/resolv.conf,proot 将路径改写为 /data/local/tmp/mimocode/rootfs/etc/resolv.conf,对 MiMo Code 完全透明。
不需要修改 MiMo Code 一行源码。
安装脚本提供双重保障,确保 mimo、bash、python3、git 全局可用:
1. /data/adb/ksu/bin/ 即时可用。 KSU 自带的 bin 目录,在 su 的 PATH 中,SELinux context 正确,写完立刻生效,无需重启:
su
mimo --version
bash --version
python3 -m pip --version
git --version2. /data/adb/modules/mimo/ 重启后挂载。 systemless 模块方式,重启时 KSU 将模块内的二进制 bind-mount 到 /system/bin/,作为备选方案。不修改系统分区,不触发 SafetyNet,卸载时删除模块目录即可完全还原。
之所以加 /data/adb/ksu/bin/ 方案,是因为部分设备(如 Redmi K80 Pro)上 KSU 模块目录的 SELinux context 为 adb_data_file,KSU 无法读取,导致全局命令失效。/data/adb/ksu/bin/ 无此问题。
推荐:直接在手机终端(如 Termux / 自动指令)中执行一键安装
su -c "curl -sL https://github.com/AHLLX/MiMo-Code-Android/releases/latest/download/install.sh | sh"(注:由于国内网络原因,如果上述命令不通,可以使用 GitHub 镜像加速):
su -c "curl -sL https://ghproxy.cn/https://github.com/AHLLX/MiMo-Code-Android/releases/latest/download/install.sh | sh"备用:使用电脑 ADB 推送安装
adb push online/install.sh /data/local/tmp/
adb shell su -c "sh /data/local/tmp/install.sh"安装完成,立即全局可用(无需重启):
su
mimoproot 通过 ptrace 拦截目标进程的每一个 syscall。当 glibc 执行 open("/etc/resolv.conf") 时,proot 暂停进程,将路径翻译为 /data/local/tmp/mimocode/rootfs/etc/resolv.conf,再恢复进程。对 MiMo Code 完全透明。
wrapper 通过 5 个 bind mount 实现文件覆盖:
| 真实路径 | 虚拟路径 | 用途 |
|---|---|---|
.../lib/* |
/lib/* |
glibc, bash |
.../rootfs/etc/resolv.conf |
/etc/resolv.conf |
DNS |
.../rootfs/etc/hosts |
/etc/hosts |
本地解析 |
.../rootfs/etc/nsswitch.conf |
/etc/nsswitch.conf |
NSS 配置 |
.../rootfs/etc/ssl/certs/ca-certificates.crt |
/etc/ssl/certs |
HTTPS 证书 |
| 组件 | 来源 | 用途 |
|---|---|---|
| glibc 2.42 | Debian arm64 (USTC) | Linux 二进制运行时 |
| bash 5.3.9 | Debian pool | MiMo 子进程 shell |
| python3.13.14 | Debian pool | 开发工具 |
| git 2.39.5 | Debian pool | 版本控制 |
| proot 5.3.0 | GitHub Releases | syscall 翻译层 |
| MiMo Code | GitHub Releases | 应用程序本体 |
全部安装到 /data/local/tmp/mimocode/,该路径 SELinux 上下文为 shell_data_file,天然可执行。
- Android 设备,ARM64 (aarch64) 处理器
- Root 权限(已验证 KernelSU;理论兼容 Magisk、APatch)
- ADB 用于初始部署
已验证设备:
| 设备 | 系统 | Root 方案 | 状态 |
|---|---|---|---|
| 小米 Pad 6s Pro 12.4 | Android 16, HyperOS 3.0.303 | KernelSU | ✅ 正常 |
| Redmi K80 Pro | Android 16, HyperOS 3.0.303 | KernelSU | ✅ 正常(/data/adb/ksu/bin/) |
其他设备理论上可用,欢迎提交验证结果。
| 设备 | 状态 |
|---|---|
| — | — |
暂无其他可测试设备,欢迎提交验证结果。
Python 3.13.14 + pip 26.1.2 随 MiMo Code 一起安装,安装后即刻全局可用:
su
python3 --version # Python 3.13.14
python3 -m pip --version # pip 26.1.2Git 2.39.5(glibc 版本)通过 proot 运行,支持 HTTPS 和 SSH。安装后全局可用:
su
git --version # git version 2.39.5
git clone https://github.com/...注意: Git 在 Android 上需要 proot 路径翻译才能正常使用 HTTPS/SSH,wrapper 已透明处理。
| 类别 | 工具 | 状态 |
|---|---|---|
| 执行 | bash | 正常 |
| 文件 | read, write, edit | 正常 |
| 搜索 | glob, grep | 正常 |
| 导航 | change_directory | 正常 |
| 记忆 | memory | 正常 |
| 任务 | task | 正常 |
| 子代理 | actor | 正常 |
| 网络 | webfetch | 正常 |
| 技能 | skill | 正常 |
| 工作流 | workflow | 正常 |
工作流说明:简单脚本、agent()、parallel() 均正常。内建 deep-research 可能需要更大的 timeout。
其余 9 个为辅助/内部工具,由上述工具间接调用或按需激活:question、history、codesearch、websearch、lsp、apply_patch、multiedit、plan、invalid。
| 文件 | 用途 |
|---|---|
install.sh |
一键安装脚本。从 Debian 镜像和 GitHub Releases 下载 glibc、bash、python3、proot 和 MiMo Code。生成 wrapper 和 KSU 模块。再次运行支持更新、修复、卸载。 |
wrappers/mimo |
运行时启动器。通过 proot 挂载 5 个虚拟路径,经由 glibc 的 ld-linux 启动 MiMo Code。设置 HOME、MIMOCODE_HOME、PYTHONHOME、SHELL。 |
wrappers/bash |
通过动态链接器启动 glibc 版本的 bash。 |
wrappers/python3 |
启动 glibc 版本的 python3,设置 PYTHONHOME 指向 Debian 标准库。 |
lib/git |
Git 2.39.5(glibc 版本)通过 Debian 软件包安装。经由 proot 运行以支持完整的 HTTPS/SSH。 |
首选通过安装脚本(自动处理权限):
adb shell su -c "sh /data/local/tmp/install.sh"
# 选择 [3] Uninstall卸载后需重启设备,KSU 模块挂载才会完全清除。
也可手动删除:
adb shell
su
rm -rf /data/local/tmp/mimocode /data/local/tmp/mimo /data/local/tmp/bash /data/local/tmp/python3 /data/adb/modules/mimo /data/adb/mimocode /data/local/.mimo-cache /data/local/.mimo-proot-cache
rm -f /data/adb/ksu/bin/mimo /data/adb/ksu/bin/bash /data/adb/ksu/bin/python3 /data/adb/ksu/bin/git- MiMo Code 及 MiMo v2.5 模型 完成了项目前期的路径验证与原型编码,实现了平板端可用
- DeepSeek V4 Pro 负责后期的完整项目开发、文档整理与细节调优
- proot 提供 syscall 拦截与路径翻译,是 glibc 兼容层的核心依赖
- Debian arm64 软件包提供 glibc 运行时、bash、python3
- KernelSU 提供 Android Root 方案与 systemless 模块支持
- 🚀 并发下载:完全重构了依赖获取逻辑,针对 51 个 Debian 包采用并发后台任务下载模式。下载时间从 ~5-10 分钟大幅缩减至 2 分钟以内。
- 🧠 动态版本解析:不再硬编码 Debian 软件包版本。脚本会自动通过正则匹配从 Debian 镜像站拉取最新的
arm64软件包。 - 🛡️ 智能镜像降级:默认优先使用
mirrors.ustc.edu.cn中科大源,当特定架构包缺失或解析超时时,能够以包为粒度智能回退到官方deb.debian.org继续下载。 - ⏱️ 强健的网络容错:为网页解析和包下载分别配置了
--retry 3重试及--max-time自动超时机制,从容应对代理断流或连接挂死。
- 🚀 Git 支持:安装 git 及全部依赖(HTTPS/SSH 通过 proot)
- 🔧 再次运行菜单:选项 [2] 仅安装/修复 git
- 🗑️ 卸载确认:用户可选择保留数据或全部删除
- 🛡️ 双镜像防御:所有
deb下载增加dd magic校验并引入双节点 (USTC + Debian 官方源) 兜底,提取机制深度重构,防止网络异常导致环境损坏
- 🐛 修复版本检测:API 响应解析改用更稳健的双重方案,不再回退到硬编码的 v0.1.1
- 🐛 修复更新模式崩溃:
ROOTFS变量提升到顶层配置 — 更新模式不再报 "parameter not set"
- 🚀 智能更新:选"更新/修复"仅下载 MiMo 二进制,跳过 glibc/bash/python3/tools/proot(版本固定无需重下),更新约 10 秒
- 💾 更新不触碰用户数据(记忆/配置/pip 包),无需备份恢复
v1.0.1 及更早
- v1.0.1:完善 Python 运行时、新增工具 (nano/less/file/tree)、修复 HTTPS 证书、修复 Update/Repair 菜单
- v1.0.0:初始发布
MIT。详见 LICENSE。