@@ -103,7 +170,7 @@
+
+
diff --git a/dashboard/src/components/shared/ProviderSelector.vue b/dashboard/src/components/shared/ProviderSelector.vue
index 0de8bc7ce0..f26c2639d9 100644
--- a/dashboard/src/components/shared/ProviderSelector.vue
+++ b/dashboard/src/components/shared/ProviderSelector.vue
@@ -1,597 +1,35 @@
-
-
- {{ tm('providerSelector.notSelected') }}
-
-
-
- {{ tm('providerSelector.selectedCount', { count: selectedProviders.length }) }}
-
-
- {{ modelValue }}
-
-
-
- {{ buttonText || tm('providerSelector.buttonText') }}
-
-
-
-
-
- {{ providerId }}
-
-
-
-
-
-
-
- {{ tm('providerSelector.dialogTitle') }}
-
- {{ tm('providerSelector.createProvider') }}
-
-
-
-
-
-
-
-
- {{ tm('providerSelector.selectedCount', { count: selectedProviders.length }) }}
-
-
-
- {{ providerId }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ tm('providerSelector.clearSelection') }}
- {{ tm('providerSelector.clearSelectionSubtitle') }}
-
-
- mdi-check-circle
-
-
-
-
-
-
- {{ provider.id }}
-
- {{ provider.type || provider.provider_type || tm('providerSelector.unknownType') }}
- - {{ provider.model }}
-
-
-
-
- {{ item.icon }}
-
-
- {{ item.tooltip }}
-
-
-
-
- {{ formatContextLimit(provider, metadataForProvider(provider)) }}
-
-
- {{
- providerTm('models.metadata.context', {
- tokens: formatContextLimit(provider, metadataForProvider(provider))
- })
- }}
-
-
-
-
-
-
-
-
-
-
- {{ providerTm('models.testButton') }}
-
- mdi-check-circle
-
-
-
-
-
-
-
mdi-api-off
-
{{ tm('providerSelector.noProviders') }}
-
-
-
-
-
-
-
- {{ tm('providerSelector.cancelSelection') }}
-
- {{ tm('providerSelector.confirmSelection') }}
-
-
-
-
-
-
-
-
-
-
-
+
-
-
diff --git a/dashboard/src/components/shared/StyledMenu.vue b/dashboard/src/components/shared/StyledMenu.vue
index 01c58099bf..ea9f43f943 100644
--- a/dashboard/src/components/shared/StyledMenu.vue
+++ b/dashboard/src/components/shared/StyledMenu.vue
@@ -35,10 +35,15 @@ withDefaults(defineProps<{
.styled-menu-card {
min-width: 100px;
width: fit-content;
- border: 0 !important;
+ border: 1px solid rgba(var(--v-theme-on-surface), 0.09) !important;
background: rgba(var(--v-theme-surface), 0.98) !important;
backdrop-filter: blur(10px);
- box-shadow: var(--astrbot-menu-shadow, 0 12px 28px rgba(0, 0, 0, 0.08)) !important;
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.07) !important;
+}
+
+.v-overlay.v-menu .v-overlay__content > .styled-menu-card:not(.styled-menu-card-borderless) {
+ border: 1px solid rgba(var(--v-theme-on-surface), 0.09) !important;
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.07) !important;
}
.styled-menu-card-borderless {
@@ -71,7 +76,7 @@ withDefaults(defineProps<{
/* 深色模式下的下拉框样式 - 需要全局样式才能检测主题 */
.v-theme--PurpleThemeDark .styled-menu-card {
background: rgba(var(--v-theme-surface), 0.98) !important;
- border: 0 !important;
+ border: 1px solid rgba(var(--v-theme-on-surface), 0.09) !important;
}
.v-theme--PurpleThemeDark .styled-menu-card-borderless {
diff --git a/dashboard/src/i18n/locales/en-US/core/shared.json b/dashboard/src/i18n/locales/en-US/core/shared.json
index 87f62ed611..d54ae63165 100644
--- a/dashboard/src/i18n/locales/en-US/core/shared.json
+++ b/dashboard/src/i18n/locales/en-US/core/shared.json
@@ -14,6 +14,12 @@
"chunkCount": "{count} chunk(s)"
},
"pluginSetSelector": {
+ "title": "Plugins",
+ "subtitle": "Choose which plugins this profile can use.",
+ "preset": "Preset",
+ "searchPlaceholder": "Search plugins",
+ "selectAll": "Select all",
+ "noSearchResults": "No matching plugins",
"notSelected": "No plugins enabled",
"allPlugins": "All plugins enabled (*)",
"selectedCount": "{count} plugin(s) selected",
@@ -34,6 +40,9 @@
},
"providerSelector": {
"notSelected": "Not selected",
+ "defaultModel": "Default model",
+ "model": "Model",
+ "searchPlaceholder": "Search models",
"buttonText": "Select Provider...",
"dialogTitle": "Select Provider",
"loading": "Loading...",
@@ -46,6 +55,7 @@
"createProvider": "Create Provider",
"manageProviders": "Provider Management",
"selectProviderPool": "Select Provider Pool...",
+ "selectedModelCount": "{count} model(s) selected",
"selectedCount": "{count} provider(s) selected"
},
"personaSelector": {
diff --git a/dashboard/src/i18n/locales/en-US/features/config-metadata.json b/dashboard/src/i18n/locales/en-US/features/config-metadata.json
index 89133e0f59..c1410e658d 100644
--- a/dashboard/src/i18n/locales/en-US/features/config-metadata.json
+++ b/dashboard/src/i18n/locales/en-US/features/config-metadata.json
@@ -85,21 +85,21 @@
"hint": "Configure the built-in Agent's chat models and shared image caption and speech models.",
"agent_runner": { "config": { "model": {
"provider_id": {
- "description": "Default Chat Model",
+ "description": "Chat Model",
"hint": "Uses the first model when left empty"
},
"fallback_provider_ids": {
- "description": "Fallback Chat Model IDs",
+ "description": "Fallback Chat Models",
"hint": "Try these chat models in order when the primary model request fails."
},
"request_max_retries": {
- "description": "Request Max Retries",
+ "description": "Retries on Error",
"hint": "Maximum attempts for a single model request when retryable errors occur."
}
} } },
"provider_settings": {
"default_image_caption_provider_id": {
- "description": "Default Image Caption Model",
+ "description": "Image Caption Model",
"hint": "Leave empty to disable; useful for non-multimodal models"
},
"image_caption_prompt": {
@@ -108,8 +108,8 @@
},
"provider_stt_settings": {
"enable": {
- "description": "Enable Speech-to-Text",
- "hint": "Master switch for STT"
+ "description": "Speech Recognition",
+ "hint": "Use a speech-to-text model to transcribe user voice messages into text for the model to understand."
},
"provider_id": {
"description": "Default Speech-to-Text Model",
@@ -118,8 +118,8 @@
},
"provider_tts_settings": {
"enable": {
- "description": "Enable Text-to-Speech",
- "hint": "Master switch for TTS"
+ "description": "Voice Replies",
+ "hint": "Use a text-to-speech model to turn text into voice replies."
},
"provider_id": {
"description": "Default Text-to-Speech Model"
@@ -380,11 +380,11 @@
"hint": "When enabled, current time information will be appended to the system prompt."
},
"show_tool_use_status": {
- "description": "Output Function Call Status"
+ "description": "Show Tool Call Information"
},
"show_tool_call_result": {
"description": "Output Tool Call Results",
- "hint": "Only takes effect when \"Output Function Call Status\" is enabled, and shows at most 70 characters."
+ "hint": "Only takes effect when \"Show Tool Call Information\" is enabled, and shows at most 70 characters."
},
"buffer_intermediate_messages": {
"description": "Merge Agent Intermediate Messages",
@@ -424,7 +424,7 @@
]
},
"wake_prefix": {
- "description": "Additional LLM Chat Wake Prefix",
+ "description": "Additional Wake Prefix",
"hint": "If the wake prefix is / and the additional chat wake prefix is chat, then /chat is required to trigger LLM requests"
},
"prompt_prefix": {
diff --git a/dashboard/src/i18n/locales/en-US/features/config.json b/dashboard/src/i18n/locales/en-US/features/config.json
index 3d5e52feec..d045814ef3 100644
--- a/dashboard/src/i18n/locales/en-US/features/config.json
+++ b/dashboard/src/i18n/locales/en-US/features/config.json
@@ -45,6 +45,73 @@
"notification": "Notification Settings",
"moreConfig": "More Settings"
},
+ "aiSettings": {
+ "title": "AI",
+ "enable": "Enable AI",
+ "more": "More actions",
+ "changeRunner": "Change execution mode",
+ "localSettingsTitle": "AstrBot Built-in AI",
+ "settingsSuffix": "Settings",
+ "tabs": {
+ "model": "Model",
+ "persona": "Persona",
+ "capabilities": "Capabilities",
+ "advanced": "Advanced"
+ },
+ "groups": {
+ "model": "Model",
+ "modelHint": "Choose the chat models and retry policy used by built-in AI.",
+ "execution": "Execution",
+ "executionHint": "Configure the tool-call loop and execution process.",
+ "media": "Image and Voice",
+ "mediaHint": "Configure image understanding, speech-to-text, and text-to-speech.",
+ "behavior": "Message Handling",
+ "behaviorHint": "These settings apply to every execution mode in this profile."
+ },
+ "common": {
+ "title": "Common Settings",
+ "subtitle": "These settings remain unchanged when the execution mode changes."
+ },
+ "disabled": {
+ "title": "AI is disabled",
+ "subtitle": "Enable AI to process messages that require a model."
+ },
+ "runnerDialog": {
+ "title": "Change Execution Mode",
+ "subtitle": "Change this only when connecting an external AI application. Built-in AI is suitable for most users.",
+ "warningPrefix": "Switching will use the new execution mode's default configuration. The current execution mode's configuration ",
+ "warningEmphasis": "will not be retained",
+ "warningSuffix": ".",
+ "confirm": "Use This Mode"
+ },
+ "runners": {
+ "local": {
+ "title": "Built-in AI",
+ "summary": "Configure AstrBot's AI capabilities, including models, personas, knowledge bases, and tools.",
+ "description": "Use AstrBot's built-in AI with models, personas, knowledge bases, and tools."
+ },
+ "dify": {
+ "title": "Dify",
+ "summary": "AI conversations are currently handled by a Dify application.",
+ "description": "Connect a Dify application and configure its access parameters."
+ },
+ "coze": {
+ "title": "Coze",
+ "summary": "AI conversations are currently handled by a Coze Bot.",
+ "description": "Connect a Coze Bot and configure its access parameters."
+ },
+ "dashscope": {
+ "title": "Alibaba Cloud Model Studio",
+ "summary": "AI conversations are currently handled by a Model Studio application.",
+ "description": "Connect an Alibaba Cloud Model Studio application and configure its access parameters."
+ },
+ "deerflow": {
+ "title": "DeerFlow",
+ "summary": "AI conversations are currently handled by DeerFlow.",
+ "description": "Connect DeerFlow and configure its runtime parameters."
+ }
+ }
+ },
"general": {
"botName": "Bot Name",
"language": "Interface Language",
@@ -67,6 +134,9 @@
},
"configSelection": {
"selectConfig": "Select Configuration",
+ "defaultConfig": "Default Configuration",
+ "search": "Search configurations",
+ "noResults": "No matching configurations",
"normalConfig": "Basic",
"systemConfig": "System"
},
@@ -76,7 +146,7 @@
},
"configManagement": {
"title": "Configuration Management",
- "description": "AstrBot supports separate configuration files for different bots. The `default` configuration is used by default.",
+ "description": "AstrBot supports separate configuration files for different bots. The default configuration is used when none is specified.",
"newConfig": "New Configuration",
"copyConfig": "Copy Configuration",
"editConfig": "Edit Configuration",
diff --git a/dashboard/src/i18n/locales/ru-RU/core/shared.json b/dashboard/src/i18n/locales/ru-RU/core/shared.json
index 2a4e9874d4..017aea85bc 100644
--- a/dashboard/src/i18n/locales/ru-RU/core/shared.json
+++ b/dashboard/src/i18n/locales/ru-RU/core/shared.json
@@ -14,6 +14,12 @@
"chunkCount": "Фрагментов: {count}"
},
"pluginSetSelector": {
+ "title": "Плагины",
+ "subtitle": "Выберите плагины, доступные этому профилю.",
+ "preset": "Встроенный",
+ "searchPlaceholder": "Поиск плагинов",
+ "selectAll": "Выбрать все",
+ "noSearchResults": "Подходящие плагины не найдены",
"notSelected": "Плагины не включены",
"allPlugins": "Включить все плагины (*)",
"selectedCount": "Выбрано плагинов: {count}",
@@ -34,6 +40,9 @@
},
"providerSelector": {
"notSelected": "Не выбрано",
+ "defaultModel": "Модель по умолчанию",
+ "model": "Модель",
+ "searchPlaceholder": "Поиск моделей",
"buttonText": "Выбрать провайдера...",
"dialogTitle": "Выбор провайдера",
"loading": "Загрузка...",
@@ -46,6 +55,7 @@
"createProvider": "Создать провайдера",
"manageProviders": "Управление провайдерами",
"selectProviderPool": "Выбрать пул провайдеров...",
+ "selectedModelCount": "Выбрано моделей: {count}",
"selectedCount": "Выбрано провайдеров: {count}"
},
"personaSelector": {
diff --git a/dashboard/src/i18n/locales/ru-RU/features/config-metadata.json b/dashboard/src/i18n/locales/ru-RU/features/config-metadata.json
index f70e3be3e6..7c3b9ae407 100644
--- a/dashboard/src/i18n/locales/ru-RU/features/config-metadata.json
+++ b/dashboard/src/i18n/locales/ru-RU/features/config-metadata.json
@@ -36,13 +36,31 @@
"ai": {
"description": "Модель",
"hint": "При использовании сторонних сред запуска модель чата и модель описания изображений могут не работать напрямую, но некоторые плагины всё равно зависят от этих настроек.",
+ "agent_runner": {
+ "config": {
+ "model": {
+ "provider_id": {
+ "description": "Модель чата",
+ "hint": "Если поле пустое, используется первая доступная модель"
+ },
+ "fallback_provider_ids": {
+ "description": "Резервные модели чата",
+ "hint": "Если запрос к основной модели завершится ошибкой, эти модели будут использоваться по порядку."
+ },
+ "request_max_retries": {
+ "description": "Повторы при ошибках",
+ "hint": "Максимальное число попыток одного запроса модели при повторяемых ошибках."
+ }
+ }
+ }
+ },
"provider_settings": {
"default_provider_id": {
- "description": "Модель чата по умолчанию",
+ "description": "Модель чата",
"hint": "Если пусто, используется первая доступная модель"
},
"fallback_chat_models": {
- "description": "Резервные модели чата (ID)",
+ "description": "Резервные модели чата",
"hint": "Если текущая модель недоступна, запрос будет перенаправлен на эти модели по порядку."
},
"request_max_retries": {
@@ -59,8 +77,8 @@
},
"provider_stt_settings": {
"enable": {
- "description": "Включить преобразование речи в текст (STT)",
- "hint": "Главный переключатель для STT"
+ "description": "Распознавание речи",
+ "hint": "Преобразует голосовые сообщения пользователей в текст с помощью модели распознавания речи, чтобы модель могла их понять."
},
"provider_id": {
"description": "Модель STT по умолчанию",
@@ -69,8 +87,8 @@
},
"provider_tts_settings": {
"enable": {
- "description": "Включить преобразование текста в речь (TTS)",
- "hint": "Главный переключатель для TTS"
+ "description": "Голосовые ответы",
+ "hint": "Преобразует текст в голосовые ответы с помощью модели синтеза речи."
},
"provider_id": {
"description": "Модель TTS по умолчанию"
@@ -346,11 +364,11 @@
"hint": "Если включено, информация о текущем времени будет добавлена в системный промпт."
},
"show_tool_use_status": {
- "description": "Выводить статус вызова функций"
+ "description": "Показывать информацию о вызовах инструментов"
},
"show_tool_call_result": {
"description": "Выводить результаты работы инструментов",
- "hint": "Работает только при включенном статусе вызова функций. Показывает макс. 70 символов."
+ "hint": "Работает только при включенном выводе информации о вызовах инструментов. Показывает макс. 70 символов."
},
"buffer_intermediate_messages": {
"description": "Объединять промежуточные сообщения Agent",
@@ -390,7 +408,7 @@
]
},
"wake_prefix": {
- "description": "Дополнительный префикс пробуждения LLM",
+ "description": "Дополнительный префикс пробуждения",
"hint": "Если префикс пробуждения '/', а дополнительные — 'chat', то потребуется '/chat' для активации LLM."
},
"prompt_prefix": {
diff --git a/dashboard/src/i18n/locales/ru-RU/features/config.json b/dashboard/src/i18n/locales/ru-RU/features/config.json
index 1da815bc57..bfa71b7573 100644
--- a/dashboard/src/i18n/locales/ru-RU/features/config.json
+++ b/dashboard/src/i18n/locales/ru-RU/features/config.json
@@ -45,6 +45,73 @@
"notification": "Уведомления",
"moreConfig": "Дополнительные настройки"
},
+ "aiSettings": {
+ "title": "ИИ",
+ "enable": "Включить ИИ",
+ "more": "Другие действия",
+ "changeRunner": "Изменить режим выполнения",
+ "localSettingsTitle": "Встроенный ИИ AstrBot",
+ "settingsSuffix": "Настройки",
+ "tabs": {
+ "model": "Модель",
+ "persona": "Персона",
+ "capabilities": "Возможности",
+ "advanced": "Расширенные"
+ },
+ "groups": {
+ "model": "Модель",
+ "modelHint": "Выберите модели чата и стратегию повторных попыток для встроенного ИИ.",
+ "execution": "Выполнение",
+ "executionHint": "Настройте цикл вызова инструментов и процесс выполнения.",
+ "media": "Изображения и речь",
+ "mediaHint": "Настройте распознавание изображений, речи и синтез речи.",
+ "behavior": "Обработка сообщений",
+ "behaviorHint": "Эти настройки применяются ко всем режимам выполнения в профиле."
+ },
+ "common": {
+ "title": "Общие настройки",
+ "subtitle": "Эти настройки не меняются при смене режима выполнения."
+ },
+ "disabled": {
+ "title": "ИИ отключён",
+ "subtitle": "Включите ИИ для обработки сообщений с помощью модели."
+ },
+ "runnerDialog": {
+ "title": "Изменить режим выполнения",
+ "subtitle": "Изменяйте этот параметр только при подключении внешнего ИИ-приложения. Для большинства пользователей подходит встроенный ИИ.",
+ "warningPrefix": "После переключения будут применены настройки нового режима. Конфигурация текущего режима ",
+ "warningEmphasis": "не сохранится",
+ "warningSuffix": ".",
+ "confirm": "Использовать режим"
+ },
+ "runners": {
+ "local": {
+ "title": "Встроенный ИИ",
+ "summary": "Настройте возможности ИИ AstrBot, включая модели, персоны, базы знаний и инструменты.",
+ "description": "Встроенный ИИ AstrBot поддерживает модели, персоны, базы знаний и инструменты."
+ },
+ "dify": {
+ "title": "Dify",
+ "summary": "Диалоги ИИ обрабатываются приложением Dify.",
+ "description": "Подключите приложение Dify и настройте параметры доступа."
+ },
+ "coze": {
+ "title": "Coze",
+ "summary": "Диалоги ИИ обрабатываются ботом Coze.",
+ "description": "Подключите Coze Bot и настройте параметры доступа."
+ },
+ "dashscope": {
+ "title": "Alibaba Cloud Model Studio",
+ "summary": "Диалоги ИИ обрабатываются приложением Model Studio.",
+ "description": "Подключите приложение Model Studio и настройте параметры доступа."
+ },
+ "deerflow": {
+ "title": "DeerFlow",
+ "summary": "Диалоги ИИ обрабатываются DeerFlow.",
+ "description": "Подключите DeerFlow и настройте параметры выполнения."
+ }
+ }
+ },
"general": {
"botName": "Имя бота",
"language": "Язык интерфейса",
@@ -67,6 +134,9 @@
},
"configSelection": {
"selectConfig": "Выбор конфигурации",
+ "defaultConfig": "Конфигурация по умолчанию",
+ "search": "Поиск конфигураций",
+ "noResults": "Подходящие конфигурации не найдены",
"normalConfig": "Обычная",
"systemConfig": "Системная"
},
@@ -76,7 +146,7 @@
},
"configManagement": {
"title": "Управление конфигурациями",
- "description": "AstrBot поддерживает несколько конфигураций для разных ботов. По умолчанию используется «default».",
+ "description": "AstrBot поддерживает несколько конфигураций для разных ботов. Если конфигурация не указана, используется конфигурация по умолчанию.",
"newConfig": "Новая конфигурация",
"copyConfig": "Копировать конфигурацию",
"editConfig": "Изменить конфигурацию",
diff --git a/dashboard/src/i18n/locales/zh-CN/core/shared.json b/dashboard/src/i18n/locales/zh-CN/core/shared.json
index 19ef659a26..5c5cc066ec 100644
--- a/dashboard/src/i18n/locales/zh-CN/core/shared.json
+++ b/dashboard/src/i18n/locales/zh-CN/core/shared.json
@@ -14,6 +14,12 @@
"chunkCount": "{count} 个块"
},
"pluginSetSelector": {
+ "title": "插件",
+ "subtitle": "选择当前配置文件可以使用的插件。",
+ "preset": "预置",
+ "searchPlaceholder": "搜索插件",
+ "selectAll": "全选",
+ "noSearchResults": "没有匹配的插件",
"notSelected": "未启用任何插件",
"allPlugins": "启用所有插件 (*)",
"selectedCount": "已选择 {count} 个插件",
@@ -34,6 +40,9 @@
},
"providerSelector": {
"notSelected": "未选择",
+ "defaultModel": "默认模型",
+ "model": "模型",
+ "searchPlaceholder": "搜索模型",
"buttonText": "选择提供商...",
"dialogTitle": "选择提供商",
"loading": "加载中...",
@@ -46,6 +55,7 @@
"createProvider": "创建提供商",
"manageProviders": "提供商管理",
"selectProviderPool": "选择提供商池...",
+ "selectedModelCount": "已选择 {count} 个模型",
"selectedCount": "已选择 {count} 个提供商"
},
"personaSelector": {
diff --git a/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json b/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json
index ba79e23d3f..e630d556cc 100644
--- a/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json
+++ b/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json
@@ -95,15 +95,15 @@
"config": {
"model": {
"provider_id": {
- "description": "默认对话模型",
+ "description": "对话模型",
"hint": "留空时使用第一个模型"
},
"fallback_provider_ids": {
- "description": "回退对话模型列表",
+ "description": "回退对话模型",
"hint": "主对话模型请求失败时,按顺序切换到这些对话模型。"
},
"request_max_retries": {
- "description": "请求最大重试次数",
+ "description": "异常重试次数",
"hint": "单次模型请求遇到可重试错误时的最大尝试次数。"
}
}
@@ -111,7 +111,7 @@
},
"provider_settings": {
"default_image_caption_provider_id": {
- "description": "默认图片转述模型",
+ "description": "图片转述模型",
"hint": "留空代表不使用,可用于非多模态模型"
},
"image_caption_prompt": {
@@ -120,8 +120,8 @@
},
"provider_stt_settings": {
"enable": {
- "description": "启用语音转文本",
- "hint": "STT 总开关"
+ "description": "语音识别",
+ "hint": "使用语音转文字模型将用户语音转述为文本,方便模型理解。"
},
"provider_id": {
"description": "默认语音转文本模型",
@@ -130,8 +130,8 @@
},
"provider_tts_settings": {
"enable": {
- "description": "启用文本转语音",
- "hint": "TTS 总开关"
+ "description": "语音回复",
+ "hint": "使用文字转语音模型将文字转为语音回复。"
},
"provider_id": {
"description": "默认文本转语音模型"
@@ -403,11 +403,11 @@
"hint": "启用后,会在系统提示词中附带当前时间信息。"
},
"show_tool_use_status": {
- "description": "输出函数调用状态"
+ "description": "输出工具调用信息"
},
"show_tool_call_result": {
- "description": "输出函数调用返回结果",
- "hint": "仅在启用“输出函数调用状态”时生效,且最多展示 70 个字符。"
+ "description": "输出工具调用结果",
+ "hint": "仅在启用“输出工具调用信息”时生效,且最多展示 70 个字符。"
},
"buffer_intermediate_messages": {
"description": "合并 Agent 中间消息",
@@ -447,7 +447,7 @@
]
},
"wake_prefix": {
- "description": "LLM 聊天额外唤醒前缀",
+ "description": "额外唤醒前缀",
"hint": "如果唤醒前缀为 /, 额外聊天唤醒前缀为 chat,则需要 /chat 才会触发 LLM 请求"
},
"prompt_prefix": {
@@ -1141,7 +1141,7 @@
},
"image_caption_provider_id": {
"description": "群聊图片转述模型",
- "hint": "用于群聊记录注入上下文的图片理解,与默认图片转述模型分开配置。"
+ "hint": "用于群聊记录注入上下文的图片理解,与图片转述模型分开配置。"
},
"group_message_history_enable": {
"description": "持久化群聊消息记录",
diff --git a/dashboard/src/i18n/locales/zh-CN/features/config.json b/dashboard/src/i18n/locales/zh-CN/features/config.json
index 3eb5fc265d..d06713cfd7 100644
--- a/dashboard/src/i18n/locales/zh-CN/features/config.json
+++ b/dashboard/src/i18n/locales/zh-CN/features/config.json
@@ -45,6 +45,73 @@
"notification": "通知设置",
"moreConfig": "更多配置"
},
+ "aiSettings": {
+ "title": "AI",
+ "enable": "启用 AI",
+ "more": "更多操作",
+ "changeRunner": "更换执行方式",
+ "localSettingsTitle": "AstrBot 内置 AI",
+ "settingsSuffix": "设置",
+ "tabs": {
+ "model": "模型",
+ "persona": "人格",
+ "capabilities": "能力",
+ "advanced": "高级"
+ },
+ "groups": {
+ "model": "模型",
+ "modelHint": "选择内置 AI 使用的对话模型和失败重试策略。",
+ "execution": "执行设置",
+ "executionHint": "配置工具调用循环和执行过程。",
+ "media": "图像与语音",
+ "mediaHint": "配置图片理解、语音识别和语音合成。",
+ "behavior": "消息处理",
+ "behaviorHint": "这些设置适用于当前配置文件中的所有执行方式。"
+ },
+ "common": {
+ "title": "通用设置",
+ "subtitle": "这些设置不随执行方式切换。"
+ },
+ "disabled": {
+ "title": "AI 已停用",
+ "subtitle": "启用后才会处理需要模型参与的消息。"
+ },
+ "runnerDialog": {
+ "title": "更换执行方式",
+ "subtitle": "只有在接入外部 AI 应用时才需要更改。大多数用户使用内置 AI 即可。",
+ "warningPrefix": "切换后会使用新执行方式的默认配置,当前执行方式的配置",
+ "warningEmphasis": "不会保留",
+ "warningSuffix": "。",
+ "confirm": "使用此方式"
+ },
+ "runners": {
+ "local": {
+ "title": "内置 AI",
+ "summary": "配置 AstrBot 的 AI 能力,包括模型、人格、知识库和工具。",
+ "description": "使用 AstrBot 内置 AI,支持模型、人格、知识库和工具能力。"
+ },
+ "dify": {
+ "title": "Dify",
+ "summary": "当前由 Dify 应用处理 AI 对话。",
+ "description": "连接 Dify 应用并配置它的访问参数。"
+ },
+ "coze": {
+ "title": "Coze",
+ "summary": "当前由 Coze Bot 处理 AI 对话。",
+ "description": "连接 Coze Bot 并配置它的访问参数。"
+ },
+ "dashscope": {
+ "title": "阿里云百炼",
+ "summary": "当前由阿里云百炼应用处理 AI 对话。",
+ "description": "连接阿里云百炼应用并配置它的访问参数。"
+ },
+ "deerflow": {
+ "title": "DeerFlow",
+ "summary": "当前由 DeerFlow 处理 AI 对话。",
+ "description": "连接 DeerFlow 服务并配置它的运行参数。"
+ }
+ }
+ },
"general": {
"botName": "机器人名称",
"language": "界面语言",
@@ -67,6 +134,9 @@
},
"configSelection": {
"selectConfig": "选择配置文件",
+ "defaultConfig": "默认配置文件",
+ "search": "搜索配置文件",
+ "noResults": "没有匹配的配置文件",
"normalConfig": "普通",
"systemConfig": "系统"
},
@@ -76,7 +146,7 @@
},
"configManagement": {
"title": "配置文件管理",
- "description": "AstrBot 支持针对不同机器人分别设置配置文件。默认会使用 `default` 配置。",
+ "description": "AstrBot 支持针对不同机器人分别设置配置文件。未指定时使用默认配置文件。",
"newConfig": "新建配置文件",
"copyConfig": "复制配置文件",
"editConfig": "编辑配置文件",
diff --git a/dashboard/src/views/ConfigPage.vue b/dashboard/src/views/ConfigPage.vue
index fcde3dd460..fa2446ee2f 100644
--- a/dashboard/src/views/ConfigPage.vue
+++ b/dashboard/src/views/ConfigPage.vue
@@ -1,34 +1,68 @@
-