Commit graph

55 commits

Author SHA1 Message Date
何夕2077
ebf03d9e37
Revert "feat: model-router插件 + 安全增强 + embeddings支持" 2026-04-05 22:09:24 +08:00
product-manager-claude
4385421e11 feat: model-router插件 + 安全增强 + embeddings支持
- 新增 model-router 中间件插件(别名路由、热配置、管理面板)
- api-manager 支持 /v1/embeddings 端点透传
- auth.js 安全增强:原子写入、空数据防护、token清理防护
- GrokConverter 兼容性改进
- ecosystem.config.cjs PM2配置
2026-04-05 21:32:35 +08:00
hex2077
dc153730f7 fix(grok): 修复流式响应中图片渲染和思考块处理问题
- 修复流式响应中图片 URL 被截断的问题,通过缓冲区累积完整 URL
- 改进卡片附件处理,支持从 cardAttachmentsJson 解析并渲染图片
- 优化思考块逻辑,避免在正式内容开始后显示无意义的内部注释
- 修复思考块未正确关闭的问题,确保格式完整性
- 更新文档中的模型列表,将 Qwen Code 替换为 Codex
2026-04-01 22:25:43 +08:00
hex2077
8e8a8fc551 feat(converter): 支持转换 url_context 和 google_maps 工具
扩展 OpenAI 和 Claude 转换器以支持将 url_context 和 google_maps 工具转换为 Gemini API 格式。现在工具数组可以包含多个独立的工具对象,而不是合并到单个对象中。
2026-03-30 12:00:11 +08:00
wsyh4567
4ee01706aa fix: Responses API 工具调用事件格式错误导致 Codex CLI 无法多轮工作
修复 6 个问题:

1. requestId 未传入 convertStreamChunk, 每个 chunk 生成新 UUID,
   导致 state 不共享, response.completed 时 fullText 为空
2. TOTAL_CONTEXT_TOKENS=1000000 但 Claude 实际上下文只有 200K,
   token 数虚报 5 倍触发异常压缩
3. 默认模型名硬编码为 gpt-4.1-2025-04-14
4. 工具调用参数事件类型用了 response.custom_tool_call_input.delta,
   应为 response.function_call_arguments.delta
5. response.completed 的 output 只有空 message, 缺少 function_call 项,
   Codex 收不到工具调用结果无法进入多轮
6. 缺少 response.function_call_arguments.done 和工具专属
   response.output_item.done 事件
2026-03-28 11:40:29 +08:00
hex2077
602c6be836 feat: 增强TLS sidecar支持并更新模型列表
- 扩展TLS sidecar配置,支持按提供商启用和设置上游代理
- 更新gemini-antigravity提供商模型列表至最新版本
- 修复JSON schema转换中数组type的处理以兼容Google Gemini API
- 为所有主要提供商集成TLS sidecar支持
- 修复CodexConverter中系统消息重复问题
- 改进gemini-core的错误处理和请求头设置
2026-03-16 18:26:16 +08:00
何夕2077
27ac8c9eaf
Merge pull request #379 from Cishoon/fix/codex-claude-content-block-start
fix: 修复 Codex→Claude 流式转换并发串流导致 content_block_start 丢失的问题
2026-03-12 11:37:59 +08:00
Cishoon
98caecb463 fix: 通过 per-request requestId 彻底解决 Codex→Claude 流式转换的并发串流问题
原有 item_id→resId 映射方案中,response.output_item.added 事件不携带
response.id,建立映射时仍依赖共享的 lastClaudeStreamResponseId,并发场景下
映射关系可能从一开始就是错的。

修复:在 handleStreamRequest 中为每个请求生成唯一 requestId,通过调用链传入
toClaudeStreamChunk 作为 streamParams 的隔离 key,使并发流状态完全独立,
不再依赖任何共享状态做并发关联。
2026-03-09 15:49:36 +08:00
hex2077
0631d0db05 fix: 修复服务器时间格式和保留监控字段
- 将服务器时间格式从本地字符串改为 ISO 字符串以确保一致性
- 在客户端正确格式化从服务器接收的 ISO 时间字符串
- 在 CodexConverter 中保留监控相关字段(_monitorRequestId 和 _requestBaseUrl)以支持请求追踪
2026-03-08 22:56:42 +08:00
hex2077
cd5e185419 fix(converters): 仅在service_tier为priority时保留该字段
移除CodexConverter中service_tier字段的默认值设置,现在仅当明确指定为'priority'时才包含该字段。这修复了向Codex API发送不必要参数的问题,因为API只接受'priority'值,其他值会导致错误。
2026-03-08 21:05:13 +08:00
hex2077
3f3c9e1a45 feat: 新增模型支持并扩展功能配置
- 添加 Gemini 3.1 Flash Lite 模型到 provider-models 和别名映射
- 扩展 Codex 转换器以支持 reasoning 配置和服务层级传递
- 为 Codex 模型添加 -fast 后缀变体,自动设置优先级服务层级和高推理强度
- 扩展 Grok 模型以支持 -nsfw 后缀变体,并添加账户级 NSFW 设置流程
- 放宽 Gemini 模型思考功能检测条件以包含所有 gemini-3 系列模型
2026-03-08 20:20:16 +08:00
Cishoon
042d9c2004 fix: 修复 Codex→Claude 流式转换中 content_block_start 被跳过的问题
CodexConverter 是单例,streamParams 和 lastClaudeStreamResponseId 在并发请求间共享。
当多个 Codex→Claude 流同时活跃时,delta 事件(不携带 response.id)会通过共享的
lastClaudeStreamResponseId 解析到错误的流状态,导致 content_block_start 被跳过。

修复:利用 Codex SSE 事件中的 item_id,在 response.output_item.added 时建立
item_id→resId 映射,使 delta 事件能精确关联到自己所属的 response state。
2026-03-08 14:32:00 +08:00
Simon Shi
9138aa273e fix: openai tool use convert 2026-03-07 20:15:10 +08:00
Simon Shi
d1d7ead694 fix: openai tool use convert 2026-03-07 19:17:11 +08:00
hex2077
8456f64615 fix(CodexConverter): 修复流式响应中事件与状态不匹配的问题
当 Codex 增量事件缺少 response.id 时,现在会智能选择最近活跃的流状态进行归并,避免使用固定 "default" key 导致状态污染。同时为流状态添加最后更新时间戳,并维护最近响应ID的引用,确保流式转换的准确性和稳定性。
2026-03-04 15:26:53 +08:00
Cishoon
5d8ad5a925 fix: 补齐 Claude 流式响应的 content_block_start/stop 事件序列
修复通过 /v1/messages 对接 Claude 客户端时「长时间无输出,最后一次性出现大量内容」的问题。

问题原因:
- CodexConverter 在文本增量场景只发送了 content_block_delta,
  缺少对应文本块的 content_block_start 和 content_block_stop 事件
- Claude 兼容客户端无法将 delta 识别为可渲染增量

修复内容:
- 为 text/thinking 输出分支补齐完整的 Claude SSE 事件序列:
  首个 delta 前发送 content_block_start,块结束时发送 content_block_stop
- 新增 blockStarted/currentBlockType 状态跟踪,正确处理块类型切换
- 在 tool_use 和 response.completed 前关闭已打开的内容块
- message_start 事件补充 content: [] 字段

