@beamcloud/beam-js

中文文档
1.1.6发布于 2026/10/17MITTypeScriptESM + CJS构建来源已验证近 30 天下载 2.5万

用于 Beam 的 TypeScript 和 JavaScript SDK

中文使用文档
文档目录11 节
  1. 安装
  2. 配置
  3. 虚拟机
  4. 沙盒快速启动
  5. 显示一个端口
  6. 文件系统
  7. 抓图
  8. 夹克
  9. 卷和云桶
  10. 发展
  11. 链接

Beam 类型脚本/ Java 脚本 SDK

官方TypeScript和JavaScript SDK为Beam发行.

安装

npm install @beamcloud/beam-js
yarn add @beamcloud/beam-js

配置

拨打SDK电话前先设定您的Beam标志和工作空间ID.

import { beamOpts } from "@beamcloud/beam-js";

beamOpts.token = process.env.BEAM_TOKEN!;
beamOpts.workspaceId = process.env.BEAM_WORKSPACE_ID!;

SDK默认目标是"Beam Cloud".

虚拟机

创建持久的 Linux VM, 运行命令, 抓取其根并叉出它 :

import { beamOpts, VM } from "@beamcloud/beam-js";

beamOpts.token = process.env.BEAM_TOKEN!;
const vm = await VM.create({
  name: "agent-workspace",
  cpu: 1,
  memory: "2Gi",
  protectedPorts: [7681],
  idleTimeout: 300,
  idleAction: "pause",
  autoResume: true,
});
console.log(vm.publicIpv6); // Persistent IPv6 address, when public networking is enabled.
const command = await vm.exec(["node", "--version"]);
await command.wait();
console.log(await command.stdout.read());

const snapshot = await vm.snapshots.create("ready");
const branch = await snapshot.fork({ name: "experiment", memory: "512Mi" });
await branch.remove();
await snapshot.delete();
await vm.pause();
await vm.close();
// Later: await VM.connect(vm.id); to delete: await vm.remove().

VMs 默认为消化固定的 Ubuntu 24.04, 4 个CPU, 8 个 GiB 内存和一个 50 个 GiB 可写根. 桌面是选入( T)desktop: true,最小值 1 GiB 内存;多克 需求 dockerEnabled: true。创建等待来宾命令。 使用 await vm.wait({ services: true }) sSH、终端和启用的桌面; 多克帮手分别等待守护进程.

一个 VM 对象曝光生命周期、快照/模板、文件、多克、桌面 控制,私人隧道,SSH/SCP,目录同步,提示,日志和公制. 见 VM 引导并完成 API/ 均等映射。 。 。 . 关于带有清理功能的可运行的 JavaScript 工作流程,参见 代理工作空间示例。 。 。 .

沙盒快速启动

创建沙盒,运行代码,流日志,并清洁地终止.

import { beamOpts, Image, Sandbox } from "@beamcloud/beam-js";

beamOpts.token = process.env.BEAM_TOKEN!;
beamOpts.workspaceId = process.env.BEAM_WORKSPACE_ID!;

async function main() {
  const sandbox = new Sandbox({
    name: "examples",
    image: new Image({ pythonPackages: ["requests"] }),
    cpu: 1,
    memory: 1024,
    keepWarmSeconds: 300,
  });

  const sb = await sandbox.create();

  const result = await sb.runCode(`
import requests
print(requests.get("https://api.github.com").status_code)
`);
  console.log(result);

  const process = await sb.exec(["python3", "-c", "print('hello from Beam')"]);
  for await (const line of process.logs) {
    console.log(line.trimEnd());
  }

  await sb.terminate();
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});

name 是用于组合沙盒的Beam应用名称。 每个正在运行的沙盒仍然会得到它自己生成的沙盒ID.

显示一个端口

const server = await sb.execShell("python3 -m http.server 8888 --bind 0.0.0.0");
const url = await sb.exposePort(8888);
console.log(url);

await server.kill();

文件系统

await sb.fs.writeText("/tmp/hello.txt", "hello");
console.log(await sb.fs.readText("/tmp/hello.txt"));

