高性能 AI API 中转服务 - 支持 Claude、Gemini、OpenAI 等多平台,提供完整的多账户管理、认证和监控功能。
🚀 v2.0 已完成 Rust 重写 - 性能提升 2.5x,内存减少 65%,吞吐量提升 4x
English Documentation | 迁移指南 | API 文档
- 🦀 Rust 高性能后端 - 低延迟 (<20ms)、高吞吐量 (>2000 req/s)、低内存 (<70MB)
- 🔐 企业级安全 - AES-256 加密、JWT 认证、API Key 管理
- 🌐 多平台支持 - Claude (官方/Console)、Gemini、OpenAI、AWS Bedrock、Azure OpenAI
- 📊 实时监控 - 使用统计、成本追踪、性能指标、健康检查
- 🎨 现代化管理界面 - Vue 3 + Element Plus SPA,由 Rust 后端提供静态文件服务
- 🐳 Docker 部署 - 多阶段构建、体积优化 (~50MB)
- Rust 1.75+ (安装)
- Redis 6+
- Docker (可选,用于容器化部署)
# 1. 克隆仓库
git clone https://github.com/your-repo/claude-relay-service.git
cd claude-relay-service
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 设置必填项(JWT_SECRET, ENCRYPTION_KEY)
# 3. 启动 Redis
docker run -d --name redis-dev -p 6379:6379 redis:7-alpine
# 4. 构建并运行 Rust 后端
cd rust/
cargo build --release
ENCRYPTION_KEY="12345678901234567890123456789012" ./target/release/claude-relay
# 5. 启动前端界面(另一个终端)
cd web/admin-spa/
npm install
npm run dev访问: http://localhost:8080 (Web 管理界面 + API,根路径自动跳转到 /admin-next)
开发模式可单独访问: http://localhost:3001 (Vite 开发服务器)
# 1. 设置环境变量
export JWT_SECRET="your-jwt-secret-minimum-32-chars"
export ENCRYPTION_KEY="12345678901234567890123456789012"
# 2. 启动所有服务
docker-compose up -d
# 3. 查看日志
docker-compose logs -f claude-relay
# 4. 访问服务
curl http://localhost:8080/health # API健康检查
open http://localhost:3001 # 管理界面| 文档 | 描述 |
|---|---|
| MIGRATION.md | Node.js → Rust 迁移指南 |
| rust/README.md | Rust 实现详细说明 |
| rust/DEPLOYMENT_GUIDE.md | 生产环境部署指南 |
| docs/INTERFACE.md | API 完整文档 |
| rust/SECURITY_AUDIT.md | 安全审计报告 (A- 评级) |
| rust/PHASE8_COMPLETE.md | 项目完成总结 |
| CLAUDE.md | 架构和设计说明 |
| 指标 | Node.js (v1.0) | Rust (v2.0) | 提升 |
|---|---|---|---|
| 请求延迟 (p50) | ~50ms | <20ms | 2.5x ⚡ |
| 内存使用 | ~200MB | <70MB | 65% ↓ 📉 |
| 并发吞吐量 | ~500 req/s | >2000 req/s | 4x 🚀 |
| 加密性能 (10KB) | ~25 µs | ~20.6 µs | 1.2x |
| 解密性能 (10KB) | ~12 µs | ~8.0 µs | 1.5x |
claude-relay-service/
├── rust/ # 🦀 Rust 后端(主实现)
│ ├── src/ # 源代码
│ ├── tests/ # 集成测试 (130个)
│ ├── benches/ # 性能基准测试
│ └── Cargo.toml # 依赖配置
├── web/admin-spa/ # 🎨 Vue 3 管理界面
├── nodejs-archive/ # 📦 Node.js 代码归档(参考)
├── config/ # ⚙️ 配置模板
├── docs/ # 📚 文档
├── .env.example # 环境变量模板(Rust 格式)
├── Dockerfile # 🐳 多阶段构建
└── docker-compose.yml # Docker Compose 配置
# .env 文件
CRS_SECURITY__JWT_SECRET=your_jwt_secret_minimum_32_characters_long
CRS_SECURITY__ENCRYPTION_KEY=12345678901234567890123456789012 # 必须32字符
CRS_SERVER__PORT=8080
CRS_REDIS__HOST=localhost
CRS_REDIS__PORT=6379CRS_LOGGING__LEVEL=info # 日志级别: trace, debug, info, warn, error
CRS_LOGGING__FORMAT=pretty # 日志格式: pretty, json
RUST_LOG=info # Rust 日志详细程度完整配置说明请参考: rust/.env.example
| 端点 | 方法 | 说明 |
|---|---|---|
/api/v1/messages |
POST | Claude 消息处理 (支持流式) |
/gemini/v1/models/:model:generateContent |
POST | Gemini API |
/openai/v1/chat/completions |
POST | OpenAI 兼容接口 |
/admin/dashboard |
GET | 管理仪表板数据 |
/health |
GET | 健康检查 |
/metrics |
GET | 系统指标 |
完整 API 文档: docs/INTERFACE.md
# 运行所有测试(需要 Docker)
cd rust/
cargo test
# 运行集成测试(自动启动临时 Redis)
bash run-integration-tests.sh
# 运行性能基准测试
cargo bench
# 测试报告
# - 集成测试: 129/130 通过 (99.2%)
# - 性能基准: 21 个基准测试完成测试详情: rust/PHASE8.1_COMPLETE.md
curl http://localhost:8080/healthcurl http://localhost:8080/metrics# 启动 Prometheus + Grafana
docker-compose --profile monitoring up -d
# 访问 Grafana: http://localhost:3001 (默认密码: admin123)
# Prometheus: http://localhost:9090
# Redis Commander: http://localhost:8081- 加密: AES-256-CBC + Scrypt 密钥派生
- 认证: JWT + API Key (SHA-256 哈希)
- 审计: OWASP Top 10 合规 (A- 评级)
- 数据保护: 敏感数据加密存储于 Redis
详细安全审计: rust/SECURITY_AUDIT.md
错误: "Address already in use"
解决: lsof -i :8080 或修改 CRS_SERVER__PORT错误: "Connection refused"
解决: docker run -d -p 6379:6379 redis:7-alpine错误: "ENCRYPTION_KEY must be set"
解决: 确保 .env 文件包含 32 字符的 ENCRYPTION_KEY完整故障排查: MIGRATION.md#故障排查
如果你正在从旧版 Node.js 迁移,请查看详细迁移指南:
关键变化:
- ✅ 端口: 3000 → 8080
- ✅ 环境变量:
JWT_SECRET→CRS_SECURITY__JWT_SECRET - ✅ 性能提升: 2.5x 更快,65% 内存减少
- ✅ API 兼容: 100% 向后兼容
Node.js 代码已归档至 nodejs-archive/ 目录。
MIT License - 详见 LICENSE
欢迎贡献!请遵循以下步骤:
- Fork 仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
代码格式化:
cd rust/
cargo fmt
cargo clippy- 问题反馈: GitHub Issues
- 文档: 项目 Wiki
- 讨论: GitHub Discussions
感谢所有为 Node.js 版本做出贡献的开发者。Rust 重写建立在你们的基础之上。
特别感谢:
- Anthropic (Claude API)
- Google (Gemini API)
- OpenAI (API 设计参考)
- Rust 社区
使用 Rust 构建,追求卓越。 🦀