diff --git a/agent/app/provider/catalog.go b/agent/app/provider/catalog.go index 439ac0f17..69f5342ee 100644 --- a/agent/app/provider/catalog.go +++ b/agent/app/provider/catalog.go @@ -20,16 +20,34 @@ type Meta struct { } var catalog = map[string]Meta{ + "custom": { + Key: "custom", + DisplayName: "Custom", + Sort: 10, + DefaultBaseURL: "", + EnvKey: "CUSTOM_API_KEY", + Enabled: true, + Models: []Model{}, + }, "ollama": { Key: "ollama", DisplayName: "Ollama", - Sort: 10, + Sort: 15, Enabled: true, }, + "vllm": { + Key: "vllm", + DisplayName: "vLLM", + Sort: 20, + DefaultBaseURL: "", + EnvKey: "VLLM_API_KEY", + Enabled: true, + Models: []Model{}, + }, "deepseek": { Key: "deepseek", DisplayName: "DeepSeek", - Sort: 20, + Sort: 25, DefaultBaseURL: "https://api.deepseek.com/v1", EnvKey: "DEEPSEEK_API_KEY", Enabled: true, @@ -39,138 +57,10 @@ var catalog = map[string]Meta{ {ID: "deepseek/deepseek-r1:1.5b", Name: "DeepSeek R1 1.5B"}, }, }, - "custom": { - Key: "custom", - DisplayName: "Custom", - Sort: 30, - DefaultBaseURL: "", - EnvKey: "CUSTOM_API_KEY", - Enabled: true, - Models: []Model{}, - }, - "vllm": { - Key: "vllm", - DisplayName: "vLLM", - Sort: 31, - DefaultBaseURL: "", - EnvKey: "VLLM_API_KEY", - Enabled: true, - Models: []Model{}, - }, - "openai": { - Key: "openai", - DisplayName: "OpenAI", - Sort: 40, - DefaultBaseURL: "https://api.openai.com/v1", - EnvKey: "OPENAI_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "openai/codex-mini-latest", Name: "Codex Mini"}, - {ID: "openai/gpt-4.1", Name: "GPT-4.1"}, - {ID: "openai/gpt-4o", Name: "GPT-4o"}, - {ID: "openai/gpt-4o-mini", Name: "GPT-4o Mini"}, - {ID: "openai/gpt-5", Name: "GPT-5"}, - {ID: "openai/gpt-5-mini", Name: "GPT-5 Mini"}, - }, - }, - "anthropic": { - Key: "anthropic", - DisplayName: "Anthropic", - Sort: 50, - DefaultBaseURL: "https://api.anthropic.com", - EnvKey: "ANTHROPIC_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "anthropic/claude-3-haiku-20240307", Name: "Claude 3 Haiku"}, - {ID: "anthropic/claude-3-5-haiku-latest", Name: "Claude 3.5 Haiku"}, - {ID: "anthropic/claude-3-5-sonnet-20241022", Name: "Claude 3.5 Sonnet"}, - {ID: "anthropic/claude-3-7-sonnet-20250219", Name: "Claude 3.7 Sonnet"}, - {ID: "anthropic/claude-opus-4-1", Name: "Claude Opus 4.1"}, - }, - }, - "gemini": { - Key: "gemini", - DisplayName: "Gemini", - Sort: 60, - DefaultBaseURL: "https://generativelanguage.googleapis.com", - EnvKey: "GEMINI_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "google/gemini-1.5-flash", Name: "Gemini 1.5 Flash"}, - {ID: "google/gemini-1.5-pro", Name: "Gemini 1.5 Pro"}, - {ID: "google/gemini-2.0-flash", Name: "Gemini 2.0 Flash"}, - {ID: "google/gemini-2.5-flash", Name: "Gemini 2.5 Flash"}, - {ID: "google/gemini-2.5-pro", Name: "Gemini 2.5 Pro"}, - {ID: "google/gemini-3-flash-preview", Name: "Gemini 3 Flash Preview"}, - }, - }, - "minimax": { - Key: "minimax", - DisplayName: "MiniMax (CN)", - Sort: 70, - DefaultBaseURL: "https://api.minimaxi.com/anthropic", - EnvKey: "MINIMAX_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "minimax/MiniMax-M2.1", Name: "MiniMax M2.1"}, - {ID: "minimax/MiniMax-M2.1-lightning", Name: "MiniMax M2.1 Lightning"}, - }, - }, - "moonshot": { - Key: "moonshot", - DisplayName: "Moonshot (Global)", - Sort: 80, - DefaultBaseURL: "https://api.moonshot.ai/v1", - EnvKey: "MOONSHOT_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "moonshot/kimi-k2.5", Name: "Kimi K2.5"}, - {ID: "moonshot/kimi-k2-0905-preview", Name: "Kimi K2 0905 Preview"}, - {ID: "moonshot/kimi-k2-thinking", Name: "Kimi K2 Thinking"}, - }, - }, - "kimi": { - Key: "kimi", - DisplayName: "Kimi (CN)", - Sort: 90, - DefaultBaseURL: "https://api.moonshot.cn/v1", - EnvKey: "KIMI_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "kimi/kimi-k2.5", Name: "Kimi K2.5"}, - {ID: "kimi/kimi-k2-0905-preview", Name: "Kimi K2 0905 Preview"}, - {ID: "kimi/kimi-k2-thinking", Name: "Kimi K2 Thinking"}, - }, - }, - "zai": { - Key: "zai", - DisplayName: "Z.ai", - Sort: 95, - DefaultBaseURL: "https://open.bigmodel.cn/api/paas/v4", - EnvKey: "ZAI_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "zai/glm-5", Name: "GLM-5"}, - {ID: "zai/glm-4.7", Name: "GLM-4.7"}, - {ID: "zai/glm-4.7-flash", Name: "GLM-4.7-Flash"}, - {ID: "zai/glm-4.7-flashx", Name: "GLM-4.7-FlashX"}, - }, - }, - "kimi-coding": { - Key: "kimi-coding", - DisplayName: "Kimi Coding", - Sort: 100, - DefaultBaseURL: "https://api.kimi.com/coding/", - EnvKey: "KIMI_API_KEY", - Enabled: true, - Models: []Model{ - {ID: "kimi-coding/k2p5", Name: "Kimi K2.5"}, - }, - }, "bailian-coding-plan": { Key: "bailian-coding-plan", DisplayName: "阿里云百炼 Coding Plan", - Sort: 11, + Sort: 30, DefaultBaseURL: "https://coding.dashscope.aliyuncs.com/v1", EnvKey: "QWEN_API_KEY", Enabled: true, @@ -188,7 +78,7 @@ var catalog = map[string]Meta{ "ark-coding-plan": { Key: "ark-coding-plan", DisplayName: "方舟 Coding Plan", - Sort: 12, + Sort: 35, DefaultBaseURL: "https://ark.cn-beijing.volces.com/api/coding/v3", EnvKey: "ARK_API_KEY", Enabled: true, @@ -201,13 +91,115 @@ var catalog = map[string]Meta{ {ID: "ark-coding-plan/kimi-k2-thinking", Name: "Kimi-K2-thinking"}, }, }, - "qwen": { - Key: "qwen", - DisplayName: "Qwen", - Sort: 110, - DefaultBaseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1", - EnvKey: "QWEN_API_KEY", - Enabled: false, + "zai": { + Key: "zai", + DisplayName: "Z.ai", + Sort: 40, + DefaultBaseURL: "https://open.bigmodel.cn/api/paas/v4", + EnvKey: "ZAI_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "zai/glm-5", Name: "GLM-5"}, + {ID: "zai/glm-4.7", Name: "GLM-4.7"}, + {ID: "zai/glm-4.7-flash", Name: "GLM-4.7-Flash"}, + {ID: "zai/glm-4.7-flashx", Name: "GLM-4.7-FlashX"}, + }, + }, + "minimax": { + Key: "minimax", + DisplayName: "MiniMax (CN)", + Sort: 45, + DefaultBaseURL: "https://api.minimaxi.com/anthropic", + EnvKey: "MINIMAX_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "minimax/MiniMax-M2.1", Name: "MiniMax M2.1"}, + {ID: "minimax/MiniMax-M2.1-lightning", Name: "MiniMax M2.1 Lightning"}, + }, + }, + "kimi": { + Key: "kimi", + DisplayName: "Kimi (CN)", + Sort: 50, + DefaultBaseURL: "https://api.moonshot.cn/v1", + EnvKey: "KIMI_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "kimi/kimi-k2.5", Name: "Kimi K2.5"}, + {ID: "kimi/kimi-k2-0905-preview", Name: "Kimi K2 0905 Preview"}, + {ID: "kimi/kimi-k2-thinking", Name: "Kimi K2 Thinking"}, + }, + }, + "kimi-coding": { + Key: "kimi-coding", + DisplayName: "Kimi Coding", + Sort: 51, + DefaultBaseURL: "https://api.kimi.com/coding/", + EnvKey: "KIMI_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "kimi-coding/k2p5", Name: "Kimi K2.5"}, + }, + }, + "openai": { + Key: "openai", + DisplayName: "OpenAI", + Sort: 55, + DefaultBaseURL: "https://api.openai.com/v1", + EnvKey: "OPENAI_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "openai/codex-mini-latest", Name: "Codex Mini"}, + {ID: "openai/gpt-4.1", Name: "GPT-4.1"}, + {ID: "openai/gpt-4o", Name: "GPT-4o"}, + {ID: "openai/gpt-4o-mini", Name: "GPT-4o Mini"}, + {ID: "openai/gpt-5", Name: "GPT-5"}, + {ID: "openai/gpt-5-mini", Name: "GPT-5 Mini"}, + }, + }, + "anthropic": { + Key: "anthropic", + DisplayName: "Anthropic", + Sort: 60, + DefaultBaseURL: "https://api.anthropic.com", + EnvKey: "ANTHROPIC_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "anthropic/claude-3-haiku-20240307", Name: "Claude 3 Haiku"}, + {ID: "anthropic/claude-3-5-haiku-latest", Name: "Claude 3.5 Haiku"}, + {ID: "anthropic/claude-3-5-sonnet-20241022", Name: "Claude 3.5 Sonnet"}, + {ID: "anthropic/claude-3-7-sonnet-20250219", Name: "Claude 3.7 Sonnet"}, + {ID: "anthropic/claude-opus-4-1", Name: "Claude Opus 4.1"}, + }, + }, + "gemini": { + Key: "gemini", + DisplayName: "Gemini", + Sort: 65, + DefaultBaseURL: "https://generativelanguage.googleapis.com", + EnvKey: "GEMINI_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "google/gemini-1.5-flash", Name: "Gemini 1.5 Flash"}, + {ID: "google/gemini-1.5-pro", Name: "Gemini 1.5 Pro"}, + {ID: "google/gemini-2.0-flash", Name: "Gemini 2.0 Flash"}, + {ID: "google/gemini-2.5-flash", Name: "Gemini 2.5 Flash"}, + {ID: "google/gemini-2.5-pro", Name: "Gemini 2.5 Pro"}, + {ID: "google/gemini-3-flash-preview", Name: "Gemini 3 Flash Preview"}, + }, + }, + "moonshot": { + Key: "moonshot", + DisplayName: "Moonshot (Global)", + Sort: 70, + DefaultBaseURL: "https://api.moonshot.ai/v1", + EnvKey: "MOONSHOT_API_KEY", + Enabled: true, + Models: []Model{ + {ID: "moonshot/kimi-k2.5", Name: "Kimi K2.5"}, + {ID: "moonshot/kimi-k2-0905-preview", Name: "Kimi K2 0905 Preview"}, + {ID: "moonshot/kimi-k2-thinking", Name: "Kimi K2 Thinking"}, + }, }, } diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index d181b5993..9cf17cda9 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -50,7 +50,7 @@ ErrAgentApiKeyRequired: 'API key is required' ErrAgentComposeRequired: 'Compose content is required' ErrAgentIDRequired: 'Agent ID is required' ErrAgentAccountIDRequired: 'Account ID is required' -ErrAgentLimitReached: 'In Community Edition, at most {{ .max }} AI agents can be created' +ErrAgentLimitReached: 'Community Edition supports up to {{ .max }} AI agents. Upgrade to Professional Edition for unlimited agents' #backup Localhost: 'Local' diff --git a/agent/i18n/lang/es-ES.yaml b/agent/i18n/lang/es-ES.yaml index 6d9294597..0c4eb80f6 100644 --- a/agent/i18n/lang/es-ES.yaml +++ b/agent/i18n/lang/es-ES.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'Clave API requerida' ErrAgentComposeRequired: 'Contenido compose requerido' ErrAgentIDRequired: 'ID de agente requerido' ErrAgentAccountIDRequired: 'ID de cuenta requerido' -ErrAgentLimitReached: 'En la edición Community, solo se pueden crear hasta {{ .max }} agentes de IA' +ErrAgentLimitReached: 'La edición Community admite hasta {{ .max }} agentes de IA. Actualice a la edición Professional para eliminar el límite' Localhost: 'Máquina local' ErrBackupInUsed: 'Cuenta de respaldo en uso por tarea programada' ErrBackupCheck: 'Conexión de respaldo falló: {{ .err }}' diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index b55270df1..c32f3ccac 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'APIキーが必要です' ErrAgentComposeRequired: 'Composeが必要です' ErrAgentIDRequired: 'エージェントIDが必要です' ErrAgentAccountIDRequired: 'アカウントIDが必要です' -ErrAgentLimitReached: 'Community Edition では AI エージェントを最大 {{ .max }} 件まで作成できます' +ErrAgentLimitReached: 'Community Edition では AI エージェントを最大 {{ .max }} 件まで作成できます。Professional Edition にアップグレードすると数の制限はありません' Localhost: 'ローカルマシン' ErrBackupInUsed: 'バックアップアカウントがスケジュールで使用中' ErrBackupCheck: '接続テストに失敗しました: {{ .err }}' diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 4925f5990..e317a57ad 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'API 키 필요' ErrAgentComposeRequired: 'Compose 내용 필요' ErrAgentIDRequired: '에이전트 ID 필요' ErrAgentAccountIDRequired: '계정 ID 필요' -ErrAgentLimitReached: '커뮤니티 에디션에서는 AI 에이전트를 최대 {{ .max }}개까지만 생성할 수 있습니다' +ErrAgentLimitReached: '커뮤니티 에디션에서는 AI 에이전트를 최대 {{ .max }}개까지 생성할 수 있으며, Professional 에디션으로 업그레이드하면 수량 제한이 없습니다' Localhost: '로컬 머신' ErrBackupInUsed: '백업 계정이 예약에 사용 중' ErrBackupCheck: '연결 테스트 실패: {{ .err }}' diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index bf5aaeffe..50219a918 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'Kunci API diperlukan' ErrAgentComposeRequired: 'Kandungan compose diperlukan' ErrAgentIDRequired: 'ID ejen diperlukan' ErrAgentAccountIDRequired: 'ID akaun diperlukan' -ErrAgentLimitReached: 'Dalam edisi Community, maksimum {{ .max }} ejen AI sahaja boleh dicipta' +ErrAgentLimitReached: 'Edisi Community menyokong sehingga {{ .max }} ejen AI. Naik taraf ke edisi Professional untuk tiada had bilangan' Localhost: 'Mesin Tempatan' ErrBackupInUsed: 'Akaun sandaran sedang digunakan oleh tugas' ErrBackupCheck: 'Ujian sambungan gagal: {{ .err }}' diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 7b3504d04..6eed119c5 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'Chave API obrigatória' ErrAgentComposeRequired: 'Conteúdo de compose obrigatório' ErrAgentIDRequired: 'ID do agente obrigatório' ErrAgentAccountIDRequired: 'ID da conta obrigatório' -ErrAgentLimitReached: 'Na edição Community, é possível criar no máximo {{ .max }} agentes de IA' +ErrAgentLimitReached: 'A edição Community suporta até {{ .max }} agentes de IA. Atualize para a edição Professional para remover o limite' Localhost: 'Máquina Local' ErrBackupInUsed: 'Conta de backup em uso por tarefa' ErrBackupCheck: 'Teste de conexão falhou: {{ .err }}' diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index daa20b263..87078ced9 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'Нужен API-ключ' ErrAgentComposeRequired: 'Нужен compose' ErrAgentIDRequired: 'Нужен ID агента' ErrAgentAccountIDRequired: 'Нужен ID аккаунта' -ErrAgentLimitReached: 'В Community Edition можно создать не более {{ .max }} AI-агентов' +ErrAgentLimitReached: 'Community Edition поддерживает до {{ .max }} AI-агентов. Перейдите на Professional Edition, чтобы снять ограничение' Localhost: 'Локальная машина' ErrBackupInUsed: 'Аккаунт бэкапа занят задачей' ErrBackupCheck: 'Проверка подключения не удалась: {{ .err }}' diff --git a/agent/i18n/lang/tr.yaml b/agent/i18n/lang/tr.yaml index af4f44fcc..471123c53 100644 --- a/agent/i18n/lang/tr.yaml +++ b/agent/i18n/lang/tr.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'API anahtarı gerekli' ErrAgentComposeRequired: 'Compose içeriği gerekli' ErrAgentIDRequired: 'Ajans ID gerekli' ErrAgentAccountIDRequired: 'Hesap ID gerekli' -ErrAgentLimitReached: 'Community sürümünde en fazla {{ .max }} AI ajanı oluşturulabilir' +ErrAgentLimitReached: 'Community sürümü en fazla {{ .max }} AI ajanını destekler. Sınırı kaldırmak için Professional sürüme yükseltin' Localhost: 'Yerel Makine' ErrBackupInUsed: 'Yedek hesabı görevde kullanılıyor' ErrBackupCheck: 'Bağlantı testi başarısız: {{ .err }}' diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 07929c4f2..b8923715d 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -45,7 +45,7 @@ ErrAgentApiKeyRequired: 'API Key 不可為空,請重試' ErrAgentComposeRequired: '自訂編排內容不可為空,請重試' ErrAgentIDRequired: '智能體 ID 不可為空,請重試' ErrAgentAccountIDRequired: '帳號 ID 不可為空,請重試' -ErrAgentLimitReached: '社群版最多只能建立 {{ .max }} 個智能體' +ErrAgentLimitReached: '社群版最多支援建立 {{ .max }} 個智能體,升級至專業版則無數量限制' Localhost: '本機' ErrBackupInUsed: '此備份帳號已在排程任務中使用,無法刪除' ErrBackupCheck: '備份帳號測試連線失敗{{ .err }}' diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index f36a1ca12..b596f2505 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -50,7 +50,7 @@ ErrAgentApiKeyRequired: "API Key 不能为空" ErrAgentComposeRequired: "自定义编排内容不能为空" ErrAgentIDRequired: "智能体 ID 不能为空" ErrAgentAccountIDRequired: "账号 ID 不能为空" -ErrAgentLimitReached: "社区版最多只能创建 {{ .max }} 个智能体" +ErrAgentLimitReached: "社区版最多支持创建 {{ .max }} 个智能体,升级至专业版无数量限制" #backup Localhost: '本机' diff --git a/agent/utils/env/env.go b/agent/utils/env/env.go index 43ca0a5a8..7f5e17db4 100644 --- a/agent/utils/env/env.go +++ b/agent/utils/env/env.go @@ -31,10 +31,10 @@ func Marshal(envMap map[string]string) (string, error) { for k, v := range envMap { if d, err := strconv.Atoi(v); err == nil && !isStartWithZero(v) { lines = append(lines, fmt.Sprintf(`%s=%d`, k, d)) - } else if hasEvenDoubleQuotes(v) { + } else if shouldUseSingleQuotes(v) { lines = append(lines, fmt.Sprintf(`%s='%s'`, k, v)) } else { - lines = append(lines, fmt.Sprintf(`%s="%s"`, k, v)) + lines = append(lines, fmt.Sprintf(`%s="%s"`, k, escapeDoubleQuotedEnvValue(v))) } } return strings.Join(lines, "\n"), nil @@ -88,10 +88,10 @@ func MarshalWithOrder(envMap map[string]string, orders []string) (string, error) func formatEnvLine(k, v string) string { if d, err := strconv.Atoi(v); err == nil && !isStartWithZero(v) { return fmt.Sprintf(`%s=%d`, k, d) - } else if hasEvenDoubleQuotes(v) { + } else if shouldUseSingleQuotes(v) { return fmt.Sprintf(`%s='%s'`, k, v) } else { - return fmt.Sprintf(`%s="%s"`, k, v) + return fmt.Sprintf(`%s="%s"`, k, escapeDoubleQuotedEnvValue(v)) } } @@ -123,3 +123,16 @@ func hasEvenDoubleQuotes(s string) bool { } return count%2 == 0 } + +func shouldUseSingleQuotes(s string) bool { + return hasEvenDoubleQuotes(s) && !strings.Contains(s, `\`) && !strings.Contains(s, `'`) +} + +func escapeDoubleQuotedEnvValue(s string) string { + replacer := strings.NewReplacer( + `\`, `\\`, + `"`, `\"`, + "\n", `\n`, + ) + return replacer.Replace(s) +} diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 8d7a341c7..846bab61a 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -730,6 +730,7 @@ const message = { ollama_sync: 'Syncing Ollama model found the following models do not exist, do you want to delete them?', from_remote: 'This model was not downloaded via 1Panel, no related pull logs.', no_logs: 'The pull logs for this model have been deleted and cannot be viewed.', + vllmVersionHelper: 'For FusionXpark GB 10 servers, please select the -cu130 version.', }, proxy: { proxy: 'AI Proxy Enhancement', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 9fb08ad08..fa25ae5bd 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -739,6 +739,7 @@ const message = { 'Al sincronizar modelos de Ollama, se detectaron los siguientes modelos que no existen. ¿Desea eliminarlos?', from_remote: 'Este modelo no fue descargado vía 1Panel, no hay registros de descarga relacionados.', no_logs: 'Los registros de descarga de este modelo han sido eliminados y no se pueden consultar.', + vllmVersionHelper: 'Para servidores FusionXpark GB 10, seleccione la versión -cu130.', }, proxy: { proxy: 'Mejoras de proxy de IA', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 094c6b8a1..10b972420 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -731,6 +731,7 @@ const message = { ollama_sync: 'Ollamaモデルの同期中に、以下のモデルが存在しないことが判明しました。削除しますか?', from_remote: 'このモデルは1Panelを介してダウンロードされておらず、関連するプルログはありません。', no_logs: 'このモデルのプルログは削除されており、関連するログを表示できません。', + vllmVersionHelper: 'FusionXpark GB 10 サーバーでは -cu130 バージョンを選択してください。', }, proxy: { proxy: 'AI プロキシ強化', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index c4cb766f1..71dd3fbb1 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -723,6 +723,7 @@ const message = { ollama_sync: 'Ollama 모델 동기화 중 다음 모델이 존재하지 않음을 발견했습니다. 삭제하시겠습니까?', from_remote: '이 모델은 1Panel을 통해 다운로드되지 않았으며 관련 풀 로그가 없습니다.', no_logs: '이 모델의 풀 로그가 삭제되어 관련 로그를 볼 수 없습니다.', + vllmVersionHelper: 'FusionXpark GB 10 서버는 -cu130 버전을 선택하세요.', }, proxy: { proxy: 'AI 프록시 강화', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 120475fd0..1c9728f75 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -739,6 +739,7 @@ const message = { 'Sincronizando o modelo Ollama, encontrou que os seguintes modelos não existem, deseja excluí-los?', from_remote: 'Este modelo não foi baixado via 1Panel, sem logs de pull relacionados.', no_logs: 'Os logs de pull deste modelo foram excluídos e não podem ser visualizados.', + vllmVersionHelper: 'Untuk pelayan FusionXpark GB 10, sila pilih versi -cu130.', }, proxy: { proxy: 'Peningkatan Proksi AI', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 628ed9fd9..f921f7de4 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -734,6 +734,7 @@ const message = { 'Menyelaraskan model Ollama mendapati model berikut tidak wujud, adakah anda ingin memadamnya?', from_remote: 'Model ini tidak dimuat turun melalui 1Panel, tiada log pengambilan berkaitan.', no_logs: 'Log pengambilan untuk model ini telah dipadam dan tidak dapat dilihat.', + vllmVersionHelper: 'Para servidores FusionXpark GB 10, selecione a versão -cu130.', }, proxy: { proxy: 'Melhoria de Proxy AI', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 4bfc6c649..8d183c08c 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -731,6 +731,7 @@ const message = { 'Синхронизация модели Ollama обнаружила, что следующие модели не существуют, хотите удалить их?', from_remote: 'Эта модель не была загружена через 1Panel, нет связанных журналов извлечения.', no_logs: 'Журналы извлечения для этой модели были удалены и не могут быть просмотрены.', + vllmVersionHelper: 'Для серверов FusionXpark GB 10 выберите версию -cu130.', }, proxy: { proxy: 'Усиление AI-прокси', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index afc5c8739..eaf4342a5 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -735,6 +735,7 @@ const message = { 'Ollama modelini senkronize ederken aşağıdaki modellerin mevcut olmadığı tespit edildi, bunları silmek istiyor musunuz?', from_remote: 'Bu model 1Panel aracılığıyla indirilmedi, ilgili çekme logları yok.', no_logs: 'Bu modelin çekme logları silindi ve görüntülenemiyor.', + vllmVersionHelper: 'FusionXpark GB 10 sunucuları için lütfen -cu130 sürümünü seçin.', }, proxy: { proxy: 'AI Proxy Geliştirmesi', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index e202b0aab..e503879a9 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -698,6 +698,7 @@ const message = { ollama_sync: '同步 Ollama 模型發現下列模型不存在,是否刪除?', from_remote: '該模型並非透過 1Panel 下載,無相關拉取日誌。', no_logs: '該模型的拉取日誌已被刪除,無法檢視相關日誌。', + vllmVersionHelper: 'FusionXpark GB 10 伺服器請選擇 -cu130 版本', }, proxy: { proxy: 'AI 代理增強', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index e6b5301dd..9108a288c 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -696,6 +696,7 @@ const message = { ollama_sync: '同步 Ollama 模型发现下列模型不存在,是否删除?', from_remote: '该模型并非通过 1Panel 下载,无相关拉取日志。', no_logs: '该模型的拉取日志已被删除,无法查看相关日志。', + vllmVersionHelper: 'FusionXpark GB 10 服务器请选择 -cu130 版本', }, proxy: { proxy: 'AI 代理增强',