Doramagic 项目包 · 项目说明书
marimo 项目
一个面向 Python 的响应式 Notebook:可运行可复现实验、支持 SQL 查询、作为脚本执行、部署为应用,并能用 Git 进行版本管理;以纯 Python 格式存储,同时集成现代化的 AI 原生编辑器。
marimo 项目概览与快速入门
marimo 是一个开源的响应式(reactive)Python notebook 框架,旨在解决传统 notebook(如 Jupyter)中常见的隐藏状态、运行顺序敏感和难以复现的问题。项目以 .py 作为标准文件格式,notebook 本质就是可执行的 Python 脚本。资料来源:[README.md:1-40]()
继续阅读本节完整说明和来源证据。
一、项目定位与核心特性
marimo 的设计哲学围绕四个核心原则:
- 响应式执行:当某个变量被修改时,依赖该变量的所有单元格会自动重新执行,无需手动点击"运行全部"。
- 无隐藏状态:删除某个单元格时,其定义的变量不会残留;同时,notebook 以确定性 DAG 形式运行,单元格顺序与执行结果一致。
- 可复现:保存到磁盘的文件只有一种运行结果,便于版本控制与协作。
- 交互优先:内置 UI 元素(滑块、下拉框、图表等),交互即变量绑定,浏览器中即可构建交互式应用。
资料来源:docs/getting_started/key_concepts.md:1-40
marimo 提供三种主要运行模式:
| 模式 | 命令 | 用途 |
|---|---|---|
| 编辑模式 | marimo edit notebook.py | 启动浏览器编辑界面 |
| 运行模式 | marimo run notebook.py | 部署为可交互 Web 应用 |
| 脚本模式 | python notebook.py | 直接以脚本形式运行 |
资料来源:README.md:80-120
二、安装与启动
marimo 通过 PyPI 分发,可使用常见包管理器直接安装:
pip install marimo
uv pip install marimo
conda install -c conda-forge marimo
安装完成后,命令行工具 marimo 即被注册。可通过 marimo --help 查看全部子命令。资料来源:docs/getting_started/installation.md:1-30
启动一个空白 notebook:
marimo edit
或编辑已存在的 notebook:
marimo edit my_notebook.py
三、快速编写第一个 Notebook
在编辑界面中,可像普通 Python 脚本一样定义变量与 UI 元素。例如定义一个滑块并自动绘图:
import marimo as mo
slider = mo.ui.slider(1, 100, value=10)
slider
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([slider.value, slider.value * 2])
fig
当滑动滑块时,第二个单元格会自动重新执行并更新图表。资料来源:docs/getting_started/quickstart.md:20-60
这种"以变量绑定驱动执行"的模型,是 marimo 与 Jupyter 最显著的区别之一,也是社区中讨论 VSCode 与 PyCharm 插件开发(#6297、#1325)时频繁提到的痛点所在——传统 notebook 缺少响应式执行,需要手动管理运行状态。
四、导出与跨平台能力
marimo notebook 可被导出为多种形式:
- 静态 HTML:
marimo export html notebook.py - WASM 应用:
marimo export wasm notebook.py,产出可在浏览器中独立运行的应用,无需 Python 后端。该能力依赖于 Pyodide,但社区反馈(#5488)指出从本地模块导入 Python 文件仍存在限制。 - 可执行脚本:
marimo export script notebook.py,输出纯 Python 文件。
资料来源:README.md:120-180
此外,marimo 提供了官方 VSCode 扩展以支持编辑器内调试(对应社区关注的 #1325 "debug cell" 需求),并支持 --redirect-console-to-browser 标志将日志输出重定向至浏览器控制台(社区在 #7246 中建议进一步输出完整 traceback)。资料来源:marimo/__main__.py:60-120
五、常见使用场景与生态
marimo 既适合数据科学家做探索性分析,也适合构建可分享的交互式应用。结合 lazy 模块加载与 WASM 后端(#9898),可将 notebook 打包成轻量的浏览器端应用。社区项目 marimo-agents(#3916)展示了通过普通文本单元格接入 LangChain / LangGraph 等 Agent 框架的扩展思路,未来有望被上游整合。
总体而言,marimo 是一套以"Python 脚本 + 响应式数据流"为核心的现代 notebook 工具,最新版本 0.23.12 持续在交互性能、WASM 兼容与第三方集成上迭代。资料来源:README.md:1-200
响应式运行时与数据流架构
Marimo 的核心创新在于其"响应式"运行时——任何全局变量的变化都会自动触发依赖该变量的单元(cell)重新执行,整个笔记本保持一致状态,避免传统 Jupyter 中常见的隐藏状态问题。本页面围绕数据流图、调度器、执行器以及单元抽象四个层次展开。
继续阅读本节完整说明和来源证据。
整体职责划分
运行时整体由三层组成:单元定义层负责静态解析与依赖收集,数据流层负责建模有向无环图(DAG),调度与执行层负责根据状态变化触发计算。
| 层 | 关键模块 | 职责 |
|---|---|---|
| 单元抽象 | marimo/_ast/cell.py、cell_manager.py | 把 Python AST 包装为 Cell,追踪被引用与定义的全局变量 |
| 数据流图 | dataflow/graph.py、dataflow/edges.py | 构建 DAG、维护节点与边、执行拓扑排序 |
| 运行时核心 | runtime.py、scheduler.py、executor.py | 接收 UI/执行事件、决定重算集合("stale set")、实际执行单元代码 |
资料来源:marimo/_runtime/runtime.py:1-80、marimo/_ast/cell.py:1-60。
数据流图的构建
每个单元在被解析后会生成一个 CellData 对象,记录它在 notebook 全局命名空间中的"ref"(被读取的变量)与"def"(被赋值或声明的变量)。CellManager 将所有 CellData 组合,并据此构造一张有向图:
- 若单元 A 的
ref集合与单元 B 的def集合相交,则存在 B → A 的边。 - 边用
Edge元数据描述,例如来源符号、是否跨文件导入等。 dataflow.graph.DirectedGraph提供topological_sort、get_ancestors等查询接口,用于决定执行顺序和失效范围。
flowchart LR C1[Cell A<br/>def: x] C2[Cell B<br/>ref: x, def: y] C3[Cell C<br/>ref: y] C1 -->|x 被 B 引用| C2 C2 -->|y 被 C 引用| C3
资料来源:marimo/_runtime/dataflow/graph.py:1-120、marimo/_runtime/dataflow/edges.py:1-80、marimo/_ast/cell_manager.py:1-150。
调度器与失效传播
调度器(runner/scheduler.py)负责把"被改动的全局变量集合"映射到"必须重跑的单元集合"。其核心步骤:
- 接收一次事件(用户运行、保存、UI 控件交互、导入新模块等)。
- 在数据流图上从被改动的节点出发,沿入边反向传播,把所有下游节点标记为
stale。 - 对
stale集合执行拓扑排序,按CellExecutionStatus(idle / queued / running / stale)状态决定下一批可执行的单元。 - 控制流单元(
for、if、with)由control_flow.py提供,会覆盖默认的依赖关系以保证正确性,例如mo.stop()之后的分支不会执行。
调度器也持久化运行时实例到 recents.py 中,便于恢复最近打开的笔记本和会话状态。
资料来源:marimo/_runtime/runner/scheduler.py:1-200、marimo/_runtime/control_flow.py:1-100、marimo/_runtime/recents.py:1-60。
执行器与单元生命周期
executor/executor.py 是真正运行单元代码的组件,它运行在与内核相同的事件循环中:
ExecutionContext跟踪当前的堆栈、命名空间包裹(glbls)与控制流状态。- 当一个单元运行时,输出、错误、可视化对象会通过
messaging模块发送给前端。 - 异常会被捕获并附带 traceback,然后以结构化消息回传,前端既可以选择在 notebook 内显示,也可以按社区请求(issue #7246)重定向到浏览器控制台。
- 调试支持(issue #1325 提到的 "debug cell")则通过在同一执行上下文内插入断点实现,可参考
Executor暴露的脚本钩子。
执行器只在调度器已经计算出的最小 stale 集合上工作,避免无关单元的重复运行,从而让整个系统在响应 UI 时保持低延迟。
资料来源:marimo/_runtime/executor/executor.py:1-180、marimo/_runtime/runtime.py:80-200。
与社区关注点的关联
- WASM 导出下的模块导入(issue #5488):因为响应式执行依赖全局命名空间分析,WASM 后端需要把本地模块也解析为 def/ref 才能构建正确的数据流图。
- 调试体验(issue #1325):调试请求实际上绕过了调度器的失效传播,由执行器在同一栈帧内同步运行;了解执行器边界有助于扩展
pdb集成。 - 第三方扩展(issue #3916 的
marimo-agents):agent 单元本质是把字符串变量当作def,让调度器把响应视为该变量的更新,从而驱动下游重计算。
资料来源:marimo/_runtime/runtime.py:200-320、marimo/_ast/cell.py:60-160。
小结
响应式运行时通过"AST 解析 → 数据流图构建 → 失效传播调度 → 单元执行"四个阶段,将传统笔记本隐藏的状态一致性痛点转化为显式的依赖管理。无论是 WASM 部署、调试支持,还是与 agent 单元等扩展的协作,都依托这一架构提供的稳定契约。
资料来源:marimo/_runtime/runtime.py:1-80、marimo/_ast/cell.py:1-60。
前端编辑器与 UI 组件系统
Marimo 的前端是基于 React + TypeScript 构建的"可执行/反应式"笔记本编辑器,整体应用入口由 MarimoApp 组件承担,负责根据运行模式(普通编辑、Run、WASM)装配不同的 UI 子树,并挂载全局 Provider(AppModeProvider、NotificationProvider、BreadcrumbsProvider、Zustan...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述与职责划分
Marimo 的前端是基于 React + TypeScript 构建的"可执行/反应式"笔记本编辑器,整体应用入口由 MarimoApp 组件承担,负责根据运行模式(普通编辑、Run、WASM)装配不同的 UI 子树,并挂载全局 Provider(AppModeProvider、NotificationProvider、BreadcrumbsProvider、ZustandStoreProvider 等)以注入运行时配置、MIME 资源、主题与快捷键上下文。
资料来源:frontend/src/core/MarimoApp.tsx:1-120
前端在结构上分为两层:位于 frontend/src/core/ 的运行时/状态/桥接层,以及位于 frontend/src/components/ 的展示型 UI 组件层。core/codemirror/ 目录集中了与代码编辑器相关的全部逻辑,components/editor/ 目录则承载"单元格-输出-工具栏"等笔记本视图的视觉与交互。
资料来源:frontend/src/core/MarimoApp.tsx:60-180
编辑器与代码编辑组件
CodeMirror 封装
core/codemirror/cm.ts 是编辑器的统一封装入口,它在创建 CodeMirror 实例时加载了 Python 解析器 (@codemirror/lang-python)、行号、Lint、自动补全(autocompletion())、括号匹配、行内提示、缩进指南、查找面板以及 marimo 自定义的 marimoPlaceholder 与 CodeMirror 状态字段(EditorView/Compartment)。代码块运行快捷键、cell 内求值与提交都通过 extension 的命令注册完成。
资料来源:frontend/src/core/codemirror/cm.ts:1-200
为了保证"反应式"行为,每当用户停止输入(如 changeDelay),编辑器会通过 updateCellCode 将新源码推送到 store 中的 Cell 模型,由后端 Python kernel 决定哪些变量失效并触发整本重新执行,从而实现"运行顺序由数据流定义而非单元格点击顺序"的核心范式。
资料来源:frontend/src/core/cells/cell.ts:1-150
NotebookCell 单元视图
components/editor/notebook-cell.tsx 将一个单元组装为:顶部操作条(运行/聚焦/折叠/删除)+ 中部由 CodeMirror 渲染的输入区 + 下部 Output 组件。对应单元格运行时错误时,前端在 Output.tsx 内渲染错误名、错误值与 traceback 的折叠面板。
资料来源:frontend/src/components/editor/notebook-cell.tsx:1-200
用户对"在浏览器控制台打印完整 traceback"有长期诉求(参见社区 Issue #7246),这正是 Output.tsx 中异常渲染路径的延伸;扩展该路径可以让 traceback 出现在浏览器 DevTools,满足调试 WASM/Run 模式的需要。
资料来源:frontend/src/components/editor/Output.tsx:1-200
数据展示与交互组件
DataTable 组件
components/data-table/data-table.tsx 是 Marimo 自研的虚拟滚动表格,支持列类型推断(数字、日期、字符串、布尔)、分页、排序、列隐藏、行选中与列格式化。该组件既作为"变量查看器"的内置类型被编译器注入到 notebook 输出,也作为 mo.ui.table 等交互式控件的底层展示。
资料来源:frontend/src/components/data-table/data-table.tsx:1-200
插件/Widget 系统
plugins/plugins.ts 是 marimo 前端"插件协议"的注册中心,使用 AnyWidget 兼容 API 注册 Python 端的 widget 资源。Python 侧创建 widget 时,前端按 model_id 在 Plugins 上下文中找到对应 React/JS 组件并把 model 实例挂上,把事件再回传给 kernel。
资料来源:frontend/src/plugins/plugins.ts:1-200
社区关注的 Agent Cell(Issue #3916、marimo-agents)就是借由该插件层以"纯文本输入 + 任意 Agent 函数"的方式扩展出新的 cell 渲染,使得底层架构无需修改即可承载 LLM/Agent 工作流。
资料来源:frontend/src/plugins/plugins.ts:60-220
跨模式桥梁与组件协同
WASM / Run 模式桥接
core/wasm/bridge.ts 在 WASM 模式下把 Python kernel 跑在 WebAssembly 里,并通过 PyodideBridge/Bridge 协议把 run_cell、set_cell_config、插件消息封装成统一事件流。MarimoApp 根据 appMode 选择 WebSocketBackend、ServiceWorkerBackend 或 WasmBackend,使编辑、Output、表格、插件四套组件在不同部署形态下都可以复用。
资料来源:frontend/src/core/wasm/bridge.ts:1-200
| 模式 | 后端桥接 | 备注 |
|---|---|---|
| 编辑模式 (编辑+预览) | WebSocketBackend | Python kernel 独立进程,通过 WebSocket 通信 |
| Run 模式 | WebSocketBackend | 仅暴露输出,禁用编辑(社区 #7246 关注控制台日志格式) |
| WASM | core/wasm/bridge.ts 中的 WasmBackend | 完全在浏览器中执行,影响组件的依赖外网策略(社区 #5488) |
资料来源:frontend/src/core/MarimoApp.tsx:60-180, frontend/src/core/wasm/bridge.ts:1-200
单元格状态机
单元的内部状态由 core/cells/cell.ts 中的 Cell 类承载,把"运行中、过期、空闲、错误停滞"等状态暴露给组件订阅;当后端响应 cell-op 事件时,前端批量更新多个 Cell,并由 notebook-cell.tsx 重新渲染顶部条与运行按钮的 spin/disabled 标志位。这种"轻 Model + 细粒度订阅 + 单一组件树"的方式,是 marimo 能在 React 中以 O(单元数) 复杂度响应数据流更新的关键。
资料来源:frontend/src/core/cells/cell.ts:1-150
总结
Marimo 的前端编辑器以 MarimoApp 为装配根,通过 CodeMirror 封装实现代码输入、通过自研 notebook-cell/Output 体系实现反应式执行与错误展示、以 data-table 与 plugins 系统覆盖数据查看与可扩展控件,并以 core/wasm/bridge.ts 统一本地、远端、WASM 三种运行模式。理解这些组件的职责边界,是把握社区长期功能请求(如 PyCharm/VSCode 调试器集成、Agent cell 上游、traceback 输出等)落地路径的前提。
AI 集成、部署与扩展生态
Marimo 的"AI 集成、部署与扩展生态"由四个相互衔接的子系统组成:内置的 AI 工具注册表、对外暴露的 MCP(Model Context Protocol)服务器、多形态导出/部署管线,以及围绕 anywidget、lint 规则和 WASM 引导的可扩展边界。这些子系统共同决定了 Marimo notebook 如何被外部 AI 代理(agent)调用、如何被打...
继续阅读本节完整说明和来源证据。
Marimo 的"AI 集成、部署与扩展生态"由四个相互衔接的子系统组成:内置的 AI 工具注册表、对外暴露的 MCP(Model Context Protocol)服务器、多形态导出/部署管线,以及围绕 anywidget、lint 规则和 WASM 引导的可扩展边界。这些子系统共同决定了 Marimo notebook 如何被外部 AI 代理(agent)调用、如何被打包为可分发的应用程序,以及如何被开发者自定义扩展。
一、AI 工具注册表与代理调用入口
Marimo 的 AI 能力以"工具(tool)"为最小单位组织,集中在 marimo/_ai/ 包中。包级入口 marimo/_ai/__init__.py 负责对外导出公共符号,避免直接暴露内部实现细节 资料来源:marimo/_ai/__init__.py:1-30。
工具的注册与发现逻辑由 marimo/_ai/tools/registry.py 统一管理:
- 提供装饰器或注册函数,把符合特定协议(输入 schema、可序列化结果)的 Python 函数注册为可被 LLM/agent 调用的工具
- 在启动时收集所有注册项,供 AI 补全、聊天面板以及外部 MCP 客户端枚举
- 通过统一的调用包装层执行工具,并把结果以 Marimo 可消费的格式返回给前端
社区中 marimo-agents 项目(issue #3916)正是基于该注册表实现的:它允许"任意 agent"(包括 LangChain/LangGraph 或自定义函数)作为文本单元格的输入后端。社区长期诉求是把这类能力"上游(upstream)"到核心仓库,因此工具注册表的稳定性和向后兼容性是生态扩展的关键。
二、MCP 服务器:对外暴露 Notebook 能力
为了让外部 AI 客户端(Claude Desktop、Cursor 等)能直接操作一个正在运行的 Marimo 会话,Marimo 在 marimo/_mcp/server/main.py 中实现了一个 MCP 服务器 资料来源:marimo/_mcp/server/main.py:1-50。其核心职责包括:
- 把
marimo._ai.tools.registry中注册的工具以 MCP 协议的标准格式暴露给客户端 - 把"列出/读取/编辑单元格""运行 notebook""获取数据框摘要"等高频操作封装为可远程调用的资源与方法
- 复用现有会话上下文,避免在 AI 与 notebook 之间维护两套状态机
这种设计使得 Notebook 本身成为一个可被 agent 直接访问的"工具集",与 #3916 中提到的 marimo-agents 思路一致,但路径相反:MCP 把能力"推出去"给 agent,而不是把 agent "塞进来"到单元格。
三、部署形态:脚本导出与 WASM 引导
部署侧由导出器和运行时引导共同承担。marimo/_server/export/exporter.py 提供了从 .py notebook 源文件到多种产物的转换能力 资料来源:marimo/_server/export/exporter.py:1-80:
| 产物形态 | 主要用途 | 关键约束 |
|---|---|---|
html(含 WASM) | 单文件离线分享,浏览器内运行 | 依赖 Pyodide,受 issue #5488 中提到的"本地模块导入"限制 |
script | python file.py 直接执行,部署为服务 | --redirect-console-to-browser 等 CLI 标志见 issue #7246 |
marimo-app | 隐藏代码、只保留 UI 的应用模式 | 单元格不可编辑 |
对于 WASM 形态,marimo/_pyodide/bootstrap.py 负责在浏览器中拉起 Python 运行时、建立与前端编辑器的消息通道 资料来源:marimo/_pyodide/bootstrap.py:1-60。0.23.12 版本中新增的 LazyStore dual-mode WASM backend(PR #9898)正是对这一引导路径的优化:它让存储层能够同时处理内存与持久化两种模式,从而缓解 issue #5488 中"导入本地模块失败"的部分场景。运行时输出(控制台、异常 traceback)的格式化由 marimo/_runtime/output.py 完成,决定了在浏览器控制台中能否看到完整堆栈信息(对应 issue #7246)。
flowchart LR
A[Notebook 源文件 .py] --> B[exporter.py]
B -->|html| C[WASM 应用<br/>pyodide/bootstrap.py]
B -->|script| D[本地/服务器运行]
B -->|app| E[只读应用]
C --> F[前端编辑器]
F <--> G[AI 工具<br/>_ai/tools/registry.py]
G <--> H[MCP 服务器<br/>_mcp/server/main.py]
H --> I[外部 Agent / LLM]四、扩展点:UI 组件、lint 规则与代理集成
生态的可扩展性体现在三个明确的扩展面上:
- 自定义 UI 组件:通过
anywidget协议接入。marimo/_plugins/ui/impl/anywidget.py提供了 anywidget 适配层,使前端 ESM 模块能与 Python 状态双向绑定 资料来源:marimo/_plugins/ui/impl/anywidget.py:1-40。0.23.12 改进了 anywidget 模块错误的可读性(PR #10026),降低了第三方 widget 的接入门槛。 - Lint 规则扩展:
marimo/_lint/rules/__init__.py定义了规则注册与分发的入口,第三方工具或团队规约可通过该机制注入自定义检查 资料来源:marimo/_lint/rules/__init__.py:1-30。 - 代理后端接入:沿用
_ai/tools/registry.py的注册约定,新代理(LLM、LangGraph、外部 agent)只需实现工具协议即可被 Marimo 自动识别。
小结
四条主线——AI 工具注册表、MCP 服务器、多形态导出与 WASM 引导、以及 anywidget/lint 扩展点——共同构成了 Marimo 当前面向 AI 与部署的生态骨架。短期内的演进方向集中在:完善 WASM 下本地模块的导入能力(#5488)、补齐浏览器端的异常日志输出(#7246)、把 marimo-agents 类能力并入 _ai 注册表(#3916),以及扩展 IDE 集成(PyCharm #6297、VSCode "debug cell" #1325)。
来源:https://github.com/marimo-team/marimo / 项目说明书
失败模式与踩坑日记
保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。
可能增加新用户试用和生产接入成本。
可能增加新用户试用和生产接入成本。
可能增加新用户试用和生产接入成本。
可能增加新用户试用和生产接入成本。
Pitfall Log / 踩坑日志
项目:marimo-team/marimo
摘要:发现 14 个潜在踩坑项,其中 4 个为 high/blocking;最高优先级:配置坑 - 来源证据:Dark mode not working on deployed server。
1. 配置坑 · 来源证据:Dark mode not working on deployed server
- 严重度:high
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:Dark mode not working on deployed server
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10056 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
2. 配置坑 · 来源证据:Failed to fetch dynamically imported module lab_00_introduction
- 严重度:high
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:Failed to fetch dynamically imported module lab_00_introduction
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10076 | 来源类型 github_issue 暴露的待验证使用条件。
3. 配置坑 · 来源证据:data_editor not editable in full screen mode
- 严重度:high
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:data_editor not editable in full screen mode
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10079 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
4. 维护坑 · 来源证据:Server is Down
- 严重度:high
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题:Server is Down
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10034 | 来源类型 github_issue 暴露的待验证使用条件。
5. 配置坑 · 可能修改宿主 AI 配置
- 严重度:medium
- 证据强度:source_linked
- 发现:项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主,或安装命令涉及用户配置目录。
- 对用户的影响:安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。
- 证据:capability.host_targets | https://github.com/marimo-team/marimo | host_targets=claude_code, claude
6. 配置坑 · 来源证据:Polars Query Plan Visualisation is showing incorrect orientation / relations between nodes
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:Polars Query Plan Visualisation is showing incorrect orientation / relations between nodes
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10084 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
7. 配置坑 · 来源证据:Slides mode: speaker-notes popup stuck at "Connecting…"
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:Slides mode: speaker-notes popup stuck at "Connecting…"
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10081 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
8. 能力坑 · 能力判断依赖假设
- 严重度:medium
- 证据强度:source_linked
- 发现:README/documentation is current enough for a first validation pass.
- 对用户的影响:假设不成立时,用户拿不到承诺的能力。
- 证据:capability.assumptions | https://github.com/marimo-team/marimo | README/documentation is current enough for a first validation pass.
9. 维护坑 · 来源证据:Sandbox failed: backend start failed
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题:Sandbox failed: backend start failed
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 证据:community_evidence:github | https://github.com/marimo-team/marimo/issues/10077 | 来源类型 github_issue 暴露的待验证使用条件。
10. 维护坑 · 维护活跃度未知
- 严重度:medium
- 证据强度:source_linked
- 发现:未记录 last_activity_observed。
- 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
- 证据:evidence.maintainer_signals | https://github.com/marimo-team/marimo | last_activity_observed missing
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 证据:downstream_validation.risk_items | https://github.com/marimo-team/marimo | no_demo; severity=medium
12. 安全/权限坑 · 存在评分风险
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 对用户的影响:风险会影响是否适合普通用户安装。
- 证据:risks.scoring_risks | https://github.com/marimo-team/marimo | no_demo; severity=medium
13. 维护坑 · issue/PR 响应质量未知
- 严重度:low
- 证据强度:source_linked
- 发现:issue_or_pr_quality=unknown。
- 对用户的影响:用户无法判断遇到问题后是否有人维护。
- 证据:evidence.maintainer_signals | https://github.com/marimo-team/marimo | issue_or_pr_quality=unknown
14. 维护坑 · 发布节奏不明确
- 严重度:low
- 证据强度:source_linked
- 发现:release_recency=unknown。
- 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
- 证据:evidence.maintainer_signals | https://github.com/marimo-team/marimo | release_recency=unknown
来源:Doramagic 发现、验证与编译记录