QTom
b155bc564b
fix(antigravity): 修复批量刷新令牌不设置隐私模式的问题
...
- refreshSingleAccount ProjectIDMissing 提前返回前补上 EnsureAntigravityPrivacy 调用
- EnsureAntigravityPrivacy 跳过条件从"有任何值"改为"仅 privacy_set 成功时跳过",
privacy_set_failed 允许重试,对齐 OpenAI shouldSkipOpenAIPrivacyEnsure 的行为
- 后台 TokenRefreshService.ensureAntigravityPrivacy 同步修改
- ExchangeCode/ValidateRefreshToken 获得令牌后立即调用 setAntigravityPrivacy,
不依赖后续账号创建流程
Made-with: Cursor
2026-04-01 12:24:52 +08:00
win
58ad47ba80
fix: 对齐 Claude Code 2.1.88 源码指纹
...
- 1P event_logging/batch 添加 OAuth Bearer auth header
- DD hostname 改为固定 "claude-code"(与真实 CLI 一致)
- 事件名对齐真实 CLI: tengu_api_query/tengu_api_success/tengu_api_error/tengu_tool_use_success
- DD header 大小写改为 DD-API-KEY
- ResponseHeaderTimeout 300s → 600s(与真实 CLI 10min 超时对齐)
2026-04-01 08:53:39 +08:00
Wesley Liddick
055c48ab33
Merge pull request #1262 from InCerryGit/main
...
fix(openai): preserve bare gpt-5.3-codex-spark across forwarding paths
2026-04-01 08:31:12 +08:00
Wesley Liddick
6663e1eda6
Merge pull request #1420 from YanzheL/fix/1202-gemini-customtools-404
...
Fix Gemini CLI 404s for gemini-3.1-pro-preview-customtools
2026-04-01 08:30:40 +08:00
win
d8d8adb37f
feat: 移除 Node.js TLS 代理依赖,全部走 Go 原生 utls 指纹
...
- Do() 路由从 doViaNodeTLSProxy(转发到 localhost:3456 Node.js 进程)
改为 doWithTLSFingerprint(直接使用 Go utls dialer),解决 h2 connect
timeout 问题(Node.js proxy 的 H2 路径不支持 per-account 代理隧道)
- 新增 internal/pkg/telemetry 包,从 proxy.js 移植全部遥测逻辑:
Anthropic event_logging/batch + Datadog log intake + 虚拟主机身份 +
会话状态管理 + process metrics 模拟
- 保留 proxy.js 中的 H1 降级修复作为备用
2026-04-01 08:24:49 +08:00
YanzheL
649afef512
fix(handler): fallback known gemini models on v1beta 404
2026-04-01 02:20:13 +08:00
YanzheL
4514f3fc11
fix(gemini): resolve customtools alias in mapping lookup
2026-04-01 02:19:42 +08:00
YanzheL
095bef9554
fix(gemini): add customtools fallback metadata
2026-04-01 02:19:10 +08:00
win
b856586412
修复h1
CI / test (push) Failing after 16m30s
CI / golangci-lint (push) Failing after 4s
Security Scan / backend-security (push) Failing after 1m35s
Security Scan / frontend-security (push) Failing after 1m31s
2026-04-01 01:35:49 +08:00
YanzheL
f00351c106
fix(openai): sanitize empty base64 input images
2026-04-01 00:46:38 +08:00
YanzheL
936fce68d0
fix(apicompat): skip empty base64 image URLs
2026-04-01 00:46:16 +08:00
YanzheL
d978ac97f1
test(antigravity): cover mixed web search transforms
2026-04-01 00:46:14 +08:00
YanzheL
dd5978f222
fix(gemini): normalize ai studio google search tools
2026-04-01 00:45:56 +08:00
YanzheL
0ebe0ce585
fix(gemini): preserve google search in Claude compat tools
2026-04-01 00:33:39 +08:00
YanzheL
c8cfad7c00
fix(antigravity): preserve google search with function tools
2026-04-01 00:33:16 +08:00
win
1e19d9caca
feat: 行为模拟补全 — GrowthBook/PolicyLimits 轮询 + tengu_exit
...
CI / test (push) Failing after 7s
CI / golangci-lint (push) Failing after 7s
Security Scan / backend-security (push) Failing after 6s
Security Scan / frontend-security (push) Failing after 13s
补全真实 CLI 的后台行为模式,消除关联分析缺口:
1. GrowthBook SDK 轮询: 每 20min GET /sub/features/sdk-zAZezfDKGoZuXXKe
- 匹配真实 CLI 的 setupPeriodicGrowthBookRefresh()
- 带 OAuth Bearer + anthropic-beta header
- per-account jitter 避免同时请求
2. Policy Limits 轮询: 每 1h GET /api/claude_code/policy_limits
- 匹配真实 CLI 的 refreshPolicyLimits()
- OAuth 认证 + ETag 缓存模式
3. tengu_exit 会话结束: 10min 空闲后触发
- 匹配真实 CLI 进程退出时的遥测事件
- 清理 session 状态允许下次请求重新 bootstrap
4. 重构 bootstrap_preflight.go 为 backgroundSimulator 统一管理
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 22:32:38 +08:00
win
dab4142ab2
feat: Claude Code 2.1.88 源码级指纹还原
...
CI / test (push) Failing after 11s
CI / golangci-lint (push) Failing after 8s
Security Scan / backend-security (push) Failing after 5s
Security Scan / frontend-security (push) Failing after 6s
基于 Claude Code 2.1.88 反编译源码,完成全面的反追踪指纹还原:
1. 版本升级 2.1.87 → 2.1.88(constants.go, identity_service.go, proxy.js)
2. 新增 6 个 beta header 常量(task-budgets, token-efficient-tools, structured-outputs, advisor, web-search)
3. 更新所有组合 beta header 字符串,加入 context-1m, redact-thinking, effort 等
4. 注入 x-anthropic-billing-header attribution block 到 system prompt 首位
- 完整复刻 fingerprint 算法: SHA256(salt + msg[4,7,20] + version)[:3]
- 正确省略 cch 字段(npm 版行为,非原生二进制)
5. X-Claude-Code-Session-Id: 有则同步,无则按 account 生成
6. x-client-request-id: 每请求自动生成 UUID
7. Bootstrap 预热: 模拟 GET /api/claude_cli/bootstrap(per-account, 1h cooldown)
8. 停止无条件剥离 temperature/tool_choice(与真实 CLI 行为一致)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:57:51 +08:00
win
1eed02c325
fix: restore node-tls-proxy routing lost during rebase
...
CI / test (push) Failing after 1m32s
CI / golangci-lint (push) Failing after 1m32s
Security Scan / backend-security (push) Failing after 32s
Security Scan / frontend-security (push) Failing after 32s
- Re-add NodeTLSProxyConfig struct to GatewayConfig (removed by upstream)
- Re-create http_upstream_antigravity.go with proxy routing functions
- Add proxy intercept hook in Do() for api.anthropic.com requests
2026-03-31 14:08:24 +08:00
Wesley Liddick
83a16dec19
Merge pull request #1407 from DaydreamCoding/feat/cache-driven-rpm-buffer
...
feat(gateway): Cache-Driven RPM Buffer
2026-03-31 14:01:23 +08:00
Wesley Liddick
820c531814
Merge pull request #1406 from DaydreamCoding/feat/group-account-filter
...
feat(group-filter): 分组账号过滤控制 — require_oauth_only + require_privacy_set
2026-03-31 14:01:05 +08:00
Wesley Liddick
1727b8df3b
Merge pull request #1404 from DaydreamCoding/feat/antigravity-privacy-on-refresh-fail
...
feat(antigravity): 令牌刷新失败及创建账号时也设置隐私
2026-03-31 14:00:53 +08:00
shaw
a025a15f5d
feat: add refresh button to admin and user dashboard pages
2026-03-31 13:53:49 +08:00
QTom
72e5876c64
feat(gateway): Cache-Driven RPM Buffer
...
- buffer 公式从 baseRPM/5 改为 concurrency + maxSessions
保留 baseRPM/5 作为 floor 向后兼容
- 粘性路径 fallback 新增 [StickyCacheMiss] 结构化日志
reason: rpm_red / gate_check / session_limit / wait_queue_full / account_cleared
- session_limit 路径跳过 wait queue 重试(RegisterSession 拒绝无副作用)
- 典型配置 buffer 从 3 提升至 13,大幅减少高峰期 Prompt Cache Miss
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 13:24:22 +08:00
win
d3d885cf75
fix: node-tls-proxy not receiving traffic due to viper BindEnv bug
...
CI / test (push) Failing after 6s
CI / golangci-lint (push) Failing after 5s
Security Scan / backend-security (push) Failing after 5s
Security Scan / frontend-security (push) Failing after 7s
- Add explicit viper.BindEnv() for all gateway.node_tls_proxy.* keys
to fix viper's AutomaticEnv+Unmarshal nested struct bug where env vars
are silently ignored when config.yaml lacks the corresponding section
- Sync proxy.js CLI_VERSION 2.1.84→2.1.87 and BUILD_TIME to match
constants.go, eliminating API/telemetry version mismatch
2026-03-31 13:16:02 +08:00
win
53eaae61a3
fix: TLS fingerprint lifecycle consistency and bump CLI version to 2.1.87
...
- Update User-Agent from claude-cli/2.1.84 to 2.1.87 in constants.go
and identity_service.go to match latest Claude Code binary
- Replace ImpersonateChrome() in OAuth createReqClient with Node.js 24.x
uTLS profile (tlsfingerprint.Profile) to ensure consistent JA3 hash
across token exchange, refresh, and API calls
- Support direct/HTTP-proxy/SOCKS5 proxy modes with uTLS in OAuth client
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 13:14:56 +08:00
QTom
aeed2eb9ad
feat(group-filter): 分组账号过滤控制 — require_oauth_only + require_privacy_set
...
为 OpenAI/Antigravity/Anthropic/Gemini 分组新增两个布尔控制字段:
- require_oauth_only: 创建/更新账号绑定分组时拒绝 apikey 类型加入
- require_privacy_set: 调度选号时跳过 privacy 未成功设置的账号并标记 error
后端:Ent schema 新增字段 + 迁移、Group CRUD 全链路透传、
gateway_service 与 openai_account_scheduler 两套调度路径过滤
前端:创建/编辑表单 toggle 开关(OpenAI/Antigravity/Anthropic/Gemini 平台可见)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 13:04:55 +08:00
QTom
46bc5ca73b
feat(antigravity): 令牌刷新失败及创建账号时也设置隐私
...
- token_refresh: 不可重试错误和重试耗尽两条路径添加 ensureAntigravityPrivacy
- admin_service: CreateAccount 为 Antigravity OAuth 账号异步设置隐私
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 11:42:23 +08:00
InCerry
0b3feb9d4c
fix(openai): resolve Anthropic compat mapping from normalized model
...
Anthropic compat requests normalize reasoning suffixes before forwarding, but the account mapping step was still using the raw request model. Resolve billing and upstream models from the normalized compat model so explicit account mappings win over fallback defaults.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-31 10:33:28 +08:00
InCerry
ca8692c747
Merge remote-tracking branch 'upstream/main'
...
# Conflicts:
# backend/internal/service/openai_gateway_messages.go
2026-03-31 09:38:40 +08:00
win
6620b56b5a
fix: encode ls model credits topic values as base64
CI / test (push) Failing after 3s
CI / golangci-lint (push) Failing after 2s
Security Scan / backend-security (push) Failing after 3s
Security Scan / frontend-security (push) Failing after 3s
2026-03-31 08:34:00 +08:00
win
0e9f780815
fix: surface ls quota exhaustion in antigravity streams
CI / test (push) Failing after 3s
CI / golangci-lint (push) Failing after 3s
Security Scan / backend-security (push) Failing after 4s
Security Scan / frontend-security (push) Failing after 3s
2026-03-31 01:26:48 +08:00
win
860fc736bf
Merge branch 'codex/internal-sync-20260330'
CI / test (push) Failing after 16m34s
CI / golangci-lint (push) Failing after 1m33s
Security Scan / backend-security (push) Failing after 33s
Security Scan / frontend-security (push) Failing after 1m32s
2026-03-31 00:00:49 +08:00
weak-fox
a61d58716f
fix(admin): exclude rate-limited accounts from active filter
2026-03-31 00:00:46 +08:00
win
677556ba05
Merge remote-tracking branch 'internal/main'
2026-03-31 00:00:42 +08:00
win
0cda0e0b96
feat: add dockerized antigravity ls worker mode
CI / test (push) Failing after 8s
CI / golangci-lint (push) Failing after 5s
Security Scan / backend-security (push) Failing after 7s
Security Scan / frontend-security (push) Failing after 6s
2026-03-30 23:57:25 +08:00
qingyuzhang
6b646b6127
fix(openai): fail over passthrough 429 and 529
2026-03-30 22:29:26 +08:00
shaw
318aa5e0d3
feat: add cache hit rate line to token usage trend chart
...
Add a purple dashed line showing cache hit rate percentage
(cache_read / (cache_read + cache_creation)) on a secondary
right Y-axis (0-100%). Applies to both user and admin dashboards.
2026-03-30 21:43:07 +08:00
win
8eb2bbcb20
feat: 从 main 分支迁移 Claude 指纹常量和实例级隔离配置
...
CI / test (push) Failing after 5s
CI / golangci-lint (push) Failing after 13s
Security Scan / backend-security (push) Failing after 7s
Security Scan / frontend-security (push) Failing after 7s
将 main 分支的 Claude/Anthropic 相关逆向工作迁移到 codex 分支:
- claude/constants.go: 添加 4 个新 Beta 常量 + 版本升级至 2.1.84/0.74.0
- config.go: 添加 InstanceSalt 和 FingerprintDefaultsConfig 配置
- identity_service: 版本升级 + instanceSalt 支持 + ApplyDefaultFingerprintOverrides
- wire_gen.go: 初始化指纹覆盖 + 使用 NewIdentityServiceWithSalt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 19:04:52 +08:00
haruka
49e99e9d51
fix: resolve errcheck lint for sync.Map type assertion
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:44:15 +08:00
shaw
1dfd974432
chore: update readme
CI / test (push) Failing after 4s
CI / golangci-lint (push) Failing after 6s
Security Scan / backend-security (push) Failing after 5s
Security Scan / frontend-security (push) Failing after 4s
2026-03-30 16:28:31 +08:00
shaw
cc396f59cf
chore: update readme
2026-03-30 16:24:29 +08:00
haruka
ad2cd97618
fix: resolve refresh token race condition causing false invalid_grant errors
...
When multiple goroutines/workers concurrently refresh the same OAuth token,
the first succeeds but invalidates the old refresh_token (rotation). Subsequent
attempts using the stale token get invalid_grant, which was incorrectly treated
as non-retryable, permanently marking the account as ERROR.
Three complementary fixes:
1. Race-aware recovery: after invalid_grant, re-read DB to check if another
worker already refreshed (refresh_token changed) — return success instead
of error
2. In-process mutex (sync.Map of per-account locks): prevents concurrent
refreshes within the same process, complementing the Redis distributed lock
3. Increase default lock TTL from 30s to 60s to reduce TTL-expiry races
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:23:38 +08:00
github-actions[bot]
aa8b9cc508
chore: sync VERSION to 0.1.106 [skip ci]
2026-03-30 08:13:49 +00:00
Wesley Liddick
6a2cf09ee0
Merge pull request #1349 from touwaeriol/feat/antigravity-internal500-penalty
...
feat(antigravity): progressive penalty for consecutive INTERNAL 500 errors
2026-03-30 15:54:04 +08:00
Wesley Liddick
c6fd88116b
Merge pull request #1354 from wucm667/fix/billing-use-requested-model
...
fix(billing): 计费始终使用用户请求的原始模型,而非映射后的上游模型
2026-03-30 15:52:31 +08:00
Wesley Liddick
8f0dbdeaba
Merge pull request #1343 from yilinyo/fix/api-key-unique-conflict-after-soft-delete
...
fix(api-key):软删除apikey后key没有被释放后续无法再自定义相同的key
2026-03-30 15:47:28 +08:00
Wesley Liddick
007c09b84e
Merge pull request #1338 from LvyuanW/fix/safari-ops-log-select
...
fix(admin): fix Safari system log select height
2026-03-30 15:45:35 +08:00
Wesley Liddick
73f3c068ef
Merge pull request #1344 from 7836246/fix/i18n-sora-storage-missing-keys
...
fix(i18n): 修复 Sora 存储配置页面表格列头「存储桶」翻译缺失
2026-03-30 15:45:03 +08:00
Wesley Liddick
9a92fa4a60
Merge pull request #1370 from YanzheL/fix/1320-openai-messages-gpt54-xhigh
...
fix(gateway): normalize gpt-5.4-xhigh for /v1/messages
2026-03-30 15:44:34 +08:00
Wesley Liddick
576af710be
Merge pull request #1352 from StarryKira/feat/add-file-upload-oauth-scope
...
Feat/add file upload oauth scope
2026-03-30 15:41:18 +08:00