首页/新闻资讯/正文详情

如何在Web终端实时渲染LLM流式Markdown:wterm markdown包教程

发布时间:2026/9/26 15:10:18 来源:云帆数科 栏目:资讯中心
如何在Web终端实时渲染LLM流式Markdown:wterm markdown包教程
如何在Web终端实时渲染LLM流式Markdownwterm markdown包教程【免费下载链接】wtermA terminal emulator for the web项目地址: https://gitcode.com/gh_mirrors/wterm1/wtermwterm 是一个面向 Web 的终端模拟器其中的wterm/markdown包能实时将 LLM 流式输出的 Markdown 逐块转换成终端 ANSI 文本。本教程带你快速掌握 Web 终端实时渲染 LLM 流式 Markdown 的完整方法从一行命令安装到把 AI 回复流接入浏览器终端新手也能照着做出来。为什么 Web 终端要实时渲染 LLM 流式 Markdown在大模型应用中回复是一次次以小块文本chunk的形式返回的。传统做法是等全部文本接收完毕用 Markdown 库渲染成 HTML。这在网页聊天框里没问题但如果你用的是Web 终端比如 AI 编程助手嵌在终端里等全文接收完再渲染会有明显的空白等待期而且 Markdown 库产出的是 HTML终端根本不认。wterm/markdown解决的就是这个问题它是一个流式 Markdown 转 ANSI 渲染器文本一到就立刻转成带样式的终端输出用户在终端里看到回答打字机式逐行浮现体验与本地 TUI 一致。 一句话理解push()喂进流式文本终端立刻拿到可显示的 ANSI 内容flush()在流结束时兜底收尾。一键安装如何快速上手 wterm markdown 包安装只需一条命令npm install wterm/markdown核心用法极简只需三步import { MarkdownRenderer } from wterm/markdown; const md new MarkdownRenderer({ width: 80 }); // 流式过程中每收到一段文本就调用一次 const ansi md.push(# 标题\n\n这是 **加粗** 内容。\n); terminal.write(ansi); // 流结束后收尾 terminal.write(md.flush());完整 API 说明见官方文档 markdown.mdx 与包内 README。核心 API 讲解push 与 flush 如何工作MarkdownRenderer类的实现非常紧凑源码仅约 200 行值得了解其工作机制方法作用push(delta: string): string喂入一段 Markdown 文本返回已完整行的 ANSI 输出flush(): string流结束时刷出缓冲区剩余内容并关闭未结束的代码块构造参数width终端列宽默认 80用于生成分隔线长度关键点内部按行缓冲。push()会把不完整的一行留在内部缓冲区只有遇到换行符、确认一行完整时才渲染输出。这个设计正是为流式场景准备的——LLM 的 chunk 边界是随机的可能正好把一行切成两半而渲染器会自动拼接不会出现半行闪烁或格式错乱。实现细节可以阅读源码 index.ts其中push方法第 32-44 行展示了缓冲逻辑flush方法第 46-56 行负责收尾。支持哪些 Markdown 语法渲染效果一览wterm/markdown覆盖了 LLM 回复中最常用的语法渲染效果如下语法终端渲染效果#~######标题H1/H2 粗体亮白色H3 粗体并自动留白行**粗体**/__粗体__加粗*斜体*/_斜体_斜体行内代码青色高亮文字绿色下划线 灰色淡显的 URL围栏代码块缩进展示上下带暗淡分隔线- item无序列表缩进圆点列表1. item有序列表带序号列表 引用带暗淡竖线的引用块---分隔线暗淡横线每种渲染都有对应的单元测试保障例如 H1 渲染为粗体亮白色的断言见 markdown.test.ts。实战3 步把 LLM 流接入 Web 终端wterm 官方提供了一个完整可运行的示例项目markdown-streaming使用wterm/react AI SDK 演示了全流程项目说明见 examples/markdown-streaming/README.md。第 1 步服务端流式返回API 路由使用 AI SDK 的streamText发起流式请求通过toTextStreamResponse()把文本流原样推给前端const result streamText({ model: openai/gpt-4o-mini, messages }); return result.toTextStreamResponse();参考实现route.ts第 2 步前端逐块读取并渲染这是整个方案的核心循环——用ReadableStream的 reader 逐块读取每块立即push进渲染器并写入终端const reader response.body.getReader(); const decoder new TextDecoder(); while (true) { const { done, value } await reader.read(); if (done) break; const rendered md.push(decoder.decode(value, { stream: true })); if (rendered) write(rendered); } write(md.flush());完整页面实现含用户输入、会话历史、错误处理见 page.tsx。第 3 步体验与细节回答边生成边渲染标题、粗体、代码块等样式随内容实时出现生成过程中按CtrlC可中断流示例中用AbortController实现见 page.tsx每次新回答建议创建新的MarkdownRenderer实例避免上一轮的缓冲状态残留。新手避坑4 个最佳实践流结束务必调用flush()—— 否则最后一行文本和未闭合的代码块不会被渲染这是最常见的遗漏。忽略返回的空字符串——push()在收到不完整的行时返回空串if (rendered)判空后再写入终端即可。按需设置width—— 该参数只影响分隔线长度一般跟随终端实际列宽设置。不要对整段文本重复 push—— 渲染器是状态式的每个 chunk 只能喂一次重复喂会导致内容翻倍。小结wterm markdown 包适合谁wterm/markdown用极小的体积核心实现不足 300 行解决了「Web 终端里 LLM 流式输出」这一真实痛点做AI 终端助手 / 编程 Agent 产品终端 UI 流式 Markdown 是理想形态做浏览器内演示 / 文档站点几行代码即可让 AI 回复在真终端里打字机式呈现。结合 wterm 的 React / Vue / Svelte 框架绑定源码位于 packages/wterm/react/ 等目录你可以快速把实时渲染 LLM 流式 Markdown 的能力嵌入任何前端项目。【免费下载链接】wtermA terminal emulator for the web项目地址: https://gitcode.com/gh_mirrors/wterm1/wterm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

通讯+CRM一体化实战:拆解DeskcommCRM如何打通客服数据孤岛
通讯+CRM一体化实战:拆解DeskcommCRM如何打通客服数据孤岛

上个月我去一家做企业软件的公司聊客服流程优化,售后主管给我看了个场景:客服小妹桌面上同时开着CRM、企业微信、邮件客户端和一份Excel订单表,客户问完发票问物流,她先切到Excel查单号,再回邮件翻附件,最后… · 2026/9/26 15:10:11

DeskcommCRM实战:自托管轻量级CRM从部署到权限管理全解析
DeskcommCRM实战:自托管轻量级CRM从部署到权限管理全解析

做销售管理这些年,我最大的体会是:一套趁手的 CRM,不是买回来就完了,而是要真正长在你的业务流程上。DeskcommCRM 是我近期在团队内部落地的一套轻量级 CRM 系统,它解决的就是中小团队在客户跟进、线索分配、订单台账这… · 2026/9/26 15:10:11

Atlas 300V推理卡部署YOLO模型全流程实战
Atlas 300V推理卡部署YOLO模型全流程实战

先把结论放在前面:Atlas 300V 确实是一张用于深度学习的运算加速卡,准确说是一张专攻推理场景的AI加速卡,不是训练卡。你要在这张卡上跑YOLO,走的也是“模型转换—离线推理—性能调优”这条标准路线,整个过程踩坑不少&… · 2026/9/26 15:10:11

当公司让你把经验写成 AI 技能时,别把所有家底都交出去:用 TaoToken 统一 Key 守住配置边界
当公司让你把经验写成 AI 技能时,别把所有家底都交出去:用 TaoToken 统一 Key 守住配置边界

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

Texture 占位图(Placeholder)机制完全指南:placeholderFadeDuration、placeholderImage 与 ASNetworkImageNode 默认图实践
Texture 占位图(Placeholder)机制完全指南:placeholderFadeDuration、placeholderImage 与 ASNetworkImageNode 默认图实践

移动开发UI组件 【免费下载链接】Texture Smooth asynchronous user interfaces for iOS apps. 项目地址: https://gitcode.com/gh_mirrors/te/Texture 点击查看 免费下载 本文面向使用 AsyncDisplayKit/Texture 的 iOS 开发者,系统讲解节点占位图&… · 2026/9/26 15:39:26

餐饮部绩效考核管理制度与综合评估方法
餐饮部绩效考核管理制度与综合评估方法

在竞争激烈的餐饮行业中,标准化与数据驱动的管理手段正成为提升服务质量与运营效率的关键。绩效考核不仅关乎员工奖惩,更直接影响顾客体验、成本控制与营收水平。构建一套科学有效的绩效体系,是餐饮部精细化运营的起点。 本文围绕餐饮部绩效考核管理制度展开,结合KPI体系拆… · 2026/9/26 15:39:20

质量部经理绩效考核指标量表与质量管控
质量部经理绩效考核指标量表与质量管控

这份绩效考核表是针对质量部经理的绩效评估指标,旨在通过对一系列关键绩效指标(KPI)的考核,全面评估其在质量管理、部门运营和员工管理等方面的工作表现。绩效指标不仅涵盖了工作目标的完成情况,还着重对工作过程的执行和结果的质量进行考量。每个KPI都有明确的目标值,权… · 2026/9/26 15:39:20

Automatic Application Wait Cursor 配置 TaoToken:settings.json 骨架与验证
Automatic Application Wait Cursor 配置 TaoToken:settings.json 骨架与验证

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

Markdown已过时?Claude Code工程师力挺HTML,TaoToken配置实战
Markdown已过时?Claude Code工程师力挺HTML,TaoToken配置实战

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

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码