最近在自己的 AI 协作工具 YeeroAI 里加了两个功能,写一下实现思路和使用场景。
全局搜索快捷操作
问题
之前的全局搜索只能搜索历史记录,但用户打开搜索后经常是要执行某个操作(新建对话、上传文件、切换设置等),而不是搜索。
方案
在搜索弹窗中新增快捷操作网格(QuickActionsGrid),覆盖四类操作:
- 新建类:新建对话、新建应用、新建文件夹、上传文件
- 导航类:跳转到任意页面
- 命令类:切换主题、切换语言
- 资源类:打开帮助文档
在本地(localStorage)记录使用频率,按频次排序。同时通过 URL 参数实现"跳转 + 自动执行"------点击操作后不仅跳到目标页,还会自动弹出对应表单。
使用频率记录是纯本地行为,不上传服务器。用户也可以一键清除频率数据,重置排序。
App 后台生成不断流
问题
AI 应用生成内容时,如果用户关闭页面、刷新浏览器或网络中断,正在进行的 SSE 推流任务会丢失,已生成的内容无法恢复。
方案
实现后台续跑与断线重连机制:
- 后台续跑:关闭页面后任务在后端继续运行,不依赖前端连接
- 自动续接:重新打开 App 时,查询活跃流列表(getActiveStreamList),自动重连到正在运行的任务
- 进度追赶:重连时一次性补齐(CATCH_UP)错过的事件,避免内容缺失
- 取消同步:任意端取消生成,其他端同步收到信号并停止接收
- 状态可视化:应用列表显示"后台生成中"角标,实时展示活跃任务
该功能需要在设置中手动开启"后台推流"开关,与对话共用同一开关。
前端抽离了 SSE 公共核心 Hook(useAppSseCore),统一管理重连逻辑和状态恢复。后端新增活跃流查询接口和重连 SSE 请求封装。
总结
这两个功能都是为了解决实际使用中的痛点:搜索快捷操作减少了多层点击,后台续跑避免了任务丢失。
YeeroAI