diff --git a/src/main/presenter/configPresenter/mcpConfHelper.ts b/src/main/presenter/configPresenter/mcpConfHelper.ts index 828cd1821..d282c19af 100644 --- a/src/main/presenter/configPresenter/mcpConfHelper.ts +++ b/src/main/presenter/configPresenter/mcpConfHelper.ts @@ -4,6 +4,7 @@ import { MCP_EVENTS } from '@/events' import ElectronStore from 'electron-store' import { app } from 'electron' import { compare } from 'compare-versions' +import { presenter } from '..' // MCP设置的接口 interface IMcpSettings { @@ -314,7 +315,7 @@ export class McpConfHelper { } // 获取MCP服务器配置 - getMcpServers(): Promise> { + async getMcpServers(): Promise> { const storedServers = this.mcpStore.get('mcpServers') || DEFAULT_MCP_SERVERS.mcpServers // 检查并补充缺少的inmemory服务 @@ -352,6 +353,13 @@ export class McpConfHelper { delete updatedServers[serverName] } + // 移除不兼容的服务 + const builtinKnowledgeSupported = await presenter.knowledgePresenter.isSupported() + if (!builtinKnowledgeSupported) { + console.warn('内置知识库服务不支持当前环境,移除相关服务') + delete updatedServers.builtinKnowledge + } + // 如果有变化,更新存储 if ( Object.keys(updatedServers).length !== Object.keys(storedServers).length || diff --git a/src/main/presenter/knowledgePresenter/index.ts b/src/main/presenter/knowledgePresenter/index.ts index 5ab9cc139..9a408046d 100644 --- a/src/main/presenter/knowledgePresenter/index.ts +++ b/src/main/presenter/knowledgePresenter/index.ts @@ -104,14 +104,32 @@ export class KnowledgePresenter implements IKnowledgePresenter { } /** - * 创建知识库(初始化 RAG 应用) + * Supported operating systems + */ + private static readonly SUPPORTED_OS = [ + 'win32-x64', + 'linux-x64', + 'linux-arm64', + 'darwin-arm64', + 'darwin-x64' + ] + + isSupported = async (): Promise => { + const os = `${process.platform}-${process.arch}` + return KnowledgePresenter.SUPPORTED_OS.includes(os) + } + + /** + * Create a knowledge base (initialize RAG application) + * @param config Knowledge base configuration */ create = async (config: BuiltinKnowledgeConfig): Promise => { await this.createStorePresenter(config) } /** - * 更新知识库配置 + * Update a knowledge base configuration + * @param config Knowledge base configuration */ update = async (config: BuiltinKnowledgeConfig): Promise => { if (config.enabled) { @@ -130,7 +148,8 @@ export class KnowledgePresenter implements IKnowledgePresenter { } /** - * 删除知识库(移除本地存储) + * Delete a knowledge base (remove local storage) + * @param id Knowledge base ID */ delete = async (id: string): Promise => { if (this.storePresenterCache.has(id)) { diff --git a/src/renderer/src/components/settings/KnowledgeBaseSettings.vue b/src/renderer/src/components/settings/KnowledgeBaseSettings.vue index 662e79d04..42307123d 100644 --- a/src/renderer/src/components/settings/KnowledgeBaseSettings.vue +++ b/src/renderer/src/components/settings/KnowledgeBaseSettings.vue @@ -29,7 +29,11 @@ - +
| null>(null) const ragflowSettingsRef = ref | null>(null) const fastGptSettingsRef = ref | null>(null) const builtinSettingsRef = ref | null>(null) +// 根据系统版本控制是否展示内置知识库 +const knowledgePresenter = usePresenter('knowledgePresenter') +const enableBuiltinKnowledge = ref(false) +knowledgePresenter.isSupported().then((res) => { + enableBuiltinKnowledge.value = res +}) + const { t } = useI18n() // 是否展示内置知识库文件详情 const showBuiltinKnowledgeDetail = ref(false) diff --git a/src/shared/presenter.d.ts b/src/shared/presenter.d.ts index 9c27d89b9..f09b8bd1e 100644 --- a/src/shared/presenter.d.ts +++ b/src/shared/presenter.d.ts @@ -1398,16 +1398,9 @@ export type KnowledgeFileResult = { */ export interface IKnowledgePresenter { /** - * Create a knowledge base (initialize RAG application) - * @param config Knowledge base configuration + * Check if the knowledge presenter is supported in current environment */ - create(config: BuiltinKnowledgeConfig): Promise - - /** - * Delete a knowledge base (remove local storage) - * @param id Knowledge base ID - */ - delete(id: string): Promise + isSupported(): Promise /** * Add a file to the knowledge base