What is Rho?

一句话:Rho 是 Markdown 的进化形态——让 .md 文件能写出 HTML 级别的可交互内容(滑块、动画、SVG 场景、live chart、知识网络节点),同时保留 Markdown "任何工具都能打开为纯文本" 的承诺。

Logo: ρ — Greek letter rho,单字符即 logo。 Domain: rho.md 品牌全家: Rho(reader app)/ @rho/md(npm 库)/ Rho format(协议)/ cloud.rho.md(SaaS)/ Rho AI(生成)/ Rho graph(知识管理)


一个例子开场

普通 markdown 的写法:

# BMI 计算

公式:`BMI = 体重 (kg) / 身高² (m)`

| 身高 | 体重 60kg | 体重 70kg | 体重 80kg |
|------|-----------|-----------|-----------|
| 1.6m | 23.4 | 27.3 | 31.3 |
| 1.7m | 20.8 | 24.2 | 27.7 |
| 1.8m | 18.5 | 21.6 | 24.7 |

读者要自己代入数字对照表格。

Rho 的写法:

# BMI 计算

公式:`BMI = 体重 (kg) / 身高² (m)`

```interact
slider weight 40 120 70 1
slider height 1.4 2.1 1.7 0.01
computed bmi = weight / (height * height)
template stl:
[你的 BMI] -> [{bmi:.1f}] ::mod(weight="{weight} kg", height="{height} m")
```

读者拖动两个滑块 → 实时看到自己的 BMI 数字、单位、健康区间——不用算。

差别一目了然:从 "读公式自己代入" → "拖滑块直接看结果"。

关键:上面这块 interact 在不支持 Rho 的 reader(GitHub / VS Code / Obsidian 默认)里显示为带语法高亮的代码块——读者依然能读懂源文件在做什么。这就是 plain-text fallback。


三条核心原则

Rho 的设计完全围绕这三条:

1. 声明式 (Declarative)

源文件里没有 JS 代码。所有交互都是声明("这里要一个滑块,最小 40 最大 120,初始值 70"),不是代码("function onSliderChange() { ... }")。

为什么:

  • 写作者不用学编程
  • LLM 能可靠生成(生成纯 JS 容易出 bug,生成声明几乎不会错)
  • 安全(reader 不需要 eval,不需要执行用户代码)
  • 可移植(不绑定任何 JS 框架)

2. Plain-text fallback

不支持 Rho 的 reader(GitHub web、VS Code 预览、Obsidian、邮件 markdown 客户端)打开 .md 文件时——看到的是纯文本源,不是渲染失败的白屏。

