From c9513e5ecb9d319d9ce596df541a4798e4064fc0 Mon Sep 17 00:00:00 2001 From: buua436 Date: Wed, 6 May 2026 19:07:50 +0800 Subject: [PATCH] Fix: bootstrap agent replica on demand (#14588) ### What problem does this PR solve? bootstrap agent replica on demand ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/restful_apis/agent_api.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/api/apps/restful_apis/agent_api.py b/api/apps/restful_apis/agent_api.py index ffe8e805e0..cf5bcaa973 100644 --- a/api/apps/restful_apis/agent_api.py +++ b/api/apps/restful_apis/agent_api.py @@ -941,11 +941,27 @@ async def agent_chat_completion(tenant_id, agent_id=None): code=RetCode.OPERATING_ERROR, ) + _, cvs = await thread_pool_exec(UserCanvasService.get_by_id, agent_id) + if not cvs: + return get_data_error_result(message="canvas not found.") + replica_payload = CanvasReplicaService.load_for_run( canvas_id=agent_id, tenant_id=str(tenant_id), runtime_user_id=user_id, ) + if not replica_payload: + try: + replica_payload = CanvasReplicaService.bootstrap( + canvas_id=agent_id, + tenant_id=str(tenant_id), + runtime_user_id=user_id, + dsl=cvs.dsl, + canvas_category=getattr(cvs, "canvas_category", CanvasCategory.Agent), + title=getattr(cvs, "title", ""), + ) + except ValueError as exc: + return get_data_error_result(message=str(exc)) if not replica_payload: return get_data_error_result(message="canvas replica not found, please fetch the agent first.") @@ -954,7 +970,6 @@ async def agent_chat_completion(tenant_id, agent_id=None): canvas_category = replica_payload.get("canvas_category", CanvasCategory.Agent) dsl_str = json.dumps(replica_dsl, ensure_ascii=False) - _, cvs = await thread_pool_exec(UserCanvasService.get_by_id, agent_id) if cvs.canvas_category == CanvasCategory.DataFlow: task_id = get_uuid() Pipeline(