影响范围:CodexConverter、ClaudeConverter 流式转换逻辑
2026-03-04 14:40:30 +08:00
hex2077
8947f93471 refactor: 移除 Ollama 协议支持并重构模型路由
- 删除 Ollama 协议相关代码,包括处理器、转换器、文档和常量
- 重构模型列表获取逻辑,支持 auto 模式下的多提供商聚合
- 新增 token 计算工具函数,统一各提供商 token 计数逻辑
- 改进模型前缀路由解析,增强 auto 模式的健壮性
- 更新多语言文档,移除 Ollama 相关内容
2026-03-03 23:09:04 +08:00
hex2077
3989add60b chore: 更新版本至2.10.4并移除iFlow协议支持
- 更新VERSION文件至2.10.4
- 在tls-sidecar中强制日志输出到stdout,避免Node.js误判
- 更新程序时排除tls-sidecar目录
- 增强GrokConverter的模型列表转换逻辑,支持更多数据结构
2026-03-03 01:15:43 +08:00
hex2077
0b071f261d feat(converter): 为Grok协议添加完整的转换支持
- 在GeminiConverter、ClaudeConverter和OpenAIResponsesConverter中增加toGrokRequest方法
- 扩展GrokConverter以支持向Gemini、OpenAI Responses、Codex等协议的响应转换
- 移除IFLOW_API适配器的注册以清理未使用的代码
- 修复Grok媒体URL处理中不必要的SSO令牌追加逻辑
2026-03-02 19:47:43 +08:00
hex2077
3f8fdc0b8e feat(grok): 使用 UUID 替换 SSO token 进行资源代理以提高安全性
- 在 Grok 资源代理接口中优先使用 UUID 获取 token,避免 token 泄露在 URL 中
- 为 ProviderPoolManager 添加 findProviderByUuid 方法,支持通过 UUID 查找配置
- 重构 GrokConverter,将 SSO token 依赖改为 UUID 依赖
- 更新 VERSION 文件至 2.10.2.1
2026-03-02 00:14:37 +08:00
hex2077
c91d2ce3ab feat(grok): 添加资源代理功能并优化用量显示
- 新增 Grok 资源代理接口,将 assets.grok.com 的资源通过本地代理访问
- 在请求处理中注入 requestBaseUrl 配置,供转换器生成正确的代理链接
- 统一各提供商核心服务中删除 _requestBaseUrl 字段的逻辑
- 优化 Grok 用量显示逻辑,支持按 token 或 query 显示剩余额度
- 更新 UI 管理器,允许 /api/grok/assets 接口免认证访问
- 改进 Grok 转换器,在流式输出中智能处理被截断的 URL
2026-03-01 23:55:07 +08:00
hex2077
517120a000 fix: 修复Claude内容处理和iFlow模型验证问题
- 修复ClaudeConverter中字符串内容处理逻辑,确保字符串能正确转换为OpenAI格式
- 移除claude-kiro.js中重复的内容处理代码,避免重复计算tokens
- 修复iFlow模型验证逻辑,当模型不存在时使用默认模型
- 优化插件状态提示信息,使用通用的"已启用/已禁用"翻译
2026-02-28 17:52:45 +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
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
55879396c8 feat(converters): 为请求添加 metadata 支持并优化会话缓存
- 在 CodexConverter 和 ClaudeConverter 中增加 metadata 字段,透传上游元数据
- 重构 CodexApiService 的缓存键生成逻辑,优先使用 session_id 或 conversation_id
- 从上游请求体中移除 metadata 避免透传,仅用于生成缓存键
2026-02-15 11:21:26 +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
Codex
9f3040cf49 feat(kiro): add request-side extended thinking support and structured reasoning outputs 2026-02-11 12:26:03 +03: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
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
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
245583b96a feat(logging): 添加日志系统配置和下载功能
- 新增日志系统配置选项,支持日志级别、输出模式、文件大小等设置
- 添加当日日志文件下载功能,可通过Web界面直接下载
- 将console.log/error替换为结构化logger,提升日志可管理性
- 在日志页面添加自动滚动到底部功能
- 更新配置示例文件,包含完整的日志配置参数
2026-01-25 17:24:39 +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
Yoahoug
47ad305b4e feat: add Codex provider support 2026-01-16 16:53:06 +08:00
hex2077
2d317e0333 refactor(项目结构): 重构项目目录结构并优化代码组织
将常用工具函数移动到utils目录
重构提供商策略模式实现
新增docker-compose构建配置文件
优化UI配置选择器的样式和交互
重构代理工具和API管理模块
更新脚本路径和依赖引用
2026-01-10 18:19:06 +08:00
Zhafron Kautsar
60161fd2bc feat(converters): add display_name field to model list responses
Add display_name field to model list conversions across all converter strategies to improve model identification in API responses. ClaudeConverter and GeminiConverter now include display_name in their toOpenAIModelList methods, while OpenAIConverter adds ensureDisplayName method to guarantee the field exists for native OpenAI models.
2026-01-08 08:20:19 -05:00
hex2077
8f39295655 feat: 改进错误处理、Ollama兼容性和文档结构
refactor(converters): 优化Claude到Gemini的转换逻辑
fix(kiro): 修复社交认证刷新问题
perf(ollama): 提升模型列表获取效率
docs: 为README添加可折叠区块
style: 清理控制台日志
2026-01-06 18:14:02 +08:00
yicone
d541c36b47 fix: resolve CORS for browser extensions & enhance OpenAI Responses compatibility 2025-12-27 17:01:02 +08:00
lemon07r
902bee1aa5 fix: map finish_reason to 'tool_calls' in Gemini stream when tool calls are present 2025-12-22 19:46:26 -05:00
lemon07r
ac47e04cf9 fix: add missing 'index' to Gemini streaming tool calls and improve tests 2025-12-22 19:36:01 -05:00
hex2077
c2bc2f1c07 fix(converters): 更新AI模型相关常量以匹配最新API限制
调整OpenAI、Claude、Gemini等模型的token限制常量,使其与各平台最新API规格保持一致
2025-12-13 17:38:42 +08:00
hex2077
839fc2d9de refactor(converters): 使用常量替换模型默认参数硬编码
将各模型转换器中的硬编码默认参数替换为统一的常量定义,提高代码可维护性
2025-12-13 17:30:04 +08:00
hex2077
b364341f67 feat(provider): 增强健康检测和自动配置关联功能
- 新增 provider-utils.js 公共模块,提取共用工具函数
- 添加提供商健康检测 API 端点和 UI 按钮
- 实现配置文件自动关联功能(启动时和手动触发)
- 支持 gemini-antigravity 新提供商类型
- 增强健康检测结果记录(时间、模型、错误信息)
- 添加提供商列表分页功能
- 修复 OpenAIResponsesConverter 中 systemMessages 未定义问题
- 更新默认健康检测模型配置
2025-12-10 15:18:42 +08:00
hex2077
c5cd1ab2c7 Revert "Merge pull request #103 from leonaii/main"
This reverts commit 4f336889fd46193f5d6b32d95738070e4aecb7b0, reversing
changes made to 4a645cdf3ffaeb922d97141dbf699807ccc2d240.
2025-12-10 12:13:11 +08:00
何夕2077
f4b30ed596 Merge pull request #103 from leonaii/main
先合并,后处理
2025-12-10 12:12:42 +08:00
leonai
d99f0d77a5 feat: 增强提供商池管理和UI功能
- 新增 Kiro OAuth 配置自动扫描和关联功能 (service-manager.js)

- 增强提供商池管理器,支持健康检测和状态持久化 (provider-pool-manager.js)

- 新增 UI 管理功能:登录认证、配置文件上传、提供商管理 (ui-manager.js)

- 新增上传配置管理模块,支持配置文件查看/删除/一键关联 (upload-config-manager.js)

- 增强模态框组件,支持更多交互功能 (modal.js)

- 新增 Windows PowerShell 部署脚本 (run-docker.ps1)

- 优化 run-docker.sh 脚本,增强跨平台兼容性

- 更新 .gitignore 排除敏感配置文件
2025-12-09 22:12:40 +08:00