B-bot v1.1.1 / Android
首页 ↗ GitHub ↗

把大模型
接入QQ的 安卓Bot

除「调用大模型 API」和「QQ 收发消息」需要联网外,其余全部在手机本地运行, Linux 环境、QQ、NapCat 都装在 App 私有目录里,不依赖电脑,也不需要 root。

无需 root 无需刷机 无需电脑 Android 7.0+ arm64 骁龙 / 天玑 Proot + Ubuntu 22.04 OneBot v11
01Technical Principle

技术原理

从 proot 用户态根文件系统,到注入式 NapCat 与 OneBot 回环服务,再到唯一一次对外的模型 API 调用 —— 这一节拆开 B-bot 的每一层。

1.1整体架构

system architecture · b-bot v1.1.1
  手机 App(前台服务)
     |
     |-- proot(用户态 chroot)
     |      |
     |      +-- Ubuntu 22.04 arm64 根文件系统
     |             |-- Xvfb 虚拟显示(无界面运行 QQ)
     |             |-- QQ NT (Linux arm64)
     |             +-- NapCat(注入 QQ 进程内,起 OneBot 服务)
     |
     |-- OneBot v11 WebSocket  ws://127.0.0.1:3001(仅监听回环)
     |
     +-- 消息编排 -> LLM 客户端 -> 厂商 API(唯一的外部调用)
SCOPE · APP PRIVATE DIR BIND · 127.0.0.1 ONLY EXTERNAL CALL · 1
安全边界

所有组件都在 App 私有数据目录内,独立于系统;监听端口只绑 127.0.0.1,外部无法访问。

1.2为什么能在非 root 手机上跑 Linux

安卓没有 root 就不能 chroot。App 内置 proot:它用 ptrace 拦截程序的系统调用,把路径、uid、挂载点「翻译」成普通目录,于是 Ubuntu 的 arm64 根文件系统可以以普通应用身份直接运行。

两个必要的配套

Requirement 01

targetSdk 固定为 28

Android 10 起,targetSdk ≥ 29 的应用禁止从自身数据目录执行可执行文件(W^X 策略),proot 会直接报 error=13 Permission denied。保持 28 即可获得与 Termux 相同的兼容模式。

Requirement 02

proot-loader

guest 程序需要的动态链接器与应用目录不同,必须通过 PROOT_LOADER 指定外部加载器,否则会出现 execve("/usr/bin/env"): No such file or directory。App 已内置并自动配置。

1.3QQ 与 NapCat 是怎么跑起来的

QQ NT

官方 Linux arm64 版本

QQ 使用官方 QQ NT Linux arm64 版本(deb 解包后放入 rootfs),运行在 Xvfb 虚拟显示上,因此不需要屏幕也能登录。

NapCat

以「注入」方式工作

把 QQ 的 resources/app/package.json 中 main 指向外部入口 loadNapCat.js,该入口先加载 NapCat 模块,再按原路径启动 QQ。OneBot 服务运行在 QQ 进程内部,能直接收发消息,而不需要改动 QQ 本体。

First Run

自动生成 OneBot 配置

首次启动会生成 OneBot 配置:

正向 WebSocket 127.0.0.1:3001 NapCat WebUI 127.0.0.1:6099

1.4一条消息的完整链路

1
别人给 bot 的 QQ 发消息 → QQ 客户端收到
2
NapCat 通过 WebSocket 把事件推给 App
3
App 判断要不要回复:
私聊:始终回复 · 群聊:按设置「仅被 @ 时回复」或「持续主动回复」
4
App 取出该会话的本地历史上下文,拼上角色提示词,调用模型 API
5
模型返回文本 → App 通过 OneBot send_msg 发回 QQ
6
这轮对话写入本地历史(用于后续上下文)
隐私

图片、语音等内容不会被上传到除模型 API 之外的任何地方;App 本身不含任何统计或上报。

1.5模型接入方式

支持两种主流协议,因此兼容绝大多数厂商:

Protocol A

OpenAI 兼容

对话地址 {base}/chat/completions 模型列表 GET {base}/models 鉴权方式 Authorization: Bearer <Key>
Protocol B

Anthropic

对话地址 {base}/v1/messages 模型列表 GET {base}/v1/models 鉴权方式 x-api-key + anthropic-version

内置厂商预设

MiMo OpenAI 通义千问 豆包 DeepSeek Kimi Claude xAI Gemini MiniMax 自定义 OpenAI 兼容

「自定义 OpenAI 兼容」可填任意中转地址。API Key 只保存在本机 SharedPreferences,不会上传。

02How To Use

如何使用

六个工序:装 App → 装环境 → 登录 QQ → 配模型 → 设人设 → 日常使用。每一步都有明确的完成标志。

Step 01

安装 App

安装 B-bot-v1.1.1.apk(约 5.9 MB)。

  • 首次打开请允许通知权限(用于显示运行状态的前台通知)
  • 建议在系统设置里给 B-bot 开启:自启动 / 后台不受限制 / 忽略电池优化,否则息屏后系统可能冻结它的进程
Step 02

安装 NapCat 环境(仅首次)

首页点击「安装 / 重装 NapCat」,确认后开始下载并解包:

  • 内容:Ubuntu 根文件系统 + QQ + NapCat,约 500 MB
  • 耗时:视网络,通常几分钟
  • 不中断:安装期间可以切到设置页、日志页,安装不会中断,切回来还能看到进度

完成后首页「napcat」状态会变为已就绪(深蓝)。若显示「未安装」或「安装中」,看日志页的失败原因(多为空间不足或网络中断)。

提示

需要至少 2 GB 可用空间;建议在 Wi-Fi 下进行。

Step 03

启动并登录 QQ

  1. 首页点「启动 B-bot」
  2. 等待几秒,状态中「bot服务」变为运行中
  3. 点「扫码登录 QQ」,弹窗会显示二维码
  4. 用手机 QQ(或另一台设备)扫码并在 QQ 里确认登录
  5. 登录成功后,首页「QQ」状态变为 已连接 (QQ号)

二维码约 1~2 分钟过期。NapCat 会自动换新码,弹窗会跟随刷新,直接扫最新那张即可。

Step 04

配置模型

进入「设置」页:

  1. 选择厂商(例如 MiMo、DeepSeek、Gemini…)
  2. 填写 API Key
  3. 点击「拉取模型列表」
    成功:下拉框出现该账号真实可用的模型,直接选择
    失败:会提示具体原因(如 401 表示 Key 不对)
  4. 也可以不拉取,直接在「自定义模型名」里手写模型 ID
  5. 点「保存设置」,会提示「生效模型:xxx」
说明

自定义输入优先于下拉选择;两者都为空时使用该厂商的默认模型。

Step 05

设置角色与回复策略

同样在设置页:

  • 角色提示词:决定 bot 的人设、语气、说话方式。留空则使用默认的「友善群聊助手」提示词。
  • 群聊回复策略:
    · 仅被 @ 时回复 —— 安静,只有被点名才说话
    · 持续主动回复 —— 群里每条消息都会参与
  • 私聊:始终主动回复(无需设置)
  • 历史:本地保存,可在设置页「清空全部会话历史」重置

保存后立即对下一条消息生效。

Step 06

日常使用

  • 停止:只停止 bot 的收发。NapCat 进程和 QQ 登录状态都会保留,再次点「启动 B-bot」只需几秒重连,不需要重新扫码。
  • 日志页:实时查看 QQ / NapCat 输出、模型调用、收发结果与错误;发送失败会打印 NapCat 返回的 retcode,便于排查。

运行状态灯含义

napcat
R 已就绪
L 安装中
N 未安装
QQ
R 已登录
N 未登录
bot服务
R 收发运行中
L 已停止收发(NapCat 仍在跑)
N 未启动
03Highlights

特色

真正本地、无需 root、不碰账号密码 —— 以及十个让它日常好用的细节。

  • 01

    真正本地运行

    Linux 环境、QQ、NapCat 全部在手机内,不依赖电脑或服务器;唯一对外请求是模型 API。

  • 02

    无需 root

    基于 proot + 兼容模式,普通应用即可跑完整 Ubuntu 与 QQ。

  • 03

    扫码登录,不碰账号密码

    App 不保存 QQ 账号密码,登录完全由 QQ 官方客户端完成。

  • 04

    10 家厂商 + 自定义

    两种协议自动适配,OpenAI 兼容的任意中转地址都能填。

  • 05

    一键拉取模型列表

    不用去翻文档找模型 ID,选完即用。

  • 06

    智能回复策略

    私聊始终回、群聊可「仅 @ 回复」或「持续主动」,一键切换。

  • 07

    可自定义人设

    角色提示词完全自由,支持多轮上下文。

  • 08

    停止不退出

    停止只停收发,QQ 保持在线,避免每次重启都要重新扫码。

  • 09

    安装不中断

    环境安装独立于界面运行,切页面不影响。

  • 10

    可读日志

    二维码、错误码、收发记录都直接显示,出问题能自己看明白。

04Troubleshooting

常见问题

先看日志,再看状态灯。下面七条覆盖了绝大多数情况。

Q1能收到消息,但 bot 不回复?

先看首页「bot服务」是否为运行中;再看日志页是否有「API 调用失败」或 retcode。常见原因:API Key 错误、余额不足、模型 ID 不存在,或群聊设置为「仅被 @」而消息里没有 @ 它。

Q2首页 QQ 一直显示未连接?

确认「napcat」是否已就绪、QQ 是否扫码登录成功。bot 会自动重连,等 10~30 秒通常可恢复;若仍不行,点一次停止再启动。

Q3二维码显示不出来或扫了没反应?

二维码约 1~2 分钟过期,弹窗会自动换新码,请扫最新显示的那张。若弹窗一直空白,等 NapCat 启动完成(日志出现二维码相关行)再打开。

Q4安装失败?

看日志页错误。多为可用空间不足(需 ≥ 2 GB)或网络中断;重试「安装 / 重装 NapCat」即可。

Q5安装 APK 时提示「解析软件包出现问题」?

先卸载旧版再安装;并用文件管理器核对文件大小是否为 5,858,854 字节(传输截断会导致该错误)。

Q6息屏后 bot 掉线?

在系统设置中允许 B-bot 自启动、关闭它的电池优化限制;部分 ROM 还需要在「最近任务」里给 B-bot 加锁。

Q7怎么彻底清除?

设置页「清空全部会话历史」清本地对话;要连环境一起清除,卸载 App 即可(环境文件都在应用私有目录内)。

05Appendix

附录:版本信息

版本v1.1.1(versionCode 17)
安装包B-bot-v1.1.1.apk · 5,858,854 字节
系统要求Android 7.0 及以上 · arm64(骁龙、天玑等主流芯片)
运行条件无需 root、无需刷机、无需电脑 · 可用空间 ≥ 2 GB
项目地址github.com/NOBAI612325/B-bot-AI-QQ-