章节摘要:本章是装备区第三站,也是全书第二个高潮(★)——AST 解释器与安全沙箱。local_python_executor.py(1768 行)是 smolagents 最硬核的部分:不直接 exec,而是自研 AST 遍历解释器执行 LLM 生成的代码;配合 DANGEROUS_MODULES/FUNCTIONS 黑名单、dunder 属性禁止、最大操作数/时长限制。但官方明确警告**"这不是安全沙箱"**——真正的安全边界在第 6.3 节的 4 种远程执行器(E2B 云沙箱/Docker/Modal/Blaxel)。本章讲透"本地解释器挡什么、挡不住什么、什么时候必须上沙箱"。本章共 3 节,前置依赖为第 1-5 章。

local_python_executor.py 1768行;为什么不exec(exec无法拦截/计数/控制);ast.NodeVisitor遍历执行(逐节点解释:赋值/调用/循环/推导式);MAX_OPERATIONS/MAX_ITERATIONS/30秒时长限制;解释器命名空间(工具函数+authorized_imports注入);import解析(DANGEROUS_MODULES黑名单:os/subprocess等);evaluate_python_code入口。
DANGEROUS_MODULES黑名单;DANGEROUS_FUNCTIONS黑名单;dunder属性访问禁止(__class__等逃逸路径);官方README警告原文("不是安全沙箱"——黑名单可被绕过/解释器与主进程同权限);什么场景本地解释器够用(可信环境/快速原型);serialization.py的pickle安全警告(agent反序列化风险)。
remote_executors.py(1076行);RemotePythonExecutor基类(init/send_tools/run/run_with_outputs/fix_final_answer);E2BExecutor(云沙箱e2b.toml模板);DockerExecutor(本地容器);ModalExecutor(云函数);BlaxelExecutor;executor_type参数选型(local默认/e2b/docker/modal/blaxel);sandboxed_execution.py示例;沙箱开销与收益权衡。
前置:第1-5章。后续:第7章多模型后端。