This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Claude Code Hub 是一个 Claude Code API 代理中转服务平台,用于统一管理多个 AI 服务提供商(支持 Claude Code 格式和 OpenAI 兼容格式),提供智能负载均衡、用户权限管理、使用统计和实时监控功能。
本项目基于 zsio/claude-code-hub 进行了增强,新增了详细日志记录、并发控制、多时段限流、熔断保护、决策链追踪、OpenAI 兼容等功能。
使用中文和用户沟通。
pnpm dev # 启动开发服务器 (http://localhost:13500, 使用 Turbopack)
pnpm build # 构建生产版本 (自动复制 VERSION 文件)
pnpm start # 启动生产服务器
pnpm lint # 运行 ESLint
pnpm typecheck # TypeScript 类型检查
pnpm format # 格式化代码
pnpm format:check # 检查代码格式
pnpm db:generate # 生成 Drizzle 迁移文件
pnpm db:migrate # 执行数据库迁移
pnpm db:push # 直接推送 schema 到数据库(开发环境)
pnpm db:studio # 启动 Drizzle Studio 可视化管理界面
docker compose up -d # 启动所有服务(后台运行)
docker compose logs -f # 查看所有服务日志
docker compose logs -f app # 仅查看应用日志
docker compose restart app # 重启应用
docker compose pull && docker compose up -d # 升级到最新版本
docker compose down # 停止并删除容器
本项目提供了完整的本地开发工具集(位于 dev/ 目录),可以快速启动开发环境、测试部署流程和清理资源。
快速开始:
cd dev
make help # 查看所有可用命令
make dev # 一键启动完整开发环境
常用命令:
# 环境管理
make dev # 启动完整开发环境 (DB + pnpm dev)
make db # 仅启动数据库和 Redis
make stop # 停止所有服务
make status # 查看服务状态
# 镜像构建和测试
make build # 构建 Docker 镜像
make compose # 启动三容器完整编排
# 数据库操作
make migrate # 执行数据库迁移
make db-shell # 进入 PostgreSQL shell
make redis-shell # 进入 Redis CLI
# 日志查看
make logs # 查看所有服务日志
make logs-app # 查看应用日志
# 清理和重置
make clean # 一键清理所有资源
make reset # 完全重置 (clean + dev)
开发环境配置:
localhost:5433 (避免与本地 5432 冲突)localhost:6380 (避免与本地 6379 冲突)http://localhost:13500 (Turbopack 开发服务器)dev-admin-token完整文档: 详见 dev/README.md
src/
├── app/ # Next.js App Router
│ ├── v1/ # API 代理核心逻辑
│ │ ├── _lib/
│ │ │ ├── proxy/ # Claude Code 格式代理 (guards, session, forwarder)
│ │ │ ├── codex/ # OpenAI 兼容层 (chat/completions)
│ │ │ └── proxy-handler.ts # 代理请求主入口
│ │ └── [...route]/route.ts # 动态路由处理器
│ ├── dashboard/ # 仪表盘 (统计、日志、排行榜、实时监控)
│ ├── settings/ # 设置页面 (用户、供应商、价格、系统配置)
│ └── api/ # 内部 API (auth, admin, leaderboard, version)
├── lib/ # 核心业务逻辑
│ ├── circuit-breaker.ts # 熔断器 (内存实现)
│ ├── session-manager.ts # Session 追踪和缓存
│ ├── rate-limit/ # 限流服务 (Redis + Lua 脚本)
│ ├── redis/ # Redis 客户端和工具
│ ├── proxy-status-tracker.ts # 实时代理状态追踪
│ └── price-sync.ts # LiteLLM 价格同步
├── repository/ # 数据访问层 (Drizzle ORM)
├── drizzle/ # 数据库 schema 和迁移
├── types/ # TypeScript 类型定义
└── components/ # React UI 组件
代理请求经过以下步骤 (参见 src/app/v1/_lib/proxy-handler.ts):
ProxyAuthenticator) - 验证 API KeyProxySessionGuard) - 并发 Session 限制检查ProxyRateLimitGuard) - RPM + 金额限制 (5小时/周/月)ProxyProviderResolver) - 智能选择和故障转移
ProxyMessageService) - 创建消息上下文和日志记录ProxyForwarder) - 转发到上游供应商ProxyResponseHandler) - 流式/非流式响应处理ProxyErrorHandler) - 统一错误处理和熔断器记录支持 /v1/chat/completions 端点 (参见 src/app/v1/_lib/codex/chat-completions-handler.ts):
messages) 和 Response API 格式 (input)RequestTransformer)adaptForCodexCLI)ResponseTransformer)tools、reasoning、stream 等功能内存实现的熔断器 (src/lib/circuit-breaker.ts):
多层限流 (src/lib/rate-limit/service.ts):
Session 追踪和缓存 (src/lib/session-manager.ts):
核心表结构 (src/drizzle/schema.ts):
关键环境变量 (参见 .env.example):
# 管理员认证
ADMIN_TOKEN=change-me # 管理后台登录令牌(必须修改)
# 数据库配置
DSN="postgres://..." # PostgreSQL 连接字符串
AUTO_MIGRATE=true # 启动时自动执行迁移
# Redis 配置
REDIS_URL=redis://localhost:6379 # Redis 连接地址
ENABLE_RATE_LIMIT=true # 启用限流功能
# Session 配置
SESSION_TTL=300 # Session 缓存过期时间(秒)
STORE_SESSION_MESSAGES=false # 是否存储请求 messages(用于实时监控)
# Cookie 安全策略
ENABLE_SECURE_COOKIES=true # 是否强制 HTTPS Cookie(默认:true)
# 设置为 false 允许 HTTP 访问,但会降低安全性
# 应用配置
APP_PORT=23000 # 应用端口
NODE_ENV=production # 环境模式
TZ=Asia/Shanghai # 时区设置
LOG_LEVEL=info # 日志级别
src/lib/redis/lua-scripts.ts)pnpm db:generate 生成迁移文件AUTO_MIGRATE=true 自动执行迁移withTimezone: trueAT TIME ZONE 'Asia/Shanghai' 转换date-fns 和 timeago.jsTZ 和 PGTZ 统一设置为 Asia/Shanghaiinput_tokens, output_tokens, cache_creation_input_tokens, cache_read_input_tokens)prompt_tokens, completion_tokens)cost_multipliersrc/lib/logger.ts)fatal > error > warn > info > debug > tracepino-pretty 美化输出pnpm typecheck 确保类型正确src/app/v1/_lib/proxy/ 中的代码)src/drizzle/schema.ts 中扩展 providerType 枚举src/app/v1/_lib/proxy/provider-selector.ts 中添加类型过滤逻辑src/app/v1/_lib/codex/transformers/ 中添加转换器src/lib/rate-limit/service.ts 中添加新的限流方法src/lib/redis/lua-scripts.ts 中添加对应的 Lua 脚本src/app/v1/_lib/proxy/rate-limit-guard.ts 中集成新的检查src/drizzle/schema.ts 中扩展 statistics 表src/repository/statistics.ts 中添加查询方法src/app/dashboard/_components/ 中添加可视化组件src/drizzle/schema.tspnpm db:generate 生成迁移文件drizzle/ 目录)pnpm db:push (开发) 或 pnpm db:migrate (生产)DSN 环境变量格式docker compose ps)REDIS_URL 环境变量docker compose exec redis redis-cli ping[CircuitBreaker] 记录is_enabled = true)circuitState)limit_concurrent_sessions)