AI代码执行不用Docker行不行?Pydantic说可以

用 Docker 跑 AI 生成的代码?Pydantic 说你可以不用那么重

你有没有被这个问题卡住过——AI 给你生成了一段 Python 代码,你想跑,但不敢直接在本地执行。担心有恶意依赖,担心文件被改,担心网络请求悄悄发出。

大多数人的解法是:Docker 容器。

但 Docker 冷启动要 1500ms。对于需要频繁执行 AI 代码的 Agent 场景,这个开销是不可接受的。想象一下,你的 AI 编程助手每次给你运行代码都要等 1.5 秒——那个体验就像每次点发送都要等半天才看到回音。

Pydantic 刚发布的 Monty,给出了第三种答案。

用 Rust 写一个专用的安全沙箱

Monty 是一个用 Rust 编写的轻量级 Python 解释器,专门用来安全地运行 AI 生成的代码。它的核心思路非常清晰:与其用容器隔离,不如用语言层隔离。

关键数字:

  • 冷启动:< 1ms(从已预热的连接池)
  • 完整 Agent 运行(10 条 REPL 命令):< 2ms
  • 对比竞品:Docker 沙箱 = 1900ms,Pyodide = 2735ms

这个差距不是 10% 的优化,是三个数量级的体验跃升。

怎么做到这么快的

Monty 没有走传统的虚拟化路线。它本质上是一个用 Rust 重写的 Python 3.14 解释器,专注于”只运行 AI 生成的代码片段”这个极窄场景。

在安全模型上,它做了很保守的设计:

  • 沙箱内部没有文件系统(读取不到你本地的 .env 和 SSH keys)
  • 没有网络访问(不会悄悄把数据外发)
  • 没有环境变量(AI 代码看不到你的本地配置)

AI 代码唯一能接触外部世界的方式,是你主动传递进去的函数和挂载。比如下面这个例子中,nutrition 函数运行在宿主机,沙箱里只能拿到返回值:

from pydantic_monty import Monty

code = """
kcal = nutrition('chocolate bar')['kcal']
hours = kcal * 4184 / (bulb_watts * 3600)
print(f'a chocolate bar powers a {bulb_watts} W bulb for {hours:.1f} hours')
"""

with Monty() as pool:
    with pool.checkout() as session:
        session.feed_run(
            code,
            inputs={'bulb_watts': 10},
            external_lookup={'nutrition': lambda food: {'kcal': 230}},
        )

这行代码在沙箱里运行,只能调用你允许它调用的函数,所有危险操作都被屏蔽。

谁在用 Pydantic:自己先跑通再开源

值得注意的一点是,Monty 不是一个实验室项目。Pydantic 已经在自己的产品里大规模使用了它——Pydantic AI 框架的 Code Mode(代码执行模式)底层跑的就是 Monty。换句话说,这个工具已经在生产环境里经过了真实流量的验证,然后才开源给社区。

这很 Pydantic。他们做事的风格一贯是:自己的东西先跑通,再拿出来。

适合谁来用

如果你符合以下任一场景,Monty 值得关注:

  • 正在做 AI Agent 开发:需要在 Agent 里安全执行用户提交的代码,不想引入 Docker 的运维复杂度
  • 做 AI 应用后端:想给 AI 代码执行提供安全保障,而不是”祈祷它不会做坏事”
  • 需要 Code Interpreter 能力:类似 GPT-4 的代码执行,但想自托管、轻量化、毫秒级响应

上手也非常简单:

# Python
uv add pydantic-monty

# JavaScript / TypeScript
npm install @pydantic/monty

# Rust
cargo add monty

文档在 pydantic.dev/docs/monty,包括 Python、JS、Rust 三种语言的快速入门。


GitHub:https://github.com/pydantic/monty

AI 代码执行这件事,Docker 不是终点。Pydantic 正在用 Rust 重新定义什么叫「既快又安全」。


GitHub: https://github.com/pydantic/monty

评论区

0 条评论

登录后可评论。

沈星河 444 阅读