KevinLiao
|
3c797a85e0
|
feat: Claude Console账号增强,升级模型支持列表为模型映射表!
|
2025-07-30 23:13:59 +08:00 |
|
KevinLiao
|
6216433b0b
|
Merge branch 'main' of https://github.com/Wei-Shaw/claude-relay-service
# Conflicts:
# web/admin-spa/dist/assets/LoginView-BJ0LLv16.js
# web/admin-spa/dist/assets/LogoTitle-DHj-MjwS.js
# web/admin-spa/dist/assets/MainLayout-CLydIeqJ.js
# web/admin-spa/dist/assets/SettingsView-DicW12bL.js
# web/admin-spa/dist/assets/index-HYE9xPuR.js
# web/admin-spa/dist/index.html
# web/admin-spa/src/components/apikeys/CreateApiKeyModal.vue
# web/admin-spa/src/components/apikeys/EditApiKeyModal.vue
# web/admin-spa/src/views/ApiKeysView.vue
|
2025-07-30 20:41:10 +08:00 |
|
KevinLiao
|
b86adcd6d2
|
fix: 1.修复ClaudeConsole账号设置为专属绑定的功能
2. 修复Claude 官方账号会话窗口计算错误的问题
|
2025-07-30 20:20:12 +08:00 |
|
shaw
|
a6ab6b7abe
|
feat: 实现基于滑动窗口的实时RPM/TPM统计
- 添加系统级分钟统计,支持1-60分钟可配置时间窗口
- 新增 getRealtimeSystemMetrics 方法计算滑动窗口内的平均值
- 前端显示实时RPM/TPM,标注时间窗口和数据来源
- 修复 EditApiKeyModal 中模型限制和客户端限制复选框状态错误
- 优化性能:使用Pipeline批量操作替代Promise.all
- TPM包含所有token类型:input、output、cache_creation、cache_read
- 添加降级方案:实时数据不可用时返回历史平均值
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-30 15:37:57 +08:00 |
|
KevinLiao
|
34dca961ef
|
fix: 1. 修复调度优先级以及手动禁止调度逻辑的问题
2. 优化列表优先级显示
|
2025-07-30 09:30:11 +08:00 |
|
KevinLiao
|
89f9f48576
|
fix: 完成调度优先级逻辑的处理
|
2025-07-30 08:56:42 +08:00 |
|
KevinLiao
|
27efca3afb
|
Merge branch 'main' of https://github.com/Wei-Shaw/claude-relay-service
|
2025-07-30 08:22:05 +08:00 |
|
KevinLiao
|
fddd5ee3e9
|
feat: 新增标准Claude Console API账号支持
|
2025-07-30 08:19:44 +08:00 |
|
shaw
|
25094fe5e7
|
feat(pricing): 添加模型价格文件本地fallback机制
|
2025-07-29 22:58:44 +08:00 |
|
shaw
|
03a5300b78
|
feat(admin-spa): 添加 API Key 标签管理功能
基于 PR #114 的功能需求,为新版 admin-spa 实现完整的标签系统:
后端改进:
- apiKeyService 支持标签的创建、查询和更新
- admin 路由添加标签验证和处理逻辑
- 标签以 JSON 数组形式存储在 Redis 中
前端功能:
- API Key 列表增加标签列,显示彩色标签徽章
- 添加标签筛选器,支持按标签过滤 API Keys
- 创建和编辑 API Key 时可添加/删除标签
- 标签输入支持 Enter 键快速添加
- 自动收集并排序所有可用标签
界面优化:
- 使用蓝色圆角标签样式,视觉清晰
- 无标签时显示"无标签"提示
- 标签管理操作流畅,支持即时添加删除
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-29 16:14:16 +08:00 |
|
shaw
|
414856f152
|
feat: 全新的Vue3管理后台(admin-spa)和路由重构
🎨 新增功能:
- 使用Vue3 + Vite构建的全新管理后台界面
- 支持Tab切换的API统计页面(统计查询/使用教程)
- 优雅的胶囊式Tab切换设计
- 同步了PR #106的会话窗口管理功能
- 完整的响应式设计和骨架屏加载状态
🔧 路由调整:
- 新版管理后台部署在 /admin-next/ 路径
- 将根路径 / 重定向到 /admin-next/api-stats
- 将 /web 页面路由重定向到新版,保留 /web/auth/* 认证路由
- 将 /apiStats 页面路由重定向到新版,保留API端点
🗑️ 清理工作:
- 删除旧版 web/admin/ 静态文件
- 删除旧版 web/apiStats/ 静态文件
- 清理相关的文件服务代码
🐛 修复问题:
- 修复重定向循环问题
- 修复环境变量配置
- 修复路由404错误
- 优化构建配置
🚀 生成方式:使用 Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-29 12:40:51 +08:00 |
|
shaw
|
f6948a04f6
|
Merge pull request #106 from kevinconan/main - feat: 账号管理页面,给Claude账号添加了会话窗口管理与显示
|
2025-07-29 11:08:56 +08:00 |
|
KevinLiao
|
718733b78b
|
feat: 增加账号session窗口管理与显示。后续可以据此优化账号轮转逻辑。
scripts目录有相关管理脚本,请自行探索
|
2025-07-28 15:51:38 +08:00 |
|
shaw
|
4913be3b21
|
Merge remote-tracking branch 'origin/main' into dev
|
2025-07-28 09:30:33 +08:00 |
|
KevinLiao
|
bdf125e001
|
fix: APIKey查询页面数据不正确的情况
|
2025-07-27 19:51:37 +08:00 |
|
KevinLiao
|
ac1e367a69
|
feat: 增加每日费用限制
|
2025-07-27 14:47:59 +08:00 |
|
shaw
|
2a6bb2ab01
|
feat: 改进 Gemini token 刷新机制和错误处理
- Token 刷新成功后自动将账户状态更新为 active
- 清空之前的错误信息
- 确保账户在成功刷新后可以正常使用
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-26 14:36:28 +08:00 |
|
shaw
|
4789c03ea3
|
fix: 修复 Gemini token 刷新时的二次解密错误
- refreshAccountToken 中的 account.refreshToken 已经是解密后的值
- 移除多余的 decrypt() 调用,避免二次解密导致的错误
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-26 14:34:45 +08:00 |
|
shaw
|
3d13542fff
|
fix: 修复 Gemini 账户 refreshToken 解密错误
- 修复 updateAccount 中对已解密数据的二次解密问题
- 改进解密函数,使用固定长度的 IV 避免冒号分隔符问题
- 确保 refreshToken 能正确存储和使用
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-26 12:10:03 +08:00 |
|
shaw
|
dd73045223
|
feat: 改进 Gemini token 刷新机制和错误处理
- 修复 token 刷新时的错误处理逻辑
- 添加详细的错误日志记录
- 新增 test-gemini-refresh.js 测试脚本
- 更新 CLAUDE.md 文档,添加 Gemini token 刷新故障排除指南
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-26 11:41:17 +08:00 |
|
Wesley Liddick
|
383f33fa77
|
Merge pull request #72 from kevinconan/main
feat: 增加APIKey 客户端限制功能
|
2025-07-26 11:03:06 +08:00 |
|
KevinLiao
|
b8c7c3e9f5
|
feat: 增加APIKey 客户端限制功能
|
2025-07-25 23:36:48 +08:00 |
|
leslie
|
578d3ca34b
|
重复计次修复
|
2025-07-25 22:08:30 +08:00 |
|
leslie
|
53e0577e19
|
添加claude账号维度计算token费用前端修复
|
2025-07-25 21:48:54 +08:00 |
|
leslie
|
5522967792
|
添加claude账号维度计算token费用
|
2025-07-25 21:27:17 +08:00 |
|
leslie
|
4325de90e1
|
解决轮询问题
|
2025-07-25 20:27:20 +08:00 |
|
KevinLiao
|
f614d54ab5
|
fix: APIKey列表费用及Token显示不准确的问题,目前显示总数
feat: 增加APIKey过期设置,以及到期续期的能力
|
2025-07-25 09:53:16 +08:00 |
|
mouyong
|
33561bcc80
|
修复用户提供的 密钥太短导致无法保存授权的问题
|
2025-07-23 22:34:26 +08:00 |
|
shaw
|
3553f5cc1f
|
fix: 修复流式响应的 Parse Error 和缓冲问题
主要修改:
1. 从 compression 中间件中排除 SSE 流式响应,避免压缩导致的缓冲
2. 移除导致 Parse Error 的 res.flushHeaders() 调用
3. 改进流式响应的错误处理,发送 SSE 错误事件而不是破坏流
4. 在写入数据前检查流状态,避免写入已销毁的流
5. 优化响应结束时的处理逻辑,确保缓冲区数据正确处理
这些修改确保了流式请求能够正常显示打字机效果,同时保留了 usage token 收集功能。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-23 16:13:07 +08:00 |
|
shaw
|
1e372dd365
|
fix: 修复流式响应缓冲问题,实现真正的实时流传输
- 配置 compression 中间件排除 SSE 流式响应,避免压缩导致的缓冲
- 添加 X-Accel-Buffering: no 响应头,禁用 Nginx 等代理的缓冲
- 使用 res.flushHeaders() 立即发送响应头
- 禁用 Nagle 算法确保数据立即发送
- 在每次写入流数据后调用 flush() 确保实时传输
这些修复确保了流式请求能够正常显示打字机效果,数据从上游 Claude API 接收后能够立即转发给客户端。
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-23 15:56:27 +08:00 |
|
shaw
|
d6675a4d8e
|
feat: 添加 /claude/v1/messages 路由别名并优化非 Claude Code 客户端支持
- 添加 /claude 路由作为 /api 的别名,支持 /claude/v1/messages 端点
- 实现智能判断请求来源,通过 user-agent 和系统提示词识别真实的 Claude Code 请求
- 为非 Claude Code 客户端自动设置系统提示词和必要的 headers
- 优化 headers 更新逻辑,只有真实的 Claude Code 请求才更新缓存
- 确保 /api 和 /claude 路由功能完全一致
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-22 21:07:25 +08:00 |
|
shaw
|
e2cece6162
|
fix 修复x-request-id问题
|
2025-07-22 18:36:53 +08:00 |
|
shaw
|
a431778363
|
fix 修复openai格式流式响应的结束标记问题
|
2025-07-22 18:00:24 +08:00 |
|
shaw
|
6150ed4258
|
fix openai兼容格式转发claude固定系统提示词
|
2025-07-22 16:26:17 +08:00 |
|
shaw
|
dabf3bf7ea
|
feat: 实现 Claude Code headers 动态管理功能
- 创建 claudeCodeHeadersService 管理各账号的 Claude Code headers
- 自动捕获成功请求的 headers 并按账号存储在 Redis
- 智能版本管理,只保留最新版本的 headers
- OpenAI 转发时根据账号动态获取对应的 headers
- 添加管理端点查看和清除各账号的 headers 信息
- 完整支持 Claude Code 必需的 beta headers
解决了 "This credential is only authorized for use with Claude Code" 错误
避免了固定版本号带来的风控问题
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-22 16:03:31 +08:00 |
|
shaw
|
b2ad2a4a61
|
fix: 修复 OpenAI 兼容路由的 Claude API 认证和 Function Calling 支持
- 添加必需的系统消息 "You are Claude Code, Anthropic's official CLI for Claude."
- 修改 anthropic-beta header 为 OAuth-only 模式 (oauth-2025-04-20)
- 不再传递客户端 headers,使用固定的 4 个必需 headers
- 增强流式响应的 Function Calling 支持,正确处理 tool_use 事件
- 支持自定义 beta header 参数,允许不同路由使用不同的认证模式
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-22 14:38:30 +08:00 |
|
shaw
|
6ceed5c3ee
|
fix 修复openai格式转发失败的问题
|
2025-07-22 13:55:14 +08:00 |
|
shaw
|
12d68af421
|
update default redirectUri
|
2025-07-22 11:52:07 +08:00 |
|
shaw
|
ed99043127
|
fix: 修复 geminiAccountService 配置读取错误并添加 secret scanning 排除规则
- 直接使用硬编码的 Gemini OAuth 凭据,避免配置依赖
- 添加 .github/secret_scanning.yml 排除公开的 OAuth 凭据文件
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-22 10:37:43 +08:00 |
|
shaw
|
38c1fc4785
|
feat: 添加多模型支持和OpenAI兼容接口
- 新增 Gemini 模型支持和账户管理功能
- 实现 OpenAI 格式到 Claude/Gemini 的请求转换
- 添加自动 token 刷新服务,支持提前刷新策略
- 增强 Web 管理界面,支持 Gemini 账户管理
- 优化 token 显示,添加掩码功能
- 完善日志记录和错误处理
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-22 10:17:39 +08:00 |
|
shaw
|
088ce266ba
|
feat: 添加API Key时间窗口限流功能并移除累计总量限制
- 新增时间窗口限流功能,支持按分钟设置时间窗口
- 支持在时间窗口内限制请求次数和Token使用量
- 移除原有的累计总量限制,只保留时间窗口限制
- Token统计包含所有4种类型:输入、输出、缓存创建、缓存读取
- 前端UI优化,明确显示限流参数的作用范围
- 限流触发时提供友好的错误提示和重置时间
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-20 15:58:00 +08:00 |
|
shaw
|
4291983c87
|
chore: remove raw sse chunk logging
|
2025-07-20 00:19:00 +08:00 |
|
shaw
|
4bb2050093
|
fix: 修复API Key模型限制功能不生效的问题
- 在apiKeyService.validateApiKey()中添加缺失的enableModelRestriction和restrictedModels字段返回
- 添加详细的调试日志来追踪模型限制检查的执行流程
- 解析存储在Redis中的restrictedModels JSON数据
- 确保模型限制数据正确传递到claudeRelayService
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-19 21:13:11 +08:00 |
|
shaw
|
f962083752
|
feat: 为API Key添加模型限制功能
- 前端:在API Key创建和编辑表单中添加模型限制开关和标签输入
- 前端:支持动态添加/删除限制的模型列表
- 后端:更新API Key数据结构,新增enableModelRestriction和restrictedModels字段
- 后端:在中转请求时检查模型访问权限
- 修复:Enter键提交表单问题,使用@keydown.enter.prevent
- 优化:限制模型数据持久化,关闭开关时不清空数据
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-19 20:54:26 +08:00 |
|
shaw
|
f5968e518e
|
feat: 改进管理界面弹窗体验和滚动条美化
- 修复API Key创建/编辑弹窗和账户信息修改弹窗在低高度屏幕上被遮挡的问题
- 为所有弹窗添加自适应高度支持,最大高度限制为90vh
- 美化Claude账户弹窗的滚动条样式,使用紫蓝渐变色与主题保持一致
- 添加响应式适配,移动设备上弹窗高度调整为85vh
- 优化滚动条交互体验,支持悬停和激活状态
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-18 23:49:55 +08:00 |
|
shaw
|
ee9bd4aea4
|
feat: 实现Claude账户专属绑定功能
- 添加账户类型(dedicated/shared)支持
- API Key可绑定专属账户,优先使用绑定账户
- 未绑定的API Key继续使用共享池和粘性会话
- 修复专属账户下拉框显示问题(isActive类型不匹配)
- 修复getBoundAccountName方法未定义错误
- 添加删除账户前的API Key绑定检查
- 完全保留原有粘性会话机制
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-17 08:50:12 +08:00 |
|
shaw
|
a64ced0e36
|
fix: 修复非流式响应JSON解析错误和max_tokens参数校验
- 修复gzip压缩响应处理:添加zlib模块支持,正确解压缩Claude API响应
- 优化max_tokens验证机制:从硬编码改为动态读取model_pricing.json文件
- 改进错误处理:增强响应数据处理的容错性
- 修复SSE错误事件格式:统一字符串引号风格
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-16 18:12:19 +08:00 |
|
shaw
|
8ca9ffee68
|
fix: 改进socket hang up和网络错误处理机制
- 修复socket hang up错误导致返回空字符串的问题
- 改进非流式请求的错误处理,根据错误类型返回适当的HTTP状态码
- 优化流式请求的错误处理,返回SSE格式的错误事件
- 增强错误日志记录,包含详细的网络错误信息
- 确保在任何情况下都返回有效的JSON响应格式
修复内容:
- ECONNRESET错误返回502状态码和明确的错误信息
- ENOTFOUND错误返回502状态码和DNS解析失败信息
- ECONNREFUSED错误返回502状态码和连接被拒绝信息
- ETIMEDOUT错误返回504状态码和超时信息
- 流式请求错误时返回符合SSE规范的错误事件
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-16 17:56:29 +08:00 |
|
shaw
|
48c09b1286
|
feat: 优化SSL证书获取推荐和token刷新机制
- 将README中的certbot推荐改为acme.sh,更轻量且功能更强
- 中英文文档同步更新SSL证书获取方式
- 调整token刷新提前时间从10秒改为60秒,提供更充足的缓冲时间
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-16 16:15:17 +08:00 |
|
shaw
|
59bc309ae4
|
fix: 修复 User-Agent 暴露问题并实现安全的 header 转发
- 移除硬编码的 'claude-relay-service/1.0.0' User-Agent,防止代理身份暴露
- 添加 _filterClientHeaders 方法过滤敏感请求头
- 实现完整的客户端 header 转发功能
- 默认 User-Agent 设置为 'claude-cli/1.0.53 (external, cli)'
- 过滤 x-api-key, authorization, host 等敏感 headers
- 更新所有 _makeClaudeRequest 方法支持 clientHeaders 参数
- 修改 API 路由传递 req.headers 到服务层
安全改进:
- 防止代理服务身份暴露
- 提升请求透明性和安全性
- 保持客户端原始请求特征
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-07-16 16:01:11 +08:00 |
|