# antijava **Repository Path**: alamhubb/antijava ## Basic Information - **Project Name**: antijava - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Anti2Java - 简化版 Gemini 反代服务器
**轻量级 Java 实现的 Gemini API 反向代理** 将 Google Gemini API 反向代理为 OpenAI 兼容接口 [![Java](https://img.shields.io/badge/Java-21+-orange?style=flat-square)](https://openjdk.org/) [![GraalVM](https://img.shields.io/badge/GraalVM-Native%20Image-blue?style=flat-square)](https://www.graalvm.org/) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)
--- ## 🌟 **特性** - ✅ **零依赖服务器** - 使用 Java 内置 `HttpServer`,无需 Spring Boot - ✅ **OpenAI 兼容** - 支持标准的 `/v1/chat/completions` 接口 - ✅ **单账号模式** - 简化设计,专注核心功能 - ✅ **自动 Token 刷新** - 无需手动管理 Token 过期 - ✅ **GraalVM Native Image** - 可编译为原生可执行文件(启动快、内存小) - ✅ **Qin 构建系统** - 使用 Qin 管理依赖和构建 --- ## 📦 **快速开始** ### **前置要求** - Java 21+ - Qin 构建工具 - Google 账号 ### **步骤 1: 克隆项目** ```bash cd anti2java ``` ### **步骤 2: 安装依赖** ```bash qin sync ``` ### **步骤 3: 获取 Google OAuth Token** ```bash qin run OAuthTokenGrabber ``` 按提示在浏览器中完成 Google OAuth 授权,完成后会生成 `token.json` 文件。 ### **步骤 4: 启动反代服务器** ```bash qin run ProxyServer ``` 服务器将在 `http://localhost:8080` 启动。 ### **步骤 5: 测试请求** ```bash curl -X POST http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4", "messages": [ {"role": "user", "content": "你好,请自我介绍"} ] }' ``` --- ## 🔧 **使用方法** ### **在 Cursor/Claude Code 中使用** 1. **Cursor 配置:** ```json { "openai.apiBase": "http://localhost:8080/v1", "openai.apiKey": "any-value" } ``` 2. **Claude Code CLI:** ```bash export OPENAI_API_KEY="sk-any" export OPENAI_BASE_URL="http://localhost:8080/v1" ``` 3. **Python 客户端:** ```python import openai client = openai.OpenAI( api_key="sk-any", base_url="http://localhost:8080/v1" ) response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "Hello"}] ) print(response.choices[0].message.content) ``` --- ## 🎯 **工作原理** ``` ┌──────────────────────────────────────────────────────────┐ │ 客户端 (Cursor/Claude Code/自定义工具) │ └──────────────────────┬───────────────────────────────────┘ │ POST /v1/chat/completions │ {"model": "gpt-4", ...} ▼ ┌──────────────────────────────────────────────────────────┐ │ Java HttpServer (localhost:8080) │ │ ProxyServer │ └──────────────────────┬───────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────┐ │ TokenService │ │ • 读取 token.json │ │ • 检查过期 → 自动刷新 │ │ • 返回 access_token + project_id │ └──────────────────────┬───────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────┐ │ ProxyService │ │ • 模型映射: gpt-4 → gemini-3-pro │ │ • 格式转换: OpenAI → Gemini │ │ • 添加认证: Bearer │ └──────────────────────┬───────────────────────────────────┘ │ HTTPS POST │ cloudcode-pa.googleapis.com ▼ ┌──────────────────────────────────────────────────────────┐ │ Google CloudCode Internal API │ └──────────────────────┬───────────────────────────────────┘ │ ▼ 转换响应返回客户端 ``` --- ## 🚀 **编译为原生可执行文件 (GraalVM Native Image)** ### **1. 安装 GraalVM** ```bash # 下载 GraalVM (https://www.graalvm.org/downloads/) # 设置环境变量 export JAVA_HOME=/path/to/graalvm export PATH=$JAVA_HOME/bin:$PATH ``` ### **2. 编译** ```bash # 先编译 Java 类 qin compile # 使用 native-image 编译 native-image \ -cp build/classes:$(qin classpath) \ --no-fallback \ --enable-url-protocols=http,https \ com.antigravity.proxy.ProxyServer \ anti2java ``` ### **3. 运行原生可执行文件** ```bash ./anti2java ``` 原生镜像优势: - **启动时间**: < 100ms (vs JVM ~2s) - **内存占用**: ~50MB (vs JVM ~200MB) - **无需 JRE**: 独立可执行文件 --- ## 📊 **模型映射规则** | OpenAI 模型 | Gemini 模型 | |------------|-------------| | `gpt-4`, `gpt-4-turbo` | `gemini-3-pro` | | `gpt-3.5-turbo` | `gemini-2.5-flash` | | 其他 | `gemini-3-pro` (默认) | 可在 `ProxyService.java` 的 `mapModel()` 方法中自定义。 --- ## 📁 **项目结构** ``` anti2java/ ├── qin.config.json # Qin 配置文件 ├── token.json # OAuth Token (运行后生成) ├── README.md # 本文档 └── src/main/java/com/antigravity/proxy/ ├── ProxyServer.java # HTTP 服务器主程序 ├── model/ │ └── TokenInfo.java # Token 数据模型 ├── service/ │ ├── TokenService.java # Token 管理服务 │ └── ProxyService.java # 代理转发服务 └── util/ └── OAuthTokenGrabber.java # OAuth 授权工具 ``` --- ## 🔐 **安全说明** - `token.json` 包含敏感信息(access_token、refresh_token),**不要提交到 Git** - 已在 `.gitignore` 中排除 `token.json` - 生产环境建议: - 加密存储 Token - 添加 API Key 认证 - 使用 HTTPS --- ## 🛠️ **常用命令** ```bash # 同步依赖 qin sync # 编译 qin compile # 运行 OAuth 工具 qin run OAuthTokenGrabber # 启动服务器 qin run ProxyServer # 指定端口 qin run ProxyServer 9000 # 清理构建 qin clean ``` --- ## 📝 **常见问题** ### **Q1: Token 过期怎么办?** A: 程序会自动刷新 Token,无需手动处理。如果刷新失败,重新运行 `qin run OAuthTokenGrabber` 获取新 Token。 ### **Q2: 如何支持多账号?** A: 当前版本为简化版(单账号)。多账号需要扩展 `TokenService`,维护账号池并实现轮询逻辑。 ### **Q3: 支持流式响应吗?** A: 当前版本不支持 SSE 流式响应。实现需要改造 `ProxyService` 和 `ProxyServer` 的响应处理逻辑。 ### **Q4: Windows 上如何使用?** A: 完全兼容 Windows。使用 PowerShell 或 CMD 运行 `qin` 命令即可。 ### **Q5: 如何查看请求日志?** A: 程序会在控制台打印详细日志,包括请求时间、模型、Token 状态等。 --- ## 📄 **License** MIT License - 详见 [LICENSE](LICENSE) 文件 --- ## 🙏 **致谢** - [Antigravity-Manager](https://github.com/lbjlaq/Antigravity-Manager) - 灵感来源 - [Google Gemini API](https://ai.google.dev/) - 上游 API - [OkHttp](https://square.github.io/okhttp/) - HTTP 客户端库 - [Gson](https://github.com/google/gson) - JSON 处理库 ---
**如果觉得有用,请给个 Star ⭐️**