diff --git a/app/components/agent/AgentToolbar.vue b/app/components/agent/AgentToolbar.vue index a308477..2374b8a 100644 --- a/app/components/agent/AgentToolbar.vue +++ b/app/components/agent/AgentToolbar.vue @@ -50,8 +50,8 @@ const emit = defineEmits<{ - diff --git a/app/pages/chat/[agentSlug]/index.vue b/app/pages/chat/[agentSlug]/index.vue index 2da18a9..d5e7903 100644 --- a/app/pages/chat/[agentSlug]/index.vue +++ b/app/pages/chat/[agentSlug]/index.vue @@ -19,7 +19,13 @@ const isMobile = useMediaQuery('(max-width: 767.98px)'); const sidebarCollapsed = ref(false); const mobileSidebarOpen = ref(false); const showPromptModal = ref(false); -const systemPromptText = ref(""); +const agentSystemPrompt = ref(""); +const systemPromptText = computed(() => + sessions.currentSession.value?.systemPrompt?.trim() || agentSystemPrompt.value || "", +); +const isCustomPrompt = computed(() => + !!(sessions.currentSession.value?.systemPrompt?.trim()), +); const preferredModelId = ref(null); const guestDefaultModelId = ref(null); @@ -146,12 +152,20 @@ async function loadSystemPrompt() { const res = await $fetch<{ code: number; data: { systemPrompt?: string } }>( `/api/agents/${agentSlug.value}/info`, ); - systemPromptText.value = res.data?.systemPrompt ?? ""; + agentSystemPrompt.value = res.data?.systemPrompt ?? ""; } catch { - systemPromptText.value = ""; + agentSystemPrompt.value = ""; } } +async function handleSavePrompt(prompt: string | null) { + if (!sessions.currentSessionId.value) return; + await sessions.updateSessionConfig(sessions.currentSessionId.value, { systemPrompt: prompt }); + const { $toast } = useNuxtApp(); + $toast?.success?.("系统提示词已更新"); + showPromptModal.value = false; +} + watch( () => sessions.currentSessionId.value, async (sid) => { @@ -293,6 +307,8 @@ onMounted(async () => {