Skip to content

About

This is a proxy forwarding tool on Android that uses a native AI model to forward to a local AI.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

AI代理转发(aizhuanfa)

【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代理转发

功能特性

核心功能

  1. 本地代理服务

    • 基于 NanoHTTPD 实现本地 HTTP 服务器
    • 默认监听 127.0.0.1:11434
    • 支持前台服务运行,确保后台稳定
  2. 多服务商上游支持

    • OpenAI Compatible(OpenAI、DeepSeek、Qwen、Groq、OpenRouter、Together 等)
    • Anthropic(Claude)
    • Google Gemini
    • Ollama(本地)
    • Custom(自定义)
  3. 多协议下游输出

    • OpenAI-compatible
    • Anthropic Messages API
    • Google Gemini generateContent
    • Ollama API
  4. 思考引导模式

    • 关闭:不注入思考引导
    • 轻度:先思考再回答
    • 深度:结构化思考模板(分析需求、解法、优缺点、推荐理由)
  5. 路由监听模式

    • 在局域网监听独立 TCP 端口(默认 11435)
    • 透明双向字节流转发到上游
    • 供局域网其他设备直连
  6. 配置管理

    • 保存/加载/删除多套命名配置
    • 配置持久化到 SharedPreferences
    • 一键复制代理地址和路由监听地址
  7. 模型列表加载

    • 自动从上游 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


核心模块说明

1. ProxyService.kt(约 76 KB)

前台服务,负责:

  • 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 预检

2. MainActivity.kt(约 65 KB)

主界面,负责:

  • 配置管理:读写 SharedPreferences、保存/加载命名配置
  • 服务商预设:11 种预设(OpenAI、Anthropic、Gemini、DeepSeek、Qwen、Groq、OpenRouter、Together、AI.JILI5、Ollama、Custom)
  • 权限检查:存储、电池优化、通知、悬浮窗、Root
  • 模型加载:从上游 API 获取模型列表
  • 日志显示:接收服务广播,显示运行日志
  • 保活:Root 环境下调整 oom_score_adj

3. ThinkingConfigManager.kt(约 2.7 KB)

思考引导配置管理器:

  • 三种模式:OFF / LIGHT / DEEP
  • 配置持久化到 proxy_config
  • 生成思考引导 prompt 注入 system message

4. App.kt(约 1.3 KB)

Application 类:

  • 全局异常捕获
  • 崩溃日志写入文件
  • 广播崩溃信息到 Activity

关键设计

协议分层

下游协议(outputProtocol) 上游协议(providerType)


OpenAI-compatible OpenAI Compatible Anthropic Anthropic Google Gemini Google Gemini Ollama Ollama

  • outputProtocol 决定客户端如何调用本代理
  • providerType 决定代理如何调用上游服务
  • 两者相互独立,可任意组合
  • 内部统一使用 OpenAI 格式作为中间表示

思考引导注入

在 applyThinkingGuide() 中:

  1. 检查 ThinkingConfigManager 是否启用
  2. 检查消息中是否已存在思考引导(防重复注入)
  3. 注入到 system message 或新建 system message

路由监听模式

局域网设备 -> 0.0.0.0:11435 -> 双向字节流复制 -> 上游 API

  • 使用 ServerSocket 监听
  • 每个连接创建两个线程:下游->上游、上游->下游
  • 使用 IdentityHashMap 管理活跃连接
  • 关闭时统一清理所有连接

版本更新对比

1.1 版 -> 1.2 版更新内容

更新项 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.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 格式

2. 多协议下游输出

1.1 版:客户端只能使用 OpenAI Compatible 格式调用。

1.2 版:

  • parseAnthropicRequest():解析 Anthropic 格式请求
  • parseGeminiRequest():解析 Gemini 格式请求
  • parseOllamaRequest():解析 Ollama 格式请求
  • openAiToAnthropicResponse()、openAiToGeminiResponse()、openAiToOllamaResponse() 等响应转换函数
  • 流式响应支持不同协议的 SSE 格式

3. 思考引导模式(新功能)

1.1 版:forceDeepSeekReasoning() 仅在模型为 deepseek-reasoner 时强制注入多个思考参数。

1.2 版:

  • 新增 ThinkingConfigManager.kt
  • 三种模式:关闭、轻度、深度
  • 作为 system prompt 注入,而非修改请求参数
  • 适用于所有上游协议
  • UI 提供下拉选择器

4. 路由监听模式(新功能)

1.2 版新增:

  • 在 0.0.0.0:11435 监听局域网 TCP 连接
  • 从 targetApi 解析上游地址(host + port)
  • 双向字节流透明转发,不解析内容
  • 支持热更新(ACTION_SET_ROUTE_MODE)

5. 服务商类型预设(新功能)

1.2 版新增 11 种预设:

  • OpenAI、Anthropic、Google Gemini、DeepSeek、Qwen、Groq
  • OpenRouter、Together、AI.JILI5、Ollama、Custom
  • 选择预设自动填充上游地址和 API Key
  • 每个预设包含默认端口、API Key 示例、默认路径

6. 保存配置列表(新功能)

1.2 版新增:

  • 保存当前配置到命名配置列表
  • 一键加载已保存配置
  • 长按删除配置
  • 配置包含完整字段(目标地址、API Key、模型、协议、监听地址、路由监听、思考模式)

7. 模型列表加载(新功能)

1.2 版新增:

  • 点击"加载模型"从上游 API 获取模型列表
  • 兼容 OpenAI /v1/models、Ollama /api/tags、Anthropic /v1/models、Gemini /v1beta/models
  • 弹窗选择模型,自动填充模型字段

8. UI 重构

1.1 版:基础表单布局,约 6.7 KB。

1.2 版:

  • 卡片式监听模式区域(MaterialCardView)
  • 服务商类型下拉选择器
  • 思考引导模式 Spinner
  • 输出协议 Spinner
  • 路由监听开关 + 局域网地址展示
  • 复制按钮(代理地址、路由监听地址)
  • 加载模型按钮
  • 保存配置按钮
  • 约 14.3 KB

9. 设置对话框扩展

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


使用说明

基本使用

  1. 在"服务商类型"下拉选择对应服务商,自动填充地址和 API Key
  2. 确认"上游 API 基地址"和"上游 API Key"正确
  3. 点击"加载模型"获取可用模型列表,选择模型
  4. 在"实际转发模型"确认模型名称
  5. 选择"思考引导模式"(关闭/轻度/深度)
  6. 选择"转发至下游协议"
  7. 点击"启动本地代理转发"
  8. Android Studio 配置 Local Provider 地址为 http://127.0.0.1:11434

路由监听模式

  1. 打开"路由监听模式"开关
  2. 显示的地址即为局域网可访问地址,如 http://192.168.1.100:11435
  3. 点击"复制"按钮复制地址
  4. 同一局域网的其他设备可直接使用该地址作为 API 端点

保存配置

  1. 填写好所有配置
  2. 点击"保存配置"按钮
  3. 输入配置名称
  4. 在设置对话框(点击右上角齿轮图标)中查看已保存配置
  5. 点击配置加载,长按删除

开发注意事项

  1. 协议分层:下游协议和上游协议相互独立,修改一边不会影响另一边
  2. 思考引导防重复:applyThinkingGuide 会检查消息中是否已存在引导标记
  3. 路由监听:stopRouteListener 会关闭所有活跃连接,确保无泄漏
  4. 前台服务:需在 Android 13+ 授予通知权限
  5. 保活:Root 权限为可选项,非 Root 也能正常运行(仅后台稳定性受影响)
  6. 日志:日志写入 getExternalFilesDir(null)/logs/proxy.log

About

This is a proxy forwarding tool on Android that uses a native AI model to forward to a local AI.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages