Concepts 导读

Markdown 格式化:一次解析,多平台渲染

OpenClaw 将 Markdown 转为中间表示(IR),再分块并适配各平台语法。先理解 IR 结构(文本+样式/链接偏移),再关注分块规则——内联格式不会跨块分割,这是避免渲染错位的关键。

先讲这一页到底在解决什么

Markdown 格式化:一次解析,多平台渲染

OpenClaw 将 Markdown 转为中间表示(IR),再分块并适配各平台语法。先理解 IR 结构(文本+样式/链接偏移),再关注分块规则——内联格式不会跨块分割,这是避免渲染错位的关键。

原文共 12 节,先看 Start Here 路径:/concepts/markdown-formatting 查看官方原文

第一站

🧱 IR 可以把它想成“保留意思、不站队平台”的中性积木稿

先做中性稿,后面才不会每个平台都从头猜粗体、链接、代码块。

🔤

文本本体

先保留纯文字内容,别让样式标签把正文搅乱。

🎨

样式跨度

粗体、斜体、删除线、代码这些,会变成“哪一段穿什么衣服”的标记。

🔗

链接跨度

链接不会丢,只是被单独记账,后面再按平台格式拼回去。

✂️

先切块再渲染

官方特地这样做,是为了别把一半粗体切到上一条、一半切到下一条。

第二站

🚚 整个流水线像“三段工厂”:先拆、再切、最后送到各站台

这就是官方说的 pipeline。

1. Parse Markdown → IR

像先把原稿拆成“正文 + 样式地图 + 链接地图”。

2. Chunk IR

像装箱前先分包,确保格式边界不会被乱砍断。

3. Render per channel

最后才翻译成 Slack 的 mrkdwn、Telegram 的 HTML、Signal 的文本加样式范围。

UTF-16 offsets

这不是书呆子细节,而是在照顾像 Signal 这种按 UTF-16 位置数格子的接口。

第三站

📊 Markdown 表格之所以单独拿出来讲,是因为各家聊天窗都很挑食

有的通道能吃代码块,有的更适合子弹点列表,所以官方让你自己挑表格变形方式。

💻

tables: code

像把表格塞进等宽小盒子里,保留排版感。

tables: bullets

像把每一行拆成几条小项目,更适合 Signal、WhatsApp 这类不爱表格的地方。

🚫

tables: off

像说“我不帮你翻”,原表格文字原样过去。

🎈

最后记一句

这页真正讲的是“先做中间稿,再翻译”,这样不同通道才不会各唱各的调。