mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:43:35 +00:00
主要改进: 1. 改进并发控制机制 - 使用 once 代替 on 避免重复监听 - 监听多个事件确保可靠性(close、finish) - 支持客户端断开时立即释放并发槽位 2. 支持非流式请求的客户端断开处理 - 客户端断开时立即中断上游请求 - 避免资源浪费和不必要的 API 调用 3. 移除 requestLimit(请求数限制)功能 - 移除配置和验证逻辑 - 保留请求统计用于监控分析 4. 移除速率限制(Rate Limit)功能 - 移除 RATE_LIMIT_* 配置 - 简化中间件逻辑 - 避免与并发控制重复 现在系统仅保留: - Token 使用量限制 - 并发数限制(更精确的资源控制) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
84 lines
2.8 KiB
JavaScript
84 lines
2.8 KiB
JavaScript
const path = require('path');
|
|
require('dotenv').config();
|
|
|
|
const config = {
|
|
// 🌐 服务器配置
|
|
server: {
|
|
port: parseInt(process.env.PORT) || 3000,
|
|
host: process.env.HOST || '0.0.0.0',
|
|
nodeEnv: process.env.NODE_ENV || 'development',
|
|
trustProxy: process.env.TRUST_PROXY === 'true'
|
|
},
|
|
|
|
// 🔐 安全配置
|
|
security: {
|
|
jwtSecret: process.env.JWT_SECRET || 'CHANGE-THIS-JWT-SECRET-IN-PRODUCTION',
|
|
adminSessionTimeout: parseInt(process.env.ADMIN_SESSION_TIMEOUT) || 86400000, // 24小时
|
|
apiKeyPrefix: process.env.API_KEY_PREFIX || 'cr_',
|
|
encryptionKey: process.env.ENCRYPTION_KEY || 'CHANGE-THIS-32-CHARACTER-KEY-NOW'
|
|
},
|
|
|
|
// 📊 Redis配置
|
|
redis: {
|
|
host: process.env.REDIS_HOST || '127.0.0.1',
|
|
port: parseInt(process.env.REDIS_PORT) || 6379,
|
|
password: process.env.REDIS_PASSWORD || '',
|
|
db: parseInt(process.env.REDIS_DB) || 0,
|
|
connectTimeout: 10000,
|
|
commandTimeout: 5000,
|
|
retryDelayOnFailover: 100,
|
|
maxRetriesPerRequest: 3,
|
|
lazyConnect: true,
|
|
enableTLS: process.env.REDIS_ENABLE_TLS || false,
|
|
},
|
|
|
|
// 🎯 Claude API配置
|
|
claude: {
|
|
apiUrl: process.env.CLAUDE_API_URL || 'https://api.anthropic.com/v1/messages',
|
|
apiVersion: process.env.CLAUDE_API_VERSION || '2023-06-01',
|
|
betaHeader: process.env.CLAUDE_BETA_HEADER || 'claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14'
|
|
},
|
|
|
|
// 🌐 代理配置
|
|
proxy: {
|
|
timeout: parseInt(process.env.DEFAULT_PROXY_TIMEOUT) || 30000,
|
|
maxRetries: parseInt(process.env.MAX_PROXY_RETRIES) || 3
|
|
},
|
|
|
|
// 📈 使用限制
|
|
limits: {
|
|
defaultTokenLimit: parseInt(process.env.DEFAULT_TOKEN_LIMIT) || 1000000
|
|
},
|
|
|
|
// 📝 日志配置
|
|
logging: {
|
|
level: process.env.LOG_LEVEL || 'info',
|
|
dirname: path.join(__dirname, '..', 'logs'),
|
|
maxSize: process.env.LOG_MAX_SIZE || '10m',
|
|
maxFiles: parseInt(process.env.LOG_MAX_FILES) || 5
|
|
},
|
|
|
|
// 🔧 系统配置
|
|
system: {
|
|
cleanupInterval: parseInt(process.env.CLEANUP_INTERVAL) || 3600000, // 1小时
|
|
tokenUsageRetention: parseInt(process.env.TOKEN_USAGE_RETENTION) || 2592000000, // 30天
|
|
healthCheckInterval: parseInt(process.env.HEALTH_CHECK_INTERVAL) || 60000 // 1分钟
|
|
},
|
|
|
|
// 🎨 Web界面配置
|
|
web: {
|
|
title: process.env.WEB_TITLE || 'Claude Relay Service',
|
|
description: process.env.WEB_DESCRIPTION || 'Multi-account Claude API relay service with beautiful management interface',
|
|
logoUrl: process.env.WEB_LOGO_URL || '/assets/logo.png',
|
|
enableCors: process.env.ENABLE_CORS === 'true',
|
|
sessionSecret: process.env.WEB_SESSION_SECRET || 'CHANGE-THIS-SESSION-SECRET'
|
|
},
|
|
|
|
// 🛠️ 开发配置
|
|
development: {
|
|
debug: process.env.DEBUG === 'true',
|
|
hotReload: process.env.HOT_RELOAD === 'true'
|
|
}
|
|
};
|
|
|
|
module.exports = config; |