SuperAPI AI 工具集

markstream-react

前端与建站

查看项目

更新于 10-16 01:57

技能介绍

Markstream React 是一个用于在 React 或 Next 宿主应用中安全接入 Markstream 的技能。适用前提是宿主应用为 React 18+ 或兼容的 Next,并且可以接受 beta 渲染器 API。

用途

该技能用于将 beta 版 markstream-react 包集成到 React 18+ 或 Next 应用中。当宿主应用是 React 或 Next,并且任务需要安全接入 Markstream 渲染器时使用。

主要能力与工作流程

  1. 确认仓库为 React 18+ 或兼容的 Next 宿主,并接受 beta 渲染器 API。
  2. 安装 markstream-react 以及仅被请求的可选 peer 依赖。
  3. 从应用外壳或客户端入口导入 markstream-react/index.css。
  4. 根据渲染边界选择入口点:常规客户端渲染使用 markstream-react;Next 专用组件接口使用 markstream-react/next;无客户端 hooks 的服务端渲染使用 markstream-react/server。
  5. 从 content 起步。对于流式或高频 AI 输出,优先保留 content 并使用内置的平滑流式能力。

流式相关配置

  • smoothStreaming="auto" 为默认值,当 typewriter={true} 或 maxLiveNodes <= 0 时激活。
  • typewriter 仅控制闪烁光标,默认值为 false。
  • fade 控制节点进入和流式文本的淡入动画,默认值为 true。
  • 流式与恢复历史:在聊天 UI 中,同一渲染器先进行流式渲染,随后在 final={true} 时切换为历史渲染。
  • 流式配置建议:smoothStreaming="auto"、fade={false}、typewriter={true}。这是一种保守的视觉/性能选择,并非 API 不兼容。该适配器尚未采用 Vue 3 的有界追加淡入,因此在同时启用两者前需验证其动画行为。
  • 恢复历史配置建议:smoothStreaming={false}、fade={true}、typewriter={false}。内容已经完整,节奏控制会拖慢速度,但 fade 可提供精致的进入动画。
  • 动态切换:smoothStreaming={isStreaming ? 'auto' : false},fade={!isStreaming}。
  • 仅在内容由 worker 预处理、共享 AST 存储或需要自定义 AST 控制时,才转向 nodes + final。
  • htmlPolicy 现在默认值为 safe,Mermaid 严格模式通过 mermaidProps 默认开启。

Next 中的 SSR 边界

在 Next 中尊重 SSR 边界。当涉及仅浏览器可用的 peer 依赖时,优先使用 use client、ssr: false 的动态导入或其他仅客户端边界。

自定义组件与解析

  • 在自定义解析器工作之前,优先使用渲染器本地组件。
  • streamingComponents 接收由解析器支持的 NodeComponentProps,支持不完整的自定义标签,并自动将其键贡献到有效的 customHtmlTags 列表。
  • htmlComponents 接收经过清理的 HTML 属性以及 children;它不接收解析器 node/loading 契约。
  • 优先使用 defineStreamingComponents(...) 和 defineHtmlComponents(...) 获得类型化映射。
  • 对于内置节点覆盖或共享兼容性注册,保留作用域内的 setCustomComponents。
  • 仅当迁移需要 token 或 AST 变更时,才使用 parseOptions 转换。
  • 用最小的有效 dev、build 或 typecheck 命令进行验证。

默认决策

  • 先完成渲染器接入,再处理迁移清理。
  • 如果仓库已使用 react-markdown,可将此技能与 markstream-migration 搭配使用。
  • 对于大多数 AI 聊天或 token 流式场景,优先使用 content 与内置平滑流式。
  • 流式与恢复历史:当聊天消息从流式转为历史(例如 final 变为 true)时,动态切换 props——流式时 smoothStreaming="auto"、fade={false};历史时 smoothStreaming={false}、fade={true}。完整示例见 docs/guide/ai-chat-streaming.md。
  • 仅当另一层负责解析或 AST 转换时才转向 nodes。
  • 优先使用渲染器本地的自定义标签映射,而非全局注册表变更。
  • 优先使用能解决 SSR 问题的最小仅客户端边界。
  • 除非有意从空白开始,否则避免对首屏 SSR 内容使用 smoothStreaming={true};auto 模式使用 mounted 门控。
  • 除非请求是保留受信任的旧版渲染,否则保持 htmlPolicy="safe" 和 Mermaid 严格模式。
  • 如果受信任表面需要旧行为,仅在该表面使用 htmlPolicy="trusted" 和 mermaidProps={{ isStrict: false }},并说明原因。

相关文档目标

docs/guide/react-quick-start.md docs/guide/react-installation.md docs/guide/react-components.md docs/guide/react-next-ssr.md docs/guide/react-markdown-migration.md docs/guide/component-overrides.md

关于收费、价格、具体性能表现或平台支持范围等信息,资料暂未提供。