> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# サンドボックスで OpenCode を実行する

> Serverless Inference または他のモデルプロバイダーを使用して、サンドボックスで OpenCode を実行します。

CoreWeave のサンドボックス内で、リポジトリを対象に OpenCode を実行します。ターミナルからタスクを送信し、
生成されたファイルを確認したうえで、ワークスペースを保存して後で再利用できます。エージェントの
プロセス、ワークスペース、コマンドはすべてサンドボックス内で実行され、モデルへのリクエストは
設定済みのプロバイダーに送信されます。

<h2 id="prerequisites">
  前提条件
</h2>

開始する前に、以下を準備してください。

* サンドボックスへのアクセス用に `SANDBOX_USER` action が付与された [CoreWeave API アクセストークン](/ja/products/sandboxes/placement#choose-and-get-credentials)。
* Serverless Inference またはその他の
  OpenCode プロバイダー経由でのモデルへのアクセス。プロバイダーへのアクセスと
  請求は、サンドボックスへのアクセスとは別に管理されます。
* 公開リポジトリの URL。非公開リポジトリを使用する場合は、サンドボックス内に
  Git の認証情報が必要です。
* [インストール手順](https://github.com/coreweave/cws-agent#install)に従って
  インストールした `cws-agent`。

ローカルのターミナルで、`[API-ACCESS-TOKEN]` をお使いの CoreWeave API アクセストークンに置き換えます。

```bash theme={"system"}
export CWSANDBOX_API_KEY="[API-ACCESS-TOKEN]"
```

<h2 id="launch-opencode-with-cws-agent">
  cws-agent で OpenCode を起動する
</h2>

`cws-agent` を使用して、サンドボックスに OpenCode をインストールし、リポジトリを
`/workspace/project` ディレクトリにクローンして、
[ファイルシステムスナップショット](/ja/products/sandboxes/file-system-snapshots)用のスナップショットマウントを設定します。

以下のプロバイダーオプションのいずれかを選択してください。`[SANDBOX-NAME]` は、
英小文字、数字、ハイフンからなる 1～40 文字のセッション名に置き換えてください。名前の
先頭は英字または数字にする必要があります。`[REPOSITORY-URL]` は、公開リポジトリの URL に置き換えてください。

<h3 id="use-wb-serverless-inference-recommended">
  Serverless Inference を使用する (推奨)
</h3>

このガイドでは、Serverless Inference を推奨プロバイダーとしています。Serverless Inference を使用すると、
ホストされたオープンモデルにアクセスできます。代わりに、OpenCode がサポートする任意のモデルとプロバイダーを
使用することもできます。その場合は、
[別のモデルプロバイダーを使用する](#use-another-model-provider)の手順に従ってください。

Forge project の作成を含む [Serverless Inference の前提条件](/ja/products/inference/serverless/api-reference#prerequisites)を満たしたうえで、
利用可能な
[推論クレジット](/ja/products/inference/serverless/usage-limits)を確認してください。
推論用の Forge APIキーを設定します。この例では、GLM 5.2 を明示的に指定しています。

```bash theme={"system"}
export FORGE_API_KEY="[FORGE-API-KEY]"
WANDB_API_KEY="$FORGE_API_KEY" cws-agent launch [SANDBOX-NAME] --agent opencode \
  --repo-url [REPOSITORY-URL] --lifetime 2h \
  --wandb --wandb-model zai-org/GLM-5.2 \
  --permission-mode native --detach
```

`--wandb` プリセットは、Forge の推論エンドポイントを設定し、OpenCode が使用するプロバイダーをそのエンドポイントに限定します。この CLI プリセットでは環境変数名 `WANDB_API_KEY` が必要なため、コマンドは `FORGE_API_KEY` をその名前にマッピングしてサンドボックスに渡します。サンドボックスへのアクセスには `CWSANDBOX_API_KEY` を使用します。別の
Forge モデルを選択するには、`zai-org/GLM-5.2` を
[利用可能なモデル](/ja/products/inference/serverless/models)のリストにある ID に置き換えてください。

<h3 id="use-another-model-provider">
  別のモデルプロバイダーを使用する
</h3>

別のプロバイダーを使用するには、サンドボックスの作成時に `--wandb` と `--wandb-model` を指定しないでください。
次に、そのプロバイダーの APIキーをローカル環境でエクスポートします。たとえば、次のいずれかを選択し、
キーのプレースホルダーを実際の値に置き換えてください。

<Tabs>
  <Tab title="Anthropic">
    ```bash theme={"system"}
    export ANTHROPIC_API_KEY="[ANTHROPIC-API-KEY]"
    ```
  </Tab>

  <Tab title="OpenAI">
    ```bash theme={"system"}
    export OPENAI_API_KEY="[OPENAI-API-KEY]"
    ```
  </Tab>
</Tabs>

両方のフィールドの `[PROVIDER-ID]/[MODEL-ID]` を OpenCode のモデル識別子に置き換えてください。その際、プロバイダーに応じて `anthropic/` または `openai/` の接頭辞を付けます。
`small_model` フィールドでは、タイトル生成などの軽量なタスクに使用するモデルを指定します。詳しくは、[OpenCode models](https://opencode.ai/docs/models/) を参照してください。

```bash theme={"system"}
export OPENCODE_CONFIG_CONTENT='{"model":"[PROVIDER-ID]/[MODEL-ID]","small_model":"[PROVIDER-ID]/[MODEL-ID]"}'
cws-agent launch [SANDBOX-NAME] --agent opencode \
  --repo-url [REPOSITORY-URL] --lifetime 2h \
  --env-passthrough OPENCODE_CONFIG_CONTENT \
  --permission-mode native --detach
```

`ANTHROPIC_API_KEY` と `OPENAI_API_KEY` が設定されている場合、`cws-agent` はこれらを転送します。
キーが自動的に転送されないプロバイダーについては、各プロバイダーの
[OpenCode プロバイダー設定](https://opencode.ai/docs/providers/) に従い、
追加の環境変数は `--env-passthrough [VARIABLE-NAME]` で渡してください。

どちらの起動オプションでも、セットアップ完了後に `session ready.` と出力されます。`--detach` を指定すると、
ターミナルインターフェースを開かず、ローカルのスキルや Model Context Protocol (MCP) 設定もインポートしないまま、
サンドボックスを実行し続けます。2 時間の有効期間はセットアップ時間を含む
実時間での上限です。作業が終わったら、コンピュートを停止してください。

<h2 id="run-a-task-and-check-the-result">
  タスクを実行して結果を確認する
</h2>

ローカルのターミナルから、OpenCode にファイルの書き込みと読み取りを指示します。

```bash theme={"system"}
cws-agent run [SANDBOX-NAME] \
  'Create sandbox-proof.txt in the current directory containing exactly Hello from CoreWeave followed by a newline, then read it back. Do not commit or push anything.' \
  --permission-mode native
```

このコマンドは、対話型ターミナルを使わずに OpenCode を実行します。`--permission-mode native`
を指定すると、OpenCode で設定済みの権限がそのまま維持されます。指定しない場合、`cws-agent` はデフォルトで
承認リクエストを受け入れます。OpenCode のポリシーでこの
タスクに承認が必要な場合は、インタラクティブセッションを使用して承認してください。詳しくは
[OpenCode permissions](https://opencode.ai/docs/permissions/) を参照してください。

エージェントの応答とは別に、実際のファイルを直接確認します。

```bash theme={"system"}
cws-agent exec [SANDBOX-NAME] 'cat /workspace/project/sandbox-proof.txt'
```

`Hello from CoreWeave` と出力されるはずです。コンピュートを停止する前に、ローカルコピーを
取得します。

```bash theme={"system"}
cws-agent exec [SANDBOX-NAME] 'cat /workspace/project/sandbox-proof.txt' > sandbox-proof.txt
```

<h3 id="optional-work-interactively">
  オプション: インタラクティブに作業する
</h3>

macOS または Linux の対話型ターミナルから、
同じワークスペースで OpenCode を開きます。

```bash theme={"system"}
cws-agent connect [SANDBOX-NAME] --permission-mode native --no-config-sync
```

`--no-config-sync` フラグを指定すると、ローカルのスキルと MCP のインポートがスキップされます。OpenCode でプロンプトを送信して
action を承認したら、`/exit` でローカルのターミナルに戻ります。
OpenCode を終了しても、サンドボックスは実行され続けます。OpenCode を再度開くには、接続
コマンドをもう一度実行します。以前の会話は自動的には選択されません。
会話履歴と再開コマンドについては、
[`cws-agent` sessions](https://github.com/coreweave/cws-agent/blob/main/docs/sessions.md) を参照してください。

<h2 id="save-stop-and-restore">
  保存、停止、リストア
</h2>

エージェントの処理が完了したら、ワークスペースのスナップショットを作成してコンピュートを停止します。

```bash theme={"system"}
cws-agent down [SANDBOX-NAME]
```

`down` は、サンドボックスを停止する前に `/workspace` ディレクトリを保存します。スナップショットの作成に失敗した場合、
サンドボックスは実行中のままになります。エラーを確認し、原因を解決してから再試行してください。
明示的なスナップショットの完了を待たずに停止するには、次のコマンドを実行します。

```bash theme={"system"}
cws-agent down [SANDBOX-NAME] --no-snapshot
```

このコマンドで変更が保存されるとは限りません。停止する前に、結果を別の場所にコピーするか、スナップショットが完了していることを確認してください。リストアには完了したスナップショットが必要です。

Forge 推論を使用して保存したワークスペースに戻るには、ローカルのターミナルで `FORGE_API_KEY` が引き続きエクスポートされていることを確認してから、次のコマンドを実行します。

```bash theme={"system"}
WANDB_API_KEY="$FORGE_API_KEY" cws-agent restore [SANDBOX-NAME] --wandb --wandb-model zai-org/GLM-5.2 --lifetime 2h --no-config-sync
```

起動時と同じ `--wandb-model` の値を使用してください。`--wandb` を使用している場合にこれを省略すると、リストア時にはプリセットのデフォルトモデルが選択されます。

別のプロバイダーを使用する場合は、そのプロバイダーのキーと `OPENCODE_CONFIG_CONTENT` を再度エクスポートしてから、次のコマンドを実行します。

```bash theme={"system"}
cws-agent restore [SANDBOX-NAME] --env-passthrough OPENCODE_CONFIG_CONTENT --lifetime 2h --no-config-sync
```

リストアを実行すると、保存済みのワークスペースから新しいサンドボックスが作成されます。環境変数でのみ指定していた
認証情報は、再度指定してください。スナップショットには保存済みの OpenCode のログイン情報や
会話データが含まれる場合がありますが、実行中のプロセスは保持されません。

ファイルの確認をもう一度実行し、`sandbox-proof.txt` ファイルが残っていることを確認します。その後、
`cws-agent run` または対話型接続コマンドで作業を続けます。作業が終了したら、リストアしたサンドボックスを
`cws-agent down` で停止します。

<h2 id="troubleshoot">
  トラブルシューティング
</h2>

セットアップまたはタスクが失敗した場合は、次の点を確認してください。

* サンドボックスの認証に失敗する: CoreWeave API アクセストークンと
  サンドボックスへのアクセス権を確認してください。
* Forge モデルへのリクエストが失敗する: 推論へのアクセス権、クレジット、モデル
  ID を確認してください。サンドボックスへのアクセス権があるだけでは、推論へのアクセス権は得られません。
* 他のプロバイダーを利用できない: `--wandb` を指定せずに新しいセッションを開始してください。
  Forge プリセットはワークスペースに保存されるため、リストア時に `--wandb` を省略しても
  プリセットは削除されません。既存のワークスペースについては、
  [Forge プリセットの設定](https://github.com/coreweave/cws-agent/blob/main/docs/opencode.md#resume-and-restore)を参照してください。
* ヘッドレスタスクで承認が求められる: インタラクティブに接続し、OpenCode の
  承認プロンプトで承認してから続行してください。

<h2 id="next-steps">
  次のステップ
</h2>

詳細については、次のガイドを参照してください。

* [CoreWeave サンドボックスでエージェントを実行する](/ja/products/sandboxes/agents): エージェントの実行モデルとワークスペースの有効期間について説明しています。
* [OpenCode の設定](https://opencode.ai/docs/config/): モデル、プロバイダー、プロジェクトの設定について説明しています。
* [Sandboxes SDK を使用する](/ja/products/sandboxes/client/guides/execution): アプリケーションからコマンドの実行を直接管理する方法について説明しています。
