diff --git a/routes/bot_manager.py b/routes/bot_manager.py index 82110e7..f89318a 100644 --- a/routes/bot_manager.py +++ b/routes/bot_manager.py @@ -1773,6 +1773,63 @@ async def update_bot_settings( await conn.commit() + # 同步更新所有从此智能体复制的智能体 + # 查找所有 copied_from 等于当前 bot_uuid 的智能体 + await cursor.execute(""" + SELECT id, settings + FROM agent_bots + WHERE copied_from = %s + """, (bot_uuid,)) + copied_bots = await cursor.fetchall() + + for copied_bot in copied_bots: + copied_bot_id, copied_settings = copied_bot + copied_settings = copied_settings if copied_settings else {} + + # 同步配置:系统提示词、skill、AI模型、语言、交互设置 + copied_settings['system_prompt'] = existing_settings.get('system_prompt') + copied_settings['skills'] = existing_settings.get('skills') + copied_settings['model_id'] = existing_settings.get('model_id') + copied_settings['language'] = existing_settings.get('language') + copied_settings['tool_response'] = existing_settings.get('tool_response') + copied_settings['enable_thinking'] = existing_settings.get('enable_thinking') + copied_settings['enable_memori'] = existing_settings.get('enable_memori') + + # 更新复制的智能体的设置 + await cursor.execute(""" + UPDATE agent_bots + SET settings = %s, updated_at = NOW() + WHERE id = %s + """, (json.dumps(copied_settings), copied_bot_id)) + + # 同步 MCP 服务器配置 + await cursor.execute(""" + DELETE FROM agent_mcp_servers WHERE bot_id = %s + """, (copied_bot_id,)) + + await cursor.execute(""" + SELECT name, type, config, enabled + FROM agent_mcp_servers + WHERE bot_id = %s + """, (bot_uuid,)) + source_mcp_servers = await cursor.fetchall() + + for server in source_mcp_servers: + server_name, server_type, server_config, server_enabled = server + await cursor.execute(""" + INSERT INTO agent_mcp_servers (bot_id, name, type, config, enabled) + VALUES (%s, %s, %s, %s, %s) + """, (copied_bot_id, server_name, server_type, json.dumps(server_config) if server_config else None, server_enabled)) + + # 提交所有同步更新 + if copied_bots: + await conn.commit() + + # 同步 skills 文件夹到所有复制的智能体 + for copied_bot in copied_bots: + copied_bot_id = copied_bot[0] + copy_skills_folder(bot_uuid, str(copied_bot_id)) + return SuccessResponse(success=True, message="Bot settings updated successfully")