跟 MDX / MyST / Quarto / Notion / Obsidian + Meta Bind / Observable / Jupyter 的全方位对比。
给学术引用 / 商业决策 / 工程选型用。
TL;DR 决策矩阵
| 你需要 |
用 |
| Markdown + 可交互 + AI 友好 + plain-text fallback |
AINP ✅ |
| React 生态深度集成,不在乎 markdown fallback |
MDX |
| 学术 sphinx ecosystem 的 markdown |
MyST |
| 数据科学 build pipeline + Python/R kernel |
Quarto |
| 笔记 + database + 团队协作(锁生态可接受) |
Notion |
| 个人 markdown vault + 插件生态 |
Obsidian + Meta Bind |
| 数据探索 / JS notebook |
Observable |
| Python data science notebook |
Jupyter |
完整对比表
按维度横向对比 8 工具。** = 强 / * = 中 / ❌ = 弱或不支持
| 维度 |
AINP |
MDX |
MyST |
Quarto |
Notion |
Obsidian+MB |
Observable |
Jupyter |
| Markdown 兼容(plain-text fallback) |
** |
❌ |
* |
* |
❌ |
** |
❌ |
❌ |
| 可交互(slider / control) |
** |
** |
❌ |
** |
* |
** |
** |
* |
| 声明式 syntax |
** |
❌ |
** |
* |
❌ |
* |
❌ |
❌ |
| AI 易生成 |
** |
* |
* |
❌ |
❌ |
* |
❌ |
❌ |
| Live chart |
** |
** |
❌ |
** |
* |
** |
** |
** |
| 动画 / SVG scenes |
** |
❌ |
❌ |
❌ |
❌ |
❌ |
** |
❌ |
| Zero build / runtime |
** |
❌ |
❌ |
❌ |
* |
* |
❌ |
❌ |
| Cross-block shared state |
** |
* |
❌ |
* |
❌ |
❌ |
** |
* |
| 不需任意 JS execution(安全) |
** |
❌ |
** |
❌ |
** |
❌ |
❌ |
❌ |
| 可移植(无 vendor 锁定) |
** |
* |
** |
* |
❌ |
❌ |
❌ |
** |
| 学习曲线(写作者) |
* |
❌ |
* |
❌ |
** |
* |
❌ |
❌ |
1. AINP vs MDX
共性
- 都为 markdown 加可交互 capability
- 都有 React-friendly 集成路径
关键差异
| 维度 |
AINP |
MDX |
| JS 执行 |
❌ 不允许(声明式) |
✅ 任意 JSX / React 组件 |
| Plain-text fallback |
✅ 必需 |
❌ 离开 MDX reader 文件就坏 |
| AI 生成 |
✅ 99%+ accuracy with schema |
* 可生成但需写 React,错误率高 |
| 安全性 |
✅ 无 eval / 协议层 sandbox |
❌ 任意 JS = 安全风险 |
| 学习曲线 |
* 学几个 DSL |
❌ 需懂 React + JSX + 组件 |
| 集成生态 |
TypeScript / Python / Rust / 任何 |
React 强绑 |
| 典型用户 |
写作者 + AI 集成 |
React 开发者 |
何时选 AINP 不选 MDX
- 你想 LLM 直接生成可交互内容
- 你需要文件能跨 reader(GitHub 等)至少 plain-text 可读
- 你的写作者不会 React
- 你需要安全 default(无 sandbox)
何时选 MDX 不选 AINP
- 你已深度 React 生态
- 你需要在 markdown 里用任意 React 组件
- 你的内容只在你自己的 React app 里渲染
- Plain-text fallback 不是约束
2. AINP vs MyST
共性
- 都 declarative 风格
- 都用
::: directive container
- 都基于 markdown
关键差异
| 维度 |
AINP |
MyST |
| 生态绑定 |
无(vendor-neutral) |
偏 Sphinx / Python 文档 |
| 可交互 |
✅ 内建 controls + computed + chart + animation |
❌ 主要静态文档 directive |
| AI 生成 |
✅ 设计目标 |
* 可但非核心目标 |
| Build pipeline |
❌ 不需(直接 reader 渲染) |
✅ 需要 Sphinx build |
| Live chart |
✅ template vega-lite: |
❌ 静态图为主 |
何时选 AINP 不选 MyST
- 你需要可交互 / 动画
- 你不在 Sphinx 生态
- 你想 zero build
何时选 MyST 不选 AINP
- 你已用 Sphinx 做学术 / 技术文档
- 你的内容是静态学术文章
- 你需要 cross-reference 大型 doc tree
3. AINP vs Quarto
共性
关键差异
| 维度 |
AINP |
Quarto |
| Runtime |
❌ 不需 |
✅ 需 Python / R kernel |
| Build pipeline |
❌ 不需(直接 markdown → HTML) |
✅ 复杂 build |
| Code execution |
❌ 不允许(安全) |
✅ Python / R / Julia / Observable code |
| AI 生成 |
✅ 99% with schema |
* Python code 易生成但 Quarto syntax 复杂 |
| 生态 |
Vendor-neutral |
Posit (formerly RStudio) ecosystem |
| 典型用户 |
写作者 + AI 工程师 |
数据科学家 |
何时选 AINP 不选 Quarto
- 你不写 Python / R 代码
- 你想 zero runtime
- AI 是核心生成方
- 你不在 RStudio / Posit 生态
何时选 Quarto 不选 AINP
- 你在做 reproducible research
- 你需要执行 Python / R 代码生成结果
- 你在 RStudio / Posit Cloud 生态
- 你需要复杂 PDF / 学术格式输出
4. AINP vs Notion
共性
- 都目标"现代文档"
- 都有 share / collaboration(但路径不同)
关键差异
| 维度 |
AINP |
Notion |
| 源文件可移植 |
✅ 纯 markdown,任何 reader 可打开 |
❌ 锁 Notion 生态;export markdown 严重 lossy |
| Open standard |
✅ CC BY 4.0 协议 |
❌ 闭源 SaaS |
| 可交互 |
✅ 协议级支持 |
* embed widgets but not declarative |
| AI 生成 |
✅ 协议设计目标 |
* Notion AI 是 vendor-specific |
| 数据库 / 团队 |
❌ 不在协议范围 |
✅ Notion 强项 |
| 离线 / 自托管 |
✅ markdown file = 离线 |
❌ SaaS |
何时选 AINP 不选 Notion
- 你需要源文件离线 / 自托管 / 跨工具
- 你不想锁 Notion ecosystem
- 你需要 plain-text fallback
- 你需要 AI 高可靠生成
何时选 Notion 不选 AINP
- 你需要团队 collaboration(Google Docs 风格 multiplayer)
- 你需要数据库 / 关系表
- 你不需要源文件可移植
- 你接受 vendor 锁定换便利
共性
- 都基于 markdown
- 都让 markdown 加可交互
- 都个人友好
关键差异
| 维度 |
AINP |
Obsidian + Meta Bind |
| 生态绑定 |
❌ 无 |
✅ 锁 Obsidian |
| 可移植 |
✅ markdown 任何 reader |
❌ 离开 Obsidian / Meta Bind 不渲染 |
| 声明式 |
✅ 协议 |
* Meta Bind syntax 类似但 DataviewJS 是 JS |
| AI 生成 |
✅ 设计目标 |
* 没有专门 AI schema |
| 统一 spec |
✅ 一份协议覆盖 15 capability |
❌ 多插件碎片化(Meta Bind / Charts / Dataview / etc.) |
| 跨设备 |
✅ markdown 同步即可 |
✅ Obsidian Sync (paid) |
| 学习曲线 |
* 学一份 spec |
* 学多个插件 |
何时选 AINP 不选 Obsidian+MB
- 你需要文件能在 Obsidian 之外用
- 你想要统一 spec 而不是多插件
- AI 生成是主路径
- 你不想被锁在 Obsidian
何时选 Obsidian+MB 不选 AINP
- 你已深度用 Obsidian
- 你需要 Obsidian 的 graph view / canvas / 等独特能力
- 你的内容只在 Obsidian 内消费
- Meta Bind 满足你需求
6. AINP vs Observable
共性
- 都"可交互文档"
- 都有 reactive cell
关键差异
| 维度 |
AINP |
Observable |
| 基础 format |
Markdown |
Observable proprietary(OJS notebook) |
| 声明式 vs 命令式 |
声明式 |
命令式(写 JS) |
| AI 生成 |
✅ 99% with schema |
❌ 写 JS 错误率高 |
| 离线 / 跨工具 |
✅ markdown |
❌ Observable cloud 锁 |
| 复杂 chart |
✅ Vega-Lite |
✅ 任意 D3 / Plot |
| 数据探索 |
* 通过 Vega-Lite |
✅ 强项 |
| 学习曲线 |
* 学 spec |
❌ 需 OJS 知识 |
何时选 AINP 不选 Observable
- 你不想锁 Observable cloud
- 你不擅长 JS / OJS
- 你需要 markdown
- AI 是主生成方
何时选 Observable 不选 AINP
- 你需要任意 D3 / Plot 自由度
- 你做深度数据探索
- 你已熟 OJS
7. AINP vs Jupyter notebook
共性
关键差异
| 维度 |
AINP |
Jupyter |
| 源文件 format |
Markdown (.md) |
JSON (.ipynb) |
| plain-text 友好 |
✅ markdown 任何 reader |
❌ ipynb JSON 难读 |
| 代码执行 |
❌ 不允许 |
✅ Python / R / Julia / etc. |
| AI 生成 |
✅ 协议层支持 |
* 生成 ipynb 复杂 |
| 典型用户 |
写作者 + AI 集成 + 任何 |
数据科学家 |
| 可交互 |
✅ slider / chart / animation |
* ipywidgets |
| runtime 需要 |
❌ 仅浏览器 |
✅ Python kernel |
何时选 AINP 不选 Jupyter
- 你不需要执行代码
- 你需要 markdown 文件
- AI 生成是主路径
- 你需要 runtime-free reader
何时选 Jupyter 不选 AINP
- 你做需要执行的数据分析
- 你已在 Python data science 生态
- 你需要 reproducible computation
8. 综合差异化 summary
AINP 在 8 个工具中的独特定位:
- 唯一同时满足 markdown fallback + 可交互 + AI 友好 + 安全无 eval + 跨工具的协议
- 唯一 AI generation 是 protocol design first principle
- 唯一 协议级 sandbox(无需重型 reader 安全机制)
- 唯一 内建动画 + SVG scenes + Vega-Lite 三种 template 类型
AINP 的主要 trade-off:
- ❌ 不能像 MDX 那样写任意 React
- ❌ 不能像 Quarto / Jupyter 执行 Python 代码
- ❌ 不像 Notion / Observable 提供 collaborative cloud
适合 AINP 的核心场景:
- 教学 / 学习平台(AI 生成可交互习题)
- 个人金融 / 健康工具(可交互计算器)
- 物理 / 工程 simulations(动画 + 参数控制)
- AI 生成可交互答案(chat 应用增强输出)
- 可分享 markdown 文档(git / GitHub workflow + 可交互体验)
引用 / 学术 reference
如果在论文中引用:
@misc{ainp2026,
title = {AI-native Interaction Protocol (AINP) v1},
author = {scos-lab},
year = {2026},
publisher = {scos-lab},
url = {https://rho.md/protocol/RENDER_IR_v1.md},
note = {Working Draft. CC BY 4.0.}
}
See also