SavitarC
7ca08d521f
fix(frontend): 按平台能力展示模型同步入口并同步 Zen 规则
2026-10-09 10:11:06 +08:00
SavitarC and Claude Opus 5.5
874871a25a
feat(platform): 接入 Cline 平台
...
Cline API(https://api.cline.bot/api/v1)是 OpenAI 兼容的多模型聚合端点,
只提供 Chat Completions(Cline 自己的客户端同样只走该端点),模型名带厂商
前缀。同一个 API Key 下有两个互不影响的额度来源,由模型名决定扣哪一边:
cline-pass/* 走 ClinePass 订阅(5 小时 / 7 天 / 30 天滚动上限),其余付费
模型扣账户积分;cline-free/* 免费模型只有逐模型的每日额度。
转发:
- 平台清单与 provider profile 新增 cline:按入站协议分流,只登记 Chat
Completions 端点,Responses / Anthropic 入站由现有转换链转为 Chat
Completions,无需新增转发代码。
- 只有一个接入模式,不需要选择账号类型。
- 连接测试未指定模型时使用 profile 默认模型(固定 Chat Completions 的账号
此前落到不带厂商前缀的通用默认模型);订阅了 ClinePass 的账号改用订阅
模型,不消耗积分,ClinePass 冷却中时仍用按量模型。
用量与余额:API Key 调 /api/v1/users/me/plan/usage-limits(三档窗口的已用
百分比与重置时间,未订阅时 404)与 /api/v1/users/me、/users/{id}/balance
(余额单位为百万分之一积分,1 积分 = 1 美元),兼容 {success, data} 信封,
只查官方主机。复用额度探测与周期检测:账号列表显示 ClinePass 窗口与积分
余额;窗口用满时 ClinePass 模型冷却到重置时间,未订阅时不调度 ClinePass
模型,积分低于阈值时冷却付费模型;数据显示恢复后自动解除,但只解除探测能
证明已恢复的原因(窗口用满、未订阅、积分不足),组织账户、所需订阅档位、推理
额度与花费上限的冷却到期后由请求重新确认。周期检测中走账号接口探测的平台
改为登记表(平台、支持判定、检测函数一一对应),按账号所属平台分派。
上游错误(依据 docs.cline.bot/api/errors 与 Cline 客户端的错误分类,按文案
识别):积分不足(含其他 402)、组织花费上限、推理额度上限、ClinePass 超限、
未订阅 ClinePass / 组织账户、免费模型每日额度。两边的超限只冷却请求模型所属
的一边(模型级冷却键 cline:pass / cline:credits,调度按请求模型检查),不停
整个账号;免费模型只限该模型,冷却到文案中的 "try again in …"。ClinePass
超限冷却到快照中对应窗口的重置时间,没有快照时 5 小时窗口 1 小时、7 天
6 小时、30 天 24 小时。普通频率限制走默认 429 逻辑。402 的冷却写入失败时
也不落入默认分支永久置 error(探测只覆盖激活账号,置 error 后无法自动恢复)。
余额类冷却时长抽为 cnBalanceCheckCooldown 共用。
上游计费探测的官方域名加入 cline.bot。
前端:官方标志(机器人头像)、violet 配色(品牌紫)、复用额度与余额单元格
(同样只对官方主机上的 API Key 账号显示);接入模式展示名抽为共用函数,编辑
弹窗不再显示原始模式值。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 10:11:06 +08:00
SavitarC and Claude Opus 5.5
e2939cd8fa
feat(platform): 接入 Command Code 平台
...
转发:
- 平台清单与 provider profile 新增 command_code:按模型分流,Chat
Completions / Responses 基址 https://api.commandcode.ai/provider/v1 ,
Anthropic 基址 https://api.commandcode.ai/provider;内置规则 claude-* →
Anthropic、gpt-* → Responses(也支持 Chat Completions)。
- 原生 Anthropic 端点的版本感知拼接改按分流方式判断,转发与连接测试共用
(Anthropic 基址带 /v1 时连接测试不再误报为配置错误)。
按模型的协议集合(模型支持入站协议时直通,免去协议转换):
- 分流规则可带协议集合 protocols(首项为首选协议):入站协议在集合中时同
协议直通,否则走首选协议;只有一个协议时与原规则相同,OpenCode 行为不变。
- profile 新增 model_catalog:Command Code 的 /models 为每个模型给出
supported_endpoints。官方默认地址的目录按地址全进程共享,自定义上游按账号
隔离;目录请求的 UA 收敛与账号请求头覆写与转发一致。目录缓存 30 分钟、后台
刷新,失败退避 5 分钟;从未加载成功时首批请求最多等 2 秒,冷启动也按目录
分流。账号规则未命中的模型按目录取协议集合;目录不可用时回落内置规则(账号
未配置规则时)或 Chat Completions。
- 三个入站入口共用的 resolveUpstreamProtocol 增加目录参数。
- 前端分流规则编辑器可为每条规则勾选"也支持"的协议;提供模型目录的平台,
兜底行改为说明按上游模型列表选协议。
连接测试:
- 按模型分流的平台共用一条测试路径(协议与网关同一判定,含模型目录;默认
测试模型取自 profile),不再落入 Claude 测试路径。
- 首个分支由"国产厂商"改为"按入站协议分流";adaptive 测试跳过 profile 未
提供的 Anthropic 端点。现有国产厂商行为不变。
- 连接测试是 OpenCode 专属分流入口的最后一个调用方,改走统一判定后删除
ResolveOpenCodeGoUpstreamProtocol、openCodeGoNativeProtocol,以及此前就只剩
测试使用的 OpenCodeGoModelProtocol;路由矩阵的旧行为基准改为测试内独立复述。
额度与余额(/alpha/whoami、billing/credits、billing/subscriptions、
usage/summary):
- 额度探测写入 5 小时 / 每周窗口(限额套餐)与还原出的月度窗口,同时写入
积分余额;余额探测只取积分。仅对官方主机上的 API Key 账号生效。
- 订阅周期或本周期用量取数失败时保留上一次的月度快照,不当作没有月度窗口
清掉;窗口尚未开始(没有重置时间)时清掉上一个窗口的重置时间。
- whoami 取不到时探测整体失败,不按个人账户继续(组织账号会查到成员的个人
钱包,并据此按余额停调)。
- 阈值停调与定时检测纳入 Command Code;有充值积分时上游跳过窗口检查,窗口
快照不参与停调与冷却;积分低于余额阈值时临时停调。
- 上游计费探测的官方域名加入 commandcode.ai,不把 Key 发往官方主机上并不
存在的中转计费接口。
上游错误(依据 commandcode.ai/docs/troubleshooting/errors,按文案分类,
402 / 403 / 429 同样处理):
- 5 小时 / 每周窗口用满:带原因的临时停调,到文案中的 "Resets in …",解析
不出时回落额度快照;充值积分不受窗口限制,额度 / 余额探测发现充值积分后
只解除这一类停调。
- 积分耗尽(含 usage_exceeded):可恢复的临时停调,积分恢复后由周期检测
解除,不再永久置为 error。
- 组织花费上限:文案指明模型("set for <模型>")且请求模型已知时只写模型级
限流;成员总额度或作用域不明时整个账号冷却,最长一小时。
- 普通频率限制走默认 429 逻辑,不再冷却到窗口重置点。
前端:
- 账号列表显示额度窗口与积分余额,阈值设置增加 command_code。单元格可见性
改为按账号判定,与后端一致:只对官方主机上的 API Key 账号显示,自定义中转
显示占位符,不再每次打开列表都探测出一行报错。
- 使用官网的官方标志(圆角方块内镂空 ⌘);配色为中性灰(品牌黑色已由
Grok 使用)。
测试基准中原先用作"仅服务端登记"示例的 command_code 改为虚构的 acme_router;
新增的前端测试加入 CI 前端关键测试列表。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 10:11:05 +08:00
SavitarC and Claude Opus 5.5
7ffa38a8ae
feat(frontend): 平台列表与多协议账号表单改由平台清单驱动
...
后端新增 BuildPlatformCatalog:平台清单加上多协议供应商 profile(接入模式、
各协议默认基址、内置分流规则),由测试 TestFrontendBuiltinPlatformCatalogInSync
写成前端内置清单 constants/platformCatalog.builtin.json 并校验一致。前端随后端
一同构建发布,直接使用该清单,取代 credentialsBuilder.ts 中需要手工同步的默认
端点与 OpenCode 分流规则。
改为读取平台清单:
- 平台选项 CONCRETE_PLATFORM_OPTIONS / GROUP_PLATFORM_OPTIONS、平台展示名
platformLabel 以及各处 i18n 平台名的默认值;
- 渠道定价平台与组合分组平台、用户平台额度、上游模型同步可用平台;
- 多协议供应商判断、原生协议能力、各接入模式的默认端点与内置分流规则、
请求头覆写资格;
- 系统默认额度与各登录方式默认额度:此前前端只列出 5 个平台(新增国产厂商
与 OpenCode 时漏改),后端一直支持全部平台,现在按清单列出全部平台。
没有专属界面的多协议供应商走通用表单:创建弹窗列出其按钮,接入模式、可选
协议、默认端点与分流规则都来自 profile(按模型分流的供应商显示分流规则编辑
器);编辑弹窗同样适用。未登记专属图标 / 配色的平台使用通用图标与中性配色。
平台按钮分三行:国际平台、国产厂商、多模型聚合平台(OpenCode 与平台清单中
登记的其他多协议供应商)。没有内置模型列表的供应商不预填模型白名单(此前
回落 Claude 模型列表,新账号只接受这些模型),API Key 输入框也不再显示
Claude 的占位符与说明。
AccountPlatform / GroupPlatform 类型放宽为"内置平台 | 任意字符串"。新登记
平台只需重新生成内置清单,无需修改前端代码。
另修正编辑弹窗两处遗漏 MiniMax 的默认端点回退(清空 Base URL 时曾回落到
Anthropic 默认地址)。
测试:credentialsBuilder 以改动前实现为基准,逐一比较全部平台 × 接入模式 ×
协议的默认端点与各判断;替换清单后平台选项、展示名、额度列表随之更新;创建 /
编辑弹窗对走通用表单的供应商(按模型 / 按入站两种分流)提交的凭证。更新了
两个固定旧列表写法的测试。平台清单与账号表单的测试加入 CI 前端关键测试列表
(FRONTEND_CRITICAL_VITEST)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 10:10:33 +08:00
Wesley Liddick
3e69643392
Merge pull request #7721 from ouchihao/codex/bug-fractional-byte-rate
...
fix(ops): retain byte units for sub-byte throughput
2026-10-08 13:51:52 +08:00
Wesley Liddick
3a012ac0ce
Merge pull request #7725 from ouchihao/codex/bug-select-disabled-open
...
fix(ui): close selectors when they become disabled
2026-10-08 13:51:40 +08:00
Wesley Liddick
80dd7288a6
Merge pull request #7728 from ouchihao/codex/bug-oauth-code-unmount
...
fix(auth): avoid starting OAuth code cooldowns after unmount
2026-10-08 13:51:30 +08:00
Wesley Liddick
5a6e826f83
Merge pull request #7716 from ouchihao/codex/bug-scaled-price-exponent
...
fix(pricing): preserve exponents when trimming scaled prices
2026-10-08 13:51:19 +08:00
Wesley Liddick
d068b866f3
Merge pull request #7718 from ouchihao/codex/bug-bulk-user-error-message
...
fix(users): show normalized errors when bulk updating limits
2026-10-08 13:51:05 +08:00
Wesley Liddick
a618338987
Merge pull request #7719 from ouchihao/codex/bug-notify-email-timers
...
fix(profile): ignore obsolete notification email code responses
2026-10-08 13:50:54 +08:00
Wesley Liddick
b0c2c4d623
Merge pull request #7720 from ouchihao/codex/bug-usage-zero-rate
...
fix(usage): preserve zero user multipliers in cost details
2026-10-08 13:50:39 +08:00
Wesley Liddick
9663b5ccf0
Merge pull request #7722 from ouchihao/codex/bug-announcement-read-failure
...
fix(announcements): report failed read confirmations accurately
2026-10-08 13:50:19 +08:00
Wesley Liddick
6cfa0f4ef8
Merge pull request #7723 from ouchihao/codex/bug-batch-image-access-retry
...
fix(batch-image): allow access lookup retries after request failures
2026-10-08 13:50:08 +08:00
Wesley Liddick
3149d62851
Merge pull request #7724 from ouchihao/codex/bug-cleanup-task-race
...
fix(usage): ignore obsolete cleanup task list responses
2026-10-08 13:49:58 +08:00
Wesley Liddick
0b51cbe15d
Merge pull request #7729 from ouchihao/codex/bug-backup-polling-unmount
...
fix(backup): prevent polling from restarting after navigation
2026-10-08 13:49:48 +08:00
Wesley Liddick
3dc2a9c371
Merge pull request #7731 from ouchihao/codex/bug-dialog-escape-stack
...
fix(ui): limit Escape to the most recently opened dialog
2026-10-08 13:49:34 +08:00
Wesley Liddick
2c13fb595e
Merge pull request #7764 from ouchihao/codex/bug-plugin-config-session-race
...
fix(plugins): ignore obsolete configuration UI sessions
2026-10-08 13:49:23 +08:00
Wesley Liddick
068239305e
Merge pull request #7765 from ouchihao/codex/bug-compliance-reset-race
...
fix(auth): keep cleared compliance state isolated from pending requests
2026-10-08 13:49:13 +08:00
Wesley Liddick
9e46f2d77e
Merge pull request #7732 from ouchihao/codex/bug-step-up-concurrent-prompts
...
fix(auth): share pending step-up verification prompts
2026-10-08 13:48:52 +08:00
Wesley Liddick
745ff1d3ca
Merge pull request #7911 from lyy0709/codex/usage-output-tps
...
feat(usage): add output TPS to usage logs and ops dashboard
2026-10-08 11:40:15 +08:00
Wesley Liddick
0ac774e378
Merge pull request #7853 from wucm667/feat/issue-7847-compact-account-filters
...
feat(accounts): compact account search and filters
2026-10-08 11:39:40 +08:00
Wesley Liddick
ba3af61251
Merge pull request #7897 from wucm667/fix/issue-7894-long-context-marker
...
fix(usage): replace misleading long-context multiplier badge
2026-10-08 11:37:40 +08:00
Wesley Liddick
48c647b5d2
Merge pull request #7833 from ShanYi-Hui/fix/preserve-email-binding-draft
...
fix(profile): preserve email binding draft during user refresh
2026-10-08 11:37:25 +08:00
Wesley Liddick
b94974467b
Merge pull request #7818 from ouchihao/codex/bug-custom-page-request-race
...
fix(custom-pages): ignore obsolete Markdown responses
2026-10-08 11:37:11 +08:00
Wesley Liddick
4747827e35
Merge pull request #7819 from ouchihao/codex/bug-stripe-payment-unmount
...
fix(payment): stop late Stripe callbacks after leaving the page
2026-10-08 11:36:59 +08:00
Wesley Liddick
f3bcad3c33
Merge pull request #7839 from ouchihao/codex/bug-scheduled-results-race
...
fix(admin): keep scheduled test results scoped to the expanded plan
2026-10-08 11:36:33 +08:00
Wesley Liddick
2c6bd63de9
Merge pull request #7840 from ouchihao/codex/bug-monitor-template-list-race
...
fix(monitor): ignore obsolete template manager list responses
2026-10-08 11:36:19 +08:00
Wesley Liddick
02aad478f3
Merge pull request #7841 from ouchihao/codex/bug-alert-events-pagination-race
...
fix(ops): discard stale alert event pages after filter changes
2026-10-08 11:36:07 +08:00
Wesley Liddick
486b226b69
Merge pull request #7842 from ouchihao/codex/bug-ops-settings-load-guard
...
fix(ops): require loaded settings before saving
2026-10-08 11:35:56 +08:00
Wesley Liddick
d1202bea5f
Merge pull request #7843 from ouchihao/codex/bug-alert-rule-integer-duration
...
fix(ops): validate alert rule durations as whole minutes
2026-10-08 11:35:42 +08:00
Wesley Liddick
1865f28469
Merge pull request #7900 from ouchihao/codex/bug-rpm-edit-number
...
fix(groups): preserve numeric values when editing RPM overrides
2026-10-08 11:35:27 +08:00
Wesley Liddick
c2f0edc137
Merge pull request #7901 from ouchihao/codex/bug-airwallex-navigation
...
fix(payment): stop Airwallex checkout after leaving the page
2026-10-08 11:35:15 +08:00
Wesley Liddick
cdbf1d6f4d
Merge pull request #7902 from ouchihao/codex/bug-passthrough-toggle-state
...
fix(admin): use the saved passthrough rule enabled state
2026-10-08 11:35:01 +08:00
Wesley Liddick
b126b94525
Merge pull request #7903 from ouchihao/codex/bug-profile-username-draft
...
fix(profile): preserve username edits made during save
2026-10-08 11:34:49 +08:00
Wesley Liddick
7fc5332b45
Merge pull request #7904 from ouchihao/codex/bug-group-rate-load-race
...
fix(groups): ignore stale rate multiplier loads
2026-10-08 11:34:38 +08:00
Wesley Liddick
4bcad0657b
Merge pull request #7800 from duckducktw/fix/pricing-entry-autofill-append
...
fix(channels): 追加模型时不再改写条目已留空的价格
2026-10-08 11:34:17 +08:00
Wesley Liddick
3c274768c1
Merge pull request #7889 from aishangwuji/fix/opencode-zen-routing-and-unsupported-models
...
fix(opencode): correct Zen qwen3.8-max endpoint and reject unsupported models
2026-10-08 11:32:11 +08:00
Wesley Liddick
bbf1d37783
Merge pull request #7891 from aishangwuji/fix/opencode-go-usage-retry-after-and-403
...
fix(opencode): cap Retry-After backoff at 24h and report neutral 403
2026-10-08 11:31:40 +08:00
lyy0709
18182f1127
style(ops): align output TPS tooltip indentation
2026-10-07 13:06:35 -07:00
lyy0709
1817a8428a
feat(ops): show per-request output TPS percentiles
2026-10-07 13:06:19 -07:00
lyy0709
6f6a27f9c6
feat(usage): show per-request output TPS by default
2026-10-07 11:35:03 -07:00
chihao.ou
8811c125ec
fix(groups): ignore stale rate multiplier loads
2026-10-07 14:57:52 +08:00
chihao.ou
3f2f66f328
fix(profile): preserve username edits made during save
2026-10-07 14:54:14 +08:00
chihao.ou
f022a04573
fix(admin): use the saved passthrough rule enabled state
2026-10-07 14:53:09 +08:00
chihao.ou
795a7e2783
fix(payment): stop Airwallex checkout after leaving the page
2026-10-07 14:51:46 +08:00
chihao.ou
7b1aa93148
fix(groups): preserve numeric values when editing RPM overrides
2026-10-07 14:50:53 +08:00
wucm667
d5f490e106
fix(usage): replace misleading long-context multiplier badge
2026-10-07 10:48:38 +08:00
shaw
0f9d460dc6
fix(deps): resolve frontend audit failures (vue, source-map-js, xlsx exceptions)
...
- Bump vue to ^3.5.43 so @vue/server-renderer is >= 3.5.42
(GHSA-g2v6-rqmx-r4w6).
- Override source-map-js to >= 1.2.2 (GHSA-68fv-2mgg-jv7q).
- Renew the expired xlsx exceptions until 2027-01-06: xlsx has no patched
release on npm and is only used for XLSX.write export in the admin usage
view; both advisories require parsing a crafted file and no read path exists.
Lockfile regenerated with pnpm 9 to match CI.
2026-10-07 09:44:01 +08:00
ASWJ
df89228c2d
fix(opencode): report 403 as neutral forbidden in usage snapshot
2026-10-06 23:57:15 +08:00
ASWJ
0dccd7b6f5
fix(opencode): correct Zen qwen3.8-max endpoint and reject unsupported models
...
- Route qwen3.8-max to Chat Completions on OpenCode Zen mode instead of Messages
- Fast-reject unsupported model families (gemini-*, jev-*) with HTTP 400 on OpenCode gateway to avoid upstream 404 failovers and strike accumulation
- Sync frontend DEFAULT_OPENCODE_ZEN_PROTOCOL_RULES with backend
2026-10-06 23:18:57 +08:00