Commit graph

344 commits

Author SHA1 Message Date
hex2077
f8de8aad67 feat(config-api): 添加 TLS Sidecar 配置支持
在配置更新处理中新增对 TLS_SIDECAR_ENABLED 和 TLS_SIDECAR_PORT 两个配置项的支持,使系统能够通过 API 动态管理 TLS Sidecar 的启用状态和端口设置。
2026-02-28 00:23:16 +08:00
hex2077
81dd6a3f86 feat(tls): 添加 Go uTLS sidecar 以绕过 Cloudflare TLS 指纹检测
- 新增 Go 语言编写的 TLS sidecar 服务,使用 uTLS 库模拟 Chrome 指纹
- 在 Dockerfile 中添加多阶段构建以编译 sidecar 二进制文件
- 扩展配置系统,支持启用/禁用 sidecar 及自定义端口
- 修改 Grok 提供商,使其请求可通过 sidecar 转发
- 在前端界面添加 TLS sidecar 配置选项和国际化支持
- 服务启动时自动启动 sidecar,关闭时优雅停止
2026-02-28 00:02:12 +08:00
hex2077
89e80148d0 fix(grok): 禁用 HTTP/2 协商以适配 axios
axios 底层仅支持 HTTP/1.1,强制协商 h2 会导致服务端返回的 H2 帧解析失败。将 ALPN 协议列表修改为仅 'http/1.1' 以确保连接兼容性。
2026-02-27 22:32:11 +08:00
hex2077
f0445d96e4 feat(grok): 模拟 Chrome TLS 指纹以绕过 Cloudflare 检测
- 引入 TLS 模块并配置 HTTPS agent 以精确匹配 Chrome 136 的加密套件、签名算法和 ALPN 顺序
- 更新默认 User-Agent 至 Chrome 136 并动态生成更真实的 Statsig ID
- 优化请求头,根据 UA 自动填充 sec-ch-ua 系列字段,增强指纹一致性
- 移除调试日志并调整 Cloudflare 令牌缺失的日志级别
2026-02-27 22:23:48 +08:00
何夕2077
1ada4246ec
Merge pull request #344 from lly835/refactor/config-cli-parsing
refactor: 用声明式定义表替换 CLI 参数解析的 if-else 链
2026-02-27 13:23:59 +08:00
aka686
1aa691e70b refactor: 用声明式定义表替换 CLI 参数解析的 if-else 链
将 12 个 CLI 参数的手写 if-else 链(约 100 行)重构为数据驱动的声明式定义表,
支持 string/int/bool/enum 四种类型自动解析。

- 新增参数只需在 cliArgDefs 数组中添加一行
- 消除大量重复的模式代码
- 保持完全相同的解析行为和警告输出
2026-02-26 23:43:58 +08:00
aka686
2aff6013d7 fix: 为 Logger.requestContext 添加 TTL 清理机制防止内存泄漏
长时间运行的服务中,如果 clearRequestContext 未被正确调用(如请求异常中断),
requestContext Map 会持续增长导致内存泄漏。

新增:
- 每个上下文条目记录 _createdAt 时间戳
- 每 60 秒定期扫描并清除超过 5 分钟的过期条目
- Map 为空时自动停止定时器,避免不必要的开销
- close() 时清理定时器
2026-02-26 23:38:43 +08:00
hex2077
68719879c5 feat(architecture): 重构适配器注册机制并引入并发控制系统
建立可扩展的提供商适配器注册表,实现动态服务发现与插槽管理:

架构改进:
- 采用 Map 注册表替代 switch-case 硬编码,支持热插拔适配器
- 实现 acquireSlot/releaseSlot 机制,精确追踪活跃请求与等待队列
- 新增节点评分算法,综合考量并发数、队列长度、健康状态

核心能力:
- 支持并发限制与队列等待,避免单节点过载 (concurrencyLimit/queueLimit)
- 实现 Fallback 链式调用,429 错误自动切换备用凭证
- 添加请求级 IP 追踪,日志格式优化为 `clientIp:requestId`

配套更新:
- 管理界面新增并发/队列配置字段与 Grok 逆向提供商选项
- 用量查询服务扩展 Grok 支持,同步剩余查询次数 (固定总量 80)
- 新增并发测试脚本 (tests/concurrent-test.js),支持自定义并发数与 RPM 限制

配置项:
- GROK_COOKIE_TOKEN, GROK_CF_CLEARANCE, GROK_USER_AGENT, GROK_BASE_URL
2026-02-26 18:19:38 +08:00
lly835
022e345d68 fix: 修复同会话跨模型缓存键不命中问题
移除 prepareRequestBody 中非 default sessionId 时的 model 前缀拼接,
使同一会话内切换模型时能复用缓存,与注释中'弱化 model 依赖'的设计意图一致。

Closes #328
2026-02-26 01:18:32 +08:00
hex2077
ed8b889586 fix: 确保工具结果消息内容在转换时被正确序列化
- 修复 OpenAIConverter 中工具结果消息内容为对象时未序列化为字符串的问题
- 修复 ClaudeConverter 中工具结果消息内容为对象时未序列化为字符串的问题
- 修复 Kiro 提供程序中工具描述为空时导致请求失败的问题
- 更新 README 文档,添加 Kiro 扩展思考和提供商优先级配置说明
- 清理过时和未使用的测试文件以保持代码库整洁
2026-02-20 19:52:50 +08:00
何夕2077
f16f972d97
Merge pull request #320 from Asoubra12/pr/kiro-extended-thinking-slim
feat(kiro): add extended thinking passthrough and structured reasoning outputs
2026-02-20 19:27:04 +08:00
hex2077
71372495e0 feat(gemini): 添加 gemini-3.1-pro-preview 模型支持
在 provider-models.js 和 antigravity-core.js 中添加了新模型 gemini-3.1-pro-preview 的配置,使其可用于 gemini 和 gemini-antigravity 提供商。同时更新了模型别名映射,确保模型标识符能正确映射。
2026-02-20 19:18:15 +08:00
hex2077
fbc5357519 feat(claude): 添加 claude-sonnet-4-6 模型支持
更新模型列表和映射以支持新的 Claude Sonnet 4.6 模型。
2026-02-18 22:19:04 +08:00
hex2077
55879396c8 feat(converters): 为请求添加 metadata 支持并优化会话缓存
- 在 CodexConverter 和 ClaudeConverter 中增加 metadata 字段,透传上游元数据
- 重构 CodexApiService 的缓存键生成逻辑,优先使用 session_id 或 conversation_id
- 从上游请求体中移除 metadata 避免透传,仅用于生成缓存键
2026-02-15 11:21:26 +08:00
hex2077
105bb39c1a fix(provider-pool-manager): 优化节点选择策略,防止序列号导致长期排挤
引入相对序列号机制,计算节点序列号相对于池中最小序列号的偏移量并封顶,避免全局自增序列号在长时间周期内对节点选择造成过度惩罚,确保公平性。同时修复重置节点时未清零序列号的问题。
2026-02-14 23:20:39 +08:00
hex2077
f27c9d8732 fix(providers): 统一错误日志格式并修复提供商模型引用
修复多个API服务中错误日志格式不一致的问题,统一使用error.message替代data字段
修正多个提供商模型引用方式,使用MODEL_PROVIDER常量替代硬编码字符串
更新Codex API请求头配置,修复流式响应处理逻辑
为iFlow API添加签名验证机制,增强请求安全性
添加GLM-5和MiniMax M2.5等新模型支持
修复400错误状态码检查逻辑,使用error.response?.status替代error.code
2026-02-14 19:54:53 +08:00
hex2077
6ee7e78c90 feat: 增强模型支持和修复流处理问题
- 添加新的Qwen模型(coder-model, vision-model)到提供者列表
- 修复OpenAI Responses流结束事件处理,避免下游类型校验错误
- 更新Qwen API端点地址和版本号
- 重构Codex转换器,分离OpenAI和OpenAI Responses的转换逻辑
- 优化工具调用处理,支持嵌套function结构
- 移除健康检查功能,简化API管理初始化
- 修复消息角色转换(developer→assistant)和类型标记
2026-02-13 20:47:47 +08:00
Local User
46fc601f6c feat: add health check monitoring and alerting system
- Add health status change logging with detailed information
- Add optional webhook notifications for provider health changes
  - Configurable via HEALTH_ALERT_WEBHOOK_URL environment variable
  - Sends notifications when provider becomes unhealthy or recovers
- Broadcast health status events for real-time UI updates
- Integrate periodic health checks in heartbeat function
- Track provider stats (usage count, error count) in health logs

