Skip to content

Repository files navigation

RSXM V2.0.0(原 Reasonix Proot App)

Android 上通过 proot 运行 Alpine Linux 环境,打开应用默认进入 RSXM 原生 GUI 会话界面(Reasonix AI 编码助手,可切换回 CLI 终端)的 APK 工程。

无需 root,无需安装 Termux。仅支持 arm64 (arm64-v8a) 设备。

功能特性

  • 一键进入 RSXM(GUI 默认):打开 APK → 自动解压 Alpine Linux → 启动 reasonix 交互会话,默认进入原生 GUI 会话视图(字段映射气泡 + 原生输入框);快捷栏「视图」或返回键可切回 CLI 终端;退出 reasonix 后落到 Alpine shell。
  • 完整 proot 环境proot -0 免 root 运行 Alpine 3.20(arm64),可 apk add 安装任意工具。
  • 真实 TTY:内置自编译 pty-bridge(静态 musl)创建 PTY,reasonix 的 TUI 完整可用(含鼠标滚轮滚动)。
  • 屏幕自适应:终端按手机视口自动计算行列并实时同步 PTY(旋转/软键盘自动重排)。
  • 触摸滚动:reasonix TUI 内滑动 → 模拟 SGR 滚轮事件滚动历史输出;shell 主屏滑动 → 滚动终端 scrollback;侧滑菜单内置滑动调速(档位 1~10,默认 5),档位越低滑动越慢越精细,可随时调整。
  • 纯黑主题(顶边栏仅菜单):全局纯黑界面——顶部仅保留「☰ 菜单」入口(其余功能收进侧滑栏/高级设置);GUI 输入框、新会话、回终端等控件均为黑底白字。
  • 顶边栏(仅菜单):顶部快捷栏仅保留「☰ 菜单」一个入口,所有功能经侧滑栏进入(ADB / API Key / GitHub / DS2API / 更新 / 项目 / 会话 / 视图切换 / 高级设置)。
  • 侧边栏精简 + 高级设置二级菜单:侧滑栏仅保留高频项(ADB / API Key / GitHub / DS2API / 更新 / 项目 / 会话 / 高级设置);ROOT、开发环境、SKILL、MCP、后台运行、YOLO 免审批、滑动速度、快捷键等收进「高级设置」二级面板(点按对应行进入功能页,返回箭头关闭)。
  • 双视图切换(终端 / GUI 对话):侧滑栏「视图切换」在 xterm.js 终端与原生会话视图间切换——原生视图以 PTY 实时流(剥离 ANSI 的终端输出气泡,保证回显不依赖会话文件)为主通道,同时把 reasonix 会话 jsonl(role/content/model/usage 等字段)映射为结构化气泡补充;- 破甲环境(Guardian 已禁用):内置 reasonix Guardian 高风险审查会 deny 破甲任务,v2.0.5 起在 ~/.reasonix/config.toml 写入 guardian_model = ""(Guardian 因模型缺失自动禁用):user 消息靠右蓝色气泡、assistant 靠左(带模型标签与 token 统计)、tool 灰色等宽体(含工具名),顶部信息条显示当前会话文件;配原生输入框(Enter/发送按钮,发送即映射为 user 气泡)。相比整屏文本渲染,字段映射按角色/时间/模型结构化展示,规避 WebView 黑屏与排版错乱;同时修复了环境输出按 8KB 块解码导致中文乱码的根因(CharsetDecoder 增量解码)。
  • 手机操作逻辑优化:视图模式记忆(重启恢复上次终端/对话视图);返回键三级逻辑(先关面板 → 原生视图先收键盘再回终端 → 才退出);原生视图头部「新会话 / 回终端」快捷按钮;输入发送后保持焦点(多轮连续输入);软键盘弹出时原生消息列表自动滚到底部。
  • GitHub 登录与自动打包:主屏快捷栏与侧滑栏「GitHub」面板支持输入/保存 GitHub Personal Access Token(仅存本机 SharedPreferences,不写入 Linux 环境),GET /user 验证登录态并显示账户;一键触发仓库 RSXMbuild-release.yml workflow(workflow_dispatch,云端 assembleRelease),轮询构建状态,完成后下载构建产物 APK 并经系统安装器安装(token 需 repo + actions 权限)。
  • 左侧侧滑配置菜单(DrawerLayout):
    • ADB 无线调试:guest 内自动安装 adb(国内镜像 + 国内 DNS),填写配对码/端口后一键发送配对连接命令到终端,或复制命令、直接跳转无线调试设置。
    • API Key 配置:随时查看/修改 DeepSeek API Key(写入 ~/.reasonix/.env,保存后自动重启环境)。
    • DS2API 网关(内置):应用启动时自动在 Linux 环境后台运行内置的 DS2API 服务(上游 CJackHwang/ds2api AGPL-3.0,v4.6.1),管理台 http://127.0.0.1:5001/admin(初始管理密钥 rsxm-ds2api-admin,首次保存配置后持久化到 /root/ds2api/config.json);若旧版 DS2API App 已占用 5001 端口则内置服务不重复启动。
    • 快捷键:侧滑栏「快捷键」弹出 reasonix 常用按键面板(Enter / Ctrl+A / Ctrl+E / Ctrl+W / Ctrl+U、↑↓、PgUp / PgDn、End、Tab / Shift+Tab、Esc、Ctrl+C、编辑门 y / n / u 等),点击条目即把对应按键序列发送到 reasonix 终端(不追加换行,面板保持打开可连续点按翻页)。
    • MCP 服务器:管理当前项目 .mcp.json(reasonix 按项目根 .mcp.jsonmcpServers 发现 MCP 服务器):列出已配置服务器(名称/类型/摘要),表单添加/编辑/删除——本地命令型选 stdio(command + args + env),远程选 http/sse(url + headers),支持 auto_start 开关(关闭则需在终端手动 reasonix mcp start);${VAR} 环境变量按 CLI 原生规则展开;保存后重启环境生效。
    • 更新 resonix:从官方 npm 包(@reasonix/cli-linux-arm64,npmmirror 国内镜像)下载 tgz 解压更新,或从手机选择新版文件、恢复内置版本。
  • 离线打包:Alpine rootfs、proot、reasonix、xterm.js 与 DS2API 全部内置,首次启动解压后无需网络(reasonix 调用 API / DS2API 连接 DeepSeek 时才需联网)。
  • 手机存储访问:guest 内 /sdcard 直接映射手机共享存储;首次启动引导"所有文件访问"授权(授权后自动重启环境生效),并可读写宿主 app 私有数据(/host-data)与只读系统分区(/host/system 等)。
  • bash 兼容:Alpine 无 bash,内置 bash → busybox ash(sh) 包装,reasonix 的 shell 命令可直接执行;同时关闭 reasonix 的 OS 沙箱(Android 无 bubblewrap)。
  • 破甲环境(内置):应用启动时自动把 infinite-gen-3 v0.5.0 破甲系统提示词注入 reasonix 的 ~/.reasonix/config.tomlsystem_prompt 键,幂等标记 rsxm-break-armor-v0.5.0),并同步为全局 skill rsxm-break-armor~/.reasonix/skills/)与全局指令(AGENTS.md 追加说明)——任何项目/任何会话下 AI 都携带该行为框架(来源 assets/break-armor-prompt.md,每次启动自动刷新)。
  • 手机 Root 权限:检测 KernelSU/Magisk,侧滑菜单可查看/测试授权状态;reasonix(AI)内直接执行 root <命令> 即通过 app 以 su 获取手机 root 权限(如 root idroot 'pm list packages')。

