diff --git a/src/maisaka/builtin_tool/send_emoji.py b/src/maisaka/builtin_tool/send_emoji.py index e55b3d05..cf5027c6 100644 --- a/src/maisaka/builtin_tool/send_emoji.py +++ b/src/maisaka/builtin_tool/send_emoji.py @@ -376,6 +376,7 @@ async def _select_emoji_with_sub_agent( context_message_limit=_EMOJI_SUB_AGENT_CONTEXT_LIMIT, system_prompt=system_prompt, extra_messages=[prompt_message, candidate_message], + request_kind="emotion", model_task_name=model_task_name, ) selection_duration_ms = round((datetime.now() - selection_started_at).total_seconds() * 1000, 2) diff --git a/src/maisaka/chat_loop_service.py b/src/maisaka/chat_loop_service.py index b9377478..76621584 100644 --- a/src/maisaka/chat_loop_service.py +++ b/src/maisaka/chat_loop_service.py @@ -45,6 +45,14 @@ REQUEST_TYPE_BY_REQUEST_KIND = { "planner": "maisaka_planner", "timing_gate": "maisaka_timing_gate", } +PROMPT_PREVIEW_CATEGORY_BY_REQUEST_KIND = { + "planner": "planner", + "timing_gate": "timing_gate", + "reply_effect_judge": "reply_effect_judge", + "expression_selector": "expression_selector", + "emotion": "emotion", + "sub_agent": "sub_agent", +} CONTEXT_SELECTION_CACHE_STABILITY_RATIO = 2.0 @@ -234,6 +242,15 @@ class MaisakaChatLoopService: f"maisaka_{normalized_request_kind}" if normalized_request_kind else "maisaka_planner", ) + @staticmethod + def _resolve_prompt_preview_category(request_kind: str) -> str: + """根据请求类型决定 Prompt 预览落盘目录,避免子代理混入 planner。""" + + normalized_request_kind = str(request_kind or "").strip().lower() + if not normalized_request_kind: + return "planner" + return PROMPT_PREVIEW_CATEGORY_BY_REQUEST_KIND.get(normalized_request_kind, normalized_request_kind) + def _get_llm_chat_client(self, request_kind: str) -> LLMServiceClient: """获取当前请求类型对应的 LLM 客户端。""" @@ -544,7 +561,7 @@ class MaisakaChatLoopService: if global_config.debug.show_maisaka_thinking: prompt_section_result = PromptCLIVisualizer.build_prompt_section_result( built_messages, - category="planner" if request_kind != "timing_gate" else "timing_gate", + category=self._resolve_prompt_preview_category(request_kind), chat_id=self._session_id, request_kind=request_kind, selection_reason=selection_reason, diff --git a/src/maisaka/display/display_utils.py b/src/maisaka/display/display_utils.py index 5f15ed7f..326eb2a3 100644 --- a/src/maisaka/display/display_utils.py +++ b/src/maisaka/display/display_utils.py @@ -8,6 +8,8 @@ _REQUEST_PANEL_STYLE_MAP: dict[str, tuple[str, str]] = { "timing_gate": ("MaiSaka 大模型请求 - Timing Gate 子代理", "bright_magenta"), "replyer": ("MaiSaka 回复器 Prompt", "bright_yellow"), "emotion": ("MaiSaka Emotion Tool Prompt", "bright_cyan"), + "expression_selector": ("MaiSaka 表达选择子代理 Prompt", "bright_yellow"), + "reply_effect_judge": ("MaiSaka 回复效果评分器 Prompt", "bright_red"), "sub_agent": ("MaiSaka 大模型请求 - 子代理", "bright_blue"), }