3步跑通Daytona沙箱:AI代码执行快速上手
【免费下载链接】daytonaDaytona is a Secure and Elastic Infrastructure for Running AI-Generated Code项目地址: https://gitcode.com/GitHub_Trending/dayt/daytona
当你需要把一段 AI Agent 生成、"不确定能不能信"的代码交给机器跑的时候,多半不敢直接在本机执行。常规思路是把它扔进一个隔离沙箱里跑,只让它碰到该碰的资源——Daytona就是干这个的开源项目:为一段 AI 生成代码,在 90 毫秒内拉起一个独立沙箱环境。
这个环境不只是"一个隔离的容器":
- 每个沙箱拥有独立内核、文件系统与网络栈
- vCPU、内存、磁盘单独分配,状态可以跨会话保留
- Python、TypeScript、JavaScript 代码可以直接跑
整套流程其实就是三个角色配合:SDK 发请求、控制面调度资源、计算面把沙箱拉起来。下面直接上手。
🚀 三步跑起来:创建第一个沙箱并执行代码
前置条件就两件:在官方站点注册账号、在 Dashboard 里拿一个 API Key,以及一台能装 Python 的机器。然后分三步。
1. 安装 SDK 并准备好 Key
# 安装官方 Python SDK,Key 是一串字符串,建议用环境变量注入 pip install daytona装完命令行客户端就就绪了,这个 Key 会在下一步用来做接口鉴权。
2. 非交互式地创建沙箱
创建过程只需要一次create()调用,不用进终端逐项手工配置:
# 初始化客户端,向平台发起创建沙箱请求 from daytona import Daytona, DaytonaConfig daytona = Daytona(DaytonaConfig(api_key="YOUR_API_KEY")) sandbox = daytona.create() print(sandbox.id)运行后会打印出一个沙箱 ID,相当于拿到了房间的钥匙——沙箱已经就位,内核和磁盘都是现成的。
3. 在沙箱里执行代码并取回结果
# 在沙箱内执行一行 Python,并把输出取回本地 response = sandbox.process.code_run('print("Hello Daytona!")') print(response.result)终端会打印Hello Daytona!,说明代码跑在隔离沙箱里而不是本机。TypeScript 版同理:npm install @daytona/sdk之后 API 形态与 Python 几乎一一对应。
🔍 拆解设计:沙箱的隔离到底来自哪里
创建沙箱很像从预制模板里开一间房:房间"户型"由平台提前装好——内核、磁盘、网络全都接好了,你调用create时系统只是从货架上取一间再递给你钥匙,没有"现场施工"环节,这也是 90ms 级速度的底气。Daytona 把系统拆成三个平面,分工写在 README.md 的架构章节里:
| 组成部分 | 职责 | 类比 |
|---|---|---|
| Interface plane(接口面) | 提供 SDK、REST API、CLI 等客户端入口 | 前台,接单并递钥匙 |
| Control plane(控制面) | 编排所有沙箱操作:创建、销毁、调整 | 物业系统,决定给你哪间房 |
| Compute plane(计算面) | 实际运行并管理沙箱实例 | 房间本体,代码在这里跑 |
换句话说,SDK 对话的是"前台",而不是房间本身。官方提供的工具链也分成四类:
- Platform:组织管理、API Key、资源限额、审计日志
- Sandboxes:环境配置、快照、声明式构建、Volume
- Agent tools:进程与代码执行、文件操作、Git 操作、MCP server
- Human tools:Web 终端、SSH、VNC、预览页面
你会发现,隔离不是"容器里跑个进程",而是独立内核、独立网络的完整"虚拟电脑",这也是为什么敢直接放不可信代码进来。
🎛️ 调配置:设置资源配额与网络策略
沙箱跑起来之后,日常最常碰的是几个开关。官方文档把它们分好类了,下表是提炼版(具体数值以官方文档的 Limits、Network limits 页面为准):
| 配置项 | 作用 | 默认 | 示例 |
|---|---|---|---|
| 基础镜像 | 决定沙箱初始系统与预装语言 | Python / TS / JS 官方镜像 | python |
| 资源配额 | 单个沙箱的 vCPU、内存、磁盘 | 按实例分配(受平台限额约束) | 2 vCPU / 4GB |
| 网络策略 | 控制沙箱对外出流量 | 平台默认限制 | 出站白名单 |
| 快照 Snapshot | 保存沙箱文件系统状态 | 不保存 | 销毁前存档,下次会话恢复 |
| Volume | 挂载持久化外部存储 | 不挂载 | 跨沙箱复用的数据 |
两个值得试的场景:
用快照保存状态,让环境不丢
沙箱随手可销毁,但环境搭建很贵。销毁前先对当前状态打个快照,下次基于快照新建,装好的包、改过的文件原样回来。再配合 Volume,连需要跨多个沙箱共享的数据都有了去处。
绕过 SDK 直接调 REST API
如果你的集成场景不想依赖 SDK,用一条 HTTP 请求也能创建沙箱:
# 直接 POST 创建沙箱,不经过 SDK curl -X POST 'https://app.daytona.io/api/sandbox' \ -H 'Authorization: Bearer <YOUR_API_KEY>' \ -H 'Content-Type: application/json' \ -d '{}'返回成功即沙箱已创建,响应 JSON 里的 ID 可直接用于后续的文件操作和进程执行。
⚠️ 避坑指南:新手高频问题四问
| 问题 | 回答 |
|---|---|
| README 写着"不再维护",还能用吗? | 能用。自 2026 年 6 月起核心开发转入私有代码库,但仓库保持公开,可自由使用、fork 和二次开发,现有功能不受影响。 |
| 不想写代码,能不用 SDK 管理沙箱吗? | 可以。CLI 一条daytona create就能建沙箱,也可以直接 POST REST API,入口不同、结果一致。 |
| 销毁沙箱后环境就没了? | 不一定。销毁前用快照保存环境,下次从快照恢复;需要跨沙箱保留的数据放 Volume。 |
| 沙箱支持哪些语言? | 官方支持 Python、TypeScript、JavaScript,且有预构建基础镜像,不用自己搭环境。 |
📚 找资源:文档与源码入口
仓库内的核心内容是项目说明与快速上手指引,想继续深挖看这几处就够了:
- 项目介绍、功能矩阵与多语言 Quick Start:README.md
- SDK 与 API 客户端包说明(Python、TypeScript、Ruby、Go、Java):README.md 的 Client libraries 章节
- 克隆源码到本地:
git clone https://gitcode.com/GitHub_Trending/dayt/daytona - 品牌素材(黑白 Logo 源文件):assets/images/
沙箱跑起来之后,剩下的事就是给你的 AI Agent 接上这条执行通道——从第一行code_run开始,都是你自己的业务了。
【免费下载链接】daytonaDaytona is a Secure and Elastic Infrastructure for Running AI-Generated Code项目地址: https://gitcode.com/GitHub_Trending/dayt/daytona
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考