Commit graph

344 commits

Author SHA1 Message Date
hex2077
6eee878574 fix(gemini): 确保请求thinking时始终包含includeThoughts字段
当上游请求gemini-3的thinking功能时,可能未显式设置includeThoughts字段,
导致无法稳定接收thought parts。添加兜底逻辑,在检测到thinkingLevel或
thinkingBudget非零时自动设置includeThoughts=true,确保思考功能正常工作。
2026-03-29 20:40:45 +08:00
yin1245
88523e099c fix: use per-model context window size for accurate input_tokens estimation
Different Claude models have different context window sizes:
- Opus 4.5/4.6: 1M tokens
- Sonnet 4.5/4.6: 200K tokens
- Haiku 4.5: 200K tokens

The current implementation uses a single hardcoded TOTAL_CONTEXT_TOKENS
constant for all models, which causes input_tokens to be overestimated
for small-context models or underestimated for large-context models.

This change adds a MODEL_CONTEXT_TOKENS mapping and a helper function
getContextTokensForModel() that selects the correct context window size
based on the model being used, falling back to KIRO_CONSTANTS.TOTAL_CONTEXT_TOKENS
for unknown models.
2026-03-29 12:31:46 +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
9bbde40e4c fix(provider): 修复令牌刷新机制中的并发和状态问题
修复 provider-pool-manager 中令牌刷新逻辑的多个问题:
- 将最大刷新次数从 3 更正为 5 以匹配注释
- 添加防并发机制,避免同一节点重复刷新
- 刷新成功后统一重置 needsRefresh、refreshCount 并记录 lastRefreshTime
- 在 Grok 服务中添加重置刷新状态的调用
- 防止 30 秒内的重复刷新请求

这些更改解决了因 401 错误滞后导致的重复刷新、状态不一致以及节点被过早标记为不健康的问题。
2026-03-26 12:32:09 +08:00
yin1245
a362243fdd fix: update TOTAL_CONTEXT_TOKENS to 1M for Kiro context window upgrade
Kiro has upgraded its context window from 173k to 1M tokens. The hardcoded
TOTAL_CONTEXT_TOKENS: 172500 causes input_tokens in the converted Claude
SSE response to be severely underestimated (~17% of actual value).

input_tokens is calculated as:
  totalTokens = TOTAL_CONTEXT_TOKENS * contextUsagePercentage / 100
  inputTokens = totalTokens - outputTokens

