Background
README 已有 Markdown / streaming 基础能力,但“最终字符串能渲染 Markdown”不等于“流式生成过程中 Markdown 始终可用”。
真实 Copilot 会不断追加不完整的 Markdown:半个表格、未闭合 code fence、列表、引用、链接、公式或 citation marker。简单地每个 token 全量重新 parse/render,容易产生闪烁、布局跳动、表格损坏、滚动位置抖动以及长回答性能退化。
需要把 Markdown renderer 做成可验证的 production streaming surface。
Requirements
Rendering
至少稳定支持:
- headings / paragraphs;
- ordered/unordered lists;
- blockquotes;
- emphasis;
- fenced code blocks;
- Markdown tables / GFM table;
- links;
- inline citation/evidence markers;
- long financial reports containing many sections/tables。
Incremental behavior
- 不完整 block 在 stream 中不能导致整个消息树崩溃;
- 新 delta 到达后只进行必要更新,避免每 token 全页重建造成明显 flicker;
- stream 完成后的最终 DOM/内容与一次性静态渲染语义一致;
- 用户主动滚动离开底部后,stream 不应持续抢回 scroll position;
- code/table 等复杂块完成时允许平滑升级,不丢失前文。
Security
Performance
建立至少一个长回答 benchmark/fixture,避免 O(n²) 式随着 token 增长越来越卡。
Related: #27 #13
Acceptance Criteria
Non-goals
- 不是重新做一套富文本编辑器。
- 不要求支持任意 HTML;优先保证安全、稳定的 Markdown/GFM 阅读体验。
Background
README 已有 Markdown / streaming 基础能力,但“最终字符串能渲染 Markdown”不等于“流式生成过程中 Markdown 始终可用”。
真实 Copilot 会不断追加不完整的 Markdown:半个表格、未闭合 code fence、列表、引用、链接、公式或 citation marker。简单地每个 token 全量重新 parse/render,容易产生闪烁、布局跳动、表格损坏、滚动位置抖动以及长回答性能退化。
需要把 Markdown renderer 做成可验证的 production streaming surface。
Requirements
Rendering
至少稳定支持:
Incremental behavior
Security
Performance
建立至少一个长回答 benchmark/fixture,避免 O(n²) 式随着 token 增长越来越卡。
Related: #27 #13
Acceptance Criteria
Non-goals