Claude Code 或 Cursor 生成代码后,怎么运行它?Docker 容器太慢,虚拟机更重,直接执行又有安全风险。Pydantic 团队选择了另一个方向:用 Rust 从零写一个 Python 解释器。这个叫 Monty 的项目,启动时间不到 1 微秒。
AI Agent 执行代码的场景越来越多:数据分析、文件处理、API 调用。但安全运行 Python 代码一直是个难题。
现有方案都有问题:
Docker 容器启动要几百毫秒,每个容器占几百 MB 内存。虚拟机更重。直接运行则无法限制文件系统、网络、环境变量访问。
Monty 走了第四条路:用 Rust 实现一个 Python 解释器。
💡 核心洞察目标是实用的,不是要替代 CPython,而是为 AI Agent 提供一个够用的代码执行环境。
Monty 启动不到 1 微秒。Docker 容器要几百毫秒,快了 10 万倍。
安全隔离是默认的:文件系统、环境变量、网络访问全部阻断。需要这些功能时,开发者必须显式注册"Host Functions"。
它还支持快照恢复。外部函数调用时可以把解释器状态序列化成字节,存到文件或数据库,稍后恢复执行。
Python 社区不缺替代实现:PyPy、Jython、IronPython。但 Monty 是第一个用 Rust 写的、专门给 AI Agent 用的版本。
Rust 的优势在于内存安全(编译期保证没有空指针和数据竞争)、零成本抽象、无 GC(通过所有权机制管理内存),以及跨平台支持。
Monty 的运行性能与 CPython 相当,有时快 5 倍,有时慢 5 倍。但优势不在运行速度,而在启动速度和隔离安全性。
Monty 不追求完全兼容 CPython,只支持一个够用的子集:
变量、函数、类、条件、循环这些核心语法;数字、字符串、列表、字典、元组这些数据类型;完整的类型提示系统;外部函数调用。
💡 核心洞察这个设计很务实。AI Agent 生成的代码通常不会用到 Python 的所有特性。
数据分析 Agent 可能生成这样的代码:
import pandas as pd # 通过 Host Function 实现 data = fetch_data() # 从数据库读取 result = data.groupby('category').sum() export_to_dashboard(result) # 写入仪表板文件处理 Agent 可能这样写:
files = list_files('/user/uploads') # Host Function for file in files: content = read_file(file) # 受控访问 processed = transform(content) save_to_cloud(processed) # 上传云存储快照功能对长时间运行的任务很有用。处理到一半需要等外部 API 响应时,Monty 可以保存状态,等响应回来后继续执行。这能优化无服务器环境的成本,也能容错恢复。
Monty 的安全原则很简单:默认拒绝一切,显式授权所需。
AI 生成的代码不能直接访问文件系统、环境变量、网络或系统调用。需要这些功能时,开发者要注册 Host Function:
# Rust 侧 monty.register_function("read_file", |path: String| ->String { if is_allowed_path(&path) { std::fs::read_to_string(path).unwrap() } else { panic!("Access denied") } }) # Python 侧 content = read_file("/safe/data.txt") # 允许 content = read_file("/etc/passwd") # 拒绝这样开发者可以精确控制 AI Agent 能做什么。
Monty 还能追踪和限制内存使用、分配次数、堆栈深度、执行时间,超时自动终止。
Monty 适合这些场景:AI Agent 需要执行 Python 代码,需要微秒级启动,需要精确的安全控制,可以接受 Python 子集。
Docker 仍然适合需要完整 Python 生态(NumPy、Pandas)或代码复杂度高的场景。WASM 适合多语言支持或浏览器运行。
Monty 不支持完整的 Python 标准库,无法直接import numpy或pandas,也无法使用eval、exec等动态特性。复杂数学计算仍需通过 Host Function 桥接外部库。
Monty 不是 CPython 的替代品,而是专注于 AI Agent 场景的补充。开发者可能需要维护两套 Python 环境:CPython 用于开发,Monty 用于 AI Agent 执行。
项目还处于实验阶段,可能存在未知 bug,性能优化空间还大,文档和社区支持有限。
Monty 让真正的 Serverless Agent 成为可能。Docker 容器在 AWS Lambda 中有冷启动问题,Monty 的微秒级启动解决了这个痛点。
更快启动意味着更短运行时间和更低云成本。默认拒绝的安全模型比 Docker 的分层隔离更精细,更适合多租户环境。
Monty 已经设计了 Rust、Python、JavaScript/TypeScript 的多语言绑定,可以集成到 LangChain、Claude Code 的技能系统或自研的 Agent 框架。
Monty 可能逐步增加对 Python 标准库的支持,缩小与 CPython 的差距。架构也可能扩展到支持其他语言(JavaScript、Ruby 等),成为通用的 AI 代码执行引擎。
甚至可能出现 Monty-as-a-Service,提供托管的安全代码执行 API。
Monty 的出现反映了 AI Agent 基础设施正在成熟。
我们谈论 AI Agent 时,往往关注模型能力、提示词工程、Agent 框架。但同样重要的是:如何让 AI 安全、高效地执行它的决策。
💡 核心洞察Pydantic 团队用 Rust 重新实现 Python 解释器,看似在重新发明轮子,实则是在解决一个真实问题:AI 时代的代码执行基础设施,需要新的设计范式。
从 Docker 到 Monty,从容器到嵌入式,这个转变背后是 AI 应用从"演示项目"走向"生产级"的必经之路。
• GitHub 仓库:https://github.com/pydantic/monty• Pydantic 官网:https://pydantic.dev• 许可证:MIT License
如果这篇文章对你有帮助,欢迎转发给需要的朋友。
有任何想法,欢迎在评论区交流。
#AI工具#Rust#Python#代码安全#Pydantic
加致AI说,专注AI技术深度解读和开发者成长。
公众号:加致AI说