用途:在 VS Code 中与用户实时协作编辑 marimo 笔记本。marimo 是响应式 Python 运行时,单元格由变量依赖连接,运行某单元格会按数据流顺序重跑其下游。活动运行时持有内核命名空间、单元格状态和数据流图,是唯一事实来源。
主要能力:用 marimo_executeCode 在用户内核的 scratchpad 中运行 Python,检查变量、采样数据、测试转换、探测 API、读取控件状态;每次调用返回 stdout、stderr 及被触发单元格(含响应式下游)的控制台输出。通过 marimo._code_mode(cm)创建、编辑、删除、运行单元格,管理包,设置 mo.ui.* 控件值。
使用方式:连接时传入用户所在笔记本的 notebookUri;不确定是哪个笔记本时应询问。scratchpad 是内核全局变量的浅拷贝,顶层新绑定与重绑定在调用后丢弃,但对笔记本对象的原地修改可能保留。持久化改动必须走 cm:import marimo._code_mode as cm,async with cm.get_context() as ctx 后调用 ctx.create_cell、ctx.edit_cell、ctx.run_cell、ctx.packages.add/remove、ctx.set_ui_value 等;上下文内方法为同步调用,不要 await,正常退出时统一应用。create_cell 默认 hide_code=True,需要可见时传 hide_code=False。
限制与规则:不得直接编辑笔记本 .py 文件,也不得使用 VS Code 的 NotebookEdit,否则改动不会到达活动内核且可能被覆盖。marimo 要求无循环依赖、公共名称跨单元格只定义一次、禁止通配符导入;违反会被拒绝并返回校验错误。marimo._code_mode 是私有不稳定 API,仅限 scratchpad 使用,不得在笔记本单元格或库代码中导入。删除单元格会移除其定义的全局变量,删除前可查询 ctx.graph.descendants 评估影响。
适用场景:在用户打开笔记本时进行配对式探索、调试、数据检查与结构化编辑。