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);