Skip to content

Rust Claude Relay Service

License

Notifications You must be signed in to change notification settings

wayfind/RustCRS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust CRS(Rust Claude Relay Service)

高性能 AI API 中转服务 - 支持 Claude、Gemini、OpenAI 等多平台,提供完整的多账户管理、认证和监控功能。

Rust Version License: MIT Status

🚀 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 开发服务器)

Docker 部署 (推荐)

# 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=6379

可选配置

CRS_LOGGING__LEVEL=info          # 日志级别: trace, debug, info, warn, error
CRS_LOGGING__FORMAT=pretty       # 日志格式: pretty, json
RUST_LOG=info                    # Rust 日志详细程度

完整配置说明请参考: rust/.env.example


🎯 核心 API 端点

端点 方法 说明
/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/health

系统指标

curl 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

Redis 连接失败

错误: "Connection refused"
解决: docker run -d -p 6379:6379 redis:7-alpine

环境变量未设置

错误: "ENCRYPTION_KEY must be set"
解决: 确保 .env 文件包含 32 字符的 ENCRYPTION_KEY

完整故障排查: MIGRATION.md#故障排查


🔄 从 Node.js 迁移

如果你正在从旧版 Node.js 迁移,请查看详细迁移指南:

📖 完整迁移指南

关键变化:

  • ✅ 端口: 3000 → 8080
  • ✅ 环境变量: JWT_SECRETCRS_SECURITY__JWT_SECRET
  • ✅ 性能提升: 2.5x 更快,65% 内存减少
  • ✅ API 兼容: 100% 向后兼容

Node.js 代码已归档至 nodejs-archive/ 目录。


📜 许可证

MIT License - 详见 LICENSE


🤝 贡献

欢迎贡献!请遵循以下步骤:

  1. Fork 仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码格式化:

cd rust/
cargo fmt
cargo clippy

📞 支持


🎉 致谢

感谢所有为 Node.js 版本做出贡献的开发者。Rust 重写建立在你们的基础之上。

特别感谢:

  • Anthropic (Claude API)
  • Google (Gemini API)
  • OpenAI (API 设计参考)
  • Rust 社区

使用 Rust 构建,追求卓越。 🦀

About

Rust Claude Relay Service

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •