fix: be plugin unload error (#6847)

diff --git a/config-ui/src/api/plugin/index.ts b/config-ui/src/api/plugin/index.ts
index 4f6633b..054c539 100644
--- a/config-ui/src/api/plugin/index.ts
+++ b/config-ui/src/api/plugin/index.ts
@@ -16,11 +16,16 @@
  *
  */
 
+import { request } from '@/utils';
+
 import * as jira from './jira';
 import * as tapd from './tapd';
 import * as webhook from './webhook';
 
+export const list = (): Promise<[{ plugin: string }]> => request('/plugins');
+
 export const plugin = {
+  list,
   jira,
   tapd,
   webhook,
diff --git a/config-ui/src/routes/layout/loader.ts b/config-ui/src/routes/layout/loader.ts
index 003db20..2bba5a8 100644
--- a/config-ui/src/routes/layout/loader.ts
+++ b/config-ui/src/routes/layout/loader.ts
@@ -16,6 +16,8 @@
  *
  */
 
+import { intersection } from 'lodash';
+
 import API from '@/api';
 import { getRegisterPlugins } from '@/plugins';
 
@@ -24,19 +26,21 @@
 };
 
 export const layoutLoader = async ({ request }: Props) => {
-  let plugins = [];
+  let fePlugins = getRegisterPlugins();
+  const bePlugins = await API.plugin.list();
 
   try {
     const envPlugins = import.meta.env.DEVLAKE_PLUGINS.split(',').filter(Boolean);
-    plugins = getRegisterPlugins().filter((plugin) => !envPlugins.length || envPlugins.includes(plugin));
-  } catch (err) {
-    plugins = getRegisterPlugins();
-  }
+    fePlugins = fePlugins.filter((plugin) => !envPlugins.length || envPlugins.includes(plugin));
+  } catch (err) {}
 
   const res = await API.version(request.signal);
 
   return {
     version: res.version,
-    plugins,
+    plugins: intersection(
+      fePlugins,
+      bePlugins.map((it) => it.plugin),
+    ),
   };
 };