From ea8d1f8d26b293ab6f8080255945c511ef848dcf Mon Sep 17 00:00:00 2001 From: jxxghp Date: Fri, 7 Aug 2026 06:57:07 +0800 Subject: [PATCH] fix(agent): report progress during long tool runs --- app/agent/prompt/__init__.py | 12 ++++++------ tests/test_agent_progress_updates.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 tests/test_agent_progress_updates.py diff --git a/app/agent/prompt/__init__.py b/app/agent/prompt/__init__.py index 0ec9db95e..718017c06 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 000000000..d1db3256e --- /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