一、Agent Runtime / 内核(车机端核心)
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 开发语言 | Kotlin(主流)、Java、C++(JNI 推理层) |
| UI 框架 | Jetpack Compose + Material 3(车机适配 Car UI Library) |
| 异步模型 | Kotlin Coroutines + Flow、WorkManager(后台任务) |
| 系统平台 | Android Automotive OS (AAOS)、Android Auto |
| 车规芯片 | 高通 SA8155P(8 TOPS NPU)、SA8295P(30 TOPS NPU)、地平线 J5 |
开源框架
表格
| 项目 | 特点 | 车机适配度 |
|---|---|---|
| Google ADK for Android (adk-kotlin) | Google 官方开源 Agent 开发套件,Kotlin 编写,支持端侧 + 云端混合 Agent,内置多 Agent 层级编排,与 LiteRT-LM/Gemini Nano/Firebase AI 无缝集成 | ⭐⭐⭐⭐⭐ 官方首选 |
| Koog (JetBrains) | JetBrains 官方开源,纯 Kotlin/KMP 的企业级 Agent 框架,零 Python 依赖,原生 JVM 运行,支持编排和部署 | ⭐⭐⭐⭐ 纯 Kotlin 生态 |
| ZorvAI | 安卓端本地优先 AI Agent,Kotlin + Compose,Apache-2.0,核心是 "让手机任意 App 能力成为 Agent 可编排工具,无需公网" | ⭐⭐⭐⭐ 本地工具调用 |
| Knotwork | 端侧 AI Agent,Kotlin + Compose,内置 LiteRT 模型管理器,支持自定义模型 URL 下载 | ⭐⭐⭐ 纯端侧演示 |
| MobileAgent-Android | 移动端 GUI Agent,Kotlin + Compose,支持通过 Accessibility Service 操作手机 / 车机界面 | ⭐⭐⭐ 车机界面自动化 |
Demo 快速构建
最快路径:Google ADK + Kotlin
dependencies {
implementation "com.google.android.ai:adk:0.1.0"
implementation "com.google.android.ai:adk-litert:0.1.0" // 端侧模型
}
val agent = Agent(
model = LiteRtLm(modelFile = "qwen2.5-0.5b.bin"),
instructions = "你是车载助手",
tools = listOf(navigationTool, climateTool, mediaTool)
)
val result = agent.run("导航去最近的加油站")
- ADK 原生支持工具调用、多 Agent handoff、端云混合模型
- 在 Android Studio 中 30 分钟可跑通车机 Agent Demo
二、工具调用 / Tool Gateway(车机端最关键)
车机端的 "工具" 本质是车辆能力 (导航、空调、媒体、车窗、座椅)和第三方 App 能力。
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 协议标准 | MCP(Model Context Protocol)、Android App Functions |
| 系统级工具 | Vehicle HAL(车辆硬件抽象层)、Car API |
| 应用间调用 | App Actions for Cars(BII 内置意图)、VoiceInteraction Service |
| 跨进程通信 | Binder IPC、AIDL、ContentProvider |
| 网络传输 | Ktor(Android HTTP Server)、LocalSocket(本机 IPC) |
开源框架
表格
| 项目 | 特点 |
|---|---|
| MCP Kotlin SDK | JetBrains 官方,Kotlin Multiplatform 实现 MCP 协议,支持 JVM/Native/JS/Wasm/iOS,协程优先,安卓直接用 |
| Mobile-MCP | 安卓 MCP Server 框架,@MCPServer/@MCPTool 注解 + KAPT 代码生成,AIDL 服务自动生成 |
| droid-mcp | Android SDK,让 LLM 通过 MCP 协议结构化访问手机能力,也可直接当 Kotlin 函数调用(无需 MCP) |
| Android App Functions | Google 官方 Jetpack 库,让 App 像设备内 MCP Server 一样暴露工具给 Gemini/Assistant,2026 年最新 |
| android-mcp-server | Kotlin + Ktor + SQLite 实现的完整 MCP Server,Foreground Service 保活,Streamable HTTP 传输 |
| shuao-pro/android-mcp | 37 个工具的安卓 MCP Server,FastMCP + ADB bridge 架构,支持 Claude Desktop/Cherry Studio 连接 |
车机特有:车辆能力接入
Agent → MCP Tool Layer → Vehicle HAL → 实际硬件
↓
第三方 App(通过 App Actions / Binder)
- Vehicle HAL:AAOS 标准接口,控制空调 / 车窗 / 座椅 / 灯光等
- Car API :
CarPropertyManager读取 / 设置车辆属性 - App Actions for Cars :第三方 App 在
shortcuts.xml声明 BII(如actions.intent.NAVIGATE_TO_POI),语音助手通过 Intent 调用
Demo 快速构建
方案 A:MCP Kotlin SDK 搭车机工具网关
// 用 MCP Kotlin SDK 暴露车机工具
val server = McpServer(
tool("set_climate") { temp: Float ->
carPropertyManager.setProperty(CarPropertyIds.HVAC_TEMPERATURE, temp)
"空调已设为 ${temp}°C"
},
tool("navigate") { destination: String ->
val intent = Intent(CarIntents.ACTION_NAVIGATE).putExtra("dest", destination)
context.sendBroadcast(intent)
"正在导航到 $destination"
}
)
server.start(StreamableHttpTransport(port = 8080))
- 车机 Agent 通过 MCP Client 调用这些工具
- 20 分钟出 "语音控制空调 + 导航"Demo
方案 B:Android App Functions(官方路线)
- 在
shortcuts.xml声明 capability,App 自动成为系统 Agent 可调用的工具源 - 适合演示 "第三方 App 零改造接入车载语音助手"
三、记忆与上下文管理(端侧本地 RAG)
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 向量存储 | SQLite 向量扩展(嵌入式,零额外依赖) |
| 嵌入模型 | ONNX Runtime Mobile(INT8 量化 embedding)、MediaPipe Tasks |
| 文本分块 | 自定义 Chunker(带 overlap) |
| 结构化记忆 | Room (SQLite ORM)、DataStore |
| 短期上下文 | 滑动窗口 + 摘要压缩 |
开源框架
表格
| 项目 | 特点 |
|---|---|
| sqlite-vec | 最流行的 SQLite 向量扩展,支持 F32/F16/INT8/1Bit,Android 预编译 .so 直接集成,毫秒级检索 |
| SQLite-Vector | 新版 SQLite 向量扩展,向量存在普通表 BLOB 中(无需虚拟表),低内存模式默认 30MB RAM,专为 Edge AI 优化 |
| ZVec (阿里) | 阿里开源轻量级嵌入式向量数据库,3 行代码实现端侧 RAG,高性能本地向量检索 |
| MediaPipe RAG (SqliteVectorStore) | Google 官方 AI Edge RAG 方案,内置 SqliteVectorStore,与 LiteRT-LM 推理管道无缝集成 |
| ONNX Runtime Mobile | 端侧 embedding 模型推理,XNNPACK/NNAPI 加速,INT8 量化 |
端侧 RAG 架构
文档 → Chunker → ONNX Embedding → sqlite-vec 存储
↓
用户 Query → Embedding → 向量检索 Top-K → 注入 Prompt → 端侧 LLM 生成
Demo 快速构建
// sqlite-vec + ONNX Runtime 实现车机本地记忆
class CarMemory(context: Context) {
private val db = SQLiteDatabase.openDatabase(
context.getDatabasePath("memory.db").path, null, 0
)
init { System.loadLibrary("vec0") }
fun add(text: String) {
val embedding = onnxEmbedder.embed(text) // FloatArray
db.execSQL("INSERT INTO docs(text, vec) VALUES(?, ?)",
arrayOf(text, embedding.toBlob()))
}
fun search(query: String, k: Int = 3): List<String> {
val qv = onnxEmbedder.embed(query)
val cursor = db.rawQuery(
"SELECT text FROM docs ORDER BY vec MATCH ? LIMIT $k",
arrayOf(qv.toBlob())
)
return cursor.map { it.getString(0) }
}
}
- 把车主手册、车辆说明书向量化存入 sqlite-vec
- Agent 回答 "这个故障灯是什么意思" 时检索本地手册
- 完全离线,隐私安全,25 分钟出 Demo
四、多 Agent 协同调度(端侧轻量编排)
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 编排框架 | ADK Multi-Agent、Koog |
| 通信方式 | 进程内直接调用(同 App)、AIDL/Binder(跨 App)、A2A over HTTP(端云 / 车车) |
| 调度模式 | 顺序执行、层级调度(主 Agent → 子 Agent)、事件驱动 |
| 状态管理 | Kotlin StateFlow、SavedStateHandle |
开源框架
表格
| 项目 | 特点 |
|---|---|
| Google ADK Multi-Agent | 官方支持模块化多 Agent 系统,可组合成层级结构,on-device + cloud Agent 混合编排 |
| Koog (JetBrains) | Kotlin 原生 Agent 编排,支持多 Agent 协作,零 Python 依赖 |
| A2A Protocol | Google Agent2Agent 协议,Kotlin SDK 可用,适合车机 Agent 与手机 / 云端 Agent 跨设备协作 |
| ZorvAI | 本地优先,支持 App 能力编排成 Agent 工具链 |
车机多 Agent 典型拓扑
┌─────────────┐
│ 主 Agent │ (语音入口,意图分发)
└──────┬──────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ 导航 Agent │ │ 车控 Agent │ │ 娱乐 Agent │
│ (地图/路线) │ │(空调/车窗) │ │(音乐/播客) │
└────────────┘ └────────────┘ └────────────┘
Demo 快速构建
用 ADK 定义 3 个专业 Agent + 1 个路由 Agent:
val navAgent = Agent(model = liteRt, instructions = "处理导航相关", tools = listOf(navTool))
val carAgent = Agent(model = liteRt, instructions = "处理车辆控制", tools = listOf(climateTool, windowTool))
val mediaAgent = Agent(model = liteRt, instructions = "处理媒体娱乐", tools = listOf(mediaTool))
val router = Agent(
model = liteRt,
instructions = "根据用户意图分发到对应 Agent",
handoffs = listOf(navAgent, carAgent, mediaAgent) // ADK 内置 handoff
)
router.run("有点热,帮我打开窗户再放首歌")
- ADK 的
handoffs机制自动实现 Agent 间交接 - 20 分钟出 "多 Agent 协同处理复合指令"Demo
五、模型网关 / Model Gateway(端侧模型路由)
车机端的 "模型网关" 不是传统的多 Provider 路由,而是端侧模型选择 + 端云协同决策。
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 端侧推理 API | LiteRT-LM (Google)、MediaPipe LLM Inference API |
| 模型格式 | GGUF、.bin (FlatBuffers)、ONNX、MNN 模型 |
| 路由策略 | 按任务复杂度选模型(简单任务端侧 0.5B,复杂任务上云)、按网络状态切换 |
| 云端接口 | OpenAI 兼容 API、Firebase AI、火山引擎 / 阿里云端点 |
开源框架
表格
| 项目 | 特点 |
|---|---|
| LiteRT-LM (Google) | Google 官方端侧大模型推理库,Android 原生支持,工具调用(Tool Calling)原生支持,与 ADK 无缝集成 |
| MediaPipe LLM Inference API | Google 官方,支持 Gemini Nano/Phi/Qwen 等模型,GPU 加速,统一推理接口 |
| llama.cpp (Android JNI) | GGUF 格式,社区最活跃,llama-android 提供 JNI 绑定,server 模式可暴露 OpenAI 兼容接口 |
| MNN-LLM | 阿里开源,Android APK 直接可用,支持 Qwen2.5 Omni 多模态,CPU/NPU 后端 |
| ONNX Runtime Mobile | 跨平台,NNAPI/QNN Execution Provider 调用 NPU |
| MLC-LLM | TVM 编译优化,支持高通 Adreno GPU OpenCL 加速 |
端云协同路由架构
用户请求 → 路由决策层
├─ 简单意图(设空调/切歌) → 端侧 0.5B 模型 (离线, <300ms)
├─ 中等意图(导航/问答) → 端侧 1.5B 模型 (离线, <1s)
└─ 复杂意图(长文本/推理) → 云端大模型 (需网络)
Demo 快速构建
用 LiteRT-LM 加载两个不同大小的模型,按输入长度路由:
val smallModel = LiteRtLm(modelFile = "qwen2.5-0.5b-q4.bin")
val largeModel = LiteRtLm(modelFile = "qwen2.5-1.5b-q4.bin")
fun route(query: String): String {
return if (query.length < 20 && isCarControl(query)) {
smallModel.generate(query) // 简单车控用小模型
} else {
largeModel.generate(query) // 复杂对话用大模型
}
}
- 演示 "端侧多模型按需调度,平衡延迟和能力"
- 15 分钟出 Demo
六、安全边界 / 沙箱(安卓原生 + 车机增强)
安卓系统本身就是沙箱优先的设计,车机端在此基础上有更严格的功能安全要求。
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 应用隔离 | Linux UID 隔离(每个 App 唯一 UID)、进程级隔离 |
| 强制访问控制 | SELinux(MAC 强制访问控制,车机 ROM 定制策略) |
| 系统调用过滤 | Seccomp-BPF(过滤危险 syscall) |
| 硬件安全 | TEE 可信执行环境(Qualcomm QSEE)、Secure Element |
| 网络隔离 | VPN/Network Security Config、出站白名单 |
| 功能安全 | ASIL 分级(车载安全完整性等级)、Safety Island |
开源 / 系统方案
表格
| 方案 | 特点 |
|---|---|
| Android 应用沙箱 | 系统原生,UID + SELinux + Seccomp 三层隔离,Agent 生成的代码运行在独立进程 / 独立 UID 中 |
| WebView 沙箱 | 若 Agent 需执行 JS/HTML,用独立进程的 WebView(android:process=":sandbox"),渲染进程低权限 |
| SELinux 策略定制 | 车机 ROM 开发者为 Agent 进程定义独立 domain,最小权限原则,.te 文件精细控制 |
| IsolatedProcess | Android 服务的 android:isolatedProcess="true",无权限、无 UID 身份的隔离进程 |
| Docker on Android | 部分车机支持容器运行时(如 via LXC),可跑 E2B/agent-sandbox 等容器沙箱 |
车机安全架构
Agent 进程 (独立 UID + SELinux domain)
↓ 受限 Binder 调用
Vehicle HAL (SELinux 严格策略,只允许特定属性读写)
↓
Safety Island (独立 MCU,ASIL-D 安全监控)
Demo 快速构建
方案 A:IsolatedProcess + SELinux 演示
<service android:name=".CodeExecutionService"
android:process=":sandbox"
android:isolatedProcess="true" />
- Agent 生成的代码在
:sandbox隔离进程执行 - 该进程无网络权限、无存储权限、无法访问其他 App 数据
- 通过 Messenger 与主进程通信,只传递输入输出
- 15 分钟出 "隔离执行 AI 生成代码"Demo
方案 B:WebView 沙箱执行 JS
- 独立进程 WebView 加载空白页,通过
evaluateJavascript执行 Agent 生成的 JS - WebView 默认无文件访问、无地理位置,
setJavaScriptEnabled(false)按需开启 - 适合轻量级代码执行场景
七、任务调度与编排(端侧工作流)
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 工作流引擎 | ADK Agent 编排、Koog |
| 后台任务 | WorkManager(持久化、可重试、约束触发) |
| 异步调度 | Coroutines + Flow、Channel |
| 状态持久化 | Room、DataStore、SharedPreferences |
| 定时 / 条件触发 | AlarmManager、WorkManager Constraints(充电 / WiFi / 车载电源) |
开源框架
表格
| 项目 | 特点 |
|---|---|
| Google ADK | Agent 内置状态管理和工具调用编排,支持流式输出 |
| Koog | Kotlin 原生工作流编排,事件驱动 |
| WorkManager | Android 官方,保证执行的后台任务调度,适合 "车辆启动时自动整理记忆"" 充电时同步数据 " 等场景 |
| Kotlin Coroutines | 轻量级并发原语,async/await、Flow 流式处理 Agent 输出 |
车机典型调度场景
- 车辆启动触发:Agent 自动加载上下文、检查天气 / 日程
- 充电时触发:模型热更新、记忆整理 / 摘要压缩
- 停车时触发:复杂推理任务(端侧大模型全速运行)
- 行驶中触发:安全优先,只允许简单车控指令,限制长文本生成
Demo 快速构建
// WorkManager 调度"充电时整理记忆"
val compressRequest = PeriodicWorkRequestBuilder<MemoryCompressWorker>(
1, TimeUnit.DAYS
).setConstraints(
Constraints.Builder()
.setRequiresCharging(true)
.setRequiresDeviceIdle(true)
.build()
).build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"memory_compress", ExistingPeriodicWorkPolicy.KEEP, compressRequest
)
- 配合 ADK Agent,演示 "车机 Agent 的生命周期调度"
- 15 分钟出 Demo
八、评测与可观测性(端侧性能监控)
车机端可观测性聚焦推理性能、资源占用、功能安全,与服务端 Langfuse 等不同。
安卓车机技术栈
表格
| 层级 | 技术 |
|---|---|
| 系统 Trace | Perfetto、Systrace(android.os.Trace) |
| 性能分析 | Android Studio Profiler(CPU / 内存 / 网络 / 能耗) |
| 日志系统 | logcat、结构化日志(Timber) |
| AI 专用指标 | TTFT(首 Token 延迟)、TPOT(每 Token 耗时)、Token 吞吐、推理功耗 |
| 基准测试 | 固定 prompt 迭代测试、温度 / 热节流监控 |
开源工具
表格
| 项目 | 特点 |
|---|---|
| Perfetto | Android 官方系统级追踪,支持内核态 + 用户态全链路 trace,AI 推理阶段可打点 |
| LM-METER | 学术开源,端侧 LLM 推理延迟 profiler,phase 级(embedding/prefill/decode)和 kernel 级细粒度监控,仅 2.58% 吞吐开销 |
| TinyBench | 端侧推理基准测试,20 轮连续迭代,记录每轮吞吐 / 功耗 / 温度 / 热状态 |
| Android Studio Profiler | 官方 IDE 集成,实时查看内存(PSS)、CPU 占用、网络流量 |
| logcat + 自定义打点 | Log.d("AI_INFER", "prefill=${t1}ms decode=${t2}ms tokens=$n") |
车机可观测架构
Agent 推理 → Trace 打点(Perfetto) → 本地环形缓冲
↓
异常/超阈值 → logcat 告警
↓
WiFi 连接时 → 上传云端分析(可选)
Demo 快速构建
// 用 android.os.Trace 打点 + 自定义指标
fun generateWithMetrics(prompt: String): String {
Trace.beginSection("llm_prefill")
val prefillStart = System.currentTimeMillis()
val context = model.prefill(prompt)
val prefillMs = System.currentTimeMillis() - prefillStart
Trace.endSection()
Trace.beginSection("llm_decode")
val decodeStart = System.currentTimeMillis()
val output = model.decode(context)
val decodeMs = System.currentTimeMillis() - decodeStart
Trace.endSection()
Log.i("AI_METRICS", "ttft=${prefillMs}ms tpot=${decodeMs/output.length}ms")
return output
}
- 用 Perfetto 抓取 trace,在 UI 中看到推理阶段耗时
- 记录 P50/P95 延迟、内存占用、温度
- 20 分钟出 "端侧推理全链路性能监控"Demo
九、端侧 / 车载部署(核心中的核心)
安卓车机推理框架对比
表格
| 框架 | 模型格式 | NPU 支持 | 车机适配 | 特点 |
|---|---|---|---|---|
| llama.cpp | GGUF | 通过 QNN/Vulkan | ⭐⭐⭐⭐⭐ | 社区最活跃,模型即拉即跑,JNI 绑定成熟,server 模式 OpenAI 兼容 |
| MNN-LLM | MNN | 高通 / 瑞芯微 NPU | ⭐⭐⭐⭐ | 阿里开源,Android APK 开箱即用,支持多模态,CPU 性能强 |
| ONNX Runtime Mobile | ONNX/.ort | NNAPI/QNN/CoreML | ⭐⭐⭐⭐ | 跨平台,微软维护,Execution Provider 架构灵活 |
| LiteRT-LM | .bin (FlatBuffers) | NNAPI/GPU | ⭐⭐⭐⭐⭐ | Google 官方,Android 原生,与 ADK/MediaPipe 无缝,Tool Calling 原生 |
| MLC-LLM | TVM 编译 | Adreno GPU OpenCL | ⭐⭐⭐ | 编译优化极致,高通 GPU 加速好,部署复杂度高 |
| NCNN | ncnn 模型 | Vulkan GPU | ⭐⭐⭐ | 腾讯优图,轻量无依赖,适合小模型 / 视觉模型 |
| Qualcomm SNPE/QNN | DLC/context bin | Hexagon NPU 原生 | ⭐⭐⭐⭐⭐ | 高通官方,SA8295P NPU 性能最优,需模型转换 |
车规芯片部署路线
表格
| 芯片 | NPU 算力 | 推荐推理栈 | 可跑模型 |
|---|---|---|---|
| SA8155P | 8 TOPS | llama.cpp + QNN / ONNX Runtime + NNAPI | Qwen2.5-0.5B/1.5B INT4 |
| SA8295P | 30 TOPS | Qualcomm QNN + MNN / LiteRT-LM | Qwen2.5-3B/7B INT4,多模态 |
| 地平线 J5 | 128 TOPS | 地平线天工开物工具链 + ONNX | 更大模型,视觉融合 |
| 联发科 Dimensity Auto | - | NeuroPilot + LiteRT | 端侧 AI 加速 |
语音链路(车机必备)
表格
| 功能 | 开源方案 | 特点 |
|---|---|---|
| ASR 语音识别 | sherpa-onnx | 下一代 Kaldi,ONNX Runtime,支持中文 / 英文 / 方言,Android 预编译 APK,离线毫秒级 |
| ASR 备选 | whisper.cpp | GGUF 格式,JNI 绑定,多语言 |
| ASR 备选 | FunASR (Paraformer) | 阿里开源,中文识别精度高,可导出 ONNX |
| TTS 语音合成 | sherpa-onnx (VITS) | 同一框架搞定 ASR+TTS+VAD,离线 |
| VAD 端点检测 | sherpa-onnx / Silero VAD | 实时语音活动检测,降低误触发 |
| 唤醒词 | Snowboy / Porcupine | 离线唤醒,"你好 XX" 触发 |
完整车机语音 Agent 链路
麦克风 → VAD → ASR(sherpa-onnx) → 文本 → Agent(ADK+LiteRT)
↓
工具调用(MCP/Vehicle HAL)
↓
回复文本 → TTS(sherpa-onnx) → 扬声器
Demo 快速构建
最快路径:llama.cpp Android + sherpa-onnx
# 1. 编译 llama.cpp for Android (或用预编译 .so)
# 2. 集成 sherpa-onnx AAR
# 3. 下载 qwen2.5-0.5b-instruct-q4_k_m.gguf 到车机
// 核心代码结构
class CarVoiceAssistant {
private val asr = SherpaOnnxAsr(modelPath = "paraformer-zh.onnx")
private val llm = LlamaCpp(modelPath = "qwen2.5-0.5b-q4.gguf")
private val tts = SherpaOnnxTts(modelPath = "vits-zh.onnx")
fun startListening() {
asr.startStreaming { text ->
val reply = llm.generate(text) // 可插入工具调用
tts.speak(reply)
}
}
}
- 完全离线,端到端 < 1s 响应
- 在 SA8155P 上可稳定运行,SA8295P 上可升级到 1.5B/3B
- 40 分钟可搭出完整离线车载语音助手 Demo
总结:安卓车机 AIOS 技术选型建议
推荐技术栈组合(SA8155P/SA8295P + AAOS)
表格
| 模块 | 首选方案 | 备选方案 |
|---|---|---|
| Agent Runtime | Google ADK (Kotlin) | Koog / ZorvAI |
| 工具调用 | MCP Kotlin SDK + Vehicle HAL | Android App Functions |
| 记忆 / RAG | sqlite-vec + ONNX Embedding | MediaPipe RAG / ZVec |
| 多 Agent | ADK Handoffs | Koog 编排 |
| 模型路由 | LiteRT-LM (端侧) + 云端兜底 | llama.cpp server |
| 安全沙箱 | Android UID+SELinux+IsolatedProcess | WebView 沙箱 |
| 任务调度 | ADK + WorkManager | Coroutines Flow |
| 可观测性 | Perfetto + LM-METER + logcat | Android Studio Profiler |
| 推理引擎 | llama.cpp (GGUF) / LiteRT-LM | MNN-LLM / ONNX Runtime |
| NPU 加速 | Qualcomm QNN (SA8295P) | NNAPI (通用) |
| 语音链路 | sherpa-onnx (ASR+TTS+VAD) | whisper.cpp + FunASR |
端侧模型推荐
表格
| 场景 | 模型 | 量化 | 适用芯片 |
|---|---|---|---|
| 车控指令 | Qwen2.5-0.5B-Instruct | Q4_K_M | SA8155P 及以上 |
| 通用对话 | Qwen2.5-1.5B-Instruct | Q4_K_M | SA8155P / SA8295P |
| 复杂推理 | Qwen2.5-3B-Instruct | Q4_K_M | SA8295P |
| 多模态 | Qwen2.5-VL-3B | Q4_K_M | SA8295P |
| 英文场景 | Llama-3.2-1B/3B | Q4_K_M | 全平台 |
Demo 汇报主线建议
以**"完全离线车载语音助手"**为故事线,串起所有模块:
- 语音入口:sherpa-onnx 离线 ASR + VAD
- Agent 内核:Google ADK + Kotlin,意图理解
- 工具调用:MCP 暴露车控工具(空调 / 导航 / 媒体)
- 本地记忆:sqlite-vec 存储车主手册,RAG 增强回答
- 多 Agent:主 Agent 分发到导航 / 车控 / 娱乐子 Agent
- 安全隔离:工具执行在 IsolatedProcess,SELinux 最小权限
- 模型调度:简单指令 0.5B,复杂对话 1.5B,网络好时上云
- 性能监控:Perfetto trace 展示 TTFT/TPOT/ 内存占用
- 端侧部署:llama.cpp + QNN NPU 加速,SA8295P 实测数据
这条主线全部开源、完全离线、可在车机真机运行,汇报时最有说服力。