跳转到内容

OpenSandbox 1.1.1 学习区

这门课只讲一件事:一次沙箱任务,从意图到证据,中间经过了谁。 目标不是背 API,而是建立一套判断力——看到“支持”两个字,会先问:在哪个运行时、什么配置、什么版本、什么代价。

项目 内容
教材对象 OpenSandbox 官方稳定版
版本标签 release-1.1.1
提交 531700ca18a7fa5fab6a2f25d6dc68a76eddab12
发布时间 2026-10-09
源码获取 官方 release,请自行检出;本站不分发源码
官方仓库 https://github.com/opensandbox-group/OpenSandbox
官方发布页 https://github.com/opensandbox-group/OpenSandbox/releases/tag/release-1.1.1

这些笔记以官方 release-1.1.1 源码和公开文档交叉校对。公开仓库只收录学习笔记,不包含上游源码、.git 目录或本地备份。

这门课要解决什么问题

跳转到“这门课要解决什么问题”

一个 AI 应用要让模型“真的做事”,至少要回答四个问题:

1. 代码在哪里跑,才不会伤到宿主机?
2. 跑起来之后,命令、文件、输出怎样被可靠地收集?
3. 它怎样联网、怎样拿凭据,而不把数据或密钥送出去?
4. 当模型自己决定下一步时,谁保证它不失控、成本可控、事后可查?

OpenSandbox 用一套分层设计回答这四个问题。这门课沿着一次沙箱任务的生命周期,把这套设计拆开、跑通、再合起来。

创建意图
-> 控制面受理(认证、TTL、状态)
-> 运行时落地(容器 / Pod / 微虚拟机)
-> 端点解析(地址不是猜的)
-> 执行(execd:命令、文件、流)
-> 网络与凭据(该通的通,该断的断)
-> 证据回流(退出码、stderr、产物)
-> TTL / 暂停 / 销毁

每一阶段只回答这条链上的一个岔路口。阶段之间不是“知识点堆叠”,而是同一个任务在不同层上的展开。

每一章都走同一个循环,不跳步:

1. 提问:如果我是设计者,我会怎么解决?
2. 画图:把这一层的输入、输出、失败点画出来
3. 读码:只读能回答问题的文件,不做无目的通读
4. 实验:跑一个最小验证,记录成功与失败两种形态
5. 复述:不看资料讲回来,并说出两个边界

判断“学会了”的标准不是“跑通了”,而是:能解释为什么这样设计,能指出它在什么条件下失效。

阶段 只解决一个大问题 产出 类型
阶段 0 最小闭环能不能真实跑起来? 一次成功脚本 + 一次失败记录 准备
阶段 1 一次任务怎样穿过平台? 架构图 + 创建/执行时序图 + 失败点清单 核心
阶段 2 环境从生到死,谁负责? 成功/异常/取消都能清理的封装 核心
阶段 3 命令、文件、代码怎样变成可验证的动作? 带超时、截断、结构化返回的工具层 核心
阶段 4 同一份契约怎样落到 Docker/K8s/FastSandbox? 运行时能力矩阵 + 选择决策树 进阶
阶段 5 怎样该通的通、该断的断、密钥不被拿走? 一页网络策略设计 + 允许/拒绝验证 进阶
阶段 6 SDK、CLI、MCP 与契约是什么关系? 入口选型表 + 契约变更顺序 进阶
阶段 7 把沙箱交给模型后,怎样不失控? 工具契约 + 预算 + 最小 Agent 环 AI 应用核心
阶段 8 凭什么敢上线? 生产就绪评审 + 故障分层流程 核心
阶段 9 能不能独立交付一个完整系统? 数据分析与报告 Agent + 证据包 实战

配套两篇:

横向扩展读 选修区导读:Code Interpreter、浏览器/桌面、存储挂载、K8s/FastSandbox、Agent 框架与编码 CLI、评测。

不管目录怎么变,任何 AI 执行平台都要回答这八件事:

