Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

トラブルシューティング

最終更新 Markdown で表示Agent セットアップ

症状から対処を探す表です。より詳しい復旧手順は エラーと復旧 を参照してください。ライフサイクルの動作は サンドボックスのライフサイクル を参照してください。

デプロイとイメージ

症状 確認すること
RuntimeControlProtocolError、デプロイ後の control/protocol 失敗 Worker パッケージとコンテナイメージの系統が違っています。同じ @next / cloudflare/sandbox:next(または同じプレリリース)の組み合わせを使います。
コンテナが ready にならない、または ContainerUnavailableError が繰り返される コールドスタートまたは容量の問題です。retryAfterMs が設定されている場合はそれに従って待ち、そのあと 処理本体 を再試行します。エラーと復旧 を参照してください。
wrangler dev では動くが、本番だけ失敗する 本番だけの制限とコールドスタートです。パッケージとイメージは揃えたままにします。

プロセス

症状 確認すること
await exec は「完了」したが、コマンドは動いていない exec起動時 に解決します。output()waitForExit()、または exitCode を使います。
stdout が文字列にならない output() のデフォルトはバイトです。{ encoding: "utf8" } を渡します。
getProcessnull / 一覧が [] コンテナが動いていないか、現在の コンテナで ID が不明です。探索ではサンドボックスは起きません。必要なら保存したジョブ状態から再起動します。
StaleProcessHandleError ハンドルは以前のコンテナのものです。チェックポイントした作業から新しい exec を開始します。
待機がタイムアウト / 中断したが、プロセスは動いている ローカルの待機だけです。止めたい場合は kill() を呼びます。
ポートが ready にならない waitForPort のデフォルトモードは TCP です。HTTP の確認には mode: "http" を使います。プロセスが終了していることもあります。ステータスとログを確認します。
対話的な stdin が必要 プロセスハンドルでは使えません。ターミナル か、非対話の argv/cwd/env を使います。

ターミナル

症状 確認すること
ブラウザがまだ sessionId を使っている Preview の xterm ヘルパーは terminalId を想定しています。
getTerminalnull プロセスと同じ寿命ルールです。コンテナが置き換わったら、もう一度作成します。
再接続で履歴がない 最後の cursorconnect / 出力オプションに渡します。

環境とシークレット

症状 確認すること
以前の exec の環境変数が「消えた」 セッションシェルはありません。setEnvVars や起動ごとの env を使います。環境変数 を参照してください。
API キーがコンテナに漏れた 本番のシークレットをサンドボックスの環境変数に入れないでください。Worker 側の 送信トラフィック ハンドラーを使います。

Interpreter

症状 確認すること
sandbox.createCodeContext is not a function withInterpreter を付け、sandbox.interpreter.* を呼び出します。
Python が使えない 同じ @next 系統の -python イメージバリアントを使います。

Bridge HTTP

症状 確認すること
Bridge の /exec、セッション、/pty の動作が @next の Worker SDK ドキュメントと違う 自分でデプロイした Bridge は 1.0 プレビューの対象外です。安定版パッケージとコンテナイメージに合わせた 安定版 Bridge を使います。

エージェントと長時間ジョブ

@next 上のエージェントと長時間ツールでは、次のようにします。

  1. exec(argv) で起動します(多くの場合 ['/bin/bash', '-lc', script])。
  2. 待つときは waitForLogwaitForPort、または logs を使います。await exec だけにはしません。
  3. 永続化するのは ジョブ状態(コマンド、cwdenv、チェックポイント)です。process.id だけではありません。
  4. 後続リクエストでは、同じコンテナがまだ保持していれば getProcess(id) を使い、そうでなければ再度 exec します。
  5. ターミナル は人間向けの PTY が必要なときだけ使います。セッションの代わりにはしません。

プロセスの実行移行、および sandbox-sdk リポジトリの例(claude-codecodexopencode など)を参照してください。

関連情報

役に立ちましたか?