This improves observability by allowing operators to:
- Monitor provider health status changes in real-time
- Receive alerts via webhook when issues occur
- View detailed health statistics for troubleshooting
2026-02-13 08:37:12 +08:00
Codex
9f3040cf49 feat(kiro): add request-side extended thinking support and structured reasoning outputs 2026-02-11 12:26:03 +03:00
hex2077
82cab7a91f fix(openai): 更新代理配置的提供者标识符
将 getProxyConfigForProvider 调用中的提供者标识符从 'codex' 更改为 'openai-codex-oauth',以匹配最新的代理配置命名约定,确保代理设置能正确生效。
2026-02-11 11:18:43 +08:00
hex2077
a7b29d9d48 fix(provider-pool): 修正标记不健康提供者时的错误状态判断
将标记不健康提供者时的状态检查从 `status === 400` 改为 `error.code === 400`,确保正确识别客户端错误。同时在标记时传递错误信息给 `markProviderUnhealthy` 方法,以提供更详细的故障原因。
2026-02-09 21:58:45 +08:00
hex2077
27acc72dfd feat: 增加登录过期配置并优化错误处理
- 新增 LOGIN_EXPIRY 配置项,支持自定义管理后台登录 Token 有效期
- 优化 provider 错误计数逻辑,当 MAX_ERROR_COUNT 为 0 时禁用自动标记不健康
- 修复工具消息转换中对象内容未序列化的问题
- 增强网络错误处理,可重试的网络错误不再导致进程退出
- 过滤 Claude Kiro provider 中描述为空的工具,避免 API 调用失败
2026-02-09 19:50:35 +08:00
hex2077
4d588f6c7d fix: 防止流式响应中重复发送结束标志并添加新模型支持
修复 handleStreamRequest 中可能重复发送流结束标志的问题,新增 hasMessageStop 状态跟踪。
在 provider-pool-manager 中修复临时配置缺少全局配置的问题。
为 Gemini 提供者添加新的模型支持:gemini-claude-opus-4-6-thinking。
2026-02-08 15:42:45 +08:00
hex2077
d0319047a1 feat: 添加对新模型 claude-opus-4-6 和 gpt-5.3-codex 的支持
- 在 Claude Kiro 提供商的模型映射表中新增 claude-opus-4-6
- 在提供商模型列表中为 claude-kiro-oauth 添加 claude-opus-4-6
- 在 OpenAI Codex 提供商中更新 API 版本至 0.98.0 并添加 gpt-5.3-codex 模型
2026-02-06 11:43:38 +08:00
何夕2077
cbab1c3b5e
Merge pull request #306 from majie776/main
fix(stream):修复流被客户端关闭的时候的写入错误导致服务crash的问题
2026-02-05 20:31:27 +08:00
hex2077
57e2165fb8 feat: 支持批量关联配置文件并优化模型列表管理
- 修改批量关联功能,从逐个请求改为批量处理,提高效率
- 扩展快速链接API,支持同时处理多个配置文件
- 优化iFlow模型获取逻辑,支持手动添加多个模型
- 更新提供商模型列表,添加新模型并调整顺序
2026-02-05 17:52:22 +08:00
hex2077
de3f6a5f21 feat: 添加监控请求ID临时存储功能到各AI服务提供商
在各AI服务提供商的核心API方法中添加monitorRequestId临时存储逻辑,用于跟踪请求链路。当请求体中包含_monitorRequestId字段时,将其存储到配置对象中并从请求体中删除,避免干扰API调用。

修改涉及以下提供商:
- Claude (claude-core.js, claude-kiro.js)
- OpenAI (openai-core.js, openai-responses-core.js, iflow-core.js, codex-core.js, qwen-core.js)
- Forward (forward-core.js)
- Gemini (gemini-core.js, antigravity-core.js)

统一处理模式:检查请求体中的_monitorRequestId字段,存储到this.config._monitorRequestId,然后从请求体中删除该字段。
2026-02-05 15:28:43 +08:00
majie776
2816de1451 fix(stream):修复流被客户端关闭的时候的写入错误导致服务crash的问题 2026-02-05 10:42:46 +08:00
hex2077
2c758db714 Merge branch 'main' of https://github.com/justlovemaki/AIClient-2-API 2026-02-04 18:36:28 +08:00
hex2077
ae10e9e365 feat(GeminiConverter): 支持从Gemini响应中提取tool_calls
在toOpenAIResponse方法中添加对Gemini响应中functionCall部分的解析,将其转换为OpenAI格式的tool_calls。当检测到工具调用时,自动设置finish_reason为"tool_calls",并构建包含tool_calls字段的assistant消息。
2026-02-04 18:36:15 +08:00
Jie Ma
6170666ff3 修复某些客户端没有接收到流结束信息后的错误 2026-02-04 13:42:28 +08:00
hex2077
ede63ac229 feat(gemini-oauth): 添加批量导入功能和文档更新
- 在 Gemini OAuth 模块中添加批量导入 Token 功能,支持流式进度反馈
- 为 Kiro OAuth 的批量导入功能优化自动关联逻辑,改为逐个凭据关联
- 在 Web UI 中添加 Gemini 批量导入的 API 端点
- 更新多语言文档,添加新的 FAQ 条目解决常见错误
- 扩展国际化翻译支持新的界面文本
2026-02-03 21:49:43 +08:00
hex2077
c632f184c6 feat(claude-kiro): 为空工具列表添加占位工具避免API错误
refactor(usage-api): 提取支持的提供商列表为共享常量
fix(usage-service): 移除重置时间的本地化格式化避免显示问题
style(usage-manager): 为不支持用量显示的提供商优化UI展示
chore: 更新README中的文档链接指向docs目录
2026-02-03 18:55:22 +08:00
hex2077
3a54404e0e fix(oauth): 优化自动关联凭证逻辑以支持单个凭证关联
- 修改 autoLinkProviderConfigs 函数,增加 onlyCurrentCred 选项
- 当 onlyCurrentCred 为 true 时,仅关联当前生成的凭证文件
- 避免批量导入凭证时重复扫描所有配置文件
- 在 OAuth 回调中传递 credPath 参数,确保正确关联新凭证
- 统一 install-and-run 脚本中的包管理器检测逻辑
- 优化 Claude 提供商的 token 计数方法,提高准确性
2026-02-03 12:15:35 +08:00
hex2077
d6c2bd7919 feat(usage): 在用量查询页面添加服务端时间显示
- 在 UI 中添加服务端时间显示组件,包含样式和国际化支持
- 修改用量 API 返回数据,始终包含 serverTime 字段
- 更新前端 JavaScript 以解析并显示服务端时间
- 新增 OpenClaw 配置指南文档(中/英/日文)
2026-02-01 22:43:28 +08:00
hex2077
3b0c2180d2 feat(usage): 改进用量显示并添加按提供商刷新功能
- 添加 formatToLocal 工具函数统一处理日期本地化显示
- 用量卡片添加重置时间显示和双击刷新功能
- 优化 Gemini/Antigravity/Codex 的用量数据格式化逻辑
- 改进 Codex 用量显示,优先展示周限制信息
- 添加相关国际化文本支持
2026-01-28 16:51:45 +08:00
hex2077
be64166f37 fix(auth): 修复OAuth服务器端口占用和会话管理问题
- 添加全局活动服务器管理,防止端口重复绑定
- 增加轮询超时时间至10分钟,避免过早超时
- 统一错误事件广播格式,添加时间戳字段
- 清理会话时不再重复关闭服务器
- 排除字段列表中添加_lastSelectionSeq字段
2026-01-28 00:07:00 +08:00
hex2077
03a1a656f4 feat: 新增 OpenAI Codex OAuth 支持与用量查询功能
- 添加 Codex OAuth 提供商支持,包括核心服务、适配器和策略实现
- 在用量管理页面新增支持用量查询的提供商列表显示
- 为 Codex 添加专用的用量查询接口和格式化显示
- 更新 Docker 配置以暴露 Codex OAuth 回调端口 1455
- 完善多语言文档,记录 Codex 配置和使用方法
- 修复流式响应中工具调用的 finish_reason 处理逻辑
- 增强 AI 监控插件对数组类型 chunk 的处理能力
2026-01-27 16:31:23 +08:00
hex2077
a5236b6709 Merge branch 'main' of https://github.com/justlovemaki/AIClient-2-API 2026-01-25 23:25:04 +08:00
hex2077
d3c853de94 fix: 更新Codex策略以适配新的Responses API格式
将Codex的provider策略从OpenAIStrategy切换为ResponsesAPIStrategy,以适配新的API接口。
更新请求头信息,包括版本号、beta特性标志和连接设置。
调整消息转换逻辑,将assistant角色映射为developer角色。
优化token刷新逻辑,确保在刷新成功后重置provider状态。
2026-01-25 23:23:15 +08:00
Yoahoug
cd15a3a637 修复codex 2026-01-25 23:09:45 +08:00
hex2077
e41eb3491a fix: 为日志配置提供默认值并改进插件配置合并逻辑
- 为日志配置项添加默认值,避免未配置时出现 undefined
- 修改插件配置加载逻辑,始终生成默认配置并与本地配置合并
- 保留本地配置中的 enabled 字段,不因默认配置而覆盖
2026-01-25 20:31:56 +08:00
hex2077
ce7d78f7d0 feat(plugins): 新增 AI 监控插件并优化日志管理
- 新增 AI 监控插件 (ai-monitor),支持全链路协议转换监控
  - 捕获 AI 接口请求参数(转换前后)
  - 监控流式和非流式响应(转换前后)
  - 支持内部请求转换监控