部件 要回答的问题 OpenSandbox 中的对应 阶段
入口 人和程序通过什么使用平台? Python/JS/Go/Kotlin/C# SDK、osb CLI、MCP 6
契约 客户端为什么不被某个后端锁死? specs/ 下的 OpenAPI 1、6
生命周期 环境何时创建、过期、销毁? server/ 控制面 2
运行时 环境跑在容器、Pod 还是微虚拟机? Docker、Kubernetes、FastSandbox 4
执行 模型动作怎样真正发生? components/execd/ 3
网络 流量怎样进入、出去、被限制? endpoint、ingress、egress 5
安全 不可信代码和密钥怎样被约束? 隔离运行时、资源限制、网络策略、Vault、租户 4、5、8
工程 怎样证明可靠、可观测、可演进? 测试、诊断、指标、发布验证 8

一句话串起来:入口发起,契约约束,控制面安排,运行时落地,数据面执行,网络面治理,安全面兜底,工程面证明。

每一章都会反复出现这三条线,不要把它们当“附录”:

纵线 问题 典型落点
证据流 这个结论凭什么可信? exit_code、stderr、文件、conditions、日志、trace
信任边界 谁不可信?密钥在哪? 沙箱内容、egress、Credential Vault、租户隔离
能力条件 “支持”需要什么前提? runtime、配置、版本、镜像、Pool/模板约束
周次 内容 周末应能拿出
第 1 周 阶段 0–1 能跑通;能画出端到端链路
第 2 周 阶段 2 一个三路径都能清理的生命周期封装
第 3 周 阶段 3 一个安全的命令/文件工具层
第 4 周 阶段 4 一张运行时能力矩阵与选型理由
第 5 周 阶段 5 一页默认拒绝的网络与凭据设计
第 6 周 阶段 6–7 入口选型 + 一个受控的最小 Agent
第 7 周 阶段 8 生产就绪评审与故障演练记录
第 8 周 阶段 9 毕业项目 + 证据包 + 复盘

时间紧可以走“最短闭环”(0→1→2→3→9);做平台方向可以加读 4、5、8;做 Agent 方向可以加读 5、6、7。

文件 回答的问题
整体架构 OpenSandbox 是什么?分层、主线、七个设计取舍
学习路线 8 周怎么学?每阶段产出什么?怎样算学会?
阶段 0 怎样把源码版、Docker、服务端和第一个沙箱跑起来?
阶段 1 系统地图:一次任务怎样穿过控制面、运行时和数据面?
阶段 2 生命周期、TTL、暂停恢复、快照与清理语义
阶段 3 execd:命令、会话、文件、PTY、Code Interpreter
阶段 4 运行时:Docker/K8s/FastSandbox、Pool、模板、隔离等级
阶段 5 网络与凭据:端点、ingress、egress、Vault
阶段 6 契约、五种 SDK、CLI、MCP 与变更顺序
阶段 7 Agent 集成:拓扑、工具、预算、注入、可观测
阶段 8 工程与生产:多租户、测试、指标、发布、回滚
阶段 9 毕业设计:数据分析与报告 Agent
选修区 主线之外的按需深入路线
Cairn Notes · OpenSandbox 学习区
├── 总览与阶段地图
├── 核心十阶段 0–9
└── 选修区
  • 阶段 0–3 需要可用的 Docker daemon;Windows 上使用 Docker Desktop + Linux 容器(依赖 WSL2)。
  • 服务端与示例主要使用 Python 3.10+;其他语言 SDK 需要对应工具链。
  • Kubernetes、FastSandbox、Pool、快照、Credential Vault 都有后端与配置前置条件,不能把“接口存在”当成“当前环境可用”。
  • 作者编写这套笔记时没有安装 Helm,Docker daemon 也未运行,因此 Kubernetes 部署、Pool、快照等实验未实际执行;文中已逐处标注“需集群/未验证”。阅读时请把“命令存在”和“本机已验证”分开。
  • 教材基于 1.1.1 源码与官方文档交叉校对;实际运行以当前配置和后端能力为准。

读完不等于学会。每个阶段结束时,至少做到:

  • 不看资料讲清该模块解决什么问题、边界在哪。
  • 能画出一次调用的时序图,并指出失败点。
  • 能写出最小可运行示例,或给出有依据的伪代码。
  • 能说出两个常见误用及其后果。
  • 能诚实标注“我验证了什么、没验证什么”。

最终要同时具备四种能力:把模型能力产品化、把工具边界工程化、把风险治理显式化、把系统行为可观测化。 OpenSandbox 是训练这四种能力的一个高质量样本。

从 阶段 0 开始。