微信小程序 AI 对话神器:towxml-stream-typer 实现流式 Markdown 打字机 + 虚拟显示,彻底解决长文本卡顿与发热
让大模型的 Markdown 回复像 ChatGPT 一样逐字打出来,还不卡、不热、不掉帧! GitHub 开源地址(欢迎 Star & Fork):github.com/zhouzxx/tow… (已得到 towxml 官方致谢推荐)
演示效果(先看视频,再决定是否 Star!)
下面是项目实际运行的演示视频(流式 Markdown 打字机):
您的浏览器不支持 video 标签,请直接访问链接观看:http://47.119.142.242/static/yanshi.mp4- 备用直链:如果视频无法播放,直接点击 这里下载或在线观看(MP4 格式,支持手机/电脑播放)。
或者观看 B 站详细源码讲解视频(包含 towxml 原理解析 + 魔改思路 + 流式打字机实现): 👉 towxml 源码及流式打字机魔改讲解视频
真实性能实测(普通人也能看懂的效果)
测试环境:安卓手机,打字速度设置为 5 毫秒一个字
① 5 万字 Markdown 长文本
- 传统 towxml:越渲染越慢,后期直接卡死、闪退
- 本组件:全程流畅打字,总耗时仅 4 分 30 秒
- 对比理论最快速度(4 分 10 秒),只慢了 20 秒,几乎接近极限速度
② 20 万字超长连续对话(10 轮 × 2 万字)
很多组件有一个通病: 一开始很快,越聊越慢,越往后越卡。
而本组件做到了:
- 第一轮 2 万字打完用了多久
- 第十轮 2 万字打完,速度几乎一模一样
- 第一遍和最后一遍的耗时差距,不到 2 秒
简单说: 不管聊多久、文本多长,速度从头稳到尾,不会越用越卡。
一分钟速览
如果你正在用微信小程序 / uni-app 开发 AI 聊天机器人,却被 towxml 的流式 Markdown 渲染卡顿困扰,这个项目就是为你量身打造的:
- 核心卖点:增量复用 + 文字局部追加 + 批次虚拟显示
- 效果:无论回复多长(几万字、几十万字),打字速度稳定、滚动丝滑、iOS & Android 双平台不卡顿
- 适用场景:AI 对话、多轮聊天、技术文档流式展示、长文实时渲染
- 接入难度:完整示例 demo,开箱即用
- 支持框架:原生微信小程序、uni-app (Vue 3)、Taro
- 最快上手:直接 clone Demo 项目,运行看效果,10 分钟就能接入你的项目
直接 Star 支持作者继续优化 → github.com/zhouzxx/tow…
痛点:为什么传统 towxml 流式渲染在 iOS 和 Android 上都卡?
大模型(如 ChatGPT、Claude、文心一言、通义千问等)通常采用 SSE 流式输出 Markdown,前端每收到一小段就要更新 UI。
常见做法:把累计 Markdown 喂给 towxml → 组件全量解析 + 全量渲染。
结果就是:
- 文本越长,解析/渲染开销指数级上升
- 打字机效果越来越慢(从 10ms/字 → 几百 ms/字)
- iOS 和 Android 都容易发热、掉帧、内存压力大
- 图片、代码块、表格等复杂节点重复创建,驻留严重
- 长列表滚动时,setData 频繁触发,页面卡死或崩溃
- 文本一多,甚至直接闪退,根本没法上线使用
开发者普遍反馈: “towxml 静态 Markdown 完美,流式输出在双平台都劝退”。
towxml-stream-typer 如何彻底解决?
作者通过深度魔改 towxml 源码,经过多轮性能迭代,从“卡死闪退”一路优化到“接近理论极限速度”,最终实现三大核心优化:
1. 增量复用 + 局部渲染
只解析尾部新增的文本,已经渲染好的内容直接复用,不再重复解析整棵节点树。 纯文本走字符级追加,结构语法(列表、代码块、表格)才局部更新,从根源降低开销。
2. 稳定可控的打字机效果
支持开启/关闭打字机,可自定义速度(默认 5ms/字符)。 内部做了单帧渲染上限、时间片控制,保证 UI 永远不会被阻塞。
3. 批次化虚拟显示(超长文本不爆内存)
只渲染屏幕附近几屏内容,超出范围的节点自动卸载视图、释放内存,但保留高度占位。 配合滚动节流与中断机制,彻底解决长文本内存爆炸问题。
优化历程(5 万字 MD 安卓渲染):
- 最初版本:后期卡死、闪退
- 第一轮优化:40 分钟
- 第二轮优化:18 分钟
- 最终版本:4 分 30 秒(仅比理论值慢 20 秒)
再加上 20 万字连续渲染速度几乎无衰减,真正做到了长文本、多轮对话也丝滑。
最快上手方式:直接从 Demo 开始!
README 文字再详细,也不如直接跑示例代码来得直观。示例里面注释超级详细,还包含了很多实际场景的最佳实践:
- 如何加载历史消息(一次性渲染)
- 实时滚动到底部 + 停留页面时自动暂停滚动
- 用户手动终止打印(比如切换问题时)
- 虚拟显示配合 scroll-view 的完整实现(防止内存爆炸)
- 流式输入 + 打字机效果的完整聊天界面逻辑
推荐步骤:
- Clone 以下任一 Demo 项目
- 运行项目,看打字机效果
- 阅读 demo 的使用逻辑
- 替换你的 SSE/WebSocket 流式接口调用
- 测试长文本场景,感受丝滑!
Demo 项目链接:
-
🚀 uni-app 使用示例(Vue 3) → 推荐 uni-app 开发者直接 clone 运行
-
🚀 原生微信小程序使用示例 → 原生小程序用户首选,逻辑更纯粹
适用场景 & 谁最需要它?
- AI 聊天机器人(微信小程序 / uni-app)
- 大模型流式 Markdown 输出界面
- 技术文档 / 知识库实时渲染
- 长文、多轮对话场景
- iOS & Android 双平台性能敏感项目
- 需要稳定支撑大量长文本对话的产品
如果你正在开发类似产品,却被 towxml 流式卡顿、发热、闪退劝退,强烈推荐试用 towxml-stream-typer。
开源地址 & 参与方式
GitHub 主仓库(欢迎 Star、Fork、PR): github.com/zhouzxx/tow…
你可以:
- 直接 clone Demo 项目接入你的 SSE / WebSocket 接口
- 提交 Issue(报 bug、提需求、分享使用场景)
- PR 优化(更多平台适配、主题扩展、性能微调)
- 分享给朋友圈 / 技术群 / 掘金 / CSDN
你的一个 Star,就是我继续维护 & 优化的最大动力! 如果它帮你在 iOS 和 Android 上实现了流畅的 AI 打字机对话,请一定点个 Star 支持作者~ 😄
有问题?加微信 zxx-wwj-zbl(备注 towxml-stream-typer),提供出错的 Markdown 文本,我亲自帮你 debug!
祝你的小程序 AI 项目越来越丝滑~