- 新增日志清空功能,支持前端和服务器端同时清空当日日志
- 默认禁用 api-potluck 和 ai-monitor 插件
- 更新多语言文档和配置示例
- 优化提供商适配器开发指南
2026-01-25 19:40:04 +08:00
hex2077
245583b96a feat(logging): 添加日志系统配置和下载功能
- 新增日志系统配置选项,支持日志级别、输出模式、文件大小等设置
- 添加当日日志文件下载功能,可通过Web界面直接下载
- 将console.log/error替换为结构化logger,提升日志可管理性
- 在日志页面添加自动滚动到底部功能
- 更新配置示例文件,包含完整的日志配置参数
2026-01-25 17:24:39 +08:00
hex2077
13ed2087d2 fix(provider-pool): 修复并发选点时的竞争条件并改进评分算法
- 将链式 Promise 锁改为标志位锁,解决同一微任务循环内的并发问题
- 引入自增序列号确保毫秒级并发下的原子排序,避免节点重复选择
- 优化节点评分算法,平衡 lastUsedTime、usageCount 和 selectionSeq
- 增加并发测试脚本,支持压力测试和性能统计
2026-01-24 16:30:57 +08:00
hex2077
da8ad6cddb feat(forward): 新增通用转发API提供商支持
- 添加 forward-api 提供商类型,支持将请求透明转发到任意API端点
- 实现 ForwardStrategy、ForwardApiService 和适配器,支持流式和非流式响应
- 在转换逻辑中跳过 forward 协议的数据转换以保持透明性
- 更新UI支持:添加提供商配置字段、多语言标签和显示名称
- 扩展提供商状态检查和健康监测配置
- 为转发请求保留原始路径作为端点参数
2026-01-23 18:33:56 +08:00
hex2077
8afe41870d refactor: 优化Claude-》Gemini的转换逻辑,增加tools适配 2026-01-22 22:39:19 +08:00
hex2077
ad2432a37c feat(converter): 完善Claude和Gemini转换器对thinking块和工具调用的支持
- 在ClaudeConverter中添加thinking块和redacted_thinking块的处理逻辑
- 改进tool_use和tool_result块的转换,支持ID映射和参数规范化
- 在GeminiConverter中实现thinking块与Claude格式的互转
- 添加工具参数重映射逻辑,解决Gemini与Claude参数命名差异问题
- 支持流式场景下的thinking_delta和signature_delta事件处理
2026-01-22 21:36:05 +08:00
hex2077
d8ec86918f feat(provider): 添加请求时凭证临近过期自动刷新功能
在多个provider的核心代码中添加凭证过期检查逻辑,当检测到凭证即将过期时自动标记为需要刷新
新增formatLog和formatExpiryLog工具函数统一日志格式
修改provider-pool-manager以支持带优先级的刷新队列
2026-01-22 17:30:31 +08:00
hex2077
ba4ec31f9a fix(provider): 增加provider.needsRefresh重置并调整最大错误次数为10
- 在重置provider健康状态时增加needsRefresh标志重置
- 将MAX_ERROR_COUNT默认值从3调整为10,提高容错性
- 忽略400状态码的错误计数,避免客户端参数问题影响provider健康状态
2026-01-22 12:24:33 +08:00
hex2077
785ac7890d feat(claude-kiro): 支持AWS企业用户idcRegion字段并优化模型配置
- 在AWS凭据导入说明中增加idcRegion字段要求
- 移除不再使用的Amazon Q相关URL和旧模型映射
- 为Builder ID认证流程添加region选择和idcRegion支持
- 优化凭据加载逻辑,支持独立配置idcRegion
- 在UI中添加region输入框和刷新按钮
2026-01-21 15:56:01 +08:00
hex2077
ccd97c1066 feat(provider): 添加refreshCount重置逻辑并优化模型显示
refactor(ui): 将模型列表从指南页移动到仪表盘页
fix(api): 移除健康检查中的abortController信号
style(css): 迁移模型列表样式到仪表盘样式文件
2026-01-21 00:43:35 +08:00
hex2077
fe131b33d2 fix(provider): 优化节点刷新逻辑
- 修改节点刷新逻辑,当健康节点少于5个时立即刷新
- 移除刷新时的随机延迟以避免并发问题
- 更新Claude Kiro版本号至0.8.140
- 在初始化API服务时添加isReady参数控制预热逻辑
- 在modal.js中排除更多字段
2026-01-20 00:10:04 +08:00
hex2077
f8faee93fc Revert "add letta"
This reverts commit 3faa599b95523160232df3d5483840b56d5a4702.
2026-01-19 21:55:44 +08:00
hex2077
b7f2142411 add letta 2026-01-19 21:55:35 +08:00
hex2077
bcaa61869a refactor(auth): 添加os模块导入以支持跨平台功能 2026-01-18 17:33:41 +08:00
hex2077
464c156fd2 fix(provider-pool-manager): 修复节点权重计算逻辑问题
改进权重计算算法,解决未使用节点(lastUsed为null)排序异常问题。将未使用节点视为1小时前使用过,并调整使用次数惩罚为每分钟偏移量,确保公平排序。
2026-01-18 16:45:38 +08:00
hex2077
610b934f70 fix(claude): 区分403错误类型并采取不同处理措施
当遇到403错误时,新增对"temporarily suspended"错误的特殊处理:
1. 如果是账户暂停错误,直接标记凭证为不健康状态
2. 其他403错误则保持原有刷新UUID逻辑
3. 在普通请求、流式请求和用量查询中统一处理逻辑
2026-01-18 15:02:17 +08:00
hex2077
dc4e6fe0b2 feat(oauth): 修复Kiro提供商403错误处理逻辑
优化令牌刷新队列机制,增加缓冲队列减少重复刷新
更新提供商健康检查模型配置,添加iFlow和Codex相关模型
统一OAuth模块导出结构,整理各提供商OAuth实现
修复Kiro提供商403错误处理逻辑,改为标记需刷新而非直接标记不健康
2026-01-18 14:53:14 +08:00
hex2077
be814c5a56 fix: 优化凭证刷新和重试机制以避免并发冲突
- 移除 Gemini 服务中不必要的过期检查逻辑
- 在凭证刷新时添加随机延迟和最大重试次数限制
- 在流式和非流式请求重试时添加随机延迟
2026-01-18 00:04:22 +08:00
hex2077
0c710ea43f refactor(provider): 重构认证逻辑以支持读写分离架构
将认证初始化逻辑拆分为 loadCredentials 和 initializeAuth,实现异步凭证加载
修改错误处理逻辑,通过 PoolManager 标记凭证状态并触发后台刷新
移除同步刷新逻辑,优化 API 调用时的认证流程
2026-01-17 18:26:19 +08:00
hex2077
35f3f81d3e feat(provider): 实现提供商节点自动刷新与预热机制
- 新增提供商节点自动刷新队列和并发控制
- 添加系统启动预热功能,按配置预热指定数量节点
- 重构CPU使用率统计,支持子进程独立统计
- 扩展适配器接口,增加强制刷新和过期检查方法
- 更新配置管理,新增预热目标和刷新并发数配置
- 优化提供商选择策略,基于评分系统选择最佳节点
- 改进错误处理,401错误自动触发后台刷新
2026-01-17 17:08:17 +08:00
hex2077
56ef11a168 refactor: 移除 CredentialCacheManager 及相关缓存逻辑
重构多个 provider 模块,移除了 CredentialCacheManager 的依赖及相关内存缓存逻辑,改为直接读写文件系统。简化了凭证管理流程,减少了代码复杂度。

