From e9aaa325fa88d042c722537045d03628c991c04e Mon Sep 17 00:00:00 2001 From: IanShaw027 Date: Fri, 7 Aug 2026 13:43:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(grok):=20=E8=AE=A9=E8=B7=A8=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E6=B6=88=E6=81=AF=E6=98=A0=E5=B0=84=E6=9C=8D?= =?UTF-8?q?=E4=BB=8E=E9=85=8D=E7=BD=AE=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/openai_messages_dispatch.go | 10 ++++--- .../service/openai_messages_dispatch_test.go | 26 +++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/backend/internal/service/openai_messages_dispatch.go b/backend/internal/service/openai_messages_dispatch.go index f72b84a7f3..aedfb1b3f7 100644 --- a/backend/internal/service/openai_messages_dispatch.go +++ b/backend/internal/service/openai_messages_dispatch.go @@ -69,10 +69,14 @@ func (g *Group) ResolveMessagesDispatchModel(requestedModel string) string { } if g.Platform == PlatformGrok { - if claudeMessagesDispatchFamily(requestedModel) != "" { - return xai.DefaultModelMapping()["grok"] + if claudeMessagesDispatchFamily(requestedModel) == "" { + return "" } - return "" + opts := xai.RuntimeModelMappingOptions() + if !opts.EnableCrossClientMap { + return "" + } + return xai.ModelMappingWithOptions(opts)["claude-*"] } cfg := normalizeOpenAIMessagesDispatchModelConfig(g.MessagesDispatchModelConfig) diff --git a/backend/internal/service/openai_messages_dispatch_test.go b/backend/internal/service/openai_messages_dispatch_test.go index db7804a4f3..fd6dea86fa 100644 --- a/backend/internal/service/openai_messages_dispatch_test.go +++ b/backend/internal/service/openai_messages_dispatch_test.go @@ -1,8 +1,11 @@ package service -import "testing" +import ( + "testing" -import "github.com/stretchr/testify/require" + "github.com/Wei-Shaw/sub2api/internal/pkg/xai" + "github.com/stretchr/testify/require" +) func TestNormalizeOpenAIMessagesDispatchModelConfig(t *testing.T) { t.Parallel() @@ -26,14 +29,21 @@ func TestNormalizeOpenAIMessagesDispatchModelConfig(t *testing.T) { }, cfg.ExactModelMappings) } -func TestGroupResolveMessagesDispatchModel_GrokMapsClaudeFamilyToGrok(t *testing.T) { - t.Parallel() - +func TestGroupResolveMessagesDispatchModel_GrokRequiresCrossClientMapping(t *testing.T) { + original := xai.RuntimeModelMappingOptions() + t.Cleanup(func() { xai.SetRuntimeModelMappingOptions(original) }) group := &Group{Platform: PlatformGrok} - require.Equal(t, "grok-4.5", group.ResolveMessagesDispatchModel("claude-sonnet-4-5")) - require.Equal(t, "grok-4.5", group.ResolveMessagesDispatchModel("claude-opus-4-6")) - require.Equal(t, "grok-4.5", group.ResolveMessagesDispatchModel("claude-haiku-4-5")) + xai.SetRuntimeModelMappingOptions(xai.ModelMappingOptions{}) + require.Empty(t, group.ResolveMessagesDispatchModel("claude-sonnet-4-5")) + + xai.SetRuntimeModelMappingOptions(xai.ModelMappingOptions{ + DefaultText: "grok-build-0.1", + EnableCrossClientMap: true, + }) + require.Equal(t, "grok-build-0.1", group.ResolveMessagesDispatchModel("claude-sonnet-4-5")) + require.Equal(t, "grok-build-0.1", group.ResolveMessagesDispatchModel("claude-opus-4-6")) + require.Equal(t, "grok-build-0.1", group.ResolveMessagesDispatchModel("claude-haiku-4-5")) require.Empty(t, group.ResolveMessagesDispatchModel("grok")) require.Empty(t, group.ResolveMessagesDispatchModel("gpt-5.3-codex")) }