这是 Markdown 的核心承诺,Rho 不能违背。所有 Rho 的 DSL 都装在标准 markdown fenced code block(```interact / ```timeline / ```layout)或 :::container 块里——这些在标准 markdown 中合法,只是被识别为代码块或被忽略。

另外区分:能"打开为纯文本" ≠ 能"渲染为视觉效果"。Rho 保证的是前者。要看到滑块/动画/live chart,需要用 Rho MD,或其他实现了该格式的 reader。

3. AI 友好 (AI-native)

语法紧凑、无歧义、可机器校验——LLM 生成 Rho format 几乎不会出错。

对比:

  • 让 LLM 写一段 React + useState + Chart.js → 经常 import 错、props 不对、忘了 useEffect
  • 让 LLM 写 ```interact \n slider x 0 10 5 0.1 \n template stl: ... ``` → 几乎一发就对

LLM Protocol 文档(在 Rho AI / LLM Guide 章节)专门给 AI 用,比 spec 更紧凑。


解决什么问题

Rho 适合这些场景:

场景 例子
教学公式可视化 三角函数 / 复利 / 概率分布 / 算法步进
个人金融工具 房贷月供 / 退休规划 / 投资回报 / 税额计算
物理 / 工程仿真 弹簧振子 / 行星轨道 / 电路 / 流体
数据探索 slider 调参 → live chart 重绘
产品文档可交互 API 参数试调 / 配色方案试看 / 状态机走 step
AI 输出富化 LLM 直接生成可交互答案,share 给提问者
知识管理(未来 Rho graph) .md 文件之间通过 Rho graph 连成知识网络

不解决什么问题

诚实边界:

  • ❌ 不是 web app builder——做不了完整 SPA(路由 / 后端 / 持久化 state)
  • ❌ 不是 React 替代——不能在 markdown 里写组件
  • ❌ 不是 Dataview 替代(虽然 Rho graph 未来会接近)——目前不查询本地文件 / 不跨文档聚合
  • ❌ 不是 PowerPoint 替代——虽然有 stepper / layout,但不专攻 presentation
  • ❌ 没有 form 提交 / 后端——所有 state 在 reader 内存里,关掉 page 就没

如果你需要这些,用对应的工具。Rho 专注一件事:让 .md 写出 HTML 级别的交互、可分享、可移植——同时保持 markdown 的 plain-text fallback。


跟其他工具的关系

客观对比,不是踩别人:

工具 定位 跟 Rho 的关系
Markdown (CommonMark/GFM) 基础语法 Rho 是其超集——所有合法 markdown 也是合法 Rho format
Obsidian + Meta Bind 个人 vault 内的 inline interactive Meta Bind 用 INPUT[slider:value] 绑 frontmatter,命令式(DataviewJS 写 JS)+ Obsidian-only。Rho 声明式 + 可移植到任何 reader
Obsidian + Charts plugin Chart.js 渲染 Rho 用 Vega-Lite 声明式,写法更紧凑
MyST 学术 markdown 都声明式 + 都有 directive 语法。MyST 重 Sphinx 生态;Rho 偏 AI-native + zero-build
MDX JSX in Markdown MDX 在 .md 里写 React 组件——会破坏 plain-text fallback,且不能 LLM 直接生成。Rho 完全不写 JS
Quarto 数据科学发布 Quarto 重 build pipeline + 需要 Python/R kernel;Rho zero-build / zero-runtime
Notion embed widgets Notion 锁生态 + 不可分享纯源 .md;Rho 源文件本身就是 markdown,可贴到任何 markdown 工具

Rho 的差异化不是 "能力解锁"——上面好几个工具都能做类似的事。差异化是:

  1. 统一 spec(不是几十个互不兼容的插件)
  2. 声明式(不是写 JS)
  3. AI 友好(LLM 一份 protocol 全会)
  4. 可移植(不绑生态,纯 markdown 源文件)

哲学:为什么这样设计

Markdown 之所以战胜了 wiki / RTF / docx / Notion 私有格式成为事实标准,是因为它有一条不可变的承诺:

任何工具都能打开它,最坏情况下看到的是纯文本——而不是损坏的二进制 / 渲染失败的白屏。

这条承诺让 .md 文件可以横跨 GitHub / VS Code / Obsidian / Bear / Typora / 邮件客户端 / 命令行 / cat / 任何文本编辑器流通。

很多 "增强版 markdown"(MDX / Notion-flavored / Bear-flavored)破坏了这条承诺——离开它们的 reader,文件就坏了。

Rho 拒绝这条路。我们的所有 DSL 必须在不支持 Rho 的 reader 里显示为合法的 markdown(fenced code block / container block / 普通段落)。读者最坏看到的是带语法高亮的源文件,不是错误。

代价是:DSL 形式受 markdown 语法限制(必须装在 ``` 或 ::: 里)。 收益是:你的 .md 文件永远不会因为换 reader 而坏。


接下来

你是…… 推荐入口
想立刻看完所有能力 → 5-minute tour
没装过 Rho desktop app → Install Rho app
想动手写第一个例子 → Your first interactive .md
写作者,要查具体 DSL 怎么写 → Writer's Guide
想集成 @rho/md 到自己的 reader → Developer Reference
LLM 开发者 / prompt 工程师 → Rho AI / LLM Guide

See also