【Android Code Studio IDE使用本地AI代理接口进行一键软件开发-哔哩哔哩】 https://b23.tv/Qij6sNd
AI代理转发是一款 Android 应用,将手机上的远程 AI API(如 DeepSeek、OpenAI、Anthropic、Gemini、Ollama 等)包装成本地可发现的 AI 模型服务。应用在本地启动一个 HTTP 代理服务器,Android Studio 等客户端可以通过 http://127.0.0.1:11434 访问本地模型,代理会自动将请求转发到配置的上游 API 并注入 API Key。
- 应用包名:com.aizhuanfa.ai
- 最低 Android 版本:API 29(Android 10)
- 目标 Android 版本:API 34(Android 14)
- 编译 SDK:API 36
- 当前版本:1.2(versionCode 102)
- 应用名称:AI代理转发
-
本地代理服务
- 基于 NanoHTTPD 实现本地 HTTP 服务器
- 默认监听 127.0.0.1:11434
- 支持前台服务运行,确保后台稳定
-
多服务商上游支持
- OpenAI Compatible(OpenAI、DeepSeek、Qwen、Groq、OpenRouter、Together 等)
- Anthropic(Claude)
- Google Gemini
- Ollama(本地)
- Custom(自定义)
-
多协议下游输出
- OpenAI-compatible
- Anthropic Messages API
- Google Gemini generateContent
- Ollama API
-
思考引导模式
- 关闭:不注入思考引导
- 轻度:先思考再回答
- 深度:结构化思考模板(分析需求、解法、优缺点、推荐理由)
-
路由监听模式
- 在局域网监听独立 TCP 端口(默认 11435)
- 透明双向字节流转发到上游
- 供局域网其他设备直连
-
配置管理
- 保存/加载/删除多套命名配置
- 配置持久化到 SharedPreferences
- 一键复制代理地址和路由监听地址
-
模型列表加载
- 自动从上游 API 获取可用模型列表
- 兼容 OpenAI /v1/models、Ollama /api/tags、Anthropic /v1/models、Gemini /v1beta/models
- 点击选择模型自动填充
app/ ├── build.gradle ├── proguard-rules.pro └── src/main/ ├── AndroidManifest.xml ├── kotlin/com/aizhuanfa/ai/ │ ├── App.kt │ ├── MainActivity.kt │ └── service/ │ ├── ProxyService.kt │ └── ThinkingConfigManager.kt └── res/ ├── layout/ │ ├── activity_main.xml │ └── dialog_settings.xml ├── values/ │ ├── strings.xml │ └── themes.xml └── xml/ ├── backup_rules.xml └── data_extraction_rules.xml
前台服务,负责:
- ProxyServer(内部类):继承 NanoHTTPD,处理所有 HTTP 请求
- 路由分发:根据 URI 和方法匹配不同的处理器
- 协议转换:上游协议 <-> 内部 OpenAI 格式 <-> 下游输出协议
- 思考引导注入:调用 ThinkingConfigManager 注入 system prompt
- 路由监听:独立 TCP 透明转发(ServerSocket + 双向字节流复制)
- 日志系统:写入本地文件 + 广播到 Activity
下游客户端 -> ProxyServer.serve() -> 解析下游请求(按 outputProtocol) -> 转换为内部 OpenAI 格式 -> 应用思考引导(applyThinkingGuide) -> 执行上游请求(按 providerType) -> 上游响应转换为内部 OpenAI 格式 -> 转换为下游输出协议(convertOpenAiResponseToOutputProtocol) -> 返回下游客户端
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /、/health、/v1/health | 健康检查 |
| GET | /v1/models、/models | 模型列表 |
| GET | /v1/models/{id} | 单个模型信息 |
| GET | /api/tags | Ollama 模型列表 |
| GET | /api/version | Ollama 版本 |
| POST | /v1/chat/completions | OpenAI 对话 |
| POST | /chat/completions | OpenAI 对话(兼容路径) |
| POST | /v1/completions | OpenAI 文本补全 |
| POST | /api/chat | Ollama 对话 |
| POST | /api/generate | Ollama 生成 |
| POST | /api/show | Ollama 模型信息 |
| POST | /v1/messages | Anthropic 对话 |
| POST | /v1beta/models/{model}:generateContent | Gemini 对话 |
| OPTIONS | * | CORS 预检 |
主界面,负责:
- 配置管理:读写 SharedPreferences、保存/加载命名配置
- 服务商预设:11 种预设(OpenAI、Anthropic、Gemini、DeepSeek、Qwen、Groq、OpenRouter、Together、AI.JILI5、Ollama、Custom)
- 权限检查:存储、电池优化、通知、悬浮窗、Root
- 模型加载:从上游 API 获取模型列表
- 日志显示:接收服务广播,显示运行日志
- 保活:Root 环境下调整 oom_score_adj
思考引导配置管理器:
- 三种模式:OFF / LIGHT / DEEP
- 配置持久化到 proxy_config
- 生成思考引导 prompt 注入 system message
Application 类:
- 全局异常捕获
- 崩溃日志写入文件
- 广播崩溃信息到 Activity
下游协议(outputProtocol) 上游协议(providerType)
OpenAI-compatible OpenAI Compatible Anthropic Anthropic Google Gemini Google Gemini Ollama Ollama
- outputProtocol 决定客户端如何调用本代理
- providerType 决定代理如何调用上游服务
- 两者相互独立,可任意组合
- 内部统一使用 OpenAI 格式作为中间表示
在 applyThinkingGuide() 中:
- 检查 ThinkingConfigManager 是否启用
- 检查消息中是否已存在思考引导(防重复注入)
- 注入到 system message 或新建 system message
局域网设备 -> 0.0.0.0:11435 -> 双向字节流复制 -> 上游 API
- 使用 ServerSocket 监听
- 每个连接创建两个线程:下游->上游、上游->下游
- 使用 IdentityHashMap 管理活跃连接
- 关闭时统一清理所有连接
| 更新项 | 1.1 版 | 1.2 版 |
|---|---|---|
| 版本号 | versionCode 2, versionName 1.1 | versionCode 102, versionName 1.2 |
| 应用名称 | AI转发 | AI代理转发 |
| 上游协议 | 仅 OpenAI Compatible | OpenAI Compatible、Anthropic、Gemini、Ollama |
| 下游协议 | 仅 OpenAI Compatible | OpenAI Compatible、Anthropic、Gemini、Ollama |
| 思考引导 | 无 | ThinkingConfigManager(关闭/轻度/深度) |
| 深度思考强制 | forceDeepSeekReasoning 硬编码强制开启 | 替换为通用 applyThinkingGuide 思考引导注入 |
| 路由监听 | 无 | 局域网透明 TCP 转发(默认 11435) |
| 服务商预设 | 无 | 11 种服务商类型预设 |
| 保存配置 | 无 | 多套命名配置保存/加载/删除 |
| 加载模型 | 无 | 从上游 API 自动加载模型列表 |
| 协议转换 | 仅 OpenAI <-> Ollama | 完整的 OpenAI <-> Anthropic <-> Gemini <-> Ollama 双向转换 |
| 模型重写 | 强制将所有请求模型重写为 realModel | 下游请求模型重写为 realModel,上游按 providerType 处理 |
| UI 界面 | 基础表单 | 卡片式监听模式、思考引导、协议选择、服务商选择、路由监听开关 |
| MainActivity | 约 22 KB | 约 65 KB |
| ProxyService | 约 35 KB | 约 76 KB |
| 新增文件 | - | ThinkingConfigManager.kt |
1.1 版:所有请求统一按 OpenAI Compatible 格式发送到 targetApi。
1.2 版:
- 根据 providerType 选择上游协议
- executeAnthropic():OpenAI -> Anthropic Messages 格式,处理 system、image、tool_use
- executeGemini():OpenAI -> Gemini generateContent 格式,处理 systemInstruction、generationConfig
- executeOllama():OpenAI -> Ollama /api/chat 格式
- 上游响应统一转换回内部 OpenAI 格式
1.1 版:客户端只能使用 OpenAI Compatible 格式调用。
1.2 版:
- parseAnthropicRequest():解析 Anthropic 格式请求
- parseGeminiRequest():解析 Gemini 格式请求
- parseOllamaRequest():解析 Ollama 格式请求
- openAiToAnthropicResponse()、openAiToGeminiResponse()、openAiToOllamaResponse() 等响应转换函数
- 流式响应支持不同协议的 SSE 格式
1.1 版:forceDeepSeekReasoning() 仅在模型为 deepseek-reasoner 时强制注入多个思考参数。
1.2 版:
- 新增 ThinkingConfigManager.kt
- 三种模式:关闭、轻度、深度
- 作为 system prompt 注入,而非修改请求参数
- 适用于所有上游协议
- UI 提供下拉选择器
1.2 版新增:
- 在 0.0.0.0:11435 监听局域网 TCP 连接
- 从 targetApi 解析上游地址(host + port)
- 双向字节流透明转发,不解析内容
- 支持热更新(ACTION_SET_ROUTE_MODE)
1.2 版新增 11 种预设:
- OpenAI、Anthropic、Google Gemini、DeepSeek、Qwen、Groq
- OpenRouter、Together、AI.JILI5、Ollama、Custom
- 选择预设自动填充上游地址和 API Key
- 每个预设包含默认端口、API Key 示例、默认路径
1.2 版新增:
- 保存当前配置到命名配置列表
- 一键加载已保存配置
- 长按删除配置
- 配置包含完整字段(目标地址、API Key、模型、协议、监听地址、路由监听、思考模式)
1.2 版新增:
- 点击"加载模型"从上游 API 获取模型列表
- 兼容 OpenAI /v1/models、Ollama /api/tags、Anthropic /v1/models、Gemini /v1beta/models
- 弹窗选择模型,自动填充模型字段
1.1 版:基础表单布局,约 6.7 KB。
1.2 版:
- 卡片式监听模式区域(MaterialCardView)
- 服务商类型下拉选择器
- 思考引导模式 Spinner
- 输出协议 Spinner
- 路由监听开关 + 局域网地址展示
- 复制按钮(代理地址、路由监听地址)
- 加载模型按钮
- 保存配置按钮
- 约 14.3 KB
1.1 版:仅运行日志 + 权限状态。
1.2 版:
- 配置列表(长按删除)
- 运行日志(长按复制)
- 权限状态
- 约 4.3 KB
| 依赖 | 版本 | 用途 |
|---|---|---|
| NanoHTTPD | 2.3.1 | 本地 HTTP 服务器 |
| OkHttp | 4.12.0 | 上游 HTTP 客户端 |
| Kotlin Coroutines | 1.8.1 | 异步处理 |
| AndroidX Lifecycle | 2.8.0 | 生命周期管理 |
| Material Components | - | UI 组件 |
android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE android.permission.WAKE_LOCK android.permission.POST_NOTIFICATIONS android.permission.FOREGROUND_SERVICE android.permission.FOREGROUND_SERVICE_DATA_SYNC android.permission.MANAGE_EXTERNAL_STORAGE android.permission.SYSTEM_ALERT_WINDOW
- 在"服务商类型"下拉选择对应服务商,自动填充地址和 API Key
- 确认"上游 API 基地址"和"上游 API Key"正确
- 点击"加载模型"获取可用模型列表,选择模型
- 在"实际转发模型"确认模型名称
- 选择"思考引导模式"(关闭/轻度/深度)
- 选择"转发至下游协议"
- 点击"启动本地代理转发"
- Android Studio 配置 Local Provider 地址为 http://127.0.0.1:11434
- 打开"路由监听模式"开关
- 显示的地址即为局域网可访问地址,如 http://192.168.1.100:11435
- 点击"复制"按钮复制地址
- 同一局域网的其他设备可直接使用该地址作为 API 端点
- 填写好所有配置
- 点击"保存配置"按钮
- 输入配置名称
- 在设置对话框(点击右上角齿轮图标)中查看已保存配置
- 点击配置加载,长按删除
- 协议分层:下游协议和上游协议相互独立,修改一边不会影响另一边
- 思考引导防重复:applyThinkingGuide 会检查消息中是否已存在引导标记
- 路由监听:stopRouteListener 会关闭所有活跃连接,确保无泄漏
- 前台服务:需在 Android 13+ 授予通知权限
- 保活:Root 权限为可选项,非 Root 也能正常运行(仅后台稳定性受影响)
- 日志:日志写入 getExternalFilesDir(null)/logs/proxy.log