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