diff --git a/app/agent/prompt/__init__.py b/app/agent/prompt/__init__.py index 0ec9db95..718017c0 100644 --- a/app/agent/prompt/__init__.py +++ b/app/agent/prompt/__init__.py @@ -145,12 +145,12 @@ class PromptManager: if not settings.AI_AGENT_VERBOSE: verbose_spec = ( "\n\n[Important Instruction] STRICTLY ENFORCED: " - "If tools are needed, DO NOT output any conversational text, explanations, progress updates, " - "or acknowledgements before the first tool call or between tool calls. " - "Call tools directly without any transitional phrases. " - "You MUST remain completely silent until all required tools have finished and you have the final result. " - "Only then may you send one final user-facing reply. " - "DO NOT output any intermediate content whatsoever." + "Keep tool-related narration concise and useful. " + "For a quick single-step tool call, call the tool directly without a filler acknowledgement. " + "For multi-step work or any task that may take noticeable time, send one brief user-facing progress update " + "before the first tool call, then another short update after a meaningful milestone or several tool calls. " + "State what you are checking or what you learned, without exposing hidden reasoning, raw tool arguments, " + "or repetitive per-tool narration. Continue working after each update and finish with a concise final result." ) # MoviePilot系统信息 diff --git a/tests/test_agent_progress_updates.py b/tests/test_agent_progress_updates.py new file mode 100644 index 00000000..d1db3256 --- /dev/null +++ b/tests/test_agent_progress_updates.py @@ -0,0 +1,19 @@ +from unittest.mock import patch + +from app.agent.prompt import prompt_manager +from app.core.config import settings +from app.schemas.types import MessageChannel + + +def test_non_verbose_prompt_keeps_long_running_tasks_user_visible() -> None: + """非详细模式下的长任务仍应主动向用户提供阶段性进度。""" + with patch.object(settings, "AI_AGENT_VERBOSE", False): + prompt = prompt_manager.get_agent_prompt( + channel=MessageChannel.WebAgent.value + ) + + assert "before the first tool call" in prompt + assert "after a meaningful milestone or several tool calls" in prompt + assert "Continue working after each update" in prompt + assert "remain completely silent" not in prompt + assert "DO NOT output any intermediate content" not in prompt