diff --git a/.env.example b/.env.example index 6eb7a3ea..adeade9d 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,7 @@ 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 # 🌐 代理配置 -DEFAULT_PROXY_TIMEOUT=30000 +DEFAULT_PROXY_TIMEOUT=60000 MAX_PROXY_RETRIES=3 # 📈 使用限制 diff --git a/CLAUDE.md b/CLAUDE.md index a3ee2d0c..6abbc57b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -151,6 +151,12 @@ npm run setup # 自动生成密钥并创建管理员账户 - 检查日志文件 `logs/claude-relay-*.log` 确认服务正常运行 - 注意:当前项目缺少实际测试文件,建议补充单元测试和集成测试 +### 开发工作流 +- **功能开发**: 始终从理解现有代码开始,重用已有的服务和模式 +- **调试流程**: 使用 Winston 日志 + Web 界面实时日志查看 + CLI 状态工具 +- **代码审查**: 关注安全性(加密存储)、性能(异步处理)、错误处理 +- **部署前检查**: 运行 lint → 测试 CLI 功能 → 检查日志 → Docker 构建 + ### 常见文件位置 - 核心服务逻辑:`src/services/` 目录 - 路由处理:`src/routes/` 目录 @@ -178,4 +184,37 @@ npm run setup # 自动生成密钥并创建管理员账户 - **零信任验证**: 每个请求都需要完整的认证链 - **优雅降级**: Redis 连接失败时的回退机制 - **自动重试**: 指数退避重试策略和错误隔离 -- **资源清理**: 客户端断开时的自动清理机制 \ No newline at end of file +- **资源清理**: 客户端断开时的自动清理机制 + +## 项目特定注意事项 + +### Redis 数据结构 +- **API Keys**: `api_key:{id}` (详细信息) + `api_key_hash:{hash}` (快速查找) +- **Claude 账户**: `claude_account:{id}` (加密的 OAuth 数据) +- **管理员**: `admin:{id}` + `admin_username:{username}` (用户名映射) +- **会话**: `session:{token}` (JWT 会话管理) +- **使用统计**: `usage:daily:{date}:{key}:{model}` (多维度统计) +- **系统信息**: `system_info` (系统状态缓存) + +### 流式响应处理 +- 支持 SSE (Server-Sent Events) 流式传输 +- 自动从流中解析 usage 数据并记录 +- 客户端断开时通过 AbortController 清理资源 +- 错误时发送适当的 SSE 错误事件 + +### CLI 工具使用示例 +```bash +# 创建新的 API Key +npm run cli keys create -- --name "MyApp" --limit 1000 + +# 查看系统状态 +npm run cli status + +# 管理 Claude 账户 +npm run cli accounts list +npm run cli accounts refresh + +# 管理员操作 +npm run cli admin create -- --username admin2 +npm run cli admin reset-password -- --username admin +``` \ No newline at end of file