必须开启腾讯元器后台“流式输出”开关,小程序通过websocket连接wss://api.yuanqi.tencent.com/v1/chat/stream,监听onmessage解析delta.content追加文本,配合css光标动画或js零宽空格触发重绘,并实现断线重连与降级机制。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

腾讯混元AI聊天应用要让AI回复像真人打字一样逐字出现,而不是等几秒后整段弹出,必须启用流式响应机制。这一步不开启,所有对话都会卡顿、延迟感强,用户会误以为服务没响应。
确认后端已启用流式接口
登录腾讯元器(yuanqi.tencent.com)→ 进入智能体工作台 → 找到目标智能体 → 点击「配置」→ 切换至「高级设置」标签页 → 检查「流式输出」开关是否为开启状态。【若此处关闭,前端无论怎么写也无法实现打字机效果】
该开关控制后端是否以 chunk 方式分批返回 token。关闭时,后端会缓存全部响应再一次性返回;开启后,每生成一个 token 就立即推送一次,是流式显示的硬性前提。
小程序端用 WebSocket 接收流数据
在微信小程序代码中,调用 wx.connectSocket 建立与腾讯元器流式接口的 WebSocket 连接,URL 格式为:wss://api.yuanqi.tencent.com/v1/chat/stream?bot_id=xxx&session_id=yyy。
连接成功后,监听 onMessage 事件。每次收到消息,解析 JSON 数据中的 delta.content 字段(不是 message.content),将其追加到当前消息节点的文本末尾。
注意:必须使用 delta.content。如果误取 message.content,会导致重复拼接或覆盖——因为后者是完整回复,而流式传输中每个 chunk 只含增量内容。
添加光标动画与防抖处理
方法一:CSS 实现闪烁光标
给显示 AI 回复的 <text></text> 或 <view></view> 元素添加类名 typing-cursor,并在 WXSS 中定义:.typing-cursor::after { content: "|"; animation: blink 1s infinite; },再补充 @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }。
方法二:JS 动态插入
在每次追加 delta.content 后,用 setTimeout 延迟 30ms 插入一个不可见的零宽空格 \u200B,再立即删除——这个操作能强制触发视图重绘,避免部分低端安卓机出现文字“堆叠不刷新”问题。
这一步不做,光标会静止不动,失去“正在输入”的心理暗示,用户容易中途打断或重复发送。
处理流式中断与错误重连
第一步:监听 onClose 和 onError 事件,一旦触发,立即清空当前未完成的 AI 消息节点,并显示灰色提示文字:“网络波动,正在重试…”。
第二步:启动指数退避重连(初始延迟 500ms,每次失败×1.5,上限 5s)→ 调用 wx.connectSocket 重建连接 → 成功后,携带原 session_id 和断点位置(即已接收的 message_id)发起续传请求。
第三步:若连续重连 3 次失败,自动降级为非流式模式:向 https://api.yuanqi.tencent.com/v1/chat/completions 发送标准 POST 请求,等待完整响应后一次性渲染。
【session_id 必须全程透传,否则上下文断裂,AI 会忘记前面聊过什么】











