Pydantic 于 2026-09-25 发布 Monty v1.0.0(PyPI pydantic-monty / npm @pydantic/monty / crates.io monty),正式去掉 experimental 标签。OSS Monty 是用 Rust 从零实现的 Python 字节码 VM(解析走 Ruff),默认无文件系统/网络/环境变量,仅通过你显式注入的 external functions 触达宿主。官方 alternatives 对比:热池 checkout 约 0.8ms、新建池约 5ms,而 Docker exec 约 195ms、远程沙箱服务约 1500ms、Pyodide 约 2700ms。面向 Agent 写代码执行,而非整台容器。

核心要点速览 (Key Takeaways)

  • ✓发版:v1.0.0;uv add pydantic-monty / npm i @pydantic/monty / cargo add monty
  • ✓延迟(官方 alternatives):OSS Monty 热池新建沙箱 ~0.8ms、新池 ~5ms;Docker ~195ms;Daytona 等远程服务 ~1500ms;Pyodide ~2700ms
  • ✓安全模型:默认无 FS/网络/环境变量;只通过你传入的 external functions / mounts 出沙箱——与「先给满权限再收紧」的容器路线相反
  • ✓形态:OSS Monty(MIT 包内嵌)与商业 Full Monty(WebSocket 服务,热池约 2ms);Python≥3.10
  • ✓生态:已接入 Pydantic AI Code Mode;文档见 pydantic.dev/docs/monty
🔬

深度技术解析与实战评估

核心背景与行业痛点

Agent 要「写一段 Python 算一下」时,团队常直接挂 Docker / E2B / Daytona:冷启秒级、镜像百兆、权限面过大,还得过安全评审。许多工作流其实只要安全算力——无任意 pip、无 shell、无整机——却为容器付延迟与运维税。国内落地更卡在「本机没 Docker / 出网沙箱贵」的门槛。

架构亮点与底层机制

Monty v1.0.0 把 OSS Monty 定成稳定产品:Rust 实现的 Python 解释器(非「加限制的 CPython」、非 WASM 版 CPython),用 Ruff 解析源码编成自有字节码再执行。默认能力为零;模型代码只能通过你注册的 external_lookup 回调拿宿主数据。支持同步/异步函数、快照挂起与资源限额。包形态:pydantic-monty(含 worker)、@pydantic/monty、monty crate;商业 Full Monty 用同一套 worker 经 WebSocket 提供服务。

权威 Benchmark 与实测跑分对比

官方 alternatives(含 2026-09-24 对 pydantic-monty 1.0.0b3 的测量):热池已开时 OSS Monty 新建沙箱约 0.8ms、新池约 5ms;Docker(已拉取 alpine)约 195ms;远程沙箱服务约 1500ms;Pyodide/Deno 约 2700ms。README 亦写 OSS 热池「under 1ms」、Full Monty 约 2ms 对比服务约 1500ms。这是启动/往返延迟表,不是 SWE-bench 解题率——验收请在本机复现 checkout/feed_run 金丝雀。

开发者实战落地与开箱指南

uv add pydantic-monty(或 pip install pydantic-monty),Python ≥3.10。JS:npm i @pydantic/monty。最小路径:with Monty() as pool: ... pool.checkout() 后 feed_run(code, inputs=..., external_lookup=...)。安全与限额见 Security / Resource limits;语言子集与限制见 limitations。需要整库任意包或完整 CPython 时仍应选容器沙箱——Monty 故意不做那条路。