diff --git a/prompts/main_system.txt b/prompts/main_system.txt index a0f1b12..263d15f 100644 --- a/prompts/main_system.txt +++ b/prompts/main_system.txt @@ -103,6 +103,7 @@ - 用户说「给我这个文件」「下载 xxx」→ 用下载链接 - 用户说「看一下这个文件」「展示 xxx 的内容」→ 用 `` 卡片 - 生成报告/数据文件后想展示成果 → 用 `` 卡片 +- 用户让你处理、分析、修改文件,或任务可能产生结果文件时 → 完成后主动用 `` 卡片或下载链接展示结果,不要等用户索要 注意:路径必须是工作区内已存在的文件。输出前确保文件已通过 `write_file` 或其他方式创建。 diff --git a/prompts/main_system_qwenvl.txt b/prompts/main_system_qwenvl.txt index 8b65c2e..b22a1c0 100644 --- a/prompts/main_system_qwenvl.txt +++ b/prompts/main_system_qwenvl.txt @@ -103,6 +103,7 @@ - 用户说「给我这个文件」「下载 xxx」→ 用下载链接 - 用户说「看一下这个文件」「展示 xxx 的内容」→ 用 `` 卡片 - 生成报告/数据文件后想展示成果 → 用 `` 卡片 +- 用户让你处理、分析、修改文件,或任务可能产生结果文件时 → 完成后主动用 `` 卡片或下载链接展示结果,不要等用户索要 注意:路径必须是工作区内已存在的文件。输出前确保文件已通过 `write_file` 或其他方式创建。 diff --git a/prompts/workspace_system.txt b/prompts/workspace_system.txt index 0e5d0b1..ab5a742 100644 --- a/prompts/workspace_system.txt +++ b/prompts/workspace_system.txt @@ -9,3 +9,5 @@ ``` {file_tree} ``` + +{recent_uploads} diff --git a/server/chat_flow_task_main.py b/server/chat_flow_task_main.py index cf27bc1..be6fe9e 100644 --- a/server/chat_flow_task_main.py +++ b/server/chat_flow_task_main.py @@ -174,6 +174,31 @@ def _user_message_ui_defaults(source: str, *, auto_user_message_event: bool = Fa return {"visibility": "chat", "starts_work": normalized == "user" and not auto_user_message_event} +def _extract_media_path(item: Any) -> str: + if isinstance(item, dict): + return str(item.get("path") or "").strip() + return str(item or "").strip() + + +def _build_media_paths_message(images: Optional[List[Any]], videos: Optional[List[Any]]) -> Optional[str]: + """为本次消息附带的图片/视频生成一条 hidden user 消息文本。""" + paths: List[str] = [] + for item in images or []: + path = _extract_media_path(item) + if path and path not in paths: + paths.append(path) + for item in videos or []: + path = _extract_media_path(item) + if path and path not in paths: + paths.append(path) + if not paths: + return None + lines = ["[系统通知|media_paths]", "本次消息附带的媒体文件路径:"] + for path in paths: + lines.append(f"- `{path}`") + return "\n".join(lines) + + def _should_skip_versioning_for_message( *, message: str, @@ -920,6 +945,19 @@ async def handle_task_with_sender( } ) if not auto_user_message_event: + media_paths_message = _build_media_paths_message(images, videos) + if media_paths_message: + web_terminal.context_manager.add_conversation( + "user", + media_paths_message, + metadata={ + "source": "media_paths", + "message_source": "media_paths", + "visibility": "hidden", + "starts_work": False, + "hidden": True, + } + ) try: sender( 'user_message', diff --git a/static/src/components/chat/ShowFileCard.vue b/static/src/components/chat/ShowFileCard.vue index f55aa15..35be71e 100644 --- a/static/src/components/chat/ShowFileCard.vue +++ b/static/src/components/chat/ShowFileCard.vue @@ -22,7 +22,7 @@ -
+
加载中... @@ -35,7 +35,7 @@