# @bunny-agent/sandbox-sandock 中文文档

规范地址：https://npmcn.com/package/%40bunny-agent/sandbox-sandock/

版本：0\.10\.3-beta1
npm 元数据更新时间：2026-11-07T00:48:57.058Z
中文译文更新时间：2026-11-08T20:00:31.100Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bunny-agent/sandbox-sandock
原文对照：https://npmcn.com/package/%40bunny-agent/sandbox-sandock/?lang=original
项目主页：https://github.com/vikadata/sandagent#readme
源码仓库：https://github.com/vikadata/sandagent

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：171 kB，31 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-04-14T06:44:10.836Z
- 最新版本发布：2026-11-07T00:48:56.920Z
- 近 30 天下载量：6156（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：115（近 12 个月 115 个）

## 中文简介

Bunny Agent 的 Sandock 沙盒适配器

## 安装

```sh
npm install @bunny-agent/sandbox-sandock
```

也可以使用：`pnpm add @bunny-agent/sandbox-sandock`、`yarn add @bunny-agent/sandbox-sandock`、`bun add @bunny-agent/sandbox-sandock`

## README

# @bunny-agent/ sandbox-sandock (英语)

桑多克沙盒适配器 给邦尼特工 运行 AI 代理 [山多克 沙发](https://sandock.ai/) 远程沙盒(而不是当地或通过E2B/Daytona),有持久性的卷,种子文件上传和快速启动的图像.

## 先决条件

-   节点.js 20+
-   [Sandock API 密钥](https://sandock.ai/) (env:) (中文(简体) ) `SANDOCK_API_KEY`(中文(简体) )

## 安装

```bash
npm install @bunny-agent/sandbox-sandock
```

## 快速启动

```ts
import { SandockSandbox } from "@bunny-agent/sandbox-sandock";

const sandbox = new SandockSandbox({
  apiKey: process.env.SANDOCK_API_KEY,
  workdir: "/workspace",
  image: "ghcr.io/vikadata/bunny-agent:latest",
  skipBootstrap: true,
});
```

## 密钥选项

| 选项 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `apiKey` | 字符串 | `SANDOCK_API_KEY` | Sandock API 密钥 |
| `image` | 字符串 | `sandockai/sandock-code:latest` | 容器图像 |
| `workdir` | 字符串 | `/workspace` | 沙盒内的工作目录 |
| `templatesPath` | 字符串 | \- 说吧 | 本地文件目录以种子工作空间; 内容被上传到附件上的工作目录( 例如工程骨架, 配置) |
| `volumes` | `{ volumeName, volumeMountPath }[]` | `[]` | 持久性量; 名称创建或再利用 |
| `skipBootstrap` | 布尔 | 虚假 | 如果为真, 跳过运行器安装; 图像必须包含运行器 |
| `env` | 记录<字符串,字符串> | `{}` | 注入沙盒的环境变量 |
| `timeout` | 编号 | 30万个 | 运行超时( 毫秒) |
| `sandboxId` | 字符串 | \- 说吧 | 现有沙盒 ID 以重接; 回到失败时创建新文件 |
| `name` | 字符串 | \- 说吧 | 沙盒显示名( 如用于 Sandock 仪表板) |
| `keep` | 布尔 | 真实 | 执行后保持沙盒运行 |

## 用法图案

### 1\. 最小 (预建图像)

```ts
new SandockSandbox({
  apiKey: process.env.SANDOCK_API_KEY,
  image: "ghcr.io/vikadata/bunny-agent:latest",
  skipBootstrap: true,
  workdir: "/workspace",
});
```

### 2\. 持久性量

```ts
new SandockSandbox({
  apiKey: process.env.SANDOCK_API_KEY,
  image: "ghcr.io/vikadata/bunny-agent:latest",
  skipBootstrap: true,
  workdir: "/workspace",
  volumes: [
    { volumeName: "my-workspace", volumeMountPath: "/workspace" },
    { volumeName: "my-session", volumeMountPath: "/root/.claude" },
  ],
});
```

### 3\. 重新使用现有的沙盒

过 `sandboxId` 重新连接到一个先前创建的沙盒。 适配器只有在沙盒目前安装时才会重新装入 `RUNNING` 状态。 如果沙盒被停止、暂停或不复存在, `attach()` 返回到自动创建新的.

```ts
const sandbox = new SandockSandbox({
  apiKey: process.env.SANDOCK_API_KEY,
  image: "ghcr.io/vikadata/bunny-agent:latest",
  skipBootstrap: true,
  workdir: "/workspace",
  sandboxId: "cached-sandbox-id", // from your cache
});

const handle = await sandbox.attach();
// Store handle.getSandboxId() for next request
```

> **说明:** 适配器不尝试启动被停止的沙盒. 仅 `RUNNING` 沙盒被重新使用。 这避免出乎意料的冷启动延迟,并确保了连贯的附加经验.

对于web app,缓存 sandboxId 服务器侧(例如有 30-min TTL 的 immerry Map),所以之后请求在没有客户端侧状态的情况下再用同个沙盒. 使用 `keep: true` (默认)使沙盒在请求之间运行.

## 与 @ bunny- agent/ sdk 联系

```ts
import { createBunnyAgent } from "@bunny-agent/sdk";
import { SandockSandbox } from "@bunny-agent/sandbox-sandock";
import { generateText } from "ai";

const bunnyAgent = createBunnyAgent({
  sandbox: new SandockSandbox({
    apiKey: process.env.SANDOCK_API_KEY,
    workdir: "/workspace",
    image: "ghcr.io/vikadata/bunny-agent:latest",
    skipBootstrap: true,
  }),
  env: { ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY! },
});

const { text } = await generateText({
  model: bunnyAgent("sonnet"),
  prompt: "Create a hello world program",
});
```

安装 : `npm install @bunny-agent/sandbox-sandock @bunny-agent/sdk ai`

## API 密码

### 桑多克桑德克( Adapter )

-   `attach()` — 创建或再使用沙盒;返回 a `SandboxHandle`
-   `getHandle()` —— 如果附加, 返回当前控件, 否则 `null`

### 沙盒手提箱( 返回于 `attach()`(中文(简体) )

-   `getSandboxId()` 返回沙盒实例 ID
-   `getVolumes()` - 返回挂载量清单(或 `null`(中文(简体) )
-   `getWorkdir()` ——返回工作目录
-   `exec(command, opts)` 执行命令和流输出
-   `upload(files, targetDir)` 上传文件到沙盒
-   `readFile(filePath)` 从沙盒读取文件
-   `destroy()` - 停止并删除沙盒

## 关于跳过Bootstrap

-   **`skipBootstrap: true`**: 图像已包含 `bunny-agent run`; 只上传种子文件( 从 `templatesPath`),无跑道安装. 使用预建的图像 `ghcr.io/vikadata/bunny-agent:latest`。 。 。 .
-   **`skipBootstrap: false`**: 在附件上, 运行 `npm install @bunny-agent/runner-cli@latest` 内 `workdir`,然后使用 `${workdir}/node_modules/.bin/bunny-agent run` 用于执行.

## 许可证

阿帕奇 - 2.0

## 常见问题

### @bunny-agent/sandbox-sandock 是什么？

Bunny Agent 的 Sandock 沙盒适配器

### 如何安装 @bunny-agent/sandbox-sandock？

在项目目录运行 npm install @bunny-agent/sandbox-sandock，或使用 pnpm add / yarn add / bun add。

### @bunny-agent/sandbox-sandock 支持 TypeScript 吗？

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

### @bunny-agent/sandbox-sandock 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @bunny-agent/sandbox-sandock 可以商用吗？

@bunny-agent/sandbox-sandock 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @bunny-agent/sandbox-sandock 的下载量有多少？

根据 npm 官方下载统计，@bunny-agent/sandbox-sandock 在 2026/10/09 – 2026/11/07 这 30 天内被下载 6,156 次，日均约 205 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @bunny-agent/sandbox-sandock 还在维护吗？

最新版本 0\.10\.3-beta1 发布于 2026/11/07（1 天前）；至今共发布 115 个版本，其中过去 12 个月发布了 115 个；首次发布于 2026/04/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

