开源解读|ZorvAI:基于 ACI 框架,让 Android App 能力成为 AI Agent 可编排工具
摘要:ZorvAI 是 GitHub 上的一个 Android 端 AI Agent 开源项目(https://github.com/Quor-a/ZorvAI )。它的核心创新在于提出了一套 ACI(Agent Capability Interface,智能体能力接口) 框架,目标是让"手机上的任意 App 能力"成为 AI Agent 可编排的工具,无需公网、无需云端中转。本文从功能架构、核心能力、ACI 机制、接入方式四个维度,为开发者梳理这个项目的技术全貌。
一、项目定位与核心功能ZorvAI 不是一个简单的"聊天 App 套壳",它的产品形态是 Android 端的 AI Agent 控制端——向上承接大模型能力,向下通过 ACI 框架调度设备内 App 能力。在用户侧,它提供了一整套现代 AI Agent 应具备的基础能力:多模型对话:可接入多种 LLM,灵活切换模型提供商人格系统:支持人格卡 / 角色设定,让 Agent 以不同"身份"与用户交互记忆能力:具备记忆能力,让 Agent 能沉淀历史、形成长期上下文语音全双工 TTS/STT:支持语音合成与识别,向自然语言交互演进定时任务:支持调度周期性或定点触发的任务多渠道接入:支持飞书 / QQ / 微信等接入,让 Agent 能力延伸到用户常用的 IM而在开发者侧,它最具价值的部分是 ACI 框架——这也是本文重点解读的对象。 二、ACI 框架:让 App 能力成为 AI 的可编排工具2.1 设计目标ACI 的设计目标非常明确:让"手机上的任意 App 能力"成为 AI Agent 可编排的工具,无需公网、无需云端中转。传统方案中,云端 Agent 想调用手机能力,要么走脆弱的无障碍模拟,要么依赖各厂商私有 API。ACI 选择基于 Android 原生的 AIDL Binder 机制,让"App 能力"成为 Agent 的一等公民工具。2.2 架构与角色ACI 的架构分为控制端和受控端两个角色:
┌──────────────────────────┐ AIDL Binder ┌──────────────────────────┐
│ 控制端(Zorv AI) │ ─── call / callAsync ───▶ │ 受控端(你的 App) ││ QuroAciManager │ ◀── ACIResponse ─────── │ BaseACIService 子类 ││ - discover() 发现 │ │ - onCreateCapabilities ││ - bind() 绑定 │ ─── ACTION_WAKE 广播 ──▶ │ - onCall() 处理 ││ - getCapabilities() │ (唤醒 stopped 进程) │ - onCheckPermission() ││ 取清单 │ │ │└──────────────────────────┘ └──────────────────────────┘控制端(Zorv AI) 的关键类是 QuroAciManager + aci-core 的 IACIService 桩,职责是扫描、绑定、取能力清单、发起调用、把结果喂给 LLM。
受控端(你的 App) 的关键类是 BaseACIService / Capability / ACIRequest / ACIResponse ,职责是继承 BaseACIService ,声明能力,实现处理逻辑。Binder 契约通过 IACIService.aidl / IACICallback.aidl 定义跨进程方法。 三、核心能力详解3.1 能力发现与调用链路一次完整的 ACI 调用,经历以下步骤:discover():控制端发现设备上的受控端服务bind():通过 Binder 建立跨进程绑定getCapabilities():受控端返回能力清单(Capability 列表)call / callAsync:控制端发起同步/异步调用ACIResponse:受控端返回执行结果ACTION_WAKE 广播:针对 ColorOS / Android 11+ 的 stopped-state,控制端先发广播唤醒受控端进程再绑定LLM 拿到能力清单后,由模型自主决策"调哪个能力、传什么参数",从而实现多 App 协同的自动化任务编排。3.2 五层鉴权机制ACI 在权限上做了 5 层鉴权,确保跨应用调用安全可控:Android Manifest 权限Binder UID 校验 onCheckPermission() 业务级白名单(其余两层鉴权详见 aci_permissions.xml 配置)纵深防御的设计思路,避免了"AI 乱调、越权调"的风险。3.3 aci-core:轻量的纯本地库 aci-core 是纯本地库,仅依赖 androidx.annotation:annotation:1.7.1 ,以 AAR 形式分发,体积小、接入成本低。 四、受控端接入指南如果你是一名 Android 开发者,希望让自己的 App 能力被 ZorvAI 调度,接入步骤如下:4.1 获取 aci-core方式 A:从 Release 直接下载在 ZorvAI Releases 的 v1.0.6(含 AAR) 中下载 aci-core-release.aar ,放入你模块的 libs/ 目录。方式 B:使用开源独立分支aci-core 有独立的开源分支,仓库根即一个可独立 ./gradlew assembleRelease 的 Android 库工程。你可以:git checkout aci-core
之后自行构建或改源码。
4.2 继承 BaseACIService 声明能力在你的 App 中:继承 BaseACIService 在 onCreateCapabilities 中声明你的 App 能做什么在 onCall() 中处理 AI 发来的调用请求在 onCheckPermission() 中实现业务级鉴权4.3 配置 AndroidManifest在 AndroidManifest.xml 中声明所需权限与 (针对 Android 11+ 的包可见性问题,漏写会导致发现为空)。⚠️ 常见坑:很多"绑定失败 / 发现为空"的问题,根源是受控端漏写 导致 Android 11+ 包可见性查询返回空。务必加上。 五、典型应用场景站在最终用户视角,ZorvAI 的 ACI 框架打开了"自然语言指挥手机"的可能性:📝 场景一:会议自动编排用户说"帮我安排明早 9 点的团队会议,并提前把上周的项目笔记发给参会人"→ AI 编排:调用日历 App 创建会议 → 调用笔记 App 检索笔记 → 调用邮件 App 发送✈️ 场景二:出行智能规划用户说"帮我规划下周的东京之行"→ AI 编排:调用日历 App 排期 → 调用机票 App 查航班 → 调用地图 App 看景点路线💰 场景三:消费智能分析用户说"这个月花超了,分析下原因"→ AI 编排:调用记账 App 拉数据 → 调用表格 App 生成图表 → 调用笔记 App 输出结论🌐 场景四:跨渠道调度用户在飞书里@ ZorvAI,让它去调度手机上的 App 完成任务——Agent 的能力从 App 内部延伸到 IM 平台。 六、项目特色总结综合来看,ZorvAI 的差异化价值集中在以下几点:维度 ZorvAI 的做法
核心抽象 ACI 框架:App 能力 → AI 可编排工具通信机制 Android 原生 AIDL Binder,无公网依赖安全模型 5 层鉴权,纵深防御接入成本 aci-core AAR 仅依赖 annotation 库,轻量易集成当前版本 ACI v1.0.9,项目活跃迭代中适用人群 Android 开发者、Agent 研究者、效率用户https://github.com/Quor-a/ZorvAI
更多推荐


所有评论(0)