SuperAPI AI 工具集

convex-streaming-agents

智能体与模型

查看项目

更新于 10-15 22:15

技能介绍

用途:在 Convex 后端上构建流式文本智能体,追求更完整的客户端体验,而非一次性文本响应。该技能覆盖 streamText 与 Convex 的结合、两种架构选择、异步运行的开始与状态接口、长调用后台工作进程、持久化部分文本/最终文本/工具轨迹,以及客户端思考点、打字动画、轮询与完成清理。

架构选择:1)直接 HTTP 流式:单个客户端实时观看、无需可恢复、实现速度优先时使用;客户端调 Convex httpAction,httpAction 调用 streamText,HTTP 响应直接回传分块。2)Convex 持久化流式:需跨刷新或重连存活、多客户端观看同一运行、需要持久运行状态与可追踪性时使用;客户端 POST /api/agent/start,路由创建 agentRun 行并调度内部 action,内部 action 调 streamText,流处理器把部分文本和步骤写入 Convex,客户端轮询或订阅运行状态。生产界面建议持久化模式。

后端结构:推荐表 agentRuns(status、prompt、streamedText、finalText、error、model、stepCount、createdAt、updatedAt)和 agentSteps(runId、kind、label、payload、createdAt);状态建议 queued、running、completed、failed。streamedText 为可变实时缓冲,finalText 为模型运行结束后的最终答案,二者分开。流程:先加 schema 字段,创建校验输入并插入运行的 start 路由并调度 worker,创建内部 action 调用 streamText,追加部分文本并持久化工具调用与模型步骤,完成时写 finalText、status、updatedAt,失败时写 failed 与简要错误。

客户端流程:立即插入占位助手气泡,在首字到达前显示动画思考点;开始轮询或响应式订阅,维护 targetText 与 renderedText,按字符向 targetText 显示,完成后停止轮询并清理思考态,失败则替换为简短错误。思考点应在助手气泡内、首字到达即隐藏,三点错开透明度或缩放动画。字符显示即使后端分块较大也建议客户端平滑,保持换行,到达最终态立即停止,不要每次轮询从零重启。轮询:活跃运行每 200ms 至 350ms,完成后立即停止;过于频繁可减少持久化频率或服务端批处理增量。

常见失败:HTTP action 使用 .convex.cloud 而非 .convex.site;在错误目录运行 convex dev 导致新路由未部署;过早将新字段设为必填破坏既有行;向可选字段 patch 写入 undefined;每次轮询替换整个气泡而非增量扩展;文本开始后思考指示仍可见;只存部分文本丢失最终答案。适用于非一次性聊天、需要持久运行状态的场景;不适用于无需流式体验的一次性补全、非 Convex 后端或纯 HTTP 流式已足够的情况。