- 移除 provider-pool-manager 中的快速预检逻辑
- 移除 service-manager 中的凭证缓存初始化及同步逻辑
- 修改各 provider 核心模块的凭证加载和保存逻辑,直接操作文件系统
- 移除并发刷新时的去重锁和缓存同步机制
2026-01-17 13:16:19 +08:00
何夕2077
1ebdbdf878 Merge pull request #259 from leonaii/main
refactor(claude-orchids): 重构提示词模板并添加模型映射机制
2026-01-17 01:08:24 +08:00
leonai
7d5d35b23e refactor(claude-orchids): 重构提示词模板并添加模型映射机制
1. 重写系统提示词模板,采用更清晰的XML结构
2. 移除冗余的规则声明,简化提示词内容
3. 添加模型名称映射逻辑,将不支持的模型转换为支持的模型
2026-01-17 01:05:28 +08:00
Yoahoug
f8463ba043 refactor: 合并 codex-oauth.js 到 oauth-handlers.js,统一管理 OAuth 逻辑 2026-01-16 23:20:55 +08:00
Yoahoug
a25e22d269 fix: Codex OAuth 添加代理支持和60秒轮询超时 2026-01-16 23:04:09 +08:00
Yoahoug
01f0d5cb59 fix: 修复 Codex OAuth 回调监听,添加自动完成流程 2026-01-16 17:56:30 +08:00
何夕2077
8684437227 Merge pull request #253 from Yoahoug/feature/codex-support
添加对codex的支持,符合原项目的逻辑
2026-01-16 17:39:45 +08:00
Yoahoug
aa4b8692af fix: 修复 Codex OAuth 配置文件关联逻辑 2026-01-16 17:37:04 +08:00
hex2077
0974a5e83d refactor(auth): 使用 axios 替代 fetch 以支持代理配置
重构 OAuth 处理中的网络请求模块,将原生 fetch 替换为 axios,以正确处理代理配置。axios 提供了更完善的代理支持和错误处理机制,同时保持与原有 fetch API 的兼容性。

refactor(providers): 优化健康检查逻辑

- 提前返回未启用健康检查的情况
- 仅在开启自动刷新 token 时执行快速预检
- 使用 AbortController 替代 Promise.race 实现超时控制
- 优化错误消息和日志信息
2026-01-16 17:35:15 +08:00
何夕2077
3ee5e29180 Merge pull request #255 from leonaii/main
feat(credentials): 增强凭证解析容错能力并添加预验证机制
2026-01-16 17:23:44 +08:00
leonai
228898bbf7 feat(credentials): 增强凭证解析容错能力并添加预验证机制
新增从损坏 JSON 中提取关键凭证字段的恢复方法

凭证缓存管理器增加 token 有效性预检查,跳过无效凭证

配置 API 补充 POOL_SIZE_LIMIT 字段同步

优化日志输出,区分加载失败和跳过的凭证统计
2026-01-16 17:16:38 +08:00
Yoahoug
47ad305b4e feat: add Codex provider support 2026-01-16 16:53:06 +08:00
hex2077
8faf913c28 feat(credential): 移除当前进程的锁文件特殊处理逻辑
docs: 添加PROVIDER_ADAPTER_GUIDE.md文档说明接入流程

