diff --git a/packages/core/src/services/image-model/manager.ts b/packages/core/src/services/image-model/manager.ts index 88350bcd..d45a26a8 100644 --- a/packages/core/src/services/image-model/manager.ts +++ b/packages/core/src/services/image-model/manager.ts @@ -350,8 +350,25 @@ export class ImageModelManager implements IImageModelManager { // 确保配置是自包含的(包含完整的provider和model信息) private ensureSelfContained(config: ImageModelConfig): ImageModelConfig { - // 如果已经有完整的自包含字段,直接返回 + // 如果已经有完整的自包含字段,尽量补齐新增的 provider 字段(保持向后兼容) if (config.provider && config.model) { + // 旧存储数据里 provider 可能缺少新字段;用当前 adapter 的 provider 元数据补齐。 + if (config.provider.corsRestricted === undefined) { + try { + const latestProvider = this.registry.getAdapter(config.providerId).getProvider() + if (latestProvider.corsRestricted !== undefined) { + return { + ...config, + provider: { + ...config.provider, + corsRestricted: latestProvider.corsRestricted + } + } + } + } catch { + // ignore - unknown provider or adapter failure + } + } return config } diff --git a/packages/core/src/services/image/adapters/dashscope.ts b/packages/core/src/services/image/adapters/dashscope.ts index a8caec38..503beea7 100644 --- a/packages/core/src/services/image/adapters/dashscope.ts +++ b/packages/core/src/services/image/adapters/dashscope.ts @@ -36,6 +36,7 @@ export class DashScopeImageAdapter extends AbstractImageProviderAdapter { id: 'dashscope', name: '阿里百炼', description: '阿里云百炼图像生成服务,支持通义千问图像模型(文生图/图生图)', + corsRestricted: true, requiresApiKey: true, defaultBaseURL: 'https://dashscope.aliyuncs.com', supportsDynamicModels: false, diff --git a/packages/core/src/services/image/adapters/modelscope.ts b/packages/core/src/services/image/adapters/modelscope.ts index 5947c233..5fbf6955 100644 --- a/packages/core/src/services/image/adapters/modelscope.ts +++ b/packages/core/src/services/image/adapters/modelscope.ts @@ -38,6 +38,7 @@ export class ModelScopeImageAdapter extends AbstractImageProviderAdapter { id: 'modelscope', name: 'ModelScope', description: 'ModelScope 魔搭社区图像生成服务,每天免费 2000 次调用', + corsRestricted: true, requiresApiKey: true, defaultBaseURL: 'https://api-inference.modelscope.cn/v1', supportsDynamicModels: false, diff --git a/packages/core/src/services/image/adapters/seedream.ts b/packages/core/src/services/image/adapters/seedream.ts index ae979d48..b66ef64e 100644 --- a/packages/core/src/services/image/adapters/seedream.ts +++ b/packages/core/src/services/image/adapters/seedream.ts @@ -21,6 +21,7 @@ export class SeedreamImageAdapter extends AbstractImageProviderAdapter { id: 'seedream', name: 'Seedream (火山方舟)', description: '火山方舟 Seedream 图像生成模型', + corsRestricted: true, requiresApiKey: true, defaultBaseURL: 'https://ark.cn-beijing.volces.com/api/v3', supportsDynamicModels: false, // 不支持动态获取 diff --git a/packages/core/src/services/llm/types.ts b/packages/core/src/services/llm/types.ts index 2565e21c..07662ccf 100644 --- a/packages/core/src/services/llm/types.ts +++ b/packages/core/src/services/llm/types.ts @@ -27,6 +27,12 @@ export interface TextProvider { readonly name: string /** 描述信息 */ readonly description?: string + /** + * 浏览器环境是否会被 CORS 限制(无法直接请求该 API)。 + * - true: Web 端可能因 CORS 被浏览器拦截,建议使用 Desktop 或自行配置代理 + * - false/undefined: 未标记为 CORS 限制(不代表一定可用,仍可能受网络/鉴权等影响) + */ + readonly corsRestricted?: boolean /** 是否必须提供 API Key */ readonly requiresApiKey: boolean /** 默认 API 地址 */ diff --git a/packages/core/src/services/shared/types.ts b/packages/core/src/services/shared/types.ts index 8433a8c5..212ba282 100644 --- a/packages/core/src/services/shared/types.ts +++ b/packages/core/src/services/shared/types.ts @@ -27,6 +27,12 @@ export interface BaseProvider { readonly name: string; /** 描述信息 */ readonly description?: string; + /** + * 浏览器环境是否会被 CORS 限制(无法直接请求该 API)。 + * - true: Web 端可能因 CORS 被浏览器拦截,建议使用 Desktop 或自行配置代理 + * - false/undefined: 未标记为 CORS 限制(不代表一定可用,仍可能受网络/鉴权等影响) + */ + readonly corsRestricted?: boolean; /** 是否必须提供 API Key */ readonly requiresApiKey: boolean; /** 默认 API 地址 */ diff --git a/packages/ui/src/components/ImageModelEditModal.vue b/packages/ui/src/components/ImageModelEditModal.vue index bc0f41a6..67320dd9 100644 --- a/packages/ui/src/components/ImageModelEditModal.vue +++ b/packages/ui/src/components/ImageModelEditModal.vue @@ -232,23 +232,24 @@ diff --git a/packages/ui/src/components/TextModelManager.vue b/packages/ui/src/components/TextModelManager.vue index 0b0b8126..7d535f56 100644 --- a/packages/ui/src/components/TextModelManager.vue +++ b/packages/ui/src/components/TextModelManager.vue @@ -20,15 +20,18 @@