1. 项目简介
项目:Zorv AI(包名
com.ai.assistance.quro) 开源地址:github.com/Quor-a/Zorv… 适用版本:v1.0.77 更新日期:2026-09-02
Zorv AI 是一款深度整合系统能力的 AI 助手,其核心亮点在于突破 Android 系统边界,实现跨应用感知、系统级浮窗常驻与高特权操作。本文将从架构层面拆解其三大核心能力:LSPosed / Xposed 模块注入、ADB 高特权通道以及系统级浮窗(对话框 / 浏览器化小窗)。
2. 范围与定位
本章覆盖三类"穿透系统边界"的能力:
| 能力 | 角色 | 是否必需 |
|---|---|---|
| LSPosed / Xposed | 跨应用注入桥,补齐"前台 App 感知"等盲区 | 可选(opt-in) |
| ADB | 无线调试 / 授权 / 调用系统组件的高特权通道 | 按需启用 |
| 系统级浮窗 | 对话框、浏览器以 TYPE_APPLICATION_OVERLAY 常驻屏幕 | 核心能力 |
关键事实:核心能力(无障碍 / Shizuku / 设备管理员 / ROOT / ADB)走 Zorv AI 自有管线;LSPosed 只是"可选增强",用于解决"获取前台 App"等少数盲区,模块启停仍在 LSPosed Manager 完成。
3. 特权获取总览(自有管线 + 可选 LSPosed)
flowchart TB
subgraph OWN["Zorv AI 自有特权管线(核心)"]
P1["无障碍 AccessibilityService"]
P2["Shizuku"]
P3["设备管理员 DeviceAdmin"]
P4["ROOT"]
P5["ADB 无线调试"]
end
subgraph OPT["可选增强"]
L["LSPosed 模块\n(QuroXposedModule)"]
end
OWN --> BLIND["前台 App 感知盲区"]
L --> BLIND
BLIND --> BRIDGE["QuroLsposeBridgeReceiver\n补全 get_foreground_app"]
- 自有管线覆盖绝大多数系统操作(点击、启动 Activity、读设置等)。
- 仅当"需要知道当前前台是哪个 App"这类信息原生不可得时,才由 LSPosed 桥接补全。
4. LSPosed / Xposed 模块架构
4.1 组件与文件
| 组件 | 说明 |
|---|---|
QuroXposedModule | opt-in Xposed 模块入口(LSPosed 识别) |
QuroLSPosed | 作用域判定:isAppInScope() 读取标记文件 .lsposed_scope 真实判定作用域 |
QuroLsposeTool | AI 可调用的 lsposed 工具:支持 status / foreground / enable / disable |
QuroLsposeBridgeReceiver | 接收 ACTION_APP_OPENED 广播(com.ai.assistance.quro.LSPOSED_APP_OPENED)收集前台 App |
4.2 启用流程(enable)
sequenceDiagram
participant AI as AI 引擎
participant Tool as QuroLsposeTool
participant FS as 外部存储根
participant RX as QuroLsposeBridgeReceiver
AI->>Tool: lsposed(action="enable", pkg="...")
Tool->>FS: 写 lsposed_bridge.json\n(跨应用注入桥 + 可选 system_redirect)
FS->>RX: 模块读取并注册监听
RX-->>AI: 后续前台 App 变化经广播回传
enable写入外部存储根lsposed_bridge.json:跨应用注入桥 + 可选system_redirect。disable移除桥配置。status查询当前桥/作用域状态。foreground补get_foreground_app盲区(经广播回传当前前台 App)。
模块本身的"启用 / 停用 / 作用域勾选"仍在 LSPosed Manager 内操作;Zorv AI 只负责驱动桥配置与读取状态。
5. ADB 通道
ADB 在 Zorv AI 中作为"高特权系统通道"使用,典型场景:
| 场景 | 说明 |
|---|---|
| 无线调试授权 | 通过 adb tcpip / 配对码获取 shell 级权限 |
| 授予特殊权限 | 给自身或受控端授权(如 WRITE_SECURE_SETTINGS) |
| 调用系统组件 | 启动 Activity / Service / 发送广播 |
| 与浮窗配合 | ADB 取得权限后,浮窗可稳定常驻、免被系统收回 |
ADB 与无障碍 / Shizuku / ROOT 共同构成"自有特权管线",与 LSPosed 互为补充。
6. 对话框「化小窗」架构
用户可把正在进行的 AI 对话收起为屏幕角落的小窗,继续在其它 App 中操作,需要时再点开。
flowchart TB
Chat["ChatScreen 对话"] -->|"用户点 化小窗"| Mgr["QuroMiniWindowManager\n(进程级单例)"]
Mgr --> SVC["QuroMiniWindowService\nspecialUse 前台保活"]
SVC --> WM["WindowManager.addView\nTYPE_APPLICATION_OVERLAY"]
WM --> View["对话浮窗 View\n(常驻: show/hide 只 add/remove)"]
关键点:
QuroMiniWindowService:以specialUse前台服务保活,避免被后台回收。QuroMiniWindowManager:进程级单例,统一收纳/恢复浮窗。- 常驻不重建:显示/隐藏只做
addView/removeView,浮窗 View 全程不销毁、不丢状态。
7. 浏览器「化小窗」架构
内置浏览器同样可化为小窗,且复用全局单 WebView,避免重复加载:
flowchart TB
AI["AI 调用 browser_act(open)"] -->|"browserUrl=null\nbrowserFloatUrl=u"| Mgr["QuroMiniWindowManager"]
Mgr --> Host["QuroBrowserViewHost\n(全局单 WebView)"]
Host -->|"重挂不重建/不重载"| WM["WindowManager.addView"]
WM --> FView["浏览器浮窗"]
- AI 用
browser_act的open默认化小窗:browserUrl=null; browserFloatUrl=u。 QuroBrowserViewHost持有全局唯一 WebView,化小窗时只是"重挂"到浮窗容器,不重建、不重载页面,保住登录态与滚动位置。
8. 浮窗公共机制(WindowManager / flags / 常驻)
两类浮窗共享同一套底层机制:
| 机制 | 取值 / 行为 | 效果 |
|---|---|---|
| 窗口类型 | TYPE_APPLICATION_OVERLAY | 系统级浮层,覆盖其它 App |
| 保活 | QuroMiniWindowService(specialUse 前台) | 不被后台回收 |
| 焦点 flag | FLAG_NOT_FOCUSABLE | 不抢焦点,不影响其它 App 输入 |
| 输入法兼容 | FLAG_ALT_FOCUSABLE_IM | 浮窗内可正常唤起键盘 |
| 触摸穿透 | FLAG_NOT_TOUCH_MODAL | 浮窗外区域仍可操作原 App |
| 全屏布局 | FLAG_LAYOUT_IN_SCREEN | 浮窗可铺满/贴边 |
| 生命周期 | show/hide = addView / removeView | 视图常驻,状态不丢 |
flowchart LR
A["FLAG_NOT_FOCUSABLE"] --> B["不挡其它 App 输入"]
C["FLAG_NOT_TOUCH_MODAL"] --> B
D["FLAG_ALT_FOCUSABLE_IM"] --> E["面板内可唤起键盘"]
F["FLAG_LAYOUT_IN_SCREEN"] --> G["可贴边/全屏"]
9. 能力对照表
| 能力 | 触发方式 | 核心类 | 是否可选 |
|---|---|---|---|
| 对话化小窗 | 用户/AI 触发 | QuroMiniWindowService + QuroMiniWindowManager | 核心 |
| 浏览器化小窗 | browser_act(open) 默认 | QuroBrowserViewHost | 核心 |
| LSPosed 桥 | lsposed 工具 | QuroLsposeTool / QuroLSPosed / QuroLsposeBridgeReceiver | 可选 |
| 前台 App 补全 | 广播回填 | QuroLsposeBridgeReceiver | 可选 |
| ADB 高特权 | 无线调试 / 授权 | 自有管线 | 按需 |
10. 总结
Zorv AI 通过自有特权管线 + 可选 LSPosed 增强的组合策略,在 Android 系统边界上实现了优雅的突破:
- 核心能力自研:无障碍、Shizuku、设备管理员、ROOT、ADB 全部走自有管线,不依赖外部框架;
- LSPosed 按需增强:仅在"前台 App 感知"等原生盲区启用,模块启停交给 LSPosed Manager;
- 浮窗常驻不重建:对话框与浏览器化小窗共享
TYPE_APPLICATION_OVERLAY机制,视图全程不销毁、状态不丢失。
如果你对跨进程能力框架、小程序渲染或 AI 人格孵化机制感兴趣,欢迎 Star 项目持续关注后续架构解析。