Agent Sandbox 从零开始 · 3.0
第 29 / 34 节 · 面向零基础读者

第 27 章:第二阶段学习路线与综合练习

四周路线

第一周回顾基础实验,只用虚构 CSV。重点记录输入、输出、权限和清理;能说清楚为什么 250 是正确结果,以及为什么程序成功退出仍需校验报告。

第二周在 OpenSandbox、SPACE、CubeSandbox 与 sandbox-runtime 中选一个深入。读创建、执行、产物、清理四个入口,画出真实路径。其余项目先用本书的对照表定位,不要求同时部署。

第三周读 bubblewrap 或 nsjail 的配置,再读 Firecracker 论文摘要与 Catalyzer 的设计导读。写一段话解释文件可见性、进程预算、VMM 和初始化复用分别解决什么问题。

第四周阅读 SWE-agent 或 mini-swe-agent 的循环,以及 Inspect 的 sandbox 接口。设计一个只有两条演示任务的小评测:正确求和、遇到异常数据时明确失败。先验证流程和环境,再考虑接模型。

综合作业:为课程练习平台写一页方案

假设平台接收学生提交的小段 Python,输入都是虚构数据,输出一个 JSON。请写出最大输入、时间、内存、日志与并发预算;明确读写目录、网络政策和结果结构;区分任务 ID、环境 ID 与执行结果。

再回答四个变化:如果要保留多轮变量怎么办?如果要运行浏览器怎么办?如果公网连接中断怎么办?如果下一位学生复用环境怎么办?每个变化都可能引入新的状态或权限,不能只在原脚本里多加一行。

选一个参考工程解释你的选择,再指出尚未验证的条件。例如“选 Inspect 学习评测接口,但实际隔离采用什么后端还需验证”,就是完整、诚实的设计笔记。

自测与参考答案

问题一:Daytona 产品文档更新,是否说明原公开核心仓库也仍在维护?答案:不能,必须分别核对,当前公开 README 已声明停更。

问题二:使用 bubblewrap 是否已经定义好安全政策?答案:没有,调用者提供的参数决定可见资源和限制。

问题三:Catalyzer 的最佳启动结果能否直接填进 SPACE 或 CubeSandbox 的性能表?答案:不能,它们不是同一实现与测量条件。

问题四:Inspect 配置 Docker 沙箱后,工具函数中的任意本地 Python 代码都自动进容器了吗?答案:没有,只有通过沙箱接口请求的工作进入对应环境。

问题五:一次评测读到旧缓存,能否证明新补丁通过?答案:不能,必须核对运行标识、输入与是否实际重新执行。

这些答案共同指向一种学习习惯:每个结论都回到具体接口、配置、版本与证据。这样你从“小白”走向能独立阅读工程的人,就有了一条可重复的方法。

本书包含示例与资料导读;验证范围和来源见附录。