With the old 172500 constant, a request with real input of 169,944 tokens
gets reported as ~35,000 tokens, causing downstream billing systems to
undercharge by ~5x.
2026-03-25 19:29:54 +08:00
hex2077
d345ec67b7 fix(provider): 清除刷新标记避免节点卡死并更新模型列表
当 provider 报错时,清除 needsRefresh 和 refreshCount 标记,防止健康检查逻辑陷入刷新循环导致节点卡死。同时更新 provider-models.js 中的模型列表,添加 gpt-5.4-mini 模型,并更新项目版本号至 2.11.8。
2026-03-25 12:48:54 +08:00
hex2077
d15de54e79 chore: 移除Grok API的初始使用量同步调用
移除初始化时自动获取使用量限制的逻辑,避免因API调用失败导致的警告日志干扰
2026-03-20 22:57:56 +08:00
hex2077
19b81381b8 Revert "refactor(grok): 移除流式请求重试逻辑并简化错误处理"
This reverts commit 807e3670b1.
2026-03-20 22:56:27 +08:00
hex2077
807e3670b1 refactor(grok): 移除流式请求重试逻辑并简化错误处理
移除 generateContentStream 方法中的重试机制及相关辅助方法,将错误处理简化为仅处理认证错误。版本号更新至 2.11.7.1。
2026-03-20 22:45:46 +08:00
hex2077
46038a5459 feat: 优化OAuth授权流程并更新UI样式
- 在OAuth授权成功页面添加倒计时自动关闭功能,提升用户体验
- 改进授权弹窗通信机制,支持postMessage方式主动关闭窗口
- 更新Gemini OAuth回调页面,添加提供商标识和跨窗口通信
- 重构Grok API错误处理和重试逻辑,增强网络稳定性
- 修改头部组件购买链接为AI账号购买,并更新对应样式
2026-03-20 22:39:52 +08:00
hex2077
2a3312df15 feat(providers): 更新 Claude Kiro 版本并增强 Grok API 重试机制
- 升级 Claude Kiro 版本至 0.11.63 并更新 AWS SDK 版本
- 为 Grok API 添加统一的重试机制,支持 429/5xx 状态码和网络错误
- 在 Claude Kiro 请求头中添加 agentTaskType 和 x-amzn-codewhisperer-optout
- 优化 Grok 错误处理,网络错误时触发凭证切换但不增加错误计数
2026-03-20 20:52:00 +08:00
hex2077
82c667ac5d fix(gemini): 修复认证初始化顺序和令牌刷新逻辑
调整 initializeAuth 方法中凭证加载和令牌刷新检查的顺序,确保在评估令牌过期前已加载凭证。添加 isTokenExpiringSoon 方法用于主动检查令牌过期状态,防止使用即将过期的令牌。同时修复 Antigravity 服务中模型别名转换的逻辑错误。
2026-03-16 22:54:45 +08:00
hex2077
e62cc8278a feat(gemini): 添加 Gemini 2.5 Flash 系列模型支持
更新 provider-models.js 以包含新的 Gemini 2.5 Flash 系列模型标识符。
同时,将 antigravity-core.js 中的默认回退模型从可用模型列表的第一个元素硬编码为 'gemini-3-flash',以提高默认行为的可预测性和稳定性。
2026-03-16 19:53:02 +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
Ömer Burak Dağlı
0969fad37e fix(grok): avoid blocking first request on usage sync 2026-03-14 18:12:46 +03:00
hex2077
90ffd83c78 fix(grok): 移除请求体中的tools字段以兼容API
Grok API不支持tools参数,在构建请求负载时主动删除该字段,避免调用失败。
2026-03-13 12:13:19 +08:00
hex2077
f82b781214 perf(provider-pool-manager): 优化节点评分算法以提升选择性能
- 重构 _calculateNodeScore 方法,简化评分逻辑并减少重复计算
- 提前计算池中最小序列号,避免排序时重复 O(N) 计算
- 统一新鲜节点和普通节点的评分基准,确保轮询公平性
- 更新版本号至 2.11.4.1
2026-03-12 16:08:35 +08:00
hex2077
beba030650 feat(update): 为GitHub API和tarball下载添加多个代理备选
添加多个GitHub API和tarball下载的代理源(包括gh-proxy.org各节点和gitclone.com),以增强更新功能的可用性。当某个代理失败时,系统会自动尝试下一个备选源,避免因单个代理不可用导致更新检查或下载失败。
同时更新项目版本号至2.11.4。
2026-03-12 12:24:40 +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
hex2077
0bef99ef4f feat(upload-config): 添加配置文件下载功能并显示节点状态
- 新增配置文件下载 API 端点,支持安全下载 configs 目录下的文件
- 在用量管理界面为每个实例添加下载按钮,可直接下载关联的授权文件
- 在配置文件管理界面添加下载按钮,支持单独下载配置文件
- 为关联节点显示健康状态标签(正常/异常/禁用),使用不同颜色区分
- 更新 Claude Kiro 模型映射,修正 sonnet-4-5 模型名称
- 添加相关国际化翻译和样式支持
2026-03-11 11:29:13 +08:00
hex2077
7d2704b14e fix(system-monitor): 改进进程CPU使用率计算准确性和稳定性
- 优先使用Node.js内置的process.cpuUsage()计算当前进程CPU使用率,提高跨平台准确性
- 为外部进程ps命令添加错误处理,避免在BusyBox环境下报错干扰日志
- 更新Dockerfile安装procps工具以支持系统监控功能
- 同步更新版本号至2.11.1
2026-03-09 19:05:41 +08:00
hex2077
f2f02b365f refactor(providers): 重构 Codex 认证刷新机制以支持后台异步刷新
- 将直接调用 refreshAccessToken 改为调用 initializeAuth(true) 以统一认证流程
- 新增 triggerBackgroundRefresh 方法,在 token 即将过期或收到 401 时异步触发刷新
- 移除多处重复的 PoolManager 标记逻辑,统一由 triggerBackgroundRefresh 处理
- 优化 initializeAuth 方法,仅在需要时加载凭证,避免不必要的阻塞
- 更新版本号至 2.11.0
2026-03-09 19:00:15 +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
8fb4d59b23 fix(openai): 修复 prepareRequestBody 异步调用问题并添加监控钩子
将 prepareRequestBody 方法改为异步以支持插件钩子调用,修复因缺少 await 导致的潜在问题。同时添加内部请求转换监控钩子,便于跟踪请求处理流程。
2026-03-08 22:23:43 +08:00
hex2077
7726ca1f38 fix(openai): 修复fast模型上游请求中模型名称错误问题
确保传给上游的模型名称正确移除-fast后缀,避免因模型名称不匹配导致的API调用失败。当检测到fast模型时,会记录转换日志以便追踪。
2026-03-08 22:11:38 +08:00
hex2077
d9396ef56c fix(openai): 修复推理努力参数在快速模型上的设置
当使用快速模型时,始终使用默认的推理努力值,而不是从请求体中读取。这确保了快速模型的一致性行为。
2026-03-08 21:36:40 +08:00
hex2077
dd8f30f5a8 fix(openai): 修复fast模型后缀处理逻辑
修复模型名称处理逻辑,使其能够正确处理大小写不敏感的"-fast"后缀。使用正则表达式进行匹配,避免因大小写问题导致的模型识别错误。
2026-03-08 21:19:07 +08:00
hex2077
76e8a81b3d fix: 修复非 priority 服务层级时错误传递 service_tier 参数
当 service_tier 不是 'priority' 时,从请求体中删除该字段,避免向 OpenAI API 发送无效参数。
2026-03-08 21:10:43 +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
4715acf5db fix(grok): 修复媒体模型请求负载中缺少enable_nsfw和aspect_ratio字段的问题
移除图像模型toolOverrides中冗余的disableNsfwFilter设置,统一在构建请求负载时处理NSFW逻辑。对于非视频的媒体模型,现在会正确添加enable_nsfw字段,并支持从请求体传递aspect_ratio参数。
2026-03-08 20:47:34 +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
25bcb5a232 feat(oauth): 新增 Codex Token 批量导入功能并优化 OAuth 服务器关闭逻辑
- 添加 Codex Token 批量导入功能,支持 SSE 实时进度显示
- 统一各 OAuth 服务器关闭逻辑,添加超时机制和错误处理
- 更新 Codex 支持的模型列表,添加 gpt-5.4 模型
- 优化 Codex API 版本管理,修复模型回退逻辑
- 添加前端批量导入界面及多语言支持
2026-03-06 12:46:12 +08:00
hex2077
fa19bae517 refactor(potluck): 简化 API 大锅饭系统并增强安全性和 UI
- 移除凭证管理和资源包系统,简化为基于每日限额的 Key 管理
- 新增登录安全防护(频率限制、账户锁定、IP 追踪)
- 重构日志系统使用 AsyncLocalStorage 替代全局状态
- 全面升级 UI 界面(主题切换、使用分布统计、响应式设计)
- 优化安装脚本(PowerShell 支持、手动安装指引)

