diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx
index 290aafa2f..7094f4d0e 100644
--- a/app/(admin)/settings/admin-settings-client.tsx
+++ b/app/(admin)/settings/admin-settings-client.tsx
@@ -168,6 +168,7 @@ type SiteSettings = {
rankingEnabled: boolean;
canvasEnabled: boolean;
canvasDefaultModelId: string | null;
+ canvasAutoModeDefaultModelId: string | null;
};
type NavLink = {
@@ -382,6 +383,7 @@ export function AdminSettingsClient() {
rankingEnabled: true,
canvasEnabled: true,
canvasDefaultModelId: null,
+ canvasAutoModeDefaultModelId: null,
});
useEffect(() => {
@@ -409,6 +411,7 @@ export function AdminSettingsClient() {
rankingEnabled: siteSettingsData.rankingEnabled ?? true,
canvasEnabled: siteSettingsData.canvasEnabled ?? true,
canvasDefaultModelId: siteSettingsData.canvasDefaultModelId || null,
+ canvasAutoModeDefaultModelId: siteSettingsData.canvasAutoModeDefaultModelId || null,
});
}
}, [siteSettingsData]);
@@ -2615,6 +2618,33 @@ export function AdminSettingsClient() {
设置无限画布中用户的默认生图模型。"智能自动"会根据用户需求自动选择最佳模型。
+
+ {/* 智能自动模式下的默认生图模型 */}
+
+
+
+
+ 当用户选择"智能自动"模式时,系统实际使用的生图模型。"系统智能选择"会根据用户意图(如抠图、换背景等)自动路由到最佳模型。
+
+
)}
diff --git a/app/api/site-settings/route.ts b/app/api/site-settings/route.ts
index 552345ac3..8f8252298 100644
--- a/app/api/site-settings/route.ts
+++ b/app/api/site-settings/route.ts
@@ -43,6 +43,7 @@ export async function GET() {
rankingEnabled: true,
canvasEnabled: true,
canvasDefaultModelId: null,
+ canvasAutoModeDefaultModelId: null,
};
const response = NextResponse.json({
@@ -88,6 +89,7 @@ const updateSchema = z.object({
rankingEnabled: z.boolean().optional(),
canvasEnabled: z.boolean().optional(),
canvasDefaultModelId: z.string().nullable().optional(),
+ canvasAutoModeDefaultModelId: z.string().nullable().optional(),
});
// PUT /api/site-settings - 更新网站设置(仅管理员)
@@ -149,6 +151,7 @@ export async function PUT(request: NextRequest) {
rankingEnabled: data.rankingEnabled ?? true,
canvasEnabled: data.canvasEnabled ?? true,
canvasDefaultModelId: data.canvasDefaultModelId,
+ canvasAutoModeDefaultModelId: data.canvasAutoModeDefaultModelId,
updatedBy: session.user.id,
})
.returning();
diff --git a/lib/ai/model-router.ts b/lib/ai/model-router.ts
index 9261ff557..b40e2b384 100644
--- a/lib/ai/model-router.ts
+++ b/lib/ai/model-router.ts
@@ -110,10 +110,36 @@ export async function routeToModel(params: {
// 使用动态导入避免循环依赖
const { getEnabledAiModelsWithProvider } = await import("@/lib/db/queries");
+ const { db } = await import("@/lib/db");
+ const { siteSettings } = await import("@/lib/db/schema");
// 获取所有可用模型
const allModels = await getEnabledAiModelsWithProvider();
console.log("[Model Router] Available models:", allModels.length);
+
+ // 🆕 检查是否有配置的默认生图模型
+ const [settings] = await db.select().from(siteSettings).limit(1);
+ const configuredDefaultModelId = settings?.canvasAutoModeDefaultModelId;
+
+ if (configuredDefaultModelId) {
+ // 如果配置了默认模型,直接使用该模型
+ const configuredModel = allModels.find(
+ (m) => m.model.id === configuredDefaultModelId && m.model.isEnabled && !m.model.isSubModel
+ );
+
+ if (configuredModel) {
+ console.log("[Model Router] ✅ Using configured default model:", configuredModel.model.displayName);
+ return {
+ id: configuredModel.model.id,
+ displayName: configuredModel.model.displayName,
+ providerType: configuredModel.provider.type,
+ modelId: configuredModel.model.modelId,
+ reason: `管理员配置的默认模型 → ${configuredModel.model.displayName}`,
+ };
+ } else {
+ console.log("[Model Router] ⚠️ Configured default model not found or disabled, falling back to intent routing");
+ }
+ }
// 获取意图对应的配置
let config = INTENT_MODEL_MAP[intent] || INTENT_MODEL_MAP["chat"];
diff --git a/lib/db/schema.ts b/lib/db/schema.ts
index 7dceb6890..9d69c7dfd 100644
--- a/lib/db/schema.ts
+++ b/lib/db/schema.ts
@@ -308,7 +308,8 @@ export const siteSettings = pgTable("SiteSettings", {
rankingEnabled: boolean("rankingEnabled").notNull().default(true), // 是否显示精选榜按钮
// 无限画布设置
canvasEnabled: boolean("canvasEnabled").notNull().default(true), // 是否启用无限画布功能
- canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认生图模型ID(null表示智能自动)
+ canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认选择的模型ID(null表示智能自动)
+ canvasAutoModeDefaultModelId: varchar("canvasAutoModeDefaultModelId", { length: 128 }), // 智能自动模式下实际使用的默认生图模型ID
updatedAt: timestamp("updatedAt").notNull().defaultNow(),
updatedBy: uuid("updatedBy").references(() => user.id),
});