Wenaixi
e764075cd9
fix: 修复审查发现的两个问题
...
1. 移除 api-server.js 中重复的启动健康检查代码
2. 恢复 ClaudeConverter 和 OpenAIConverter 中对 googleSearch、url_context、googleMaps 扩展工具的支持
2026-03-31 01:23:22 +08:00
Wenaixi
9172401a50
fix: 简化健康检查逻辑,支持热更新interval,修复provider-tag点击问题
...
- 移除checkHealth per-instance flag,简化逻辑为只依赖providerTypes勾选
- performHealthChecks启动检查也遵循providerTypes过滤
- 优化健康检查日志:显示耗时、通过/失败计数
- 支持修改interval后热更新,无需重启(globalThis.reloadHealthCheckTimer)
- 移除openai-iflow选项(未注册的provider)
- 修复config-manager.js中scheduledHealthCheckProviders点击不生效问题
- providerTypes配置修改后下次检查自动生效
2026-03-31 01:14:44 +08:00
Wenaixi
df9a36291c
fix: 添加配置验证防止格式错误的数据
...
1. config-api.js: 添加 SCHEDULED_HEALTH_CHECK 结构验证
2. config-manager.js: 添加 interval 值范围验证 (60000-3600000ms)
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:41:49 +08:00
Wenaixi
1bc193f5eb
feat: 添加定时健康检查供应商类型选择功能
...
类似启用代理的提供商,现在可以选择对哪些供应商类型进行定时健康检查
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:28:19 +08:00
Wenaixi
21c92ff214
fix: 修复定时健康检查两个bug
...
1. startupRun配置现在会在启动时立即运行健康检查
2. 修复快捷按钮重复绑定事件监听器的问题
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:20:07 +08:00
Wenaixi
129b4f688f
fix: 修复定时健康检查enabled检查bug
...
将scheduledConfig?.disabled改为!scheduledConfig?.enabled
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:13:47 +08:00
Wenaixi
1e7e391b0d
feat: 添加 SCHEDULED_HEALTH_CHECK 配置管理支持
...
允许通过 UI API 查看和修改定时健康检查配置
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 22:58:04 +08:00
Wenaixi
b6206a5d5c
feat: 添加定时健康检查功能
...
实现对供应商节点进行周期性健康测试,失败1次立即标记unhealthy
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 01:14:49 +08:00
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