修改凭证缓存管理器,不再允许当前进程复用锁文件,确保同一时间只有一个实例运行。
同时新增提供商接入指南文档,详细说明后端到前端的全流程调整步骤。
2026-01-16 16:13:53 +08:00
何夕2077
2b09653d12 Merge pull request #252 from leonaii/main
feat(pool): 添加账号池轮询上限配置默认全部,并优化服务端重载问题
2026-01-16 15:53:59 +08:00
leonai
025828868e feat(pool): 添加账号池轮询上限配置默认全部,并优化服务端重载问题
1. 新增 POOL_SIZE_LIMIT 配置项,限制每个提供商类型参与轮询的最大健康凭证数量
2. 优化 provider-pool-manager 选择逻辑,按使用次数升序取 Top N 候选池
3. 修复 credential-cache-manager 配置重载时的实例锁检测问题
4. 完善前端配置界面和中英文国际化支持
2026-01-16 12:34:41 +08:00
hex2077
b33ff03e1f fix(credential-cache): 允许当前进程继续运行当检测到自身锁文件时
当检测到锁文件属于当前进程时不再抛出错误,而是允许继续运行。这解决了当进程意外重启时可能出现的锁文件冲突问题。
2026-01-16 12:24:04 +08:00
何夕2077
0b5bfbf5e0 Merge pull request #246 from leonaii/main
feat: 引入凭证缓存管理器,优化 OAuth Token 并发处理
2026-01-15 21:54:24 +08:00
leonai
9f58db2c1f feat: 引入凭证缓存管理器,优化 OAuth Token 并发处理
- 新增 CredentialCacheManager 替代文件锁机制
- 所有 OAuth Provider 迁移到内存缓存
- Token 刷新策略优化:过期阻塞,即将过期后台刷新
- 健康检查增加 Token 预检和超时保护
- 进程退出时自动同步凭证到文件
2026-01-15 21:49:54 +08:00
jimmylau
aaf49ef2d9 fix retrieveUserQuota for gemini-cli 2026-01-15 19:18:59 +08:00
hex2077
535a93fd31 Merge branch 'main' of https://github.com/justlovemaki/AIClient-2-API 2026-01-14 20:46:53 +08:00
hex2077
da72c2152d refactor(antigravity): 优化系统提示词处理逻辑并改进模型提供者检测
重构 antigravity-core.js 中的系统提示词处理方式,改为分段处理以提高可读性
修改 ollama-handler.js 中的模型提供者检测逻辑,使用模型列表匹配替代硬编码规则
2026-01-14 20:44:13 +08:00
leonai
ec82841c26 Merge branch 'main' of https://github.com/leonaii/AIClient-2-API 2026-01-14 20:14:55 +08:00
leonai
92c2f44a73 feat(kiro): 添加凭证错误处理和配额恢复机制
1. 新增 CredentialError 自定义错误类,支持凭证切换标记
2. 添加 402 配额耗尽错误处理,支持验证用量并设置下月恢复时间
3. 重构 429/5xx 错误处理策略,改为等待后切换凭证而非指数退避重试
4. 新增 markProviderUnhealthyWithRecoveryTime 方法支持计划恢复
5. 添加 _checkAndRecoverScheduledProviders 自动恢复已到期凭证
6. 调整凭证切换最大重试次数从 2 次增加到 5 次
7. 支持 skipErrorCount 标记避免临时错误影响凭证健康度统计
2026-01-14 20:14:40 +08:00
hex2077
5c90100997 feat(并发控制): 实现去重锁机制并优化提供者选择并发安全
为关键操作添加去重锁机制,确保并发请求只执行一次共享结果
重构 provider-pool-manager 使用链式锁保证选择操作的原子性
更新各服务提供者使用 withDeduplication 替代自定义单例锁
2026-01-14 16:01:04 +08:00
leonai
3b0fc590d5 fix(kiro): 添加token刷新单例锁并增强JSON解析容错
1. 引入tokenRefreshPromises Map实现按凭证文件路径的单例锁机制
2. 防止多个并发请求同时刷新同一个token导致的文件锁串行化问题
3. 添加repairJson函数处理损坏的JSON文件,增强解析容错能力
4. 重构token刷新逻辑,提取_doTokenRefresh和_reloadCredentialsAfterRefresh方法
2026-01-14 13:44:47 +08:00
leonai
3a04777439 Merge branch 'main' of https://github.com/leonaii/AIClient-2-API 2026-01-14 11:37:02 +08:00
leonai
b14ae21917 fix(kiro): 增强401错误处理并支持Gemini格式请求体转换,修复健康KIRO健康检查错误。
1. 在callApi和callApiStream方法中添加contents到messages格式的自动转换
2. 401错误时先刷新UUID再刷新token,提高认证恢复成功率
3. 新增_refreshUuid方法用于生成新的UUID标识
4. ProviderPoolManager新增refreshProviderUuid方法支持UUID刷新
5. 移除Kiro OAuth的contents格式备用请求,统一使用messages格式
2026-01-14 11:31:28 +08:00
hex2077
58c66fcd4b feat(文件锁): 添加文件锁机制防止凭证文件并发写入冲突
实现文件锁工具类,用于防止多个异步操作同时写入同一文件导致的竞争条件。修改各认证模块的凭证保存逻辑,在写入文件前获取锁,确保写入操作的原子性。

