Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
516f8f28
Unverified
Commit
516f8f28
authored
Feb 24, 2026
by
Wesley Liddick
Committed by
GitHub
Feb 24, 2026
Browse files
Merge pull request #623 from cagedbird043/fix/antigravity-mapping-upgrade-additions
fix: 补全 Antigravity 模型映射升级与快捷按钮
parents
66148690
076c0006
Changes
4
Show whitespace changes
Inline
Side-by-side
backend/internal/service/account.go
View file @
516f8f28
...
...
@@ -372,6 +372,9 @@ func (a *Account) GetModelMapping() map[string]string {
}
}
if
len
(
result
)
>
0
{
if
a
.
Platform
==
domain
.
PlatformAntigravity
{
ensureAntigravityDefaultPassthrough
(
result
,
"gemini-3-flash"
)
}
return
result
}
}
...
...
@@ -382,6 +385,21 @@ func (a *Account) GetModelMapping() map[string]string {
return
nil
}
func
ensureAntigravityDefaultPassthrough
(
mapping
map
[
string
]
string
,
model
string
)
{
if
mapping
==
nil
||
model
==
""
{
return
}
if
_
,
exists
:=
mapping
[
model
];
exists
{
return
}
for
pattern
:=
range
mapping
{
if
matchWildcard
(
pattern
,
model
)
{
return
}
}
mapping
[
model
]
=
model
}
// IsModelSupported 检查模型是否在 model_mapping 中(支持通配符)
// 如果未配置 mapping,返回 true(允许所有模型)
func
(
a
*
Account
)
IsModelSupported
(
requestedModel
string
)
bool
{
...
...
backend/internal/service/account_wildcard_test.go
View file @
516f8f28
...
...
@@ -267,3 +267,38 @@ func TestAccountGetMappedModel(t *testing.T) {
})
}
}
func
TestAccountGetModelMapping_AntigravityEnsuresGemini3FlashPassthrough
(
t
*
testing
.
T
)
{
account
:=
&
Account
{
Platform
:
PlatformAntigravity
,
Credentials
:
map
[
string
]
any
{
"model_mapping"
:
map
[
string
]
any
{
"gemini-3-pro-high"
:
"gemini-3.1-pro-high"
,
},
},
}
mapping
:=
account
.
GetModelMapping
()
if
mapping
[
"gemini-3-flash"
]
!=
"gemini-3-flash"
{
t
.
Fatalf
(
"expected gemini-3-flash passthrough to be auto-filled, got: %q"
,
mapping
[
"gemini-3-flash"
])
}
}
func
TestAccountGetModelMapping_AntigravityRespectsWildcardOverride
(
t
*
testing
.
T
)
{
account
:=
&
Account
{
Platform
:
PlatformAntigravity
,
Credentials
:
map
[
string
]
any
{
"model_mapping"
:
map
[
string
]
any
{
"gemini-3*"
:
"gemini-3.1-pro-high"
,
},
},
}
mapping
:=
account
.
GetModelMapping
()
if
_
,
exists
:=
mapping
[
"gemini-3-flash"
];
exists
{
t
.
Fatalf
(
"did not expect explicit gemini-3-flash passthrough when wildcard already exists"
)
}
if
mapped
:=
account
.
GetMappedModel
(
"gemini-3-flash"
);
mapped
!=
"gemini-3.1-pro-high"
{
t
.
Fatalf
(
"expected wildcard mapping to stay effective, got: %q"
,
mapped
)
}
}
frontend/src/components/account/BulkEditAccountModal.vue
View file @
516f8f28
...
...
@@ -765,6 +765,31 @@ const presetMappings = [
color
:
'
bg-purple-100 text-purple-700 hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400
'
}
,
{
label
:
'
Sonnet4→4.6
'
,
from
:
'
claude-sonnet-4-20250514
'
,
to
:
'
claude-sonnet-4-6
'
,
color
:
'
bg-sky-100 text-sky-700 hover:bg-sky-200 dark:bg-sky-900/30 dark:text-sky-400
'
}
,
{
label
:
'
Sonnet4.5→4.6
'
,
from
:
'
claude-sonnet-4-5-20250929
'
,
to
:
'
claude-sonnet-4-6
'
,
color
:
'
bg-cyan-100 text-cyan-700 hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400
'
}
,
{
label
:
'
Sonnet3.5→4.6
'
,
from
:
'
claude-3-5-sonnet-20241022
'
,
to
:
'
claude-sonnet-4-6
'
,
color
:
'
bg-teal-100 text-teal-700 hover:bg-teal-200 dark:bg-teal-900/30 dark:text-teal-400
'
}
,
{
label
:
'
Opus4.5→4.6
'
,
from
:
'
claude-opus-4-5-20251101
'
,
to
:
'
claude-opus-4-6-thinking
'
,
color
:
'
bg-violet-100 text-violet-700 hover:bg-violet-200 dark:bg-violet-900/30 dark:text-violet-400
'
}
,
{
label
:
'
Opus->Sonnet
'
,
from
:
'
claude-opus-4-5-20251101
'
,
...
...
@@ -794,6 +819,36 @@ const presetMappings = [
from
:
'
gpt-5.1-codex-max
'
,
to
:
'
gpt-5.1-codex
'
,
color
:
'
bg-pink-100 text-pink-700 hover:bg-pink-200 dark:bg-pink-900/30 dark:text-pink-400
'
}
,
{
label
:
'
3-Pro-Preview→3.1-Pro-High
'
,
from
:
'
gemini-3-pro-preview
'
,
to
:
'
gemini-3.1-pro-high
'
,
color
:
'
bg-amber-100 text-amber-700 hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400
'
}
,
{
label
:
'
3-Pro-High→3.1-Pro-High
'
,
from
:
'
gemini-3-pro-high
'
,
to
:
'
gemini-3.1-pro-high
'
,
color
:
'
bg-orange-100 text-orange-700 hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400
'
}
,
{
label
:
'
3-Pro-Low→3.1-Pro-Low
'
,
from
:
'
gemini-3-pro-low
'
,
to
:
'
gemini-3.1-pro-low
'
,
color
:
'
bg-yellow-100 text-yellow-700 hover:bg-yellow-200 dark:bg-yellow-900/30 dark:text-yellow-400
'
}
,
{
label
:
'
3-Flash透传
'
,
from
:
'
gemini-3-flash
'
,
to
:
'
gemini-3-flash
'
,
color
:
'
bg-lime-100 text-lime-700 hover:bg-lime-200 dark:bg-lime-900/30 dark:text-lime-400
'
}
,
{
label
:
'
2.5-Flash-Lite透传
'
,
from
:
'
gemini-2.5-flash-lite
'
,
to
:
'
gemini-2.5-flash-lite
'
,
color
:
'
bg-green-100 text-green-700 hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400
'
}
]
...
...
frontend/src/composables/useModelWhitelist.ts
View file @
516f8f28
...
...
@@ -287,6 +287,10 @@ const antigravityPresetMappings = [
{
label
:
'
Sonnet→Sonnet
'
,
from
:
'
claude-sonnet-*
'
,
to
:
'
claude-sonnet-4-5
'
,
color
:
'
bg-indigo-100 text-indigo-700 hover:bg-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-400
'
},
{
label
:
'
Opus→Opus
'
,
from
:
'
claude-opus-*
'
,
to
:
'
claude-opus-4-6-thinking
'
,
color
:
'
bg-purple-100 text-purple-700 hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400
'
},
{
label
:
'
Haiku→Sonnet
'
,
from
:
'
claude-haiku-*
'
,
to
:
'
claude-sonnet-4-5
'
,
color
:
'
bg-emerald-100 text-emerald-700 hover:bg-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400
'
},
{
label
:
'
Sonnet4→4.6
'
,
from
:
'
claude-sonnet-4-20250514
'
,
to
:
'
claude-sonnet-4-6
'
,
color
:
'
bg-sky-100 text-sky-700 hover:bg-sky-200 dark:bg-sky-900/30 dark:text-sky-400
'
},
{
label
:
'
Sonnet4.5→4.6
'
,
from
:
'
claude-sonnet-4-5-20250929
'
,
to
:
'
claude-sonnet-4-6
'
,
color
:
'
bg-cyan-100 text-cyan-700 hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400
'
},
{
label
:
'
Sonnet3.5→4.6
'
,
from
:
'
claude-3-5-sonnet-20241022
'
,
to
:
'
claude-sonnet-4-6
'
,
color
:
'
bg-teal-100 text-teal-700 hover:bg-teal-200 dark:bg-teal-900/30 dark:text-teal-400
'
},
{
label
:
'
Opus4.5→4.6
'
,
from
:
'
claude-opus-4-5-20251101
'
,
to
:
'
claude-opus-4-6-thinking
'
,
color
:
'
bg-violet-100 text-violet-700 hover:bg-violet-200 dark:bg-violet-900/30 dark:text-violet-400
'
},
// Gemini 3→3.1 映射
{
label
:
'
3-Pro-Preview→3.1-Pro-High
'
,
from
:
'
gemini-3-pro-preview
'
,
to
:
'
gemini-3.1-pro-high
'
,
color
:
'
bg-amber-100 text-amber-700 hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400
'
},
{
label
:
'
3-Pro-High→3.1-Pro-High
'
,
from
:
'
gemini-3-pro-high
'
,
to
:
'
gemini-3.1-pro-high
'
,
color
:
'
bg-orange-100 text-orange-700 hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400
'
},
...
...
@@ -294,6 +298,8 @@ const antigravityPresetMappings = [
// Gemini 通配符映射
{
label
:
'
Gemini 3→Flash
'
,
from
:
'
gemini-3*
'
,
to
:
'
gemini-3-flash
'
,
color
:
'
bg-yellow-100 text-yellow-700 hover:bg-yellow-200 dark:bg-yellow-900/30 dark:text-yellow-400
'
},
{
label
:
'
Gemini 2.5→Flash
'
,
from
:
'
gemini-2.5*
'
,
to
:
'
gemini-2.5-flash
'
,
color
:
'
bg-orange-100 text-orange-700 hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400
'
},
{
label
:
'
3-Flash透传
'
,
from
:
'
gemini-3-flash
'
,
to
:
'
gemini-3-flash
'
,
color
:
'
bg-lime-100 text-lime-700 hover:bg-lime-200 dark:bg-lime-900/30 dark:text-lime-400
'
},
{
label
:
'
2.5-Flash-Lite透传
'
,
from
:
'
gemini-2.5-flash-lite
'
,
to
:
'
gemini-2.5-flash-lite
'
,
color
:
'
bg-green-100 text-green-700 hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400
'
},
// 精确映射
{
label
:
'
Sonnet 4.5
'
,
from
:
'
claude-sonnet-4-5
'
,
to
:
'
claude-sonnet-4-5
'
,
color
:
'
bg-cyan-100 text-cyan-700 hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400
'
},
{
label
:
'
Opus 4.6-thinking
'
,
from
:
'
claude-opus-4-6-thinking
'
,
to
:
'
claude-opus-4-6-thinking
'
,
color
:
'
bg-pink-100 text-pink-700 hover:bg-pink-200 dark:bg-pink-900/30 dark:text-pink-400
'
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment