写代码的人大多用过 Jupyter:一种把代码、文字、图表混排在一个网页里、一段一段执行的 Python 笔记本工具。它方便,但有一个老毛病——单元格的执行顺序完全由人手动控制,跑错顺序或留下看不见的中间变量,结果就对不上,换台机器重跑,输出还可能不一样。

marimo 是一个开源 Python 笔记本,专门解决「结果对不上」这个问题。 项目 2023 年 8 月启动,使用 Apache-2.0 开源协议,GitHub 上已有 22.6k star。它的核心规则只有一条:让代码和结果永远保持一致。你改了哪个单元格,依赖它的单元格会自动重跑,或被标记为「过期」等你确认——不需要手动点「运行全部」。

和 Jupyter 相比,执行逻辑变了

传统笔记本按单元格在页面上的先后顺序执行,变量留在内存里,形成看不见的中间状态。marimo 改按依赖关系执行:程序先静态分析你的代码,弄清谁依赖谁。举例:一个单元格读取数据,另一个单元格画图。你修改读取逻辑,画图单元格会自动用新数据重画;你删掉读取单元格,画图里的相关变量也会被清除,不会残留旧值。

这套机制的直接收益是可复现:任何人在同一份 notebook 上得到相同结果,因为执行顺序由依赖关系决定,不靠人脑记忆。对需要记录实验、向同事或读者复现结果的数据科学工作流来说,这是实打实的痛点改进。

存成纯 Python:既能当脚本,又能变网页应用

marimo 笔记本以纯 Python 文件(.py)存储,不是 Jupyter 那种 .ipynb JSON 格式。这带来几个实用能力:文件可以进 git 做版本管理、可以逐行对比差异;可以直接当普通脚本执行(python 你的文件.py);也可以一键部署成网页版交互应用——把滑块、下拉框、图表组合成界面,别人在浏览器里操作,代码不暴露。官方还支持 WASM(让程序直接在浏览器里运行的技术),不装 Python 环境也能用笔记本。

内置 SQL 支持是另一个亮点:在单元格里可以直接用 SQL 查询 CSV、dataframe、数据库甚至数据湖,结果自动转回 Python 表格继续分析。SQL 是查询数据的标准语言,dataframe 是 Python 里最常用的表格数据结构——做数据的人几乎每天都要和这两样打交道。

AI 原生:让编程 agent 直接进笔记本

marimo 把 AI 助手做成内置能力。它提供 pair 功能,可以连接 Claude Code、Codex、OpenCode 这类 AI 编程 agent(能自己读代码、改代码、跑命令的 AI 程序),让 agent 直接在笔记本里生成和修改单元格;编辑器自带 AI 补全,支持自带 API key 或连接本地模型。对经常用 AI 写数据分析代码的人来说,这比在终端和浏览器之间来回粘贴要顺。

适合谁用

  • 数据科学家和分析师:需要记录实验、保证结果可复现、偶尔把分析变成可分享的交互页面;
  • 教学和演示场景:用动态文字和交互控件讲数据,比静态幻灯片直观;
  • 想快速把脚本变成网页工具的开发者:不用学 Web 框架,几个单元格就能拼出一个可部署的应用。

marimo 官方将 Jupyter、Streamlit、ipywidgets、Papermill 等一揽子工具列为替代目标,最新版本 0.24.0 发布于 2026 年 8 月,项目是 NumFOCUS 附属成员(NumPy、SciPy 所在的开源社区组织)。安装一行命令:pip install marimo,然后 marimo edit 打开编辑界面。

如果你受够了笔记本「跑完一段、忘了之前跑过什么」的状态混乱,marimo 提供的就是一条新的路:代码改到哪里,结果就跟到哪里。它把 notebook 从容易出错的草稿本,改造成了一份可复现、可交互、可分享的 Python 程序。