mcpField
S
sandbox-next

sandbox-next

github.com/cloudflareクラウド・DevOps3.2k69.9k 回インストール今日更新
リポジトリ

sandbox-next について

`@cloudflare/sandbox@next` 1.0 プレビュー SDK の開発ガイダンススキルです。Workers から Cloudflare Containers 上の隔離 Linux 環境を操作する際、プレビュー固有のプロセス API、パッケージとイメージの整合性、関連ドキュメントを確認できます。

主な機能

  1. 01プレビュー版パッケージとイメージの確認
  2. 02引数配列によるプロセス実行
  3. 03プロセスハンドルと出力の取得
  4. 04ターミナルとインタープリターの案内
  5. 05エラー処理と API ドキュメント案内

活用シーン

  1. 01プレビュー SDK を使った新規プロジェクトの開始
  2. 02サンドボックス内での独立プロセス実行
  3. 03`@next` アプリの出荷前チェック

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cloudflare/skills --skill sandbox-next

インストール後、Claude Code で/sandbox-nextを入力して読み込まれたか確認します。

同梱ファイルreferences/api-quick-ref.mdreferences/examples.md

詳細

Sandbox SDK — @next(1.0 プレビュー)

Workers から操作する、Cloudflare Containers 上の分離された Linux 環境です。

記憶に頼らず、プレビュー版ドキュメントとインストール済みの @next の型を優先してください。 API は変更されます。このスキルはゲートであり、契約であり、情報を探すためのマップであって、完全なマニュアルではありません。

新規プロジェクトには、このラインを推奨します。デフォルトのパッケージを引き続き使うアプリには sandbox-stable を使用してください。移行は、依頼された場合に限り sandbox-migrate-to-next を使ってください。

1. ゲート — パッケージのラインを確認する

コードを書く前に、アプリを確認してください。

確認項目一致する必要がある内容
npm の依存関係@cloudflare/sandbox@next(または別のプレビュータグ)
コンテナイメージ同じライン(例:cloudflare/sandbox:next、next-python)
見つかったもの対応
デフォルトの @cloudflare/sandbox(@next なし)停止してください。 sandbox-stable を読み込んでください。このスキルの API は適用しないでください。
stable から @next への移行を希望している停止してください。 sandbox-migrate-to-next を読み込んでください。
セルフデプロイした bridge のみbridge はまだ 1.0 プレビューラインではありません。bridge には stable パッケージとイメージを引き続き使用してください。Bridge(stable)

@next の Worker パッケージと stable のコンテナイメージ(またはその逆)を絶対に組み合わせないでください。

スキルのインストール:エージェントのセットアップ · cloudflare/skills

2. 契約 — 必ず守る事項

  • sandbox.exec(argv) は argv リストを受け取り、プロセスの起動時に解決されます。完了したコマンド結果ではなく、ハンドルを返します。
  • ハンドルのメソッドで結果を収集します:output()、logs()、waitForExit()、waitForPort()、waitForLog()、kill(signal?)。
  • シェルは暗黙的に使われません。シェル構文には、["/bin/bash", "-lc", script] のように明示的なシェルが必要です。
  • 起動するたびに独立しています。ある exec 内の cd/export は、次の実行には引き継がれません。起動ごとに cwd と env を渡すか、1つのシェルスクリプトを使ってください。
  • プロセスハンドルには stdin がありません。対話的に使う場合は、ターミナル(createTerminal + connect)を使用してください。
  • ローカル待機の timeout/AbortSignal がキャンセルするのは待機のみです。プロセスは終了しません。kill または exec のリモート timeout を使用してください。
  • getProcess/listProcesses/getTerminal/listTerminals はコンテナを起動しません。コンテナが起動していない場合、null/[] を返します。
  • プロセス ID とターミナル ID は、サンドボックス ID に永久にひも付くのではなく、現在のコンテナに属します。置き換え後も保持する必要がある作業では、ID だけでなく、ジョブ全体(argv、cwd、env、アプリの状態)を保存してください。
  • setEnvVars/起動時の env に設定するのは、シークレットではない設定のみです。認証情報は Worker 内に保持し、サンドボックスが外部 API を呼び出す場合はアウトバウンドハンドラーを使用してください。
  • 削除された stable の API(core 上の gitCheckout、文字列を指定する exec の完了待ち、セッション実行、sandbox.terminal(request))をでっち上げて使用しないでください。
  • すべてのエラーに同じリトライループを使わないでください(Errors のドキュメントを参照)。

最小構成:

import { getSandbox, proxyToSandbox, Sandbox } from "@cloudflare/sandbox";

export { Sandbox };

const sandbox = getSandbox(env.Sandbox, "user-123");
const process = await sandbox.exec(["python3", "-c", "print(2 + 2)"]);
const result = await process.output({ encoding: "utf8" });
// result.stdout, result.exitCode

タスク別の API ドキュメント:references/api-quick-ref.md

サンプルのインデックス(next ブランチ):references/examples.md

3. 取得 — 作業に必要なドキュメントを開く

実装の前にページを取得してください。インストール済みの @next の型を推測より優先してください。

必要な作業開くページ
概要の確認/プレビューの選択1.0 preview overview
最初の Worker、wrangler、DockerfileGet started
exec、ハンドル、準備状態、耐久性Process execution
プロセス API のシグネチャProcesses API
Sandbox ID とコンテナの違い、スリープ/破棄Lifecycle
cwd/env/setEnvVarsEnvironment
インタラクティブ PTY/ブラウザーターミナルTerminals · Terminals API
Python/JS コードインタープリターInterpreter · Interpreter API
拡張機能のモデルExtensions
エラークラスと復旧Errors · Errors API
よくある失敗Troubleshooting
API ハブAPI reference
ファイル、マウント、バックアップ、ポート、トンネル、proxyToSandbox共通機能のメインドキュメント(stable 限定の session/transport/sandbox.terminal は対象外):Files · Storage / mounts · Ports · Tunnels · Backups · Outbound traffic · Expose services · Production
サンプルアプリnext のサンプル
まだ stable パッケージを使用している場合sandbox-stable · Main Sandbox docs
既存の stable アプリを移行する場合sandbox-migrate-to-next · Migrate

4. リリース前の確認事項

  • ロックファイルと Dockerfile が同じ @next 系列であること
  • インストール済みの @next の型で型チェックすること
  • サンドボックス環境に有効なシークレットを置かないこと
  • 本番のプレビューホスト名でこれらの URL パターンを使用する場合、カスタムドメインにワイルドカード DNS が必要です

コメント