From c0992374afa2e8123165013fe6825af289f2ca16 Mon Sep 17 00:00:00 2001 From: sal Date: Mon, 1 Jun 2026 13:08:30 +0900 Subject: [PATCH] Emit __start signal at call_model entry for instant UI feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit call_model now emits writer({"__start": True}) before LLM inference. stream_response() converts it to {"__status": label} — distinct from __meta so the UI shows it immediately without accumulating in the log. Removes the 10-second silent wait before the first progress message. Co-Authored-By: Claude Sonnet 4.6 --- services/agent/agent_service.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/agent/agent_service.py b/services/agent/agent_service.py index 40a1354..33eae66 100644 --- a/services/agent/agent_service.py +++ b/services/agent/agent_service.py @@ -115,6 +115,9 @@ class AgentService: writer = get_stream_writer() except Exception: writer = None + # LLM 추론 시작 직전에 즉시 신호 emit — UI에 "분석 중" 표시 + if writer: + writer({"__start": True}) # 체크박스 값을 모델의 enable_thinking으로 전달 (런타임 오버라이드) show_thinking = config.get("configurable", {}).get("show_thinking", False) _llm = llm_with_tools.bind(enable_thinking=show_thinking) if show_thinking != chat_model.enable_thinking else llm_with_tools @@ -249,6 +252,11 @@ class AgentService: # ── custom 이벤트 ──────────────────────────────────────────── if mode == "custom": + if isinstance(data, dict) and "__start" in data: + # call_model 시작 즉시 emit — LLM 추론 전에 상태 표시 + label = "검색 결과를 분석하고 있습니다..." if prev_node == "tools" else "질문을 분석하고 있습니다..." + yield {"__status": label} + continue if isinstance(data, dict) and "__query_rewrite" in data: info = data["__query_rewrite"] if lg or self._rag_verbose: