# 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 兼容接口
[](https://openjdk.org/)
[](https://www.graalvm.org/)
[](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 ⭐️**