📈 GH Trending Explorer 🎲 Surprise me

← all repos

xibai6668 / Android-AI-gateway

git clone https://github.com/xibai6668/Android-AI-gateway.git v2.12.1 · 4d ago

把 Android 手机变成私有的 AI 模型聚合服务器,将 Trae / WorkBuddy / Antigravity / Loomy 等多家上游账号统一翻译为 OpenAI 兼容端点( /v1/chat/completions 、 /v1/models、/v1/credits)

+1
stars, 24h · #16,841
+~33
stars, 7 days · #5,656
+98
stars, 30 days · #7,284
98
★ total · +33% this week
36
forks · 3 open issues

Star history (as recorded here)

2026-10-20 · 84 ★ 2026-10-23 · 98 ★
LanguageKotlin
License—
Created2026-10-08 (14d ago)
Last pushtoday
Watchers2
OwnerUser

Links

README excerpt
# AI 聚合网关
Android 上运行的本地 AI 模型聚合网关:把多家私有 AI 服务账号统一翻译成 OpenAI 兼容接口,暴露在 `http://127.0.0.1:8790/v1`。
任何支持 OpenAI 协议的客户端(Cline、Cherry Studio、Continue、curl 脚本……)都能直接接上手机里的所有账号额度。
`Kotlin` · `Jetpack Compose` · `NanoHTTPD` · `Gradle` · `minSdk 26 / targetSdk 36` · `MIT + 附加使用声明`
> 改动代码前请先读 **ARCHITECTURE.md**——完整的架构地图、模块职责、协议陷阱清单与改动守则。
---
## 目录
- 特性
- 快速开始
- 架构总览
- 模块结构
- 数据存储
- 构建与发版
- 接口与鉴权
- 供应商
- 贡献
- 使用声明
- 许可
---
## 特性
- **OpenAI 兼容网关**:`/v1/chat/completions` + `/v1/models`,流式 SSE / 非流式 / 多模态识图。
- **五家内置供应商**:Trae、WorkBuddy、Antigravity、Loomy、小浣熊(商汤),以及任意自定义 OpenAI 兼容中转站。
- **同款模型 Failover**:首选供应商失败或无可用账号时,自动切换到拥有同款模型的其他供应商。
- **智能路由**:`供应商/模型` 前缀路由(含 `trae-cn/`、`codebuddy-global/` 这类区域前缀与 `google/`、`agy/` 等别名),兼支持无前缀的模型名自动推导。
- **账号管理**:同一供应商多账号按余额选号、失败自动换号、额度查询与额度包明细、跨供应商容灾、批量签到与任务中心。
- **模型开放名单**:只把勾选的模型暴露给 `/v1/models`,其余模型对客户端隐藏。
- **用量与日志**:调用记录(请求/转发/返回全链路)、今日与累计用量趋势、运行日志、按前缀统计存储占用与保留期自动清理。
- **网络代理**:HTTP / SOCKS5,支持按供应商与按地址排除;国内上游始终直连。
- **安全防护**:system 提示词零宽字符脱敏 + 账号级最小间隔限速(带抖动)。
- **后台保活**:前台服务 + WakeLock / WifiLock + 控制中心磁贴,锁屏仍可服务。
---
## 快速开始
1. 到 Releases 下载最新的 `ai-gateway- -release.apk` 安装。
2. 打开 App,首页点「启动网关服务」;首页显示「运行中」即表示端口已在监听。
3. 到「供应商」页登录要用的账号(Trae / WorkBuddy / Antigravity / Loomy / 小浣熊),或添加自定义 OpenAI 兼容中转站。
4. 客户端里填接入信息:
 - Base URL:手机本机填 `http://127.0.0.1:8790/v1`;局域网内其它设备填首页复制的局域网地址(需先在「接入设置」里打开「同时监听局域网」)。
 - 模型:可填 `供应商/模型`(如 `antigravity/gemini-3.8-flash-high`),也可直接填模型名由网关推导。
 - API Key:默认开启「无 Key 调用」,随意填;关掉后需与「接入设置」里的 Key 一致。
---
## 架构总览
一次请求的生命周期:
 [code] 
**核心不变量**:Provider 的边界是「OpenAI 进、OpenAI 出」。上游私有协议的双向转换全部封死在 Provider 内部,网关层对供应商差异零感知。任何把上游协议细节泄漏到网关层的改动,都会破坏这套可维护性根基。
---
## 模块结构
| 模块 | 类型 | 职责 |
|---|---|---|
| `:core` | 纯 JVM,无 Android 依赖 | 网关引擎、HTTP 服务、账号池、路由与 Failover、各供应商协议实现、存储抽象。可独立单测 |
| `:cli` | 纯 JVM 命令行 | 在本机直接起网关做端到端联调,或不打开 App 也能导入账号 / 签到 / 查用量与日志;可执行名 `aigw` |
| `:app` | Android 应用 | Compose UI、前台服务与保活、加密存储实现、控制中心磁贴 |
供应商协议实现位于 `core/src/main/kotlin/dev/aigw/core/provider/`,每家的私有协议细节都封装在各自子包内(`trae/`、`codebuddy/`、`antigravity/`、`loomy/`、`raccoon/`、`custom/`),互不干扰。
---
## 数据存储
账号凭证与状态**按账号独立存储**(v2.4.0 起):
 [code] 
- **一个账号一个状态文件**:改某个账号(刷新额度、启用/停用)只重写它自己的键,不再整包重写该供应商的全部账号。
- **旧数据自动迁移**:v2.4.0 之前的状态是「一个供应商一个文件」(`pool/state/ .json`,内含该供应商全部账号)。新版首次读取时惰性迁移——迁一个账号即从旧文件摘除,旧文件清空后删除;迁移可重复执行,不会回退或丢状态,无需手工处理。
- Android 端凭证经 Android Keystore 加密后存入应用私有目录;命令行端(`aigw`)以明文存于 `--data` 目录(默认 `~/.aigw`)。
---
## 构建与发版
本地构建(产出 debug 包,可与线上 release 包同机共存):
 [code] 
- 产物:`app/build/outputs/apk/debug/app-debug.apk`(包名 `dev.aigw.app.debug`)。
- 版本号硬编码在 `app/build.gradle.kts`(`versionCode` / `versionName`);改后必须重新构建。
- 本地**不产 release 包**:release 仅由云端 GitHub Actions 手动触发构建并发版,日常 push 不产生任何云端构建。
命令行联调(`:cli`,无需 Android 设备):
 [code] 
`aigw` 子命令:`serve` / `providers` / `accounts` / `credits` / `checkin` / `login` / `browser-login` / `sms` / `models` / `usage` / `logs`;账号与设置存于 `--data` 目录(默认 `~/.aigw`,也可用 `AIGW_DATA` 环境变量改写)。
---
## 接口与鉴权
| 方法 | 路径 | 说明 |
|---|---|---|
| `POST` | `/v1/chat/completions` | 对话补全,支持流式 SSE / 非流式 / 多模态