Skip to content

为会话搜索增加正文匹配、命中预览和消息定位 - #1051

Open
ana52070 wants to merge 1 commit into
spacering-net:mainfrom
ana52070:feat/conversation-content-search
Open

ana52070 wants to merge 1 commit into
spacering-net:mainfrom
ana52070:feat/conversation-content-search

Conversation

@ana52070

Copy link
Copy Markdown
Contributor

现有问题

左上角的会话搜索只匹配会话标题。用户即使记得对话中的某个关键词,只要标题没有这个词,就无法找到对应会话。

搜索结果也只展示标题、智能体和时间,无法判断关键词出现在哪条消息里;打开会话后,还需要手动翻找历史消息。

改动

  • 会话搜索同时匹配标题、用户消息和助手回复的文本正文,继续遵循目录、智能体、状态等已有筛选条件。思考过程和工具输出不参与正文匹配。
  • 每个会话最多展示 3 条命中消息的上下文片段,保留原文大小写并高亮关键词。会话以浅边框分组,用户和助手使用不同的角色徽标,多条命中之间增加分隔线。
  • 点击命中片段直接打开会话并定位到对应消息;需要时加载更早的历史消息,展开目标消息的折叠内容并标记该消息。点击会话标题时优先定位到第一条正文命中;仅标题命中时正常打开会话。
  • 搜索弹窗直接展示后端返回的正文命中,避免再次按标题过滤;过期搜索响应不会覆盖新查询的结果。
  • 桌面和服务器共用搜索逻辑,新增独立的搜索接口返回命中片段及定位信息,保留原有列表接口的响应结构,并补齐 10 种语言的界面文案。

正文由现有智能体解析器按需读取原始会话记录,不新增数据库迁移或持久化全文索引。会话较多时,搜索成本随待读取的历史记录增加;无法读取正文的会话仍可按标题匹配。

界面对比

修改前

内置搜索仅显示标题,无法预览正文命中,也无法从搜索结果直接定位到具体消息。

修改前:仅显示会话标题

修改后

内置搜索展示正文上下文、角色徽标和关键词高亮,点击命中片段可定位到对应消息。

修改后:正文命中预览及会话分组

测试

  • 后端回归用例覆盖正文匹配、原有筛选条件、Unicode 片段截取、每个会话最多 3 条预览,以及 HTTP 搜索接口的认证和响应结构。
  • 前端回归用例覆盖正文命中不被标题二次过滤、过期请求丢弃、点击定位、历史消息加载、用户和助手消息 ID 重复、目标不存在的提示,以及折叠消息的自动展开。
  • 已在桌面版手动验证正文检索、命中预览和点击定位。
  • fork GitHub Actions 预检:Test #13,对应提交 0dcae9e3b88d540e0bd8de89aa562362e7eaa7c1:13 项任务中 12 项成功,1 项因 runner 资源不足取消。
  • 前端 lint、浏览器代理产物一致性与类型检查、静态导出构建均通过;751 个测试文件、11,069 项前端测试全部通过。
  • Linux、macOS、Windows 的 Rust desktop/server/cli 矩阵全部通过,包括各自的 Clippy 检查。Windows desktop 按仓库工作流只编译测试目标,不执行测试;Linux/macOS desktop 和 Windows server 执行对应测试。
  • Linux 安装脚本及 Windows PowerShell 5.1 安装脚本检查通过。macOS 安装脚本任务因 GitHub 托管 macOS ARM64 runner 容量不足,始终未获得 runner 而被取消;没有执行脚本,也没有测试失败记录。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant