Commit graph

650 commits

Author SHA1 Message Date
Wenaixi
b2bb744916 chore: 更新健康检查注释,反映简化后的逻辑(只依赖providerTypes,不使用per-provider checkHealth flag) 2026-03-31 01:42:00 +08:00
Wenaixi
157bb489b5 Merge remote-tracking branch 'origin/main' 2026-03-31 01:24:06 +08:00
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
94561f2750 feat: 优化定时健康检查配置UI,支持手动输入间隔
改为数字输入框+快捷按钮,支持自定义任意间隔值

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:12:59 +08:00
Wenaixi
ceb078c455 fix: 添加定时健康检查 i18n 中文翻译
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:08:48 +08:00
Wenaixi
79d2441c23 feat: 添加定时健康检查前端配置 UI
在配置管理页面添加定时健康检查开关、间隔配置

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:06:05 +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
hex2077
8e8a8fc551 feat(converter): 支持转换 url_context 和 google_maps 工具
扩展 OpenAI 和 Claude 转换器以支持将 url_context 和 google_maps 工具转换为 Gemini API 格式。现在工具数组可以包含多个独立的工具对象,而不是合并到单个对象中。
2026-03-30 12:00:11 +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
何夕2077
b3b78d2fa5
Merge pull request #421 from yin1245/fix/per-model-context-tokens
fix: use per-model context window size for accurate input_tokens estimation
2026-03-29 19:50:30 +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
hex2077
a639ca3d26 chore: 更新项目版本号至2.12.0 2026-03-28 17:56:18 +08:00
何夕2077
c603d87eeb
Merge pull request #419 from wsyh4567/fix/responses-api-tool-call-events
fix: Responses API 工具调用事件格式错误导致 Codex CLI 无法多轮工作
2026-03-28 17:55:21 +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
8e0541d766 docs: 从README中移除废弃的优先级配置说明
移除所有语言版本README中关于provider_pools.json优先级配置的过时文档,
因为该功能已被移除。相应调整后续章节的编号以保持文档连贯性。
2026-03-27 18:12:25 +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
何夕2077
c5d475c7e0
Merge pull request #411 from yin1245/fix/kiro-context-tokens
fix: update TOTAL_CONTEXT_TOKENS to 1M for Kiro context window upgrade
2026-03-26 12:27:48 +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
dd32e91b81 docs: 在README中添加赞助商联系信息
在README的赞助商部分添加了微信二维码和联系说明,方便潜在赞助商联系项目。更新了中文、英文和日文三个版本的文档以保持一致性。
2026-03-25 16:13:03 +08:00
hex2077
ff4fc850cd docs: 添加 PackyCode 赞助商信息到 README 文件
在英文、简体中文和日文 README 文件中新增赞助商章节,包含 PackyCode 的 Logo 图片、服务介绍和专属优惠信息。
2026-03-25 15:44:43 +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
2680651e3a chore: 更新版本号至 2.11.5.1 2026-03-16 19:54:01 +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
何夕2077
b37ead525c
Merge pull request #384 from obdagli/fix/grok-async-initial-usage-sync
fix(grok): avoid blocking the first request on initial usage sync
2026-03-16 10:53:19 +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
hex2077
80102989e1 feat: 添加大锅饭修改密钥名称功能
- 在密钥管理界面添加编辑按钮,支持修改密钥名称
- 新增修改名称模态框,包含输入验证和保存功能
- 更新前端API调用以支持名称修改操作
2026-03-12 11:45:43 +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
606c05b91c chore: 更新版本号至2.11.2 2026-03-11 11:29:42 +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