当开启端点格式限制后,不同协议的渠道只能通过对应的端点访问: - Anthropic 渠道只能用 /v1/messages - Gemini 渠道只能用 /v1beta/models/* - OpenAI 系渠道只能用 /v1/chat/completions 等 - VertexAI/阿里云等支持多协议的渠道不受限 核心实现:EndpointFormatGuard 中间件从请求路径推导协议家族, 不依赖 gin context 中的 relay_format(因 group middleware 执行 时 context 中尚无此值)。 修复了 /v1/models/*path 和 /v1/engines/ 路径被错误归类为 openai 家族的 bug(实际是 Gemini 格式)。 单元测试 58 个,E2E 测试 15 个,覆盖: - 路径分类边界(含 Gemini relay 路径修复验证) - 渠道类型覆盖(含非 LLM 渠道透传) - 并发安全、运行时开关切换 - 错误消息 JSON 结构和内容验证
两个独立功能: 1. Relay Capture:对开启 capture_relay 的用户记录完整请求/响应到本地文件 - 单 writer goroutine + 128 槽 channel 架构,无 OOM 风险 - 支持流式 SSE 和非流式请求 - 30s 超时保护 2. User-Model RPM Rate Limiting:按 用户+模型 维度的 RPM 限流 - Redis 令牌桶 + 内存滑动窗口双路径,Redis 故障自动降级 - 请求失败时退还令牌/配额(Redis Refund Lua 脚本 + 内存 Refund) - Redis pipeline 错误处理:失败时清理缓存 key - 前端用户编辑弹窗新增模型限流配置面板 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>