BREAKING CHANGE: API Potluck 插件不再支持凭证资源包功能,所有 Key 仅基于每日限额进行配额管理。user-data-manager 模块已禁用,相关 API 端点已移除。
2026-03-05 17:21:47 +08:00
hex2077
8456f64615 fix(CodexConverter): 修复流式响应中事件与状态不匹配的问题
当 Codex 增量事件缺少 response.id 时,现在会智能选择最近活跃的流状态进行归并,避免使用固定 "default" key 导致状态污染。同时为流状态添加最后更新时间戳,并维护最近响应ID的引用,确保流式转换的准确性和稳定性。
2026-03-04 15:26:53 +08:00
何夕2077
8a92e4d055
Merge pull request #362 from Cishoon/fix/claude-streaming-content-block-events
fix: 补齐 Claude 流式响应的 content_block_start/stop 事件序列
2026-03-04 14:58:25 +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
9ca8b86a4f refactor: 优化提供商加载逻辑并修复流式重试问题
- 将静态提供商配置更新逻辑移至加载函数,避免重复执行
- 修复流式请求重试时已发送数据导致响应损坏的问题
- 增强模型列表和内容生成的服务适配器选择逻辑
- 改进错误处理和日志记录
2026-03-04 13:26:08 +08:00
hex2077
8947f93471 refactor: 移除 Ollama 协议支持并重构模型路由
- 删除 Ollama 协议相关代码,包括处理器、转换器、文档和常量
- 重构模型列表获取逻辑,支持 auto 模式下的多提供商聚合
- 新增 token 计算工具函数,统一各提供商 token 计数逻辑
- 改进模型前缀路由解析,增强 auto 模式的健壮性
- 更新多语言文档,移除 Ollama 相关内容
2026-03-03 23:09:04 +08:00
hex2077
05df61df74 feat: 添加 TLS Sidecar 支持并重构前端提供商配置系统
- 新增 TLS Sidecar 功能文档,支持绕过 Grok 等服务的 Cloudflare 403 封锁
- 重构前端提供商配置管理,实现动态配置缓存和统一数据源
- 升级配置文件管理界面 UI,优化信息展示和交互体验
- 改进 Claude Kiro 工具调用流式响应,实时推送 content_block 事件
- 修复 Codex 配额重置时间格式问题

主要变更:
- README 文档新增 TLS Sidecar 配置说明和使用指南
- 新增 tutorial-manager.js 模块,动态渲染 OAuth 授权路径
- routing-examples.js 支持动态生成路径路由示例卡片
- upload-config-manager.js 重构列表项布局,支持节点关联信息展示
- config-manager、models-manager、usage-manager 统一使用提供商配置缓存
- i18n 新增多语言翻译键,更新 Gemini 模型版本信息
2026-03-03 20:05:51 +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
1798fc3df1 chore: 更新版本号并优化Docker构建顺序
- 将版本号从2.10.3.2更新至2.10.3.3
- 调整Dockerfile中复制tls-sidecar二进制文件的位置,避免被本地文件覆盖
- 在tls-sidecar启动时增加Linux/macOS平台下的执行权限设置
- 增强二进制文件存在性检查,确保目标为常规文件
2026-03-03 00:35:15 +08:00
hex2077
698c6e11d3 fix(codex): 修复凭据刷新和过期时间处理逻辑
- 记录加载凭据的路径,确保刷新后写回同一文件
- 修复 token 刷新时过期时间字段名错误(expired vs expire)
- 增加 expiresAt 有效性检查,防止 NaN 导致刷新永不触发
- 优化凭据保存路径逻辑,避免读写不一致问题
2026-03-02 22:11:45 +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