From efee3c743aaa3d5d0aeac7b5cdfa81f3497e2cd6 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Thu, 2 Apr 2026 13:18:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=BA=A4=E4=BA=92=E6=8F=90=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C=20#594?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/develop-guides/roadmap.md | 1 + web/src/components/MessageInputComponent.vue | 35 ++++++++++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/docs/develop-guides/roadmap.md b/docs/develop-guides/roadmap.md index 7ea0a5a5..20b98b1a 100644 --- a/docs/develop-guides/roadmap.md +++ b/docs/develop-guides/roadmap.md @@ -36,6 +36,7 @@ - 调整 backend Python 工作区依赖边界:将 `backend/package/yuxi` 明确为承载核心运行依赖的业务包,根 `backend/pyproject.toml` 仅保留工作区入口与开发/测试配置,减少依赖职责混淆。 - 修复沙盒 `workspace` 隔离粒度:宿主机目录从共享 `saves/threads/shared/workspace` 收敛为用户级 `saves/threads/shared//workspace`,并同步传递 `user_id` 到 sandbox 路径解析、provisioner 挂载与 viewer/chat 测试,保证同用户跨线程共享、不同用户隔离。 +- 调整输入框 `@` 提及中的文件搜索交互:无查询内容时不再直接展示文件列表,改为提示“输入相关内容以搜索文件”,避免未过滤结果干扰选择。 历史版本发布记录已迁移到 [版本变更记录](./changelog.md)。 diff --git a/web/src/components/MessageInputComponent.vue b/web/src/components/MessageInputComponent.vue index 542287ca..7bc15c7d 100644 --- a/web/src/components/MessageInputComponent.vue +++ b/web/src/components/MessageInputComponent.vue @@ -46,16 +46,21 @@ >
-
+
文件
-
- {{ item.label }} +
+ 输入相关内容以搜索文件
+
@@ -252,7 +257,6 @@ const updateMentionItems = (query = '') => { const lowerQuery = query.toLowerCase() const { files = [], knowledgeBases = [], mcps = [], skills = [], subagents = [] } = props.mention - const workspacePrefix = '/home/gem/user-data/workspace/' const filterItems = (list) => list.filter((item) => { @@ -273,7 +277,7 @@ const updateMentionItems = (query = '') => { const filterFileItems = (list) => { if (!query) { - return list.filter((item) => !String(item.value || '').startsWith(workspacePrefix)) + return [] } return filterItems(list) } @@ -372,9 +376,14 @@ const isItemSelected = (type, index) => { } // 是否有任何候选项 +const showFileSearchPrompt = computed(() => { + return Boolean(props.mention?.files?.length) && !mentionQuery.value +}) + const hasAnyItems = computed(() => { const items = mentionItems.value return ( + showFileSearchPrompt.value || items.files.length > 0 || items.knowledgeBases.length > 0 || items.mcps.length > 0 || @@ -883,5 +892,11 @@ defineExpose({ color: var(--gray-400); font-size: 13px; } + + .mention-search-placeholder { + padding: 4px 8px; + color: var(--gray-400); + font-size: 13px; + } }