diff --git a/frontend/src/app/knowledge/(desktop)/index.tsx b/frontend/src/app/knowledge/(desktop)/index.tsx
new file mode 100644
index 00000000..f3dc3fb8
--- /dev/null
+++ b/frontend/src/app/knowledge/(desktop)/index.tsx
@@ -0,0 +1,29 @@
+'use client';
+
+import dynamic from 'next/dynamic';
+import { FC, memo } from 'react';
+import { Flexbox } from 'react-layout-kit';
+
+import ResponsiveIndex from '@/components/ResponsiveIndex';
+
+import PageTitle from '../features/PageTitle';
+import ChatHeader from './features/ChatHeader';
+import Conversation from './features/Conversation';
+import SideBar from './features/SideBar';
+import Layout from './layout.desktop';
+
+const Mobile: FC = dynamic(() => import('../(mobile)'), { ssr: false }) as FC;
+
+const DesktopPage = memo(() => (
+
+
+
+
+
+
+
+
+
+
+));
+export default DesktopPage;
diff --git a/frontend/src/app/knowledge/(desktop)/layout.desktop.tsx b/frontend/src/app/knowledge/(desktop)/layout.desktop.tsx
new file mode 100644
index 00000000..94e2a462
--- /dev/null
+++ b/frontend/src/app/knowledge/(desktop)/layout.desktop.tsx
@@ -0,0 +1,23 @@
+'use client';
+
+import { PropsWithChildren, memo } from 'react';
+import { Flexbox } from 'react-layout-kit';
+
+import AppLayoutDesktop from '@/layout/AppLayout.desktop';
+import { SidebarTabKey } from '@/store/global/initialState';
+
+
+export default memo(({ children }: PropsWithChildren) => {
+ return (
+
+
+ {children}
+
+
+ );
+});
diff --git a/frontend/src/app/knowledge/page.tsx b/frontend/src/app/knowledge/page.tsx
new file mode 100644
index 00000000..2fbc496a
--- /dev/null
+++ b/frontend/src/app/knowledge/page.tsx
@@ -0,0 +1,9 @@
+const Page = () => {
+ // const mobile = isMobileDevice();
+
+ // const Page = mobile ? MobilePage : DesktopPage;
+
+ return
321
;
+};
+
+export default Page;
diff --git a/frontend/src/features/SideBar/TopActions.tsx b/frontend/src/features/SideBar/TopActions.tsx
index 66f5a0ab..df1a4c07 100644
--- a/frontend/src/features/SideBar/TopActions.tsx
+++ b/frontend/src/features/SideBar/TopActions.tsx
@@ -1,5 +1,5 @@
import { ActionIcon } from '@lobehub/ui';
-import { Compass, MessageSquare } from 'lucide-react';
+import { Compass, Library, MessageSquare } from 'lucide-react';
import Link from 'next/link';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
@@ -43,6 +43,15 @@ const TopActions = memo(({ tab }) => {
title={t('tab.market')}
/>
+
+
+
>
);
});
diff --git a/frontend/src/store/global/slices/common/initialState.ts b/frontend/src/store/global/slices/common/initialState.ts
index dcdb2b82..77a9f0da 100644
--- a/frontend/src/store/global/slices/common/initialState.ts
+++ b/frontend/src/store/global/slices/common/initialState.ts
@@ -2,6 +2,7 @@ import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.share
export enum SidebarTabKey {
Chat = 'chat',
+ Knowledge = 'knowledge',
Market = 'market',
Setting = 'settings',
}