mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 08:32:17 +00:00
主要变更: 1. **僵尸流看门狗 (Zombie Stream Watchdog)**: - 新增 resetActivityTimeout 机制,45秒无数据强制断开连接,防止服务假死。 2. **智能重试机制**: - 针对 Antigravity 429 (Resource Exhausted) 错误,自动清理会话并切换账号重试。 - 涵盖流式 (Stream) 和非流式 (Non-stream) 请求。 3. **Thought Signature 增强**: - 新增签名缓存与恢复机制 (signatureCache)。 - 增加 skip_thought_signature_validator 兜底签名策略。 - 强制补充 thought: true 标记以满足上游校验。 4. **系统稳定性与调试**: - 使用 util.inspect 替代 JSON.stringify 打印错误日志,彻底修复循环引用导致的服务崩溃。 - 新增针对 Antigravity 参数错误 (400) 的详细请求结构分析日志。 - 优化日志写入为轮转模式 (safeRotatingAppend)。 5. **其他优化**: - antigravityClient 数据处理安全增强 (safeDataToString)。
187 lines
6.5 KiB
Plaintext
187 lines
6.5 KiB
Plaintext
# 🚀 Claude Relay Service Configuration
|
||
|
||
# 🌐 服务器配置
|
||
PORT=3000
|
||
HOST=0.0.0.0
|
||
NODE_ENV=production
|
||
|
||
# 🔐 安全配置
|
||
JWT_SECRET=your-jwt-secret-here
|
||
ADMIN_SESSION_TIMEOUT=86400000
|
||
API_KEY_PREFIX=cr_
|
||
ENCRYPTION_KEY=your-encryption-key-here
|
||
|
||
# 👤 管理员凭据(可选,不设置则自动生成)
|
||
# ADMIN_USERNAME=cr_admin_custom
|
||
# ADMIN_PASSWORD=your-secure-password
|
||
|
||
# 📊 Redis 配置
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
REDIS_PASSWORD=
|
||
REDIS_DB=0
|
||
REDIS_ENABLE_TLS=
|
||
|
||
# 🔗 会话管理配置
|
||
# 粘性会话TTL配置(小时),默认1小时
|
||
STICKY_SESSION_TTL_HOURS=1
|
||
# 续期阈值(分钟),默认0分钟(不续期)
|
||
STICKY_SESSION_RENEWAL_THRESHOLD_MINUTES=15
|
||
|
||
# 🎯 Claude API 配置
|
||
CLAUDE_API_URL=https://api.anthropic.com/v1/messages
|
||
CLAUDE_API_VERSION=2023-06-01
|
||
CLAUDE_BETA_HEADER=claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14
|
||
|
||
# 🤖 Gemini OAuth / Antigravity 配置(可选)
|
||
# 不配置时使用内置默认值;如需自定义或避免在代码中出现 client secret,可在此覆盖
|
||
# GEMINI_OAUTH_CLIENT_ID=
|
||
# GEMINI_OAUTH_CLIENT_SECRET=
|
||
# Gemini CLI OAuth redirect_uri(可选,默认 https://codeassist.google.com/authcode)
|
||
# GEMINI_OAUTH_REDIRECT_URI=
|
||
# ANTIGRAVITY_OAUTH_CLIENT_ID=
|
||
# ANTIGRAVITY_OAUTH_CLIENT_SECRET=
|
||
# Antigravity OAuth redirect_uri(可选,默认 http://localhost:45462;用于避免 redirect_uri_mismatch)
|
||
# ANTIGRAVITY_OAUTH_REDIRECT_URI=http://localhost:45462
|
||
# Antigravity 上游地址(可选,默认 sandbox)
|
||
# ANTIGRAVITY_API_URL=https://daily-cloudcode-pa.sandbox.googleapis.com
|
||
# Antigravity User-Agent(可选)
|
||
# ANTIGRAVITY_USER_AGENT=antigravity/1.11.3 windows/amd64
|
||
|
||
# Claude Code(Anthropic Messages API)路由分流(无需额外环境变量):
|
||
# - /api -> Claude 账号池(默认)
|
||
# - /antigravity/api -> Antigravity OAuth
|
||
# - /gemini-cli/api -> Gemini CLI OAuth
|
||
|
||
# ============================================================================
|
||
# 🐛 调试 Dump 配置(可选)
|
||
# ============================================================================
|
||
# 以下开启后会在项目根目录写入 .jsonl 调试文件,便于排查问题。
|
||
# ⚠️ 生产环境建议关闭,避免磁盘占用。
|
||
#
|
||
# 📄 输出文件列表:
|
||
# - anthropic-requests-dump.jsonl (客户端请求)
|
||
# - anthropic-responses-dump.jsonl (返回给客户端的响应)
|
||
# - anthropic-tools-dump.jsonl (工具定义快照)
|
||
# - antigravity-upstream-requests-dump.jsonl (发往上游的请求)
|
||
# - antigravity-upstream-responses-dump.jsonl (上游 SSE 响应)
|
||
#
|
||
# 📌 开关配置:
|
||
# ANTHROPIC_DEBUG_REQUEST_DUMP=true
|
||
# ANTHROPIC_DEBUG_RESPONSE_DUMP=true
|
||
# ANTHROPIC_DEBUG_TOOLS_DUMP=true
|
||
# ANTIGRAVITY_DEBUG_UPSTREAM_REQUEST_DUMP=true
|
||
# ANTIGRAVITY_DEBUG_UPSTREAM_RESPONSE_DUMP=true
|
||
#
|
||
# 📏 单条记录大小上限(字节),默认 2MB:
|
||
# ANTHROPIC_DEBUG_REQUEST_DUMP_MAX_BYTES=2097152
|
||
# ANTHROPIC_DEBUG_RESPONSE_DUMP_MAX_BYTES=2097152
|
||
# ANTIGRAVITY_DEBUG_UPSTREAM_REQUEST_DUMP_MAX_BYTES=2097152
|
||
#
|
||
# 📦 整个 Dump 文件大小上限(字节),超过后自动轮转为 .bak 文件,默认 10MB:
|
||
# DUMP_MAX_FILE_SIZE_BYTES=10485760
|
||
#
|
||
# 🔧 工具失败继续:当 tool_result 标记 is_error=true 时,提示模型不要中断任务
|
||
# (仅 /antigravity/api 分流生效)
|
||
# ANTHROPIC_TOOL_ERROR_CONTINUE=true
|
||
|
||
|
||
# 🚫 529错误处理配置
|
||
# 启用529错误处理,0表示禁用,>0表示过载状态持续时间(分钟)
|
||
CLAUDE_OVERLOAD_HANDLING_MINUTES=0
|
||
|
||
# 400错误处理:0表示禁用,>0表示临时禁用时间(分钟)
|
||
# 只有匹配特定错误模式的 400 才会触发临时禁用
|
||
# - organization has been disabled
|
||
# - account has been disabled
|
||
# - account is disabled
|
||
# - no account supporting
|
||
# - account not found
|
||
# - invalid account
|
||
# - Too many active sessions
|
||
CLAUDE_CONSOLE_BLOCKED_HANDLING_MINUTES=10
|
||
|
||
# 🌐 代理配置
|
||
DEFAULT_PROXY_TIMEOUT=600000
|
||
MAX_PROXY_RETRIES=3
|
||
# IP协议族配置:true=IPv4, false=IPv6, 默认IPv4(兼容性更好)
|
||
PROXY_USE_IPV4=true
|
||
# 代理连接池 / Keep-Alive 配置(默认关闭,如需启用请取消注释)
|
||
# PROXY_KEEP_ALIVE=true
|
||
# PROXY_MAX_SOCKETS=50
|
||
# PROXY_MAX_FREE_SOCKETS=10
|
||
|
||
# ⏱️ 请求超时配置
|
||
REQUEST_TIMEOUT=600000 # 请求超时设置(毫秒),默认10分钟
|
||
|
||
# 🔧 请求体大小配置
|
||
REQUEST_MAX_SIZE_MB=60
|
||
|
||
# 📈 使用限制
|
||
DEFAULT_TOKEN_LIMIT=1000000
|
||
|
||
# 📝 日志配置
|
||
LOG_LEVEL=info
|
||
LOG_MAX_SIZE=10m
|
||
LOG_MAX_FILES=5
|
||
|
||
# 🔧 系统配置
|
||
CLEANUP_INTERVAL=3600000
|
||
TOKEN_USAGE_RETENTION=2592000000
|
||
HEALTH_CHECK_INTERVAL=60000
|
||
TIMEZONE_OFFSET=8 # UTC偏移小时数,默认+8(中国时区)
|
||
METRICS_WINDOW=5 # 实时指标统计窗口(分钟),可选1-60,默认5分钟
|
||
# 启动时清理残留的并发排队计数器(默认true,多实例部署时建议设为false)
|
||
CLEAR_CONCURRENCY_QUEUES_ON_STARTUP=true
|
||
|
||
# 🎨 Web 界面配置
|
||
WEB_TITLE=Claude Relay Service
|
||
WEB_DESCRIPTION=Multi-account Claude API relay service with beautiful management interface
|
||
WEB_LOGO_URL=/assets/logo.png
|
||
|
||
# 🛠️ 开发配置
|
||
DEBUG=false
|
||
DEBUG_HTTP_TRAFFIC=false # 启用HTTP请求/响应调试日志(仅开发环境)
|
||
ENABLE_CORS=true
|
||
TRUST_PROXY=true
|
||
|
||
# 🔒 客户端限制(可选)
|
||
# ALLOW_CUSTOM_CLIENTS=false
|
||
|
||
# 🔐 LDAP 认证配置
|
||
LDAP_ENABLED=false
|
||
LDAP_URL=ldaps://ldap-1.test1.bj.yxops.net:636
|
||
LDAP_BIND_DN=cn=admin,dc=example,dc=com
|
||
LDAP_BIND_PASSWORD=admin_password
|
||
LDAP_SEARCH_BASE=dc=example,dc=com
|
||
LDAP_SEARCH_FILTER=(uid={{username}})
|
||
LDAP_SEARCH_ATTRIBUTES=dn,uid,cn,mail,givenName,sn
|
||
LDAP_TIMEOUT=5000
|
||
LDAP_CONNECT_TIMEOUT=10000
|
||
|
||
# 🔒 LDAP TLS/SSL 配置 (用于 ldaps:// URL)
|
||
# 是否忽略证书验证错误 (设置为false可忽略自签名证书错误)
|
||
LDAP_TLS_REJECT_UNAUTHORIZED=true
|
||
# CA 证书文件路径 (可选,用于自定义CA证书)
|
||
# LDAP_TLS_CA_FILE=/path/to/ca-cert.pem
|
||
# 客户端证书文件路径 (可选,用于双向认证)
|
||
# LDAP_TLS_CERT_FILE=/path/to/client-cert.pem
|
||
# 客户端私钥文件路径 (可选,用于双向认证)
|
||
# LDAP_TLS_KEY_FILE=/path/to/client-key.pem
|
||
# 服务器名称 (可选,用于 SNI)
|
||
# LDAP_TLS_SERVERNAME=ldap.example.com
|
||
|
||
# 🗺️ LDAP 用户属性映射
|
||
LDAP_USER_ATTR_USERNAME=uid
|
||
LDAP_USER_ATTR_DISPLAY_NAME=cn
|
||
LDAP_USER_ATTR_EMAIL=mail
|
||
LDAP_USER_ATTR_FIRST_NAME=givenName
|
||
LDAP_USER_ATTR_LAST_NAME=sn
|
||
|
||
# 👥 用户管理配置
|
||
USER_MANAGEMENT_ENABLED=false
|
||
DEFAULT_USER_ROLE=user
|
||
USER_SESSION_TIMEOUT=86400000
|
||
MAX_API_KEYS_PER_USER=1
|
||
ALLOW_USER_DELETE_API_KEYS=false
|