Skip to content

架构总览

Zorv AI 采用分层架构:UI 层负责交互,Agent 核心负责编排,工具 / 能力层与特权层提供系统操作通道,引擎 / 运行时提供共享执行环境,IM 通道让助手在线,数据层负责持久化与诊断。

分层结构

mermaid
flowchart TB
    subgraph UI["UI 层 · Jetpack Compose"]
        A1["ChatScreen 对话框"]
        A2["PersonaBar 人格卡"]
        A3["PermissionModeBar · 权限胶囊"]
        A4["Markdown / 代码块渲染 · 全屏预览"]
    end
    subgraph CORE["Agent 核心 · QuroChatViewModel"]
        B1["多会话隔离 liveBuffers"]
        B2["种子快照 convBase"]
        B3["显示刷新闸门 canUpdateDisplay"]
        B4["工具注册表 QuroToolRegistry"]
        B5["技能系统 skill__{name}"]
    end
    subgraph TOOLS["工具 / 能力层 · core/tools"]
        C1["launch_app"]
        C2["无障碍 input_text / tap_screen / read_screen"]
        C3["cms_* 模块调用"]
        C4["cms_engine_status"]
        C5["Agent 键盘 ai_type_text / press_enter / press_send"]
        C6["scheduler 定时任务"]
        C7["memory_* 记忆工具"]
    end
    subgraph PRIV["特权 / 权限层 · L1–L5"]
        D1["L1 无障碍 AccessibilityService"]
        D2["L2 Shizuku uid 0/2000"]
        D3["L3 设备管理员 DeviceAdmin"]
        D4["L4 ROOT su"]
        D5["L5 应用内 Linux proot + Alpine"]
    end
    subgraph ENGINE["引擎 / 运行时层"]
        E1["CMS 引擎 共享运行时 NODE / PYTHON / SSH / JAVA / RUST / GO"]
        E2["CMS v2 模块 QuroCmsRepository"]
        E3["GeckoView 浏览器 MPL-2.0"]
        E4["本地语音 sherpa-onnx STT / TTS"]
    end
    subgraph IM["IM 通道层 · 手机端均无公网端点"]
        F1["飞书 WebSocket"]
        F2["QQBot 官方 WS"]
        F3["微信 iLink HTTP 长轮询 35s"]
    end
    subgraph DATA["数据 / 持久化"]
        G1["QuroConversationStore 磁盘会话仓库"]
        G2["启动自愈 DATA_REPAIR 去重"]
        G3["诊断日志 Download/QuroAI_logs/"]
    end

    UI --> CORE
    CORE --> TOOLS
    TOOLS --> PRIV
    TOOLS --> ENGINE
    PRIV --> ENGINE
    CORE --> IM
    CORE --> DATA

各层职责

UI 层(Jetpack Compose)

对话框 ChatScreen、人格卡 PersonaBar、权限胶囊 PermissionModeBar(「AI 自动保存记忆」+「深度思考」并排)、Markdown / 代码块渲染与全屏预览。

Agent 核心(QuroChatViewModel)

  • 多会话隔离:liveBuffers 按会话独立,避免串台;
  • 种子快照 convBase、显示刷新闸门 canUpdateDisplay
  • 多轮 [第N轮] hidden 标记防混淆;
  • 工具注册表 QuroToolRegistry.active
  • 技能系统 QuroSkill → 注册为 skill__{name} 工具。

工具 / 能力层(core/tools)

launch_app、无障碍 input_text / tap_screen / read_screen(节点树,非截图)、cms_* 模块调用、cms_engine_status、Agent 键盘 ai_type_text / ai_press_enter / ai_press_send(注册为系统输入法的极简 IME,向其他 App 灌字)、scheduler 定时任务、memory_* 记忆工具。

特权 / 权限层(L1–L5)

无障碍 → Shizuku(uid 0/2000) → 设备管理员 → ROOT(su) → 应用内 Linux(proot + Alpine)。所有高层通道需用户显式授权。详见快速开始 · 权限引导

引擎 / 运行时层

  • CMS 引擎:共享运行时供给机制,按需提供 NODE / PYTHON / SSH / JAVA / RUST / GO(DepKind.ENV + CmsEnvProvisioner 按需供给),用 cms_engine_status 查询就绪态 / 共享服务 / 部署进度。
  • CMS v2 模块QuroCmsRepository):用户自建可复用上层能力单元,运行在引擎之上。
  • GeckoView 浏览器(MPL-2.0):系统 WebView 替代,用于渲染网页与 HTML 预览。
  • 本地语音sherpa-onnx-whisper-tiny STT + 单例 QuroTtsHolder TTS。

🔑 引擎 ≠ 模块:CMS 引擎是「运行时骨架」(提供环境),CMS v2 模块是「楼栋」(消费环境)。

IM 通道层

飞书(WebSocket)/ QQBot(官方 WS)/ 微信 iLink(HTTP 长轮询 35s)。三家手机端均无公网端点。

数据 / 持久化

QuroConversationStore 磁盘会话仓库、启动自愈 DATA_REPAIR 去重、诊断日志写入手机公共 Download/QuroAI_logs/(无需 adb 即可取出)。

ACI 在架构中的位置

ACI(Agent Capability Interface)横切于「工具层」与「外部 App」之间:控制端(Zorv AI)通过 Binder 发现并调用受控端暴露的能力,把任意 App 变成 AI 可编排的工具。详见 ACI 2.0 与 SDK 路线图

Zorv AI · 设备端 AI Agent · Apache-2.0 开源