自动同步智能体

This commit is contained in:
朱潮 2026-02-22 19:46:06 +08:00
parent 082fd24727
commit b75afac520

View File

@ -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")