新闻详情

新闻详情

首页 / 资讯中心 / 详情

Thunderbolt平滑分块算法解析:让AI流式输出读起来像人类打字

发布时间:2026/9/16 20:05:13来源:尧图网络
Thunderbolt平滑分块算法解析:让AI流式输出读起来像人类打字
Thunderbolt平滑分块算法解析让AI流式输出读起来像人类打字【免费下载链接】thunderboltAI You Control: Choose your models. Own your data. Eliminate vendor lock-in.项目地址: https://gitcode.com/GitHub_Trending/thund/thunderboltThunderbolt 是一款让你自主掌控模型与数据的 AI 客户端AI You Control自选模型、数据自有、告别厂商锁定。它的对话体验中有一个不起眼却极影响观感的细节——平滑分块算法smooth chunkingAI 的回答不是一坨一坨蹦出来而是像人类打字一样逐词、逐字流畅出现。这篇文章就用最少的代码把这个算法的三层设计讲透。问题为什么 AI 回答会一口喷出大模型通过流式接口SSE返回文本但 chunk数据块的边界完全由模型服务端和网络决定和词语没有任何关系快的模型可能 50ms 内吐出一整段话网络抖动时会先憋几秒、再一次性冲出一大段内置的按词切分通常依赖空格判断词尾——而中文、长 URL、压缩 JSON 根本没有空格整段文字会缓冲到最后才啪地一下出现。Thunderbolt 的解法分三层切流 → 控速 → 渲染节流。第一层平滑分块——把数据流切成词核心实现只有 40 行位于 src/ai/smooth-chunking.ts。它给 src/ai/fetch.ts 中的streamText提供一个自定义切块函数detectStreamChunk逻辑非常直观有空间分隔拉丁文字匹配整词 词尾空格再放行如hello world先发出hello绝不把单词拦腰截断——哪怕单词比阈值还长无空间分隔中文、URL、JSON缓冲区攒够 12 个字符smoothStreamMaxChunkChars就强制放行一小片保证无空格内容也能持续流动而不是憋到句尾。一句话概括按词的韵律流式输出无空格的长串按 12 字符封顶流式输出。第二层自适应显示速度——模拟人类打字节奏数据到了还不够。即使切块均匀屏幕上的文字仍可能瞬间追上缓冲区。src/hooks/use-smooth-text.ts 负责在屏幕上控制揭示进度其速度引擎是 src/lib/text-reveal.ts 中的advanceTextReveal规则堪称精妙每个字间隔 min(5ms, 250ms ÷ 未显示字符数)落后 10 个字 → 25ms/字从容不迫落后 1000 个字 → 5ms/字全速追赶约 1 秒追平追平时立刻清零时间余数并重启下一轮等待下一个追加——所以文字是一段一段地匀速生长而不是匀速到句尾再停顿。250ms 被源码注释称为响应常数它只用于加速追赶不是截止时限。按字素切不按字符切显示进度落在哪里才算一个完整字符src/lib/segmenter.ts 使用Intl.Segmenter做字素簇grapheme切分确保表情、组合重音、中日韩文字不会被切成半个字。它还根据文本自身脚本自动选词典日文、泰文、高棉文、老挝文、缅文默认中文不依赖界面语言。尊重减少动态效果偏好如果系统开启了prefers-reduced-motion减少动态效果动画直接关闭、全文立即显示——细节体验对用户友好的典范。第三层三级时钟配合保证每帧都在前进真正让丝滑成立的是三个精挑细选的毫秒数在 src/chats/chat-throttle.ts 中的协同时钟间隔作用单词释放10mssmoothStream 每 10ms 放行一个新词渲染节流40ms组件最多每 40ms 重渲染一次约 25 帧/秒显示追赶≤5ms/字落后越多追得越快关系是10ms 40ms每次画面刷新时一定已有新词就绪所以文字每帧都在长而不是卡顿地一顿一顿。同时 40ms 的节流把每个 token 触发一次 Markdown 重解析合并成一次性能开销被压到最低。显示端的应用点只有两处正文 src/components/chat/text-part.tsx 和推理过程 src/components/chat/reasoning-display.tsx均通过useSmoothText接入。验证测试用例如何证明逐词流式单元测试把抽象算法变成了肉眼可见的行为值得一读src/ai/smooth-chunking.test.tsThe quick brown fox jumps被精确排空为[The , quick , brown , fox , jumps ]中文长句被切成 ≤12 字的片段且拼接后零丢失src/hooks/use-smooth-text.test.ts一次灌入 1000 字验证先空屏、再渐进增长、最终完整显示且停止后不再残留动画帧。小结三层各管一件事切流smooth-chunking把网络 chunk 变成词无空格内容按 12 字封顶控速text-reveal use-smooth-text自适应节奏 字素边界揭示像人打字节流chat-throttle10/40ms 时钟咬合流畅与性能兼得。整个方案只影响显示时序——工具调用、消息持久化、复制内容全部拿到的仍是完整原文这正是平滑而不失真的关键。想在自家项目里复刻类似体验这套切流 / 控速 / 节流的分层思路可以直接借鉴。【免费下载链接】thunderboltAI You Control: Choose your models. Own your data. Eliminate vendor lock-in.项目地址: https://gitcode.com/GitHub_Trending/thund/thunderbolt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深入 Chainlink 核心 Mailbox 模式与 EVM 数据流:从区块头到业务服务的事件通路 2026/9/16 20:53:23

深入 Chainlink 核心 Mailbox 模式与 EVM 数据流:从区块头到业务服务的事件通路

深入 Chainlink 核心 Mailbox 模式与 EVM 数据流:从区块头到业务服务的事件通路 【免费下载链接】chainlink node of the decentralized oracle network, bridging on and off-chain computation 项目地址: https://gitcode.com/GitHub_Trending/ch/chainlink …

阅读更多 →
WebCodecs实战:浏览器高清录屏并直接导出MP4的完整方案 2026/9/16 20:53:23

WebCodecs实战:浏览器高清录屏并直接导出MP4的完整方案

过去很长一段时间,想在浏览器里做“高清录屏”并且直接导出 MP4,几乎是一件让人头疼的事。主流的方案绕不开 MediaRecorder,但 MediaRecorder 在浏览器里通常只能封装成 WebM,想要 MP4 就得二次转封装,要么丢到服务端用…

阅读更多 →
OpenXCAP not yet configured?TaoToken 这样给 Codex 换通道再排查 2026/9/16 20:53:23

OpenXCAP not yet configured?TaoToken 这样给 Codex 换通道再排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
mcp-agent OAuth 预授权实战:用 `workflows-store-credentials` 为异步工作流预置凭据 2026/9/16 20:53:23

mcp-agent OAuth 预授权实战:用 `workflows-store-credentials` 为异步工作流预置凭据

mcp-agent OAuth 预授权实战:用 workflows-store-credentials 为异步工作流预置凭据 【免费下载链接】mcp-agent Build effective agents using Model Context Protocol and simple workflow patterns 项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agen…

阅读更多 →
前端校验与后端校验的区别:为什么后端校验是安全底线? 2026/9/16 20:53:23

前端校验与后端校验的区别:为什么后端校验是安全底线?

1. 一次“改价支付”事故,让我重新审视校验问题前阵子一个做电商的朋友找我排查线上问题,说有人用一张满100减30的优惠券,买走了标价1200块钱的商品,最后实付金额是个诡异的小数。查了半天,突破口居然在一行只有前端校…

阅读更多 →
scrapy作业 2026/9/16 20:50:22

scrapy作业

一.安装anacondavscode开发环境 这里的anaconda我选择的是3.9.25版本(注:最新版本的anaconda需要用python3.10以上的版本),比较老旧的windows可以选择2020年以前的anaconda anaconda下载链接:Index of /archive vsco…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