feat(frontend): 记忆从设置弹窗移至侧边栏独立入口

- 新增 MemoryPage 及路由 /page/workspace/memory
- 侧边栏在「技能」下方新增「记忆」入口
- 设置弹窗注释掉「记忆」标签页

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
xuhdandClaude Opus 4.7 committed 2026-05-15 15:47:49 +08:00
1 parent 1574d44cc3
commit 9664cb653a
4 files changed
+44 -14

No files matched your search

@@ -1,6 +1,6 @@
"use client"; "use client";
import { BellIcon, BrainIcon, PaletteIcon, SparklesIcon, UserIcon, WrenchIcon } from "lucide-react"; import { BellIcon, PaletteIcon, SparklesIcon, UserIcon, WrenchIcon } from "lucide-react";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { import {
@@ -50,18 +50,19 @@ export function SettingsDialog(props: SettingsDialogProps) {
label: t.settings.sections.appearance, label: t.settings.sections.appearance,
icon: PaletteIcon, icon: PaletteIcon,
}, },
{ // {
id: "notification", // id: "notification",
label: t.settings.sections.notification, // label: t.settings.sections.notification,
icon: BellIcon, // icon: BellIcon,
}, // },
{ id: "tools", label: t.settings.sections.tools, icon: WrenchIcon }, // { id: "tools", label: t.settings.sections.tools, icon: WrenchIcon },
{ id: "skills", label: t.settings.sections.skills, icon: SparklesIcon }, // { id: "skills", label: t.settings.sections.skills, icon: SparklesIcon },
{ // 记忆已移至侧边栏入口 (/page/workspace/memory)
id: "memory", // {
label: t.settings.sections.memory, // id: "memory",
icon: BrainIcon, // label: t.settings.sections.memory,
}, // icon: BrainIcon,
// },
{ id: "tools", label: t.settings.sections.tools, icon: WrenchIcon }, { id: "tools", label: t.settings.sections.tools, icon: WrenchIcon },
{ {
id: "account", id: "account",
@@ -13,7 +13,7 @@ import {
} from "@/components/ui/sidebar"; } from "@/components/ui/sidebar";
import { getStoredAuth } from "@/core/auth"; import { getStoredAuth } from "@/core/auth";
import { useI18n } from "@/core/i18n/hooks"; import { useI18n } from "@/core/i18n/hooks";
import { BotIcon, ListChecks, MessageSquarePlus, MessagesSquare, SparklesIcon, UsersIcon } from "lucide-react"; import { BotIcon, BrainIcon, ListChecks, MessageSquarePlus, MessagesSquare, SparklesIcon, UsersIcon } from "lucide-react";
export function WorkspaceNavChatList() { export function WorkspaceNavChatList() {
const { t } = useI18n(); const { t } = useI18n();
@@ -63,6 +63,17 @@ export function WorkspaceNavChatList() {
</Link> </Link>
</SidebarMenuButton> </SidebarMenuButton>
</SidebarMenuItem> </SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton
isActive={pathname.startsWith("/page/workspace/memory")}
asChild
>
<Link className="text-sidebar-foreground" href="/page/workspace/memory">
<BrainIcon />
<span>记忆</span>
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem> <SidebarMenuItem>
<SidebarMenuButton <SidebarMenuButton
isActive={pathname === "/page/workspace/scheduled/tasks"} isActive={pathname === "/page/workspace/scheduled/tasks"}
+9
View File
@@ -0,0 +1,9 @@
import { MemorySettingsPage } from "@/components/workspace/settings/memory-settings-page";
export default function MemoryPage() {
return (
<div className="flex flex-col h-full overflow-auto p-6">
<MemorySettingsPage />
</div>
);
}
@@ -21,6 +21,7 @@ import NewAgentPage from "./NewAgentPage";
import ScheduledTaskRunDetailPage from "./ScheduledTaskRunDetailPage"; import ScheduledTaskRunDetailPage from "./ScheduledTaskRunDetailPage";
import ScheduledTasksPage from "./ScheduledTasksPage"; import ScheduledTasksPage from "./ScheduledTasksPage";
import LlmMetricsPage from "./LlmMetricsPage"; import LlmMetricsPage from "./LlmMetricsPage";
import MemoryPage from "./MemoryPage";
import PromptPrefixSettingsPage from "./PromptPrefixSettingsPage"; import PromptPrefixSettingsPage from "./PromptPrefixSettingsPage";
import SkillEvolutionPage from "./SkillEvolutionPage"; import SkillEvolutionPage from "./SkillEvolutionPage";
import SkillsPage from "./SkillsPage"; import SkillsPage from "./SkillsPage";
@@ -155,6 +156,14 @@ export default function WorkspaceRoutes({
</WorkspaceLayout> </WorkspaceLayout>
} }
/> />
<Route
path="memory"
element={
<WorkspaceLayout {...layoutProps}>
<MemoryPage />
</WorkspaceLayout>
}
/>
<Route <Route
path="scheduled" path="scheduled"
element={<Navigate to="/page/workspace/scheduled/tasks" replace />} element={<Navigate to="/page/workspace/scheduled/tasks" replace />}