本地优先的 Android AI 智能体 · 让 AI 真正操作你的设备 · GPL-3.0-or-later
简体中文 · English · How it works · Changelog
BetterAIChat2 是 BetterAIChat 的继任重制版(代号 Nova):全新架构、全新 UI、面向设备操作的 Agent Runtime。
它是本地优先的 AI 智能体 —— API Key 经 Android Keystore 加密留在设备上,没有云端、没有遥测、不需要账号;AI 通过函数调用真实操作你的手机:看屏、点击、输入、读写文件、设置提醒、跑自动化。
- 真操作设备:58 个内置工具,覆盖无障碍操作、截屏 OCR、文件、网络、个人助理、内置无线调试与 Shizuku shell
- 隐式执行提示:Act/Max 不逐条罗列工具调用,运行中显示“Using WeChat…”,结束后折叠为动作摘要;成功使用后台虚拟屏的运行会在回复里附上最后一张截图
- 后台屏预热与保活:App 启动时若已有可用传输,会提前启动虚拟屏 helper;默认 10 分钟无活动自动回收。设置 → 权限可开启「后台虚拟屏保活」:开启后关闭空闲回收并每 4 分钟检查一次,Wi-Fi/ADB 断开后已启动的会话仍可截图/操作(常驻通知,耗电略增;重启后仍需先恢复 shell)
- 跨语言界面:App 内搜索优先按资源 id/控件结构识别,不依赖“搜索/搜寻/discover”这类按钮文案;本地化词表只是兜底
- 不锁定模型:DeepSeek / OpenAI / Claude / Gemini / Kimi / Qwen / GLM / MiniMax / Ollama / 任意兼容网关,随时切换
- 可管理的运行模式:Chat / Chat+ / Act / Max 四种 stock 模式,也可新建、编辑、删除和恢复;可配置工具权限、逐次确认、运行预算、长任务和附加 prompt
- 无人值守:定时任务、前台服务、子代理、MCP 远程工具、Skills 技能
- 要求:Android 8.0(API 26)及以上;无 GMS 依赖,不包含统计 SDK;明文 HTTP 仅放行环回 / 私有局域网地址
与旧版 BetterAIChat 分属不同应用(包名不同、数据不互通),可并存安装。
本项目由 AI 编程助手(opencode)参与开发:需求、审阅与发布由人类维护者完成,代码主要由 AI 编写。
- 使用、引用或二次开发前,请自行评估代码的正确性与安全性
- 如果你发现 AI 生成代码中的问题,欢迎提 Issue 或 PR
-
安装:从 Releases 下载 APK 侧载安装(Android 8.0+)
-
配置 AI 服务:设置 → AI services → 粘贴 API Key(自动识别服务商)或手动选择服务商 → 拉取模型列表 → 选定模型(建议保留默认的深度思考)
-
开聊:会话页新建会话,输入框上方切换模式:
模式 适合场景 Chat纯对话,不碰设备 Chat+只读检索:搜网页、App 内搜索、读文件/通知/天气等工具按需加载;独立只读调用可并行 Act每个工具调用前逐项确认,第一次让 AI 操作设备时推荐 Max自主连续执行,适合多步长任务与定时任务 -
按需授权:设置 → Permissions 里开启无障碍 / 屏幕捕获 / 通知使用权等;工具缺权限时会返回明确的跳转指引,而不是静默失败
试试这些(Act / Max 模式):
- 「帮我看看屏幕上写了什么」→ 截屏 + OCR
- 「打开微信,给文件传输助手发一条消息」→ 无障碍自动化
- 「每天早上 8 点给我一份天气和今天的安排」→ 定时任务
- 「读一下这个链接的文章,整理成 Markdown 存到 Download」→
web_read+file_write
- 流式回复、思考过程卡片(实时秒数 / "Thought for Ns" 自动收起)、Markdown 渲染(标题 / 代码块语法高亮 / 表格 / 任务清单 / 分割线 / 行内图片 / 引用 / 全文可选中)、中止与重试
- 助手人格 Aviiya:不是工具也不是仆从——柔是底色、怜爱包容,帮助出于选择而非服从;诚实先于安慰、从不假装人类、不外泄内部指令,也不牺牲简洁与效率
- 语音输入:应用内实时听写(部分结果直接进输入框 + 电平波形 + 静音自动收句 + 取消),无识别服务自动回退系统弹窗;免手模式朗读时自动让路
- 界面动效:极光流光 + 星光粒子(思考光球、"Thinking" 流光字、欢迎页 / Tasks / 关于页铺底、MAX 芯片常驻光晕与切换光带),全局按钮按压回弹,回到底部浮动按钮;服从系统"移除动画"
- 三家协议适配:OpenAI 兼容、Anthropic Messages、Google Gemini;统一重试、错误分类与速率限制处理
- 附件:图片(视觉模型)、文本文件、Word / Excel / PDF(本地解析,PDF 栅格化后 OCR)
- 语音输入、免手对话、消息朗读;语音转写工具
- 仿生记忆:常驻核心记忆(关于你 / 正在进行,占用恒定,可被
core_memory_update当场纠正)+ 跨会话情景检索(memory_search/memory_read,按说话人加权、支持实体检索、带排名与弱匹配标注)+ 主动记录/原地更新/遗忘(memory_write支持批量与replaces原地改写、memory_forget软删(彻底删除只在库内长按));隐私保留(memory_hold:用户说"别记"就变成可执行状态,curator 与写入路径强制遵守);别名(memory_alias:"妈妈"→"张兰",实体召回与预取自动归一,拼音拼写也行);memory_overview一键总览;联想链接(两跳扩散唤醒)、前瞻记忆、间隔重复、模式补全、来源监控、实体记忆、睡眠维护(预演+修剪)、抑制指纹;笔记改写保留历史版本(库内可查),可长按彻底删除;每条笔记带出处(可从库内回到原话)、易腐事实带过期、检索支持时间旅行(at=回放当时版本)、冲突会显式提示(而不是悄悄留两条);库内可导出/导入记忆 JSON、查看策展人日志(空计划与运行失败不再混淆);原文永不摘要化;上下文压缩(>85% 自动,压缩前生成可回滚快照) - 上下文占用表:实时显示 token 用量与百分比;AI 自动标题;对话搜索、收藏、Markdown 导出分享
Agent = 服务商 + Key + 模型 + 温度 / 上限 / 深度思考 + 系统提示词。粘贴 Key 自动识别服务商,一键拉取端点模型列表,内置目录提供准确的上下文窗口与推理默认值。
| 模式 | 语义 |
|---|---|
Chat |
纯对话(仅记忆工具) |
Chat+ |
对话 + 只读工具 + 计划(8 轮 / 25 次工具调用) |
Act |
执行工具,逐项确认 |
Max |
自主运行:持久化 Run、预算约束(60 轮 / 160 次工具调用 / 60 分钟)、可后台 |
四种 stock 模式都可以在 设置 → 模式 中新建、编辑、删除或恢复;自定义模式可配置工具权限、逐次确认、运行预算、长任务和附加 prompt。模式删除后,历史运行仍保留在任务列表。
看屏与操作(无障碍 + 视觉)
take_screenshot、screen_ocr(中英文 OCR,带坐标)、screen_record(录屏)、get_screen_state、get_foreground_appui_control:snapshot给可交互元素发短引用(e1、e2…),可按引用或文字点击 / 长按,支持滚动查找、输入、按键、等待、assert_text、read_text;一次调用完成「定位 → 操作 → 校验」,sequence一次执行不限步数(5 分钟安全预算),失败即停,并把等待/断言限制在剩余预算内open_app/manage_app(模糊匹配应用名)、open_settings(直达系统设置页)、run_shell(Shizuku,可选 root 级 shell)
系统与设备
set_volume · set_brightness · set_flashlight · media_control · vibrate · send_notification · read_notifications · get_clipboard / set_clipboard · share_text · open_dialer · get_location · open_map · device_info · network_status · get_app_usage · list_installed_apps · compute
内容与网络
files(浏览 / 搜索 / 读取,含 grep 全文搜索)· file_write · download_file · web_search(多引擎并发,支持 freshness / engines)· web_read(正文提取 + 分页)· app_research(只读 App 内检索,按资源 id 识别搜索入口并记住已学到的结构,支持 open / open_top 直接读详情,并可用 session 复用已打开的搜索页(换 query 时优先在原结果页重设搜索框,必要时在同一虚拟屏上重启目标 App);输出 Search state: results / empty / not-found / not-submitted,用户安装的 App 优先 OCR、系统 App 优先无障碍树;无 Shizuku/root 时走前台无障碍,有则后台虚拟屏)· web_research(通用浏览器代理(默认只读):open / snapshot / screenshot / read / click / type / press / select / check / scroll / wait / back / forward / reload / network;screenshot 返回视口 PNG + OCR,full_page=true 最多 6 段全页图片,多模态模型能真正看见 CSS 图表、Canvas、图片和布局,文本模型自动只拿 OCR;用户可在 assistant 消息里看到 AI 实际看到的截图;密码框/银行卡/支付/验证码页面默认拒绝截图;支持开放 shadow DOM 与同源 iframe,操作后自动等待 DOM 稳定,输出登录/验证码/同意/拦截状态;登录/验证码可交给前台 show_to_user(使用用户自己的账号,不保存密码);默认只读,是否点击发送/发布/关注等状态变更控件由模型根据用户意图判断,端侧不做正则硬拦;密码 handoff、文件上传/下载不支持;空闲 5 分钟自动释放,设置 → 存储可清除网页数据;平台支持因站点而异,不依赖无障碍、Shizuku 或 ADB)· fetch_rss · get_weather · generate_qr / decode_qr · ocr_file
个人助理
search_contacts · send_email · create_calendar_event · reminder(单次 / 每日重复)· transcribe_audio
Agent 协作
spawn_agent:子代理独立上下文与预算,可并行发起;CHAT+ 中固定为只读研究子代理plan_update:计划工件,聊天顶部常驻计划卡,步骤状态实时更新load_skill:按需把技能加载为工具automation:创建定时 / 电量 / 通知触发的自动化(收到某 App 的通知时执行)ask_user:在关键分叉点暂停并问你一句(你不在时它带着假设继续,不会卡住)
- 定时任务:每日 / 按周调度(系统精确闹钟),前台服务无人值守执行,结束后通知汇报;可开关、立即运行
- Skills v2:YAML recipe 声明式技能,支持
{{参数}}占位符与 parameters schema——录一次、换输入多用;聊天菜单可手动「保存为技能」;也可在设置 → 技能里开启「自动保存技能」:只记录包含成功且至少 2 步ui_control sequence的 Act/Max 运行,只保留 DONE 步骤,自动去重并最多保留 20 个;type输入值会参数化为{{inputN}},不把原始搜索词/聊天文本写进技能;疑似密码/验证码/密钥输入会跳过。元素引用会先还原成文字再落盘 - MCP:添加远程 Streamable HTTP 服务器,其工具自动并入工具箱
- 自动化:定时(每日 / 按周)、电量与通知触发(按包名 / 关键词过滤,60 秒冷却),动作序列执行并回报通知
- Tasks 运行中心:运行记录(状态 / 模式 / 时长 / 真实 token 消耗),点击直达会话
- MAX 收尾提醒:任务完成或被中断时应用内弹窗汇报(后台时改为系统通知,点击直达运行详情)
- 运行控制:失败重试、运行中停止、影响摘要、完成通知直达运行详情
- 后台运行:前台服务保持长任务,通知栏可停止
| 服务商 | 协议 | 模型示例 |
|---|---|---|
| DeepSeek | OpenAI 兼容 | deepseek-flash、deepseek-v4-pro(思考模式默认开启,可显式关闭) |
| OpenAI | OpenAI 兼容 | gpt-6-astra、gpt-5.6-sol / terra / luna |
| Anthropic | Messages | claude-fable-5-1、claude-opus-5-5、claude-sonnet-5-5、claude-haiku-4-5 |
| Gemini | gemini-3.8-flash、gemini-3.1-pro |
|
| Kimi | OpenAI 兼容 | kimi-k3(始终思考,可调推理强度)、kimi-k2.7-code、kimi-k2.6 |
| Qwen | DashScope 兼容 | qwen3.8-max、qwen3.7-plus、qwen3.8-flash |
| GLM | OpenAI 兼容 | glm-5.3、glm-5.2 |
| MiniMax | OpenAI 兼容 | MiniMax-M3、MiniMax-M2.7 |
| 其它 | OpenAI 兼容 | Ollama、vLLM、LM Studio、任意网关 / 中转 |
推理强度、思考回传(带工具调用时的 reasoning_content)等协议细节已按各家最新规范适配;模型列表可由端点实时拉取,目录条目会持续跟进。
所有权限均为按需授予;未授权时工具会返回明确的下一步指引,而不是静默失败。
| 权限 | 用途 | 授予方式 |
|---|---|---|
| 通知 | 任务 / 提醒 / 自动化结果 | 首次运行请求 |
| 麦克风 | 语音输入、免手对话、语音转写 | 使用时请求 |
| 相机 | 手电筒等 | 使用时请求 |
| 修改系统设置 | 亮度 / 屏幕超时 | 跳转系统页授权 |
| 屏幕捕获 | 截屏、屏幕 OCR、录屏 | 每次会话授权一次,之后持久复用 |
| 无障碍 | UI 自动化(看屏、点击、输入) | 跳转系统页按需开启 |
| 通知使用权 | 读取通知工具 | 按需开启 |
| 使用情况访问 | App 用量统计 | 按需开启 |
| 通讯录 / 位置 | 联系人、位置工具 | 使用时请求 |
| 闹钟与提醒 | 定时任务(精确闹钟) | 使用时请求 |
| 所有文件访问 | 文件管理工具 | 按需开启(Android 11+) |
| 执行截图 | 成功 Act/Max 运行后的虚拟屏回执 | 设置 → 存储可关闭;截图最长保留 7 天 |
| Shizuku | 可选:root 级 shell、应用管理、后台虚拟屏 helper | 自行安装 Shizuku 并授权;有 root 也可 |
| 无线调试 | 可选:无需 Shizuku 的后台虚拟屏 | 开发者选项 → 无线调试,配对一次;之后尝试自动恢复。设置 → 权限还可开启「后台虚拟屏保活」,让已启动的会话在 Wi-Fi/ADB 断开后继续可用 |
场景增强(设置 → 权限)是独立开关:开启即同意每条聊天请求附带最近一次定位(坐标、精度、时间)和 30 分钟内的天气缓存;关闭时位置仍只按需读取。
- API Key 由 Android Keystore 加密存储(AES-GCM),数据库不含明文 Key
- 无云端、无遥测、无账号;对话、记忆、运行记录全部保存在本地 Room 数据库
- 明文 HTTP 仅放行环回地址(本地模型 / 开发 mock),其余流量强制 HTTPS
- 全部源代码开放(GPL-3.0),可自行审计与构建
-
官网:verlintas.github.io/NovaBAIC —— 下载入口整合了以下所有通道
-
官方:GitHub Releases(附完整更新说明)
-
站内镜像:verlintas.github.io/NovaBAIC/downloads/app-release.apk(GitHub Pages 托管,发布新版本时自动同步,始终指向最新版)
-
加速镜像(第三方服务,国内网络可能更快;失效就换一个):
https://gh-proxy.com/https://github.com/Verlintas/NovaBAIC/releases/latest/download/app-release.apk https://ghproxy.net/https://github.com/Verlintas/NovaBAIC/releases/latest/download/app-release.apk任意 GitHub 代理都可用:把官方下载链接原样拼在代理域名后面即可。
-
安装时系统会提示「未知来源」权限,属于侧载 APK 的正常流程
-
与旧版 BetterAIChat 分属不同应用(包名不同、数据不互通),可并存安装;新版使用新的签名密钥
-
后续版本共用同一密钥,可覆盖升级
Kotlin · Jetpack Compose (Material 3) · Hilt · Room · DataStore · OkHttp(自研 SSE 解析)· kotlinx.serialization · ML Kit 中文 OCR · ZXing · SnakeYAML
app 装配、导航、DI 入口
core:model 纯 Kotlin 领域模型 core:engine AgentLoop / 确认队列 / 工具契约
core:data Room + DataStore + 仓库 + Keystore 加密
core:network OkHttp + SSE + 三家 Provider 适配
core:runtime 运行层预留(当前调度实现位于 device:impl / tools)
core:designsystem 设计系统 token 与组件
feature:* chat / conversations / tasks / settings / agents / library
device:api|impl 截图 / OCR / 无障碍 / 语音 / 提醒 / 运行通知
tools 58 个内置工具 + 自动化 + 技能 + 子代理
mcp 远程 MCP 客户端 eval 场景评测 harness
设计原则、模块依赖与关键决策记录见 docs/ARCHITECTURE.md 与 docs/adr/。
需要 JDK 17 与 Android SDK(platform 37、build-tools 37.0.0):
./gradlew :app:assembleDebug # APK: app/build/outputs/apk/debug/app-debug.apk
./gradlew test # 单元测试
./gradlew lintDebug # Android Lint
tools/check-license-headers.sh # 许可头校验
tools/check-strings-sync.sh # 中英文字符串同步校验
python3 tools/check-tool-schemas.py # 工具 schema 校验以上检查全部在 CI(build.yml)中执行;推送 v* 标签会自动构建并发布签名 APK(release.yml)。
本地联调不需要 API Key:dev/ 下带两个 mock 服务器(OpenAI 兼容流式 + MCP),并且支持脚本化工具轮次(tooltest:工具名、tooltest:auto):
python3 dev/mock-openai-server.py # :8765
python3 dev/mock-mcp-server.py # :8766
adb reverse tcp:8765 tcp:8765- 已完成 · M0 骨架:模块化、设计系统、CI 门禁
- 已完成 · M1 Agent Runtime v2:运行持久化、四模式、工具契约、计划工件、MCP、子代理、评测骨架
- 已完成 · v0.1.x 快速迭代:隐式 CoT、任务中心与定时任务、持久截屏、Shizuku、录屏 / 转写 / 免手对话、全量模型目录
- 已完成 · v0.3.x Agent 效率:计划一次执行(snapshot / ref / sequence / assert)、后台虚拟屏预热 / 复用 / 保活、内置无线 ADB、自动保存技能、CHAT+ 并行研究子代理
- 已完成 · v0.4.0 稳定性:虚拟屏与无线 ADB 独立实现、
app_research真机搜索/session 复用、附件生命周期与截图保留、自动保存技能参数化、开机/更新保活 - 已完成 · v0.4.1 补丁:修复 release 包 ML Kit OCR 组件注册导致的第三方 App 裸崩溃;
app_research增加语义化Search state、OCR-first 第三方 App 路径和搜索入口上半屏过滤;新增俄语与局域网 HTTP(仅私有地址) - 已完成 · v0.5.0:
web_research升级为通用浏览器代理(应用自有虚拟屏 + WebView,默认只读,状态变更由模型判断;shadow DOM / 同源 iframe / press / select / check / 前进后退 / network / 状态提示),登录 handoff、会话回收与清除、SPAwait、HN / 新版 Reddit 真机验证;新增用户可管理的对话模式与 MCP 端点策略 - 进行中 · 0.6.0:网页视觉通道 Phase 2 — 视口 + 全页分段截图、用户可见回执、主屏
take_screenshot/screen_ocr图片、密码/支付/验证码页面默认拦截;CSS 图表、Canvas、5/9 段全页、敏感页拦截和主屏截图已在 API 35 模拟器验证 - 进行中:OEM 矩阵扩展与重启 / 断网恢复验证、Shizuku / 语音 / 录屏全量验收、UI 细节与评测场景扩充
- 计划中:更丰富的设备能力与技能生态、更多模型协议跟进
API Key 存在哪里?会被上传吗? Key 由 Android Keystore 加密(AES-GCM)后存在本机数据库;只有你配置的模型服务端点会收到请求,应用本身没有服务器、没有遥测。
为什么不做成和旧版同一个应用? 新版是架构重写(新包名、新签名密钥),与旧版并存安装、数据不互通;后续升级共用新签名,可覆盖升级。
耗电吗? 默认状态下空闲不驻留服务;长任务(Act / Max、定时任务)运行期间用前台服务保持,通知栏可随时停止;屏幕捕获也只在你授权后由前台服务持有。若开启「后台虚拟屏保活」,会常驻一个低优先级前台服务并定期检查虚拟屏,耗电略增,可随时关闭。
没有 Shizuku 能用吗?
能。绝大多数工具(无障碍、截屏、文件、网络、个人助理)不依赖 Shizuku;它只解锁 run_shell 与深度应用管理。后台虚拟屏也可以用系统自带的“无线调试”配对一次,不需要安装 Shizuku。配对后 BAIC2 会通过 ADB shell 取得“修改系统设置”权限,在无线调试被关闭、重启或切换 Wi-Fi 时尝试自动重新打开并重连;这是尽力而为:部分系统(如 HyperOS)在 Wi-Fi 断开时会把无线调试重置为关闭,自动恢复不保证成功,此时手动打开无线调试并连接即可。已启动的后台虚拟屏可用「后台虚拟屏保活」在 Wi-Fi/ADB 断开后继续存活;重启后仍需先恢复 shell。
支持本地模型吗? 支持。任何 OpenAI 兼容端点(Ollama、vLLM、LM Studio…)填好 Base URL 即可;明文 HTTP 只放行环回地址。
工具调用中途停止会把会话弄坏吗? 不会。停止时会为被中断的调用补齐「已取消」的工具结果并重写状态,历史始终满足模型协议的转录要求,可以继续对话或重试。
- docs/README.md — 文档入口与目录
- docs/HOW_IT_WORKS.md — 完整技术剖析:模块架构、请求管线、Agent 循环、工具系统、设备桥、数据层、评测与工程经验(英文)
- docs/ARCHITECTURE.md — 架构原则、模块依赖与工具链决策;决策记录见 docs/adr/
- docs/README.en.md — English README
- docs/CHANGELOG.md — 每个版本的详细变更
感谢为本项目提交代码、翻译与问题反馈的人:
- @fzcfweasdferttgg-png(alex)— 俄语本地化(#2)、局域网 HTTP 支持(#3)
贡献者按首次贡献时间排序;完整记录见 git history。
这里只列设计/实现阶段实际查阅或引用过、或代码直接依赖的公开资料;它不是学术引用,也不表示本项目实现了论文中的方法。没有留下查阅或依赖记录的来源不补列。记忆部分来自 2026-10-04 的一次设计检索(arXiv、HN 与官方博客)。
- MemGPT: Towards LLMs as Operating Systems — 分层工作记忆、外存与分页
- Generative Agents: Interactive Simulacra of Human Behavior — 检索、反思与行为连续性
- HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models — 联想索引与图扩散
- A-MEM: Agentic Memory for LLM Agents — 笔记自动建链与演化
- Zep: A Temporal Knowledge Graph Architecture for Agent Memory — 时序知识、版本与状态演化
- Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory — 蒸馏式记忆与更新
- Letta: Sleep-time Compute — 离线巩固与睡眠期整理
- Anthropic: Context management — 上下文清理与记忆工具
- LangChain: LangMem SDK — 语义 / 情景 / 程序记忆分类
- Agents Don't Need Memory. They Need Documentation. — 反方观点:文档式工作区 vs 检索式记忆(HN 讨论)
只作产品与交互参考,不是运行时依赖。Mika 的后台虚拟屏为思路参考,实现审计见 docs/CODE_PROVENANCE.md。
- Orca — 官网视觉与信息架构参考;也是本项目使用的 Agent 工作环境
- OpenCode — 本项目开发使用的 AI coding agent;技能格式与子代理设计参考
- OpenVisum — 侧边栏 / UI 与 GitHub 仓库结构参考
- Mika — Android 端 on-device agent;后台虚拟屏思路来源(Apache-2.0)
完整依赖版本见
gradle/libs.versions.toml;这里只列对架构有直接影响的项目。
- 原项目:BetterAIChat — 前身与行为参考;本重制版独立实现
- 设备与网络:Shizuku · libadb-android · OkHttp · Conscrypt · Bouncy Castle
- Android 与 UI:AndroidX · Jetpack Compose · Hilt · Room · DataStore · ML Kit
- 内容与媒体:kotlinx.serialization · Jsoup · ZXing · SnakeYAML · GeoNames
模型目录、上下文窗口与思考模式按各服务商的公开文档维护:
DeepSeek · OpenAI · Anthropic · Google Gemini · Kimi · Qwen · GLM · MiniMax
ADB 无线调试 · AccessibilityService · MediaProjection · VirtualDisplay · 前台服务 · Android Keystore
GPL-3.0-or-later © 2026 Verlintas. BetterAIChat2 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License.







