fix(grok): 让跨客户端消息映射服从配置开关

This commit is contained in:
IanShaw027
2026-08-07 13:43:02 +08:00
parent 43391de925
commit e9aaa325fa
2 changed files with 25 additions and 11 deletions
@@ -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)
@@ -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"))
}