await sb.fs.mkdir("/tmp/data");
await sb.fs.uploadFile("./local.txt", "/tmp/data/local.txt");
console.log(await sb.fs.list("/tmp/data"));
await sb.fs.remove("/tmp/data/local.txt");

抓图

const checkpointId = await sb.snapshot();
await sb.terminate();

const restored = await Sandbox.createFromSnapshot(checkpointId);
console.log(restored.sandboxId);

夹克

在图像中安装 Docker 并明确启用管理的守护进程 :

const sandbox = new Sandbox({
  name: "docker-actions",
  image: Image.fromRegistry("node:20-slim").withDocker(),
  dockerEnabled: true,
  cpu: 2,
  memory: "2Gi",
  keepWarmSeconds: 300,
});

const sb = await sandbox.create();
try {
  const ready = await sb.exec([
    "timeout", "60", "sh", "-c",
    "until docker info >/dev/null 2>&1; do sleep 1; done",
  ]);
  if (await ready.wait() !== 0) throw new Error("Docker daemon did not become ready");
  const proc = await sb.exec([
    "docker", "run", "--rm", "--network=host", "--pid=host",
    "alpine:3.20", "echo", "hello",
  ], { wait: true });
  if (await proc.wait() !== 0) throw new Error(await proc.stderr.read());
  console.log(await proc.stdout.read());
} finally {
  await sb.terminate();
}

withDocker() 支持Ubuntu和Debian图像并安装多克引擎, CLI, Buildx, (英语), docker compose,则 docker-compose 别名。 其他基础图像 必须提供自己的多克安装。 没有安装主机 Docker 套接字 .

通过 Docker 命令运行 sb.exec 或者说 sb.execShell; 一个单独的 Python 风格 sb.docker 不需要包装。 守护进程同步启动: 等待 docker info 在签发建造或运行集装箱之前成功.

被管理的守护进程使用 VFS 存储,在 runc/g Visor 下没有默认桥. 使用 --network=host --pid=host 用于内容器; 这些共享沙盒的 名字空间,不是工人机器的。 对于编曲,配置每个服务 network_mode: host 财务报告和审定财务报表 pid: host启用 docker compose -f /path/compose.yaml up 财务报告和审定财务报表 down 结束 exec; 编译文件不自动重写. 以 docker build --network=host -t my-image /path/to/context; 否则 粘贴文件 RUN 指令失败 network bridge not found,即使当 指令不访问网络.

卷和云桶

import { CloudBucket, Volume } from "@beamcloud/beam-js";

const volume = new Volume("cache", "/mnt/cache");
const bucket = new CloudBucket("my-bucket", "/mnt/bucket", {
  accessKey: "AWS_ACCESS_KEY_ID",
  secretKey: "AWS_SECRET_ACCESS_KEY",
  region: "us-east-1",
});

const sandbox = new Sandbox({
  name: "storage",
  volumes: [volume, bucket],
});

发展

将 SDK 指向本地网关:

beamOpts.gatewayUrl = "http://localhost:1993";

版本与发布记录

@beamcloud/beam-js 共发布 77 个版本,首次发布于 2024/10/30;过去 12 个月发布了 28 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.6latest2026/10/1722 天前
1.1.52026/10/1722 天前
1.1.42026/10/1226 天前
1.1.32026/10/1226 天前
1.1.22026/10/1226 天前
1.1.12026/10/1226 天前

其他发布通道:rc → 1.0.0-rc.33。

关于 @beamcloud/beam-js 的常见问题

@beamcloud/beam-js 是什么?

用于 Beam 的 TypeScript 和 JavaScript SDK

如何安装 @beamcloud/beam-js?

在项目目录运行 npm install @beamcloud/beam-js,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:typescript(^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@beamcloud/beam-js 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@beamcloud/beam-js 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@beamcloud/beam-js 可以商用吗?

@beamcloud/beam-js 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@beamcloud/beam-js 的下载量有多少?

根据 npm 官方下载统计,@beamcloud/beam-js 在 2026/10/08 – 2026/11/06 这 30 天内被下载 24,690 次,日均约 823 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@beamcloud/beam-js 还在维护吗?

最新版本 1.1.6 发布于 2026/10/17(22 天前);至今共发布 77 个版本,其中过去 12 个月发布了 28 个;首次发布于 2024/10/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。