From 48effe53b2bbb098509e4c8ebb555d1043123094 Mon Sep 17 00:00:00 2001 From: yhjun1026 <460342015@qq.com> Date: Thu, 5 Mar 2026 21:35:04 +0800 Subject: [PATCH] refactor: optimize scene prompt formatting and selection sync logic - Extract scene separator as variable for better readability - Improve scene selection sync to avoid unnecessary state updates - Add smart detection for server/client scene synchronization --- .../src/derisk_serve/agent/agents/chat/agent_chat.py | 3 ++- .../app/application/app/components/tab-scenes.tsx | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/derisk-serve/src/derisk_serve/agent/agents/chat/agent_chat.py b/packages/derisk-serve/src/derisk_serve/agent/agents/chat/agent_chat.py index cc0eef0a..5756bd80 100644 --- a/packages/derisk-serve/src/derisk_serve/agent/agents/chat/agent_chat.py +++ b/packages/derisk-serve/src/derisk_serve/agent/agents/chat/agent_chat.py @@ -1137,11 +1137,12 @@ async def _load_and_inject_scenes( return "" # 构建场景提示词 + scene_separator = "\n\n---\n\n" scene_prompt = f"""# 场景定义 你是根据以下场景定义来协助用户的智能助手。请严格遵循场景定义中的角色设定、工作流程和工具使用规范。 -{"\n\n---\n\n".join(scene_contents)} +{scene_separator.join(scene_contents)} --- diff --git a/web/src/app/application/app/components/tab-scenes.tsx b/web/src/app/application/app/components/tab-scenes.tsx index b995f25b..fc478a66 100644 --- a/web/src/app/application/app/components/tab-scenes.tsx +++ b/web/src/app/application/app/components/tab-scenes.tsx @@ -200,8 +200,14 @@ export default function TabScenes() { // 从 appInfo 中获取已选择的场景 useEffect(() => { - if (appInfo?.scenes) { - setSelectedScenes(appInfo.scenes); + if (appInfo?.scenes && appInfo.scenes.length > 0) { + const serverHasNewScenes = appInfo.scenes.some(id => !selectedScenes.includes(id)); + const localHasUnsyncedScenes = selectedScenes.some(id => !appInfo.scenes.includes(id)); + const isInitializing = selectedScenes.length === 0; + + if (serverHasNewScenes || (isInitializing && !localHasUnsyncedScenes)) { + setSelectedScenes(appInfo.scenes); + } } }, [appInfo?.scenes]); @@ -338,10 +344,12 @@ export default function TabScenes() { const newScenes = [...selectedScenes, newScene.scene_id]; setSelectedScenes(newScenes); + await fetchUpdateApp({ ...appInfo, scenes: newScenes }); message.success(t('scene_create_success', '场景创建成功')); setCreateModalVisible(false); + setActiveSceneId(newScene.scene_id); setEditingContent(defaultContent); setHasChanges(false);