← 工具

Monty

Pydantic 团队出品的极简安全 Python 解释器,用 Rust 写,专为 AI Agent 设计。启动时间微秒级,可快照可恢复,比传统容器沙箱快 100-1000 倍,适合 Serverless 和 Edge 场景,Stars 7K+

#72
推荐排名
7,550
GitHub Stars
5,285
推荐得分
AI 代码沙箱执行 / 安全 Python 解释器
适用场景
AI工具PythonAI AgentRust后端自动化

为什么需要

AI Agent 写出 Python 代码后,传统执行方案是用 Docker / gVisor / Firecracker 跑一个隔离环境,安全性好但开销大——启动要几百毫秒,每个 Agent 实例都要一份资源。如果你要做的是「Agent 写 10 行代码做个数据处理」,容器启动比代码执行还慢。

Monty 是 Pydantic 团队(也是 ty 类型检查器、Logfire 可观测平台的同一拨人)专门为 LLM 写的 Python 解释器。它用 Rust 实现,只支持 Python 的子集(够 Agent 用,不支持第三方库、不支持 class 定义),换来的好处:

  • 启动时间 < 1μs — 不是「比容器快」,是「比 CPython 启动快」
  • 完全可观测的状态 — 解释器可以在外部函数调用点快照到字节流,存在数据库里、稍后恢复
  • 可控的资源限制 — 内存、栈深度、运行时间都能限制,超了自动取消
  • 可从 Rust / Python / JS 调用 — 因为不依赖 CPython,任何能跑 Rust 的地方都能用
  • 安全沙箱 — 默认不能访问文件系统、环境变量、网络,全部走外部函数

典型场景:Agent 写一段 Python 脚本对 CSV 做处理,传统方案要 300ms 启动 + 50ms 执行 = 350ms,Monty 是 50μs 启动 + 50ms 执行 = 50ms,省 7 倍。

怎么用

Python 集成:

bash
pip install pydantic-monty
python
import monty

def get_data(url: str) -> str:
    return requests.get(url).text

code = """
data = get_data("https://api.example.com/users")
users = json.loads(data)
print(f"用户数:{len(users)}")
"""

result = monty.execute(
    code=code,
    external_functions={"get_data": get_data}
)
print(result.stdout)

Rust 集成可以直接 monty::Interpreter::new(),异步执行用 monty.run_async()

注意事项

  • 实验性项目,版本号还在 0.x,API 可能变化
  • 不支持第三方库(不能用 requests、pandas)
  • 不支持 class 定义、不支持 match 语句(计划中)
  • 内置支持:sys、os、typing、asyncio、re、datetime、json、dataclasses
  • 类型检查完整支持现代 Python type hints,自带 ty 引擎
  • 跑在 Serverless / Edge 环境里特别合适:冷启动比 Node.js 还快