架构

┌──────────────────────────────────────────────────────┐
│ Android App (com.rxproot.app)                        │
│   DrawerLayout(侧滑配置菜单)                        │
│   WebView ── xterm.js 终端模拟器(自适应 + 触摸滚动) │
│        │  JS <-> Java 桥(键盘/尺寸/滚轮)            │
│   proot.so(termux fork 5.1.107.89,静态 musl PIE)   │
│     -0 -r <rootfs> -b /dev -b /proc -b /sys          │
│        -b /sdcard -b /host-data -b /host/*           │
│        │  PROOT_LOADER=<nativeLibDir>/loader.so      │
│   Alpine Linux 3.20 (arm64 minirootfs)               │
│     /usr/bin/pty-bridge ── 创建 PTY                  │
│       └── entry.sh ── 自动启动 reasonix              │
└──────────────────────────────────────────────────────┘

关键组件(全部打包在 APK 内)

组件 说明
lib/arm64-v8a/proot.so termux 维护的 proot 5.1.107.89(zig 交叉编译,musl 静态 PIE),修复 Android app 环境 accept/accept4 被 seccomp 拦截的问题
lib/arm64-v8a/loader.so termux proot 配套 loader(静态,链接脚本固定 0x2000000000),由 PROOT_LOADER 指定,绕过 SELinux execve 限制
assets/rootfs.tar Alpine 3.20 arm64 minirootfs(gzip,首次启动用系统 toybox tar 解压)
assets/ds2api/ds2api-bundle.tgz 内置 DS2API 网关(上游 CJackHwang/ds2api v4.6.1,AGPL-3.0:静态 arm64 二进制 + WebUI 管理台 + LICENSE/README),随环境启动自动后台运行(127.0.0.1:5001)
assets/usr/bin/pty-bridge 自编译静态 musl PIE,guest 内创建 PTY(posix_openpt+fork
assets/usr/bin/reasonix 静态链接 Go 二进制(来自官方 npm 平台包 @reasonix/cli-linux-arm64,可在应用内一键更新)
assets/web/* xterm.js 5.3.0 + fit addon(离线终端渲染)

构建

前置:JDK 17 + Android SDK(platforms;android-34build-tools;34.0.0)。

cd android-app
set JAVA_HOME=C:\path\to\jdk-17
set ANDROID_HOME=C:\path\to\android-sdk
call gradlew.bat assembleRelease

产物:android-app/app/build/outputs/apk/release/app-release.apk(R8 混淆 + 资源压缩,约 16MB)。

android-app/local.properties 需指向本机 SDK(未入库)。重编译 proot/pty-bridge 需要 zig(详见 android-app/README.md)。

安装与使用

adb install reasonix-proot.apk
  1. 首次打开:自动解压 Linux 环境(约 30 秒)→ 弹出 API Key 配置对话框,填入 DeepSeek API Key(platform.deepseek.com 获取)点击"保存并启动",即可直接进入 reasonix 会话。
  2. 已配置过则直接进入;随时可在 侧滑菜单 → API Key 配置 修改。
  3. 退出 reasonix 后自动回到 Alpine shell;输入 exit 关闭。

ADB 无线调试(用 guest 内 adb 调试本手机)

  1. 手机:设置 → 开发者选项 → 无线调试 → 打开,记下配对码与配对/连接端口。
  2. 侧滑菜单 → ADB 无线调试 → 填入配对码/端口 → 点「配对并连接」或「自动连接」 (由应用直接驱动容器内 adb 执行并回显结果,不依赖 reasonix 会话)。
  3. 连接成功(状态变「已连接」)后,在 reasonix 终端里即可 adb shell / adb install

更新 resonix

侧滑菜单 → 更新 resonix → 网络更新(默认官方 npm 源,可改 URL 指定版本)或从手机选择新版文件。

已知限制

  • 仅 arm64 设备;x86 模拟器无法运行。
  • DNS 使用国内公共 DNS(223.5.5.5 / 119.29.29.29)。
  • 应用私有目录(files/rootfs)在卸载时清除。
  • TUI 内滑动滚动依赖 reasonix 的 SGR 鼠标追踪(已启用)。
  • Android 11+ 无法访问其他应用的 Android/data 目录(系统硬限制)。

许可证

MIT。第三方组件版权归其各自作者所有: Reasonix(MIT)、proot(GPL-2.0)、Alpine Linux(GPL)、xterm.js(MIT)。

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages