跳转到内容

文档与引用

除非页面布局确实需要独立挂载的内容展示块,否则一条消息通常使用一个渲染器即可。文档协调功能能够让这些展示块共享链接、图片和脚注定义,但不会在解析之前把它们的 Markdown 字符串拼合在一起。

输入场景推荐的渲染方式
随网络数据包逐步到达的消息累积为一个完整字符串,更新单一渲染器
引用标注彼此无关的独立聊天消息采用独立文档身份的独立渲染器
单一回答由于布局需要拆分为可独立解析的展示块多个渲染器包裹在文档容器 Provider 内,共享显式的文档 ID
需要所有引用完全解析的服务端渲染输出由单一渲染器接收完整的逻辑文档字符串

如果代码围栏、表格行、强调标记或数学公式跨越了渲染器边界被切断,它们在底层语法上依然是破碎的。注册表可以跨分块提供定义,但无法修复这种破碎的语法结构。

React 与 Vue 适配器均导出了各自的 AIMarkdownDocuments。请将需要协调的渲染器放置在对应框架的 Provider 内部,并为它们赋予相同的显式 documentId。自动生成的 ID 会让各个独立渲染器保持互不干扰。在 React 中,跨片段协调还需要保持 blockMemo 为开启状态(默认即为开启);Vue 中则没有 blockMemo 属性。

组件请使用稳定的 key。当展示块可能发生乱序或重新挂载时,请提供 documentIndex,以确保引用的排序能够严格遵循预期的文档顺序。平滑流式输出的轮流呈现依赖的是组件挂载注册顺序,而非 documentIndex

不同的文档 ID 以及不同的 Provider 实例之间始终保持相互独立。修改某个分块的文档 ID 或将其卸载,会自动释放其旧的注册信息。建议将 Provider 的作用域限制在拥有这批文档的具体应用区域。

Markdown 中的引用标记可以出现在其定义文本到达之前。一旦已挂载的分块提交了贡献信息,注册表就会向引用方提供共享的目标地址和全局脚注编号。更新或删除某个定义会自动通知其读取者。最后一个注册的分块负责承载并渲染全局汇总的脚注区。

服务端渲染以及首轮客户端水合渲染仅使用当前分块本地的内容与本地脚注。完全由其他分块贡献的定义不会在服务端的 HTML 中预先解析。如果业务上必须在服务端输出完整解析的文档,请将全部源码传入单个渲染器中渲染。

引用协调与平滑轮流呈现分别解决不同的工程问题。只有启用了平滑输出的参与者才会加入视觉展开队列。挂载时本身带有内容的展示块会立即保持内容可见;以空内容挂载的展示块则可以等待先前的平滑展示块生成并排空完毕后再行展开。