- 新增 file-lock.js 工具模块,提供 acquireFileLock 和 withFileLock 方法
- 修改所有认证模块的凭证保存逻辑,使用文件锁保护写入操作
- 添加适当的错误处理和锁释放机制,确保资源不会泄漏
2026-01-13 22:10:49 +08:00
hex2077
d70352b26e Merge branch 'main' of https://github.com/justlovemaki/AIClient-2-API 2026-01-13 19:09:52 +08:00
hex2077
281d242466 feat(auth): 支持自定义 Builder ID Start URL 并添加相关国际化
为 Kiro OAuth 添加 Builder ID Start URL 的可配置选项,优先使用前端传入的值
添加相关国际化文本和 UI 控件,允许用户自定义或重新生成 Start URL
同时支持通过 options.authMethod 参数指定认证方法
2026-01-13 19:09:17 +08:00
leonai
bd8f03b68e feat(config): 添加凭证切换最大重试次数配置项
1. 新增 CREDENTIAL_SWITCH_MAX_RETRIES 配置项,默认值为 5
2. 在 config-manager.js 中添加配置初始化
3. 在 config-api.js 中支持配置的读取和更新
4. 在 common.js 中使用该配置控制凭证切换重试次数
5. 在前端配置页面添加对应的输入控件
2026-01-13 19:00:00 +08:00
leonai
948283187c feat(kiro): 添加认证错误自动标记不健康及凭证切换重试机制,解决401 和403的问题
1. Kiro API 新增 401/403 错误处理逻辑,401 尝试刷新 token 后重试,403 直接标记凭证不健康
2. 新增 _markCredentialUnhealthy 辅助方法,统一处理凭证健康状态标记
3. ProviderPoolManager 新增 markProviderUnhealthyImmediately 方法,用于认证错误立即标记
4. handleStreamRequest/handleUnaryRequest 支持重试上下文,认证失败后自动切换健康凭证重试
5. provider-api 健康检查增加认证错误识别,触发立即标记不健康逻辑
2026-01-13 18:44:34 +08:00
hex2077
817c25267b feat(上传配置): 添加批量删除未关联配置文件功能并优化UI
refactor(提供商管理): 重构API路由顺序并添加健康节点管理功能
style(侧边栏): 更新配置管理为凭据文件管理以更准确描述功能
perf(提供商池): 优化健康检查仅检测不健康节点提升性能
fix(UI): 修复提供商编辑状态按钮显示问题
docs(i18n): 更新翻译文件以匹配新功能
2026-01-13 18:32:27 +08:00
hex2077
e335a13592 fix: 修复多个功能问题并优化服务器配置
- 将Claude提供商的AXIOS超时恢复为2分钟
- 扩展CORS头以支持更多方法和头部,并添加预检缓存
- 禁用自动链接提供商配置
- 增强服务器配置,设置超时和最大连接数
- 为更新检查添加代理支持,使用undici进行代理请求
2026-01-13 13:29:03 +08:00
何夕2077
51992f30dc Merge pull request #221 from leonaii/main
feat(orchids): 集成 Orchids 平台作为新的 Claude 提供商
2026-01-13 13:25:08 +08:00
Zhafron Kautsar
debe3ec33d refactor(kiro): remove schema simplification and size-based compression
Eliminated the two-stage compression system that attempted to preserve original
tool schemas and only simplified when exceeding size limits. The provider now
applies consistent description truncation for all tools without conditional
schema processing or size calculations.

Removed:
- TARGET_TOTAL_SIZE constant and size checking logic
- simplifySchema helper function
- Conditional schema simplification based on total size

This change reduces complexity and ensures uniform handling of tool descriptions
regardless of total payload size.
2026-01-12 20:50:43 -05:00
Zhafron Kautsar
2e9e319933 refactor(kiro): simplify tool size compression logic
The code refactors the tool building process in initializeAuth to handle
description truncation and size limits more efficiently. It introduces
per-tool description truncation using a fixed max length, and simplifies
the compression logic by removing the iterative description adjustment
loop. This improves code clarity and performance.
2026-01-12 20:43:24 -05:00
leonai
d7cb0103b8 feat(orchids): 添加 Orchids OAuth 提供商集成
1. 新增 Orchids OAuth 提供商支持,包括凭据导入和 API 服务
2. 添加 claude-orchids.js 核心服务实现 WebSocket 通信
3. 实现 JWT Token 解析和凭据管理功能
4. 更新 UI 界面支持 Orchids Token 导入和配置管理
5. 添加 i18n 多语言支持(中文/英文)
6. 更新 .gitignore 忽略 Orchids 凭据文件
2026-01-12 20:00:27 +08:00