SunSeekerX
8aca1f9dd1
feat(account): 新增账户自动防护禁用开关
...
支持 disableAutoProtection 配置项,启用后上游 401/400/429/529 错误不再自动禁用账户
2025-12-04 20:47:12 +08:00
shaw
e8e6f972b4
fix: 增强console账号test端点
2025-12-01 15:08:40 +08:00
shaw
6ec4f4bf5b
fix: 修复claude console账号Test未响应的的bug
2025-11-29 14:13:28 +08:00
shaw
7db70e2dc0
feat: 为claude类型账号增加测试功能
2025-11-28 10:51:01 +08:00
sususu
9b15e08624
fix: 请求/v1/messages/count_tokens 的CanceledError 不再被记录为ERROR 日志
2025-11-05 09:47:37 +08:00
sususu98
1458d609ca
feat: 为 Claude Console 账户添加并发控制机制
...
实现了完整的 Claude Console 账户并发任务数控制功能,防止单账户过载,提升服务稳定性。
**核心功能**
- 🔒 **原子性并发控制**: 基于 Redis Sorted Set 实现的抢占式并发槽位管理,防止竞态条件
- 🔄 **自动租约刷新**: 流式请求每 5 分钟自动刷新租约,防止长连接租约过期
- 🚨 **智能降级处理**: 并发满额时自动清理粘性会话并重试其他账户(最多 1 次)
- 🎯 **专用错误码**: 引入 `CONSOLE_ACCOUNT_CONCURRENCY_FULL` 错误码,区分并发限制和其他错误
- 📊 **批量性能优化**: 调度器使用 Promise.all 并行查询账户并发数,减少 Redis 往返
**后端实现**
1. **Redis 并发控制方法** (src/models/redis.js)
- `incrConsoleAccountConcurrency()`: 增加并发计数(带租约)
- `decrConsoleAccountConcurrency()`: 释放并发槽位
- `refreshConsoleAccountConcurrencyLease()`: 刷新租约(流式请求)
- `getConsoleAccountConcurrency()`: 查询当前并发数
2. **账户服务增强** (src/services/claudeConsoleAccountService.js)
- 添加 `maxConcurrentTasks` 字段(默认 0 表示无限制)
- 获取账户时自动查询实时并发数 (`activeTaskCount`)
- 支持更新并发限制配置
3. **转发服务并发保护** (src/services/claudeConsoleRelayService.js)
- 请求前原子性抢占槽位,超限则立即回滚并抛出专用错误
- 流式请求启动定时器每 5 分钟刷新租约
- `finally` 块确保槽位释放(即使发生异常)
- 为每个请求分配唯一 `requestId` 用于并发追踪
4. **统一调度器优化** (src/services/unifiedClaudeScheduler.js)
- 获取可用账户时批量查询并发数(Promise.all 并行)
- 预检查并发限制,避免选择已满的账户
- 检查分组成员时也验证并发状态
- 所有账户并发满额时抛出专用错误码
5. **API 路由降级处理** (src/routes/api.js)
- 捕获 `CONSOLE_ACCOUNT_CONCURRENCY_FULL` 错误
- 自动清理粘性会话映射并重试(最多 1 次)
- 重试失败返回 503 错误和友好提示
- count_tokens 端点也支持并发满额重试
6. **管理端点验证** (src/routes/admin.js)
- 创建/更新账户时验证 `maxConcurrentTasks` 为非负整数
- 支持前端传入并发限制配置
**前端实现**
1. **表单字段** (web/admin-spa/src/components/accounts/AccountForm.vue)
- 添加"最大并发任务数"输入框(创建和编辑模式)
- 支持占位符提示"0 表示不限制"
- 表单数据自动映射到后端 API
2. **实时监控** (web/admin-spa/src/views/AccountsView.vue)
- 账户列表显示并发状态进度条和百分比
- 颜色编码:绿色(<80%)、黄色(80%-100%)、红色(100%)
- 显示"X / Y"格式的并发数(如"2 / 5")
- 未配置限制时显示"并发无限制"徽章
2025-10-21 13:43:57 +08:00
shaw
1ed0ca31ec
fix: 修复因代理ip不可用导致axios的proxy回退到环境变量代理问题
2025-10-18 11:00:43 +08:00
sususu
b0917b75a4
feat: 新增Claude Console账户临时封禁处理和错误消息清理
...
- 新增 CLAUDE_CONSOLE_BLOCKED_HANDLING_MINUTES 配置项,自动处理账户临时禁用的 400 错误(如 "organization has been disabled"、"too many active sessions" 等)。
- 添加 errorSanitizer 工具模块,自动清理上游错误响应中的供应商特定信息(URL、供应商名称等),避免泄露中转服务商信息。
- 统一调度器现在会主动检查并恢复已过期的封禁账户,确保账户在临时封禁时长结束后可以立即重新使用。
2025-10-17 15:27:47 +08:00
shaw
83f7353284
fix: 修复console脏数据问题
2025-10-16 15:29:45 +08:00
shaw
a67c34bee1
fix: 修复claude SSE捕获usage问题
2025-10-12 23:05:48 +08:00
shaw
5611e86154
fix: 修复console计费问题
2025-10-12 20:56:27 +08:00
DokiDoki1103
b7fe75cb60
fix: 修复Claude Console流式响应usage统计不完整问题
...
- 完善message_delta中usage数据提取逻辑,支持提取input_tokens、cache_read_input_tokens等所有字段
- 添加兜底保护机制,确保流结束时不会丢失未保存的usage数据
- 提升关键日志级别从debug到info,便于问题排查
- 修复流式请求中input_tokens和cache_read_input_tokens为0的统计bug
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-11 20:16:44 +08:00
Edric Li
f375f9f841
fix: 修复 ESLint 错误 - 解决未定义变量问题
...
- claudeConsoleRelayService.js: 将 account 变量声明提到更高作用域
- claudeRelayService.js: 移除 _makeClaudeStreamRequest 函数中的未定义变量引用
2025-09-09 11:10:27 +08:00
Edric Li
52820a7e49
style: 修复 Prettier 格式问题
...
- 格式化 src/app.js
- 格式化 src/services/claudeConsoleRelayService.js
- 格式化 src/services/claudeRelayService.js
2025-09-09 04:14:27 +08:00
Edric Li
756918b0ce
feat: 在错误日志中添加账号信息
...
- 在 claudeRelayService.js 的所有错误日志中添加账号名称或 ID
- 在 claudeConsoleRelayService.js 的错误日志中添加账号信息
- 便于排查 529 (过载) 和 504 (超时) 错误对应的具体账号
问题背景:
用户反馈错误日志中没有账号信息,无法定位是哪个账号出现问题,
特别是 529 和 504 错误频繁出现时难以排查。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-09-09 02:45:47 +08:00
shaw
fec80a16fa
fix: 优化请求超时配置
2025-09-08 16:34:27 +08:00
sususu
4cc937a144
feat(Claude Console): 添加Claude Console账号每日配额
...
1. 额度检查优先级更高:即使不启用限流机制,超额仍会禁用账户
2. 状态会被覆盖:quota_exceeded 会覆盖 rate_limited
3. 两种恢复时间:
- 限流恢复:分钟级(如60分钟)
- 额度恢复:天级(第二天重置)
4. 独立控制:
- rateLimitDuration = 0:只管理额度,忽略429
- rateLimitDuration > 0:同时管理限流和额度
2025-09-05 14:58:59 +08:00
shaw
e84c6a5555
feat: 实现基于费用的速率限制功能
...
- 新增 rateLimitCost 字段,支持按费用进行速率限制
- 新增 weeklyOpusCostLimit 字段,支持 Opus 模型周费用限制
- 优化速率限制逻辑,支持费用、请求数、token多维度控制
- 更新前端界面,添加费用限制配置选项
- 增强账户管理功能,支持费用统计和限制
- 改进 Redis 数据模型,支持费用计数器
- 优化价格计算服务,支持更精确的成本核算
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-31 17:27:37 +08:00
shaw
b426a759a8
feat: 支持后台配置webhook
2025-08-23 20:20:32 +08:00
shaw
681cb8cd82
feat: 优化 Claude 模型缓存费用计算,支持 5 分钟和 1 小时两种缓存类型
...
- 在 pricingService 中硬编码 1 小时缓存价格(Opus: $30/MTok, Sonnet: $6/MTok, Haiku: $1.6/MTok)
- 更新 usage 捕获逻辑以分别记录 ephemeral_5m 和 ephemeral_1h 缓存 tokens
- 改进费用计算逻辑,正确计算两种缓存类型的费用
- 新增 recordUsageWithDetails 方法支持详细的缓存数据
- 保持向后兼容性,支持旧的数据格式
- 删除测试脚本 test-openai-refresh.js
- 修复 OpenAI token 刷新逻辑
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-16 22:31:20 +08:00
KevinLiao
87775c9fb1
fix: 修复Claude Console账号模型映射的的流式响应
2025-08-10 08:46:26 +08:00
千羽
8a74bf5afe
refactor: standardize code formatting and linting configuration
...
- Replace .eslintrc.js with .eslintrc.cjs for better ES module compatibility
- Add .prettierrc configuration for consistent code formatting
- Update package.json with new lint and format scripts
- Add nodemon.json for development hot reloading configuration
- Standardize code formatting across all JavaScript and Vue files
- Update web admin SPA with improved linting rules and formatting
- Add prettier configuration to web admin SPA
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-07 18:19:31 +09:00
Wesley Liddick
6626d1d32a
Merge pull request #208 from kevinconan/main
...
fix: 修改Claude Console 账号的UA默认行为,默认透传客户端UA而非固定的UA值
2025-08-07 12:38:36 +08:00
KevinLiao
ae7f4e2405
fix: 修改Claude Console 账号的UA默认行为,默认透传客户端UA而非固定的UA值
2025-08-07 12:33:32 +08:00
andersonby
e553734e42
chore: update user agent version to 1.0.69 in claudeConsoleAccountService and claudeConsoleRelayService
2025-08-07 00:53:14 +08:00
shinegod
3616245d49
feat: 全面增强 Claude Code 客户端支持与错误处理
...
## 🚀 新功能
- **智能认证系统**: 根据 API Key 格式自动选择认证方式
- `sk-ant-*` 开头使用 `x-api-key` 认证(兼容 Anthropic 官方)
- 其他格式使用 `Authorization: Bearer` 认证(兼容标准 REST API)
- **Claude Code 客户端完整支持**: 新增必需的 API 端点
- `GET /v1/models` - 返回支持的模型列表
- `GET /v1/me` - 用户信息端点
- `GET /v1/organizations/:org_id/usage` - 使用统计查询
## 🔧 修复与优化
- **HTTP 协议合规性**: 修复响应头冲突导致的 502 错误
- 避免同时发送 `Content-Length` 和 `Transfer-Encoding` 头部
- 优化响应头过滤机制,确保代理兼容性
- **完全透传错误响应**: 保持上游 API 原始响应格式
- 透传原始状态码、响应头和内容
- 移除错误包装,直接转发原始 JSON 格式
- 支持流式和非流式请求的错误透传
- **流式响应处理优化**:
- 添加 `validateStatus: () => true` 配置
- 改进错误处理逻辑,避免异常中断
## 📝 代码质量
- 修复 ESLint 代码规范警告
- 优化敏感头部过滤列表
- 改进调试日志输出
## 🎯 解决的问题
- Claude Code 客户端无法连接(502 Bad Gateway)
- 错误响应被包装而非透传原始格式
- sk-ant-* 格式 API Key 认证失败
- HTTP/2 代理环境下的响应头冲突
## ✅ 测试验证
- 本地测试完全透传上游错误响应
- Claude Code 客户端连接测试通过
- 智能认证机制验证成功
- HTTP 协议合规性确认
2025-08-06 14:27:57 +00:00
mouyong
80c6bed8c2
fix: 修复无法转发 opus 4.1 的问题
2025-08-06 15:26:49 +08:00
mouyong
e786ba8852
fix: 修复透传参数
2025-08-05 21:37:08 +08:00
KevinLiao
3c797a85e0
feat: Claude Console账号增强,升级模型支持列表为模型映射表!
2025-07-30 23:13:59 +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
89f9f48576
fix: 完成调度优先级逻辑的处理
2025-07-30 08:56:42 +08:00
KevinLiao
fddd5ee3e9
feat: 新增标准Claude Console API账号支持
2025-07-30 08:19:44 +08:00