IanShaw027
|
5199a610af
|
test(grok): 恢复媒体资格失败关闭契约
|
2026-08-07 16:30:55 +08:00 |
|
IanShaw027
|
b59a3df5b5
|
fix(grok): 视频在 status 返回 video.url 后再按上游参数计费
创建/generations 仅绑定账号并缓存 create-time 定价快照;轮询到
video.url / download_url 等成功 URL 时一次性扣费。时长/分辨率/模型
优先取上游 status 字段,缺失则回退创建快照,再套默认 8s/480p。
Redis SetNX + request_id 去重,避免重复轮询双扣。
|
2026-08-07 16:29:57 +08:00 |
|
IanShaw027
|
25d2b03e90
|
fix(grok): 加固 OAuth 会话共享与一次性消费
|
2026-08-07 16:29:48 +08:00 |
|
Wesley Liddick
|
32e4de7942
|
Merge pull request #5231 from fengshao1227/fix/upstream-dial-timeout
fix(upstream): set explicit TCP dial timeout on upstream transports
|
2026-08-07 16:24:53 +08:00 |
|
Wesley Liddick
|
8f55e0a7cd
|
Merge pull request #5267 from wucm667/fix/issue-5264-model-plaza-composite
fix(model-plaza): show Composite group models
|
2026-08-07 16:17:52 +08:00 |
|
Wesley Liddick
|
5ec11885d1
|
Merge pull request #5307 from lenzhang/fix/ws-prewarm-continuation
fix(ws): allow Codex prewarm continuation
|
2026-08-07 16:15:11 +08:00 |
|
Wesley Liddick
|
dce0f6b4e3
|
Merge pull request #5337 from wucm667/fix/issue-5331-oauth-count-tokens-fallback
fix: avoid cooling OAuth accounts for HTML count token errors
|
2026-08-07 16:14:48 +08:00 |
|
Wesley Liddick
|
22ef761c27
|
Merge pull request #5309 from wucm667/fix/issue-5308-antigravity-gemini36
fix(antigravity): support Gemini 3.6 Flash models
|
2026-08-07 16:14:37 +08:00 |
|
Wesley Liddick
|
865002fd2c
|
Merge pull request #5317 from wucm667/fix/issue-5314-grok-video-task-id
fix(grok): bind video owners for task_id receipts
|
2026-08-07 16:14:25 +08:00 |
|
IanShaw027
|
a061a758f4
|
fix(grok): 修复调度阈值初始化与刷新测试回归
|
2026-08-07 16:10:31 +08:00 |
|
IanShaw027
|
79df1647d4
|
feat(grok): 账单绝对金额、调度阈值 UI、搜索/Voice 计费与 /v1/web_search
- BillingSummary 输出 prepaid/monthly_used/on_demand 绝对金额,并映射官方 7d/30d 进度条
- 账号编辑页支持 credentials.account_scheduling_threshold 覆盖;Settings 文案细化
- groups.search_price_per_1k + 管理端/缓存全链路;SearchCount/AudioUsage 请求级计费
- Voice TTS/STT/Realtime 成功路径 RecordUsage;独立 /v1/web_search 原生 Grok 搜索
|
2026-08-07 15:52:55 +08:00 |
|
IanShaw027
|
99ad01f6de
|
feat(grok): 网关 Voice TTS/STT/Realtime 与分组音频定价
- 中继 xAI Voice HTTP(/tts /stt /custom-voices)与 Realtime WS(/realtime)
仅 Grok 分组可用;账号选调度沿用 chat 能力,不依赖创作中心
- Voice URL 固定走 api.x.ai(CLI proxy base 自动回落)
- 分组级 audio_realtime / TTS / STT 单价:schema + migration 218 +
admin API + GroupsView 表单与 i18n(无创作中心 UI)
|
2026-08-07 15:08:39 +08:00 |
|
IanShaw027
|
a397724f69
|
refactor(grok): 移除未接入的免费恢复状态
|
2026-08-07 15:03:04 +08:00 |
|
IanShaw027
|
2e20ea4c87
|
fix(grok): 保持模型级免费额度隔离
|
2026-08-07 14:55:41 +08:00 |
|
IanShaw027
|
7c62382d04
|
feat(grok): 吸收调度阈值、配额解析、批量用量与 CLI 身份
从 personal-dev 取优并接线到 feat/grok-complete-integration:
- 调度阈值:grok_sched_* 写入、ApplyAccountSchedulingThreshold、
account_scheduling_thresholds 设置与 Settings UI、网关过滤
- 配额头:x-rate-limit 别名、相对秒 reset、tier/entitlement 扩展
- 批量 usage:GetUsageBatch + POST /usage/batch + AccountsView 合并加载
- CLI 身份:xai.cli_identity 统一 pin/UA;service 层 applyGrokCLIHeaders
与 transport 最终改写对齐;media eligibility 模块落地
- UsageCell:月度 cents→USD 与 30d 进度条展示
保留既有 failure taxonomy / sticky / free recovery 等 HEAD cools。
|
2026-08-07 14:53:18 +08:00 |
|
IanShaw027
|
0316994c52
|
fix(grok): 修正授权与模型映射边界
|
2026-08-07 14:50:02 +08:00 |
|
IanShaw027
|
2c8836e40b
|
fix(grok): 完善按模型视频价格矩阵
|
2026-08-07 14:42:00 +08:00 |
|
IanShaw027
|
d0930c4bdb
|
fix(grok): 完善密码与SSO授权能力控制
|
2026-08-07 14:13:07 +08:00 |
|
IanShaw027
|
2413441b5f
|
feat(grok): P2 模型额度软封、spending reauth、粘连分轨与观测模型
- free-usage 带模型名时按账号+模型软封,其它模型仍可调度
- spending-limit 使用 24h 冷却并标记 needs_reauth(extra + SetError)
- sticky affinity 与 upstream prompt_cache_key 分轨,按 model 隔离粘连
- free-usage recovery 轻量提示窗口;配额查询后异步同步 /v1/models 快照
|
2026-08-07 14:06:21 +08:00 |
|
IanShaw027
|
cda6de44da
|
fix(grok): 运行时映射设置即时失效账号缓存
|
2026-08-07 13:59:32 +08:00 |
|
IanShaw027
|
ec9e733606
|
feat(grok): stream idle 换号、team+model 冷却与 RT 刷新打散
- Grok 流默认启用上游读空闲超时,首包前返回可 failover 错误并短冷却
- 同 team_id 账号在 429/free-usage 后对同模型共享进程内冷却,粘连与选号均过滤
- TokenRefreshService 已覆盖 Grok;NeedsRefresh 增加按账号稳定 jitter 防 stampede
|
2026-08-07 13:56:38 +08:00 |
|
IanShaw027
|
dfca6246eb
|
refactor(grok): 将视频模型价纳入 Ent 持久化
|
2026-08-07 13:55:58 +08:00 |
|
IanShaw027
|
e12e0dc1a6
|
feat(grok): 对齐 free-usage/empty 失败分类与 sticky/ReAuth 体验
从 grokcli 吸收 body-first 失败分类(free-usage/empty/billing),
接到现有 temp_unsched 与 failover,保留 content-policy 与 pool_mode。
Grok 粘连/缓存在无显式 session 时可用 previous_response_id;
ReAuth 预填 email---- 并默认密码 tab(密码不落库)。
|
2026-08-07 13:47:09 +08:00 |
|
IanShaw027
|
9bc99e8b6e
|
fix(grok): 防止加权粘连回退绕过免费额度门禁
|
2026-08-07 13:44:56 +08:00 |
|
IanShaw027
|
e9aaa325fa
|
fix(grok): 让跨客户端消息映射服从配置开关
|
2026-08-07 13:43:02 +08:00 |
|
IanShaw027
|
43391de925
|
fix(grok): 打通按模型视频价格计费链路
|
2026-08-07 13:41:34 +08:00 |
|
IanShaw027
|
451abc3aa5
|
feat(grok): 加固媒体计费门控并补齐分组按模型价输入
生成类媒体仅在存在真实 image/video 计费单元时写 usage,避免空结果误扣费。
Create/Update 分组输入支持 video_model_prices,与仓储 JSONB 字段打通。
本阶段不引入假 voice 路由(上游音频路径依赖更广协议层)。
|
2026-08-07 13:08:22 +08:00 |
|
IanShaw027
|
ba58e74b33
|
feat(grok): free 档本地用量软门禁与支付失败临时下线
对明确 free 的 OAuth 账号在调度路径应用可配置用量窗口门禁(统计失败 fail-open)。
402 payment required / 消费上限类 403 继续临时移出调度,管理端探测不走门禁。
|
2026-08-07 13:04:05 +08:00 |
|
IanShaw027
|
eb6c9663e7
|
feat(grok): 视频按模型族配置每秒单价,并补齐管理端映射设置
分组新增 video_model_prices(JSONB);计费优先模型×分辨率覆盖,
其次旧分辨率三列,最后官方按模型族默认价。同步补齐 admin 设置
中的 grok_default_text_model / 跨客户端映射开关,并保持
grok-imagine-video-1.5 请求模型 identity 不被静默改写。
|
2026-08-07 12:44:08 +08:00 |
|
IanShaw027
|
370bdcf695
|
feat(grok): 补齐密码登录与 SSO 校验,统一 OAuth 凭证形态
在 main 既有 SSO→Build 批量导入之上增加 sso-token 校验与账号密码授权。
密码仅用于换取 SSO 再转 Build OAuth,明文与 raw SSO 均不落库。
|
2026-08-07 12:38:49 +08:00 |
|
IanShaw027
|
74249b8fed
|
feat(grok): 模型目录与可配置映射,默认禁止跨厂商暗默改写
补齐 Grok/Imagine 官方模型与别名,并支持运行时默认文本模型。
默认 model_mapping 仅含 Grok 家族;新增 grok_default_text_model 与
grok_cross_client_model_map_enabled,仅在显式开启时将 gpt/claude/codex
等客户端模型名映射到默认文本模型,避免非 Grok 请求被静默改成 grok-4.5。
|
2026-08-07 12:31:14 +08:00 |
|
IanShaw027
|
4a9459d607
|
fix(channel-monitor-v2): 修复 CI gofmt 与 public settings 注入契约
对齐 gofmt,并在 PublicSettingsInjectionPayload 补齐 channel_monitor_mode,
使 SSR 注入字段与 dto.PublicSettings 一致,修复 schema drift 单测失败。
|
2026-08-07 12:02:27 +08:00 |
|
IanShaw027
|
d2d259cb7c
|
feat(channel-monitor-v2): 首次启用静默回填 90m–30d 并修正覆盖判定
从 watermark 恢复 backfill 游标,优先补齐 90m/24h/7d/30d 并在
coverage.bootstrap 暴露进度;coverage_start 跟回填游标而非最早错误时间;
历史起点已覆盖即 coverage_complete,不再因尾部 bucket 对齐滞后误报部分覆盖。
|
2026-08-07 11:53:25 +08:00 |
|
Rain
|
8ea68bd689
|
fix grok chat usage guard parity
|
2026-08-07 11:36:34 +08:00 |
|
IanShaw027
|
4245cb41f4
|
fix(channel-monitor-v2): 修复 CI golangci-lint 与 admin settings 契约测试
处理 rows.Close errcheck、gofmt、空 recover 分支 staticcheck,并同步
GET /api/v1/admin/settings 契约期望中的 mode 与 hide_throughput 字段。
|
2026-08-07 11:21:13 +08:00 |
|
IanShaw027
|
a5beecb92a
|
feat(channel-monitor-v2): 接入模式开关、路由门控与依赖注入
注册 admin/user 路由与 feature/mode 守卫,串联 Wire DI 与设置读写,
公开 channel_monitor_mode 与 hide_throughput 等运行时标志。
|
2026-08-07 11:05:32 +08:00 |
|
IanShaw027
|
ead73264c7
|
feat(channel-monitor-v2): 实现被动聚合、分层保留与只读 API
基于 usage_logs/ops_error_logs 做分钟聚合与 5m/1h/12h/1d rollup,提供
snapshot/matrix/errors/users 等接口;V1 在 mode=v2 时停用主动探测,
并对用户端按需脱敏绝对量与 RPM/TPM。
|
2026-08-07 11:05:32 +08:00 |
|
shaw
|
dbb42881c0
|
fix(openai): default OAuth identity to codex-tui
|
2026-08-07 09:56:03 +08:00 |
|
Puppywang
|
02e50cc22d
|
fix(security): block OAuth account takeover via pending exchange
|
2026-08-07 03:09:57 +08:00 |
|
wucm667
|
ab326c96eb
|
fix(openai-ws): exclude terminal events from TTFT
|
2026-08-07 00:25:37 +08:00 |
|
shaw
|
287a9f386b
|
fix: 修复腾讯验证码票据过期与区域切换
|
2026-08-06 21:27:06 +08:00 |
|
shaw
|
8e102b3a0f
|
fix: 完善腾讯验证码区域适配与 CSP 白名单
修复国内站和国际站 SDK 构造、验证容器、票据重置及动态资源加载问题,并补充认证流程回归测试。
|
2026-08-06 20:34:37 +08:00 |
|
wucm667
|
e93f6b9953
|
fix: avoid cooling OAuth accounts for HTML count token errors
|
2026-08-06 20:31:56 +08:00 |
|
li
|
fe2c265c91
|
fix(identity): validate user-agent before persisting account fingerprint
IdentityService 把客户端 User-Agent 作为账号级持久身份缓存(Redis
fingerprint:<accountID>),覆盖规则是"只升不降"的纯数值版本比较,且对 UA 内容
不做任何合法性校验:
- userAgentVersionRegex 不锚定,能从 claude-cli/999.0.0-local 解析出 999.0.0
- isNewerVersion 只比数值 + 产品名,999.0.0 恒大于任何真实版本
- fingerprintTTL 7 天配合每 24 小时懒续期,活跃账号上的指纹近乎永不过期
- IdentityCache 只有 Get/Set,管理端也没有重置入口
一个本地构建客户端发出 claude-cli/999.0.0-local 即可把账号身份永久钉死。此后
该账号所有上游请求在 HTTP 头与请求体 cc_version 两处都声称这个不存在的版本,
被上游判为非正版客户端并返回不带限流重置头的 429;无重置头又落到 5 秒兜底冷却,
账号池收缩后对外表现为 503 风暴。一条 failover 请求即可连带毒化多个账号——
指纹写入发生在上游调用之前,三次上游尝试全失败也照样毒化。
改动:
- 新增 isAcceptableFingerprintUserAgent,校验 <product>/<major>.<minor>.<patch>
后必须紧跟空白或结束(拒绝 -local/-dev/+build 等本地构建后缀),并对 claude-cli
的主版本号相对 claude.CLICurrentVersion 设上限(挡掉 999 这类哨兵版本)。
非 claude-cli 产品只校验形态,避免误伤其他合法客户端。
- 创建与升级两条路径共用该校验。只在 isNewerVersion 处加校验不够:
createFingerprintFromHeaders 首次创建时同样会原样保存畸形 UA,删键恢复后
账号可被同一客户端立即再次毒化。
- 读取时自愈:缓存中已是畸形 UA 时(本次加固之前写入的),用本次请求的合法 UA
或默认指纹替换并回写。否则存量已中招的账号仍然只能靠手工删 Redis 键恢复。
- 仅在真正阻止了一次写入时记录被拒 UA,便于定位污染源,同时避免被毒化客户端的
高频重试刷屏。
Fixes #5254
|
2026-08-06 15:01:28 +08:00 |
|
Wesley Liddick
|
e08aee49ed
|
Merge pull request #5266 from shentry/fix/transient-streak-rate-dependence
fix(openai): keep transient failure streak from resetting on sparse traffic
|
2026-08-06 14:11:49 +08:00 |
|
Wesley Liddick
|
c9e60d1f26
|
Merge pull request #5031 from keaipiao/fix/easypay-error-utf8
fix(payment): preserve UTF-8 in EasyPay errors
|
2026-08-06 14:10:41 +08:00 |
|
Wesley Liddick
|
47c03c75d8
|
Merge pull request #5232 from fengshao1227/fix/billing-quantize-monetary-scale
fix(billing): quantize usage billing amounts to the NUMERIC(20,8) scale
|
2026-08-06 14:00:04 +08:00 |
|
wucm667
|
5b7a64334f
|
fix(grok): support task IDs for video owner binding
|
2026-08-06 04:30:10 +08:00 |
|
wucm667
|
df249ee5d5
|
fix(scheduler): diagnose legacy OpenAI exclusions
|
2026-08-06 02:54:16 +08:00 |
|
wucm667
|
ce14983133
|
fix(antigravity): support Gemini 3.6 Flash models
|
2026-08-05 22:35:01 +08:00 |
|