























@@ -853,6 +853,32 @@ describe("model-selection", () => {
853853ref: { provider: "opencode-go", model: "kimi-k2.6" },
854854});
855855});
856+857+it("resolves slash-form aliases before provider/model parsing", () => {
858+const cfg = {
859+agents: {
860+defaults: {
861+models: {
862+"openai/xiaomi/mimo-v2-pro-mit": {
863+alias: "xiaomi/mimo-v2-pro-mit",
864+},
865+},
866+},
867+},
868+} as OpenClawConfig;
869+870+const result = resolveAllowedModelRef({
871+ cfg,
872+catalog: [],
873+raw: "xiaomi/mimo-v2-pro-mit",
874+defaultProvider: "openai",
875+});
876+877+expect(result).toEqual({
878+key: "openai/xiaomi/mimo-v2-pro-mit",
879+ref: { provider: "openai", model: "xiaomi/mimo-v2-pro-mit" },
880+});
881+});
856882});
857883858884describe("resolveModelRefFromString", () => {
@@ -882,6 +908,30 @@ describe("model-selection", () => {
882908expect(resolved?.ref).toEqual({ provider: "openai", model: "gpt-4" });
883909});
884910911+it("prefers slash-form aliases over direct provider/model parsing", () => {
912+const index = {
913+byAlias: new Map([
914+[
915+"xiaomi/mimo-v2-pro-mit",
916+{
917+alias: "xiaomi/mimo-v2-pro-mit",
918+ref: { provider: "openai", model: "xiaomi/mimo-v2-pro-mit" },
919+},
920+],
921+]),
922+byKey: new Map(),
923+};
924+925+const resolved = resolveModelRefFromString({
926+raw: "xiaomi/mimo-v2-pro-mit",
927+defaultProvider: "anthropic",
928+aliasIndex: index,
929+});
930+931+expect(resolved?.ref).toEqual({ provider: "openai", model: "xiaomi/mimo-v2-pro-mit" });
932+expect(resolved?.alias).toBe("xiaomi/mimo-v2-pro-mit");
933+});
934+885935it("strips trailing profile suffix for simple model refs", () => {
886936const resolved = resolveModelRefFromString({
887937raw: "gpt-5@myprofile",
@@ -1090,6 +1140,29 @@ describe("model-selection", () => {
10901140}
10911141});
109211421143+it("prefers slash-form aliases for configured default models", () => {
1144+const cfg = {
1145+agents: {
1146+defaults: {
1147+model: { primary: "xiaomi/mimo-v2-pro-mit" },
1148+models: {
1149+"openai/xiaomi/mimo-v2-pro-mit": {
1150+alias: "xiaomi/mimo-v2-pro-mit",
1151+},
1152+},
1153+},
1154+},
1155+} as OpenClawConfig;
1156+1157+const result = resolveConfiguredModelRef({
1158+ cfg,
1159+defaultProvider: "anthropic",
1160+defaultModel: "claude-sonnet-4-6",
1161+});
1162+1163+expect(result).toEqual({ provider: "openai", model: "xiaomi/mimo-v2-pro-mit" });
1164+});
1165+10931166it("should use default provider/model if config is empty", () => {
10941167const cfg: Partial<OpenClawConfig> = {};
10951168const result = resolveConfiguredModelRef({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。