smolagents · 第 6 章 AST 解释器与安全沙箱 ★


smolagents · 第 6 章 AST 解释器与安全沙箱 ★

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

阶梯坐标

阶梯坐标

学习目标

  1. 理解为什么不直接 exec 而自研 AST 解释器。
  2. 精读 local_python_executor.py 核心机制。
  3. 说清黑名单/dunder禁止/资源限制。
  4. 理解"为什么不是安全沙箱"(官方警告)。
  5. 掌握 4 种远程执行器的选型。

子章节导航

01 自研 AST 解释器 ★

local_python_executor.py 1768行;为什么不exec(exec无法拦截/计数/控制);ast.NodeVisitor遍历执行(逐节点解释:赋值/调用/循环/推导式);MAX_OPERATIONS/MAX_ITERATIONS/30秒时长限制;解释器命名空间(工具函数+authorized_imports注入);import解析(DANGEROUS_MODULES黑名单:os/subprocess等);evaluate_python_code入口。

02 安全边界:黑名单与"不是沙箱"警告 ★

DANGEROUS_MODULES黑名单;DANGEROUS_FUNCTIONS黑名单;dunder属性访问禁止(__class__等逃逸路径);官方README警告原文("不是安全沙箱"——黑名单可被绕过/解释器与主进程同权限);什么场景本地解释器够用(可信环境/快速原型);serialization.py的pickle安全警告(agent反序列化风险)。

03 四种远程沙箱执行器

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章多模型后端。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U