@ computesdk/ 编码框
ComputeSDK的代码Sandbox提供商 - 在安全,孤立的代码Sandbox环境中执行代码,拥有完整的文件系统和发展环境支持.
安装
npm install @computesdk/codesandbox
设置
- 获取您的代码Sandbox API 密钥 代码和框.io/t/api
- 设置环境变量 :
export CSB_API_KEY=your_api_key_here
快速启动
import { codesandbox } from '@computesdk/codesandbox';
const compute = codesandbox({
apiKey: process.env.CSB_API_KEY,
templateId: 'universal', // Optional: specify template
timeout: 600000 // 10 minutes
});
const sandbox = await compute.instances.create();
const result = await sandbox.runCommand('node -e "console.log(\"Hello from CodeSandbox!\")"');
console.log(result.stdout);
await sandbox.destroy();
配置
环境变量
export CSB_API_KEY=your_api_key_here
配置选项
interface CodesandboxConfig {
/** CodeSandbox API key - if not provided, will use CSB_API_KEY env var */
apiKey?: string;
/** Template to use for new sandboxes (defaults to universal template) */
templateId?: string;
/** Default runtime environment (e.g. 'node', 'python') */
runtime?: string;
/** Execution timeout in milliseconds */
timeout?: number;
}
特征
- ✅ 命令执行 - 在沙盒中运行 shell 命令
- ✅ 文件系统操作 - 通过CodeSandbox API全面访问文件系统
- ✅ 模板支持 - 从自定义模板创建沙盒
- ✅ 发展环境 - 与软件包管理者全面开发设置
- ✅ 持久性 - 档案在休眠/复发周期内持续存在
- ✅ 快照/续作 - 快速沙盒从快照修复
API 参考
命令执行
// Run Node.js code via heredoc
const result = await sandbox.runCommand(`node - <<'JS'
const fs = require('fs');
const data = { timestamp: Date.now() };
console.log('Processing data:', JSON.stringify(data));
JS`);
// Run Python code via heredoc
const result = await sandbox.runCommand(`python - <<'PY'
import datetime
import json
data = {'timestamp': datetime.datetime.now().isoformat()}
print('Processing data:', json.dumps(data))
PY`);
// List files
const result = await sandbox.runCommand('ls -la');
// Install Node.js packages
const result = await sandbox.runCommand('npm install lodash');
// Install Python packages
const result = await sandbox.runCommand('pip install requests');
// Run development server
const result = await sandbox.runCommand('npm run dev');
文件系统操作
// Write file
await sandbox.filesystem.writeFile('/project/workspace/app.js', `
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.json({ message: 'Hello from CodeSandbox!' });
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
`);
// Read file
const content = await sandbox.filesystem.readFile('/project/workspace/package.json');
// Create directory
await sandbox.filesystem.mkdir('/project/workspace/src');
// List directory contents
const files = await sandbox.filesystem.readdir('/project/workspace');
// Check if file exists
const exists = await sandbox.filesystem.exists('/project/workspace/app.js');
// Remove file or directory
await sandbox.filesystem.remove('/project/workspace/temp.txt');
沙盒管理
// Get sandbox info
const info = await sandbox.getInfo();
console.log(info.id, info.provider, info.status);
// Resume existing sandbox
const existing = await compute.instances.getById('sandbox-id');
// Hibernate sandbox (saves state)
await compute.instances.destroy('sandbox-id'); // Actually hibernates
// Note: CodeSandbox doesn't support listing all sandboxes
// Each sandbox is managed individually
最佳做法
- 资源管理: 使用休眠而不是破坏沙盒来保存状态
- 处理错误: 使用试捕取区块进行稳健的错误处理
- 超时: 为长期任务设置适当的超时
- 文件组织: 组织文件
/project/workspace/目录 - 模板使用: 为您的项目类型使用适当的模板
- API 密钥安全: 从不向版本控制输入 API 密钥
- 快照管理: 利用代码Sandbox的快照/重现能力
支助
许可证
麻省理工学院