sandbox_status
1 つのボックスのすべて:状態、goal、直近 30 件のステップ、使っている会話がまだ作業中か、配線、サービス、実行中のコマンド、クレジット。読むだけです。
| 入力 | 出力 |
|---|---|
id、fields(省略可) |
状態、goal、steps[](ボックスで最近行われた 30 件、古い順)、agent(最後に使った会話がまだ作業中か)、placement、boxd の健全性、配線表、services(web サービスには url、公開したバージョンには run 付き)、externalBaseUrl、environment(sandbox_start が返すのと同じ要約。呼ぶたびに読み直します。接続ごとの rttMs、サービスごとの keysCount と notable、activeBoxes)、running(フォアグラウンドとバックグラウンドのコマンド、負荷の高いプロセス、コンテナ)、sceneUrl、webUrl、takeoverUrl、開いている引き継ぎ、registry、credits、interrupted の理由、links(このボックスから別のボックスへのリンク)、linkedFrom(このボックスにリンクしているボックス)、stopsAt(それまでに使われなければアイドルの規則で完全に止まる時刻)、restorableUntil(止まったボックスのうち、sandbox_start の restore でまだ戻せるものだけ)、freeze(いつ凍結するか、何が起こしたままにしているか)、boxdVersion、imageId |
上の表にあるものを、1 つのボックスについてすべて返します。読むだけなので、凍結中のボックスは復帰せず、ボックスがあなたのものになることもありません(stopsAt も延びません。ボックスの状態を参照)。次の 3 つは、作業を引き継ぐ側のためのフィールドです。
goal:sandbox_startに渡した、このボックスの目的です。指定せずに起動したボックス(REST から、またはgoalが必須になる前に起動したもの)にはありません。steps[]:ボックスで最近行われた 30 件を古い順に並べたものです。コマンド、ディレクトリ、それに付けた説明で、出力もスクリーンショットや録画も含みません。各ステップのスクリーンショットと録画は別の一覧にあります:REST のGET /v1/boxes/{id}/mediaで、画面が残っているステップだけを、直近 7 日間から新しい 200 件まで返します(REST を参照)。各ステップには次があります。at:日時(RFC3339)。kind:exec、build、sync、wire、shot、device、start、stop、takeover、review、return、sayのいずれか。summary:行ったこと(コマンド、サービス名、メッセージ)。最大 200 文字で、それより長いと切られて…で終わります。target(ないこともある):アップロード(sync)またはビルド(build)したディレクトリ。note(ないこともある):呼び出しに付けたnote。actor(ないこともある):人が行ったものはhuman。エージェントと ParallelSandbox が行ったものにはありません。detail(ないこともある):background: trueで起動したコマンドはbackground、出力を復元したビルドはreused、sandbox_shotの録画はrecord。wireではモード(boxかexternal)、link to <box>、version <label>のいずれか。ms(ないこともある):かかった時間。ok:ParallelSandbox がそれを実行できたかどうか(ボックスが応答したか)。実行されて失敗したコマンドもokで、そのexitCodeが付きます。exitCode、signal、timedOut(フォアグラウンドのコマンドだけ):コマンドがどう終わったか。そのsandbox_execが返したとおりです。バックグラウンドのコマンドにはここではありません(始まったばかりだったため)。その終わりはsandbox_procsにあります。error(ないこともある):ParallelSandbox 側で何が失敗したかを 1 行で。コマンドの出力が入ることはありません。ボックスが応答しなかった、人がボックスを引き継いでいた、またはコマンドが終わる前に呼び出しが閉じられた(sandbox_procsで結果を取得するためのexecId付き)のいずれかです。
- アダプター自身の下準備(
sandbox_syncがファイルの比較に使う、/work/.psbx-sync/以下のコマンドとアップロード)は含みません。ステップは 7 日間残ります。 agent(動いているボックスだけ):最後にこのボックスを使った会話がまだ作業中か、{ "state": "left", "idleSec": 5400 }。stateはworking、away(会話は開いているが、このボックスを 10 分使っていない)、left(会話が終了した)、idle(ボックスが 1 時間使われていない)のいずれかです。判定の規則はどの会話がボックスを使っているかにあります。その会話が呼び出し元の会話ならthisConversation: trueが付きます。untracked: trueは、最後に使った呼び出しが会話 ID を持っていなかった(API キーのスクリプト、REST、stdio アダプターを通らないリモート接続)ことを示します。このときのstateはアイドル時間からの推測にすぎず、別の会話が作業中という意味ではありません。自分のクライアント(Claude Code、Codex…)を再起動すると新しい会話の ID になるので、再起動前に使っていたボックスは、もう一度使うまでthisConversationなしのleftと表示されます。そのボックスはあなたがそのまま続けて使えます。disk(動いているボックスだけ):ボックスの容量を何が使っているか。複数のエージェントでボックスを共有していて空きが足りないときに見ます。filesystemsは/work、Docker の保存領域、/、/tmp、/dev/shmのsizeGb、usedGb、freeGb(前のパスと同じディスクのものはsameAsだけを示します。合算しないでください)。workは/work直下の各項目のサイズ(MB、大きい順。たいてい 1 項目が 1 つのプロジェクトか 1 つのエージェントのディレクトリ)。cachesはパッケージのキャッシュと共有のブラウザー(/root/.cache、/root/.npm、/root/go、Gradle、pnpm、Playwright のブラウザーなど)。tempは/dev/shmと/tmpの 1 MB を超える項目。dockerはdocker system dfの各行(イメージ、コンテナ、ボリューム、ビルドキャッシュと、それぞれ回収できる量)。sandbox_statusが待つのは約 5 秒までです。まだ計測できていないパスはnotMeasuredに並び、measuring: trueが付きます。計測は裏で続くので、数秒後にもう一度呼べば残りがわかります。結果は 30 秒保持されます(measuredAt)。何も自動では消しません。自分のものだけを消し、共有のボックスでほかのディレクトリを消す前には確認してください。このフィールドの公開前に起動したボックスにはdiskがありません。fields:["goal", "agent", "steps"]で、そのトップレベルのフィールドとid、statusだけを返します。知らないフィールド名はunknownFieldsに入って返ります。人があなたに残したメッセージ(fromHuman)はそのまま付きます。別の会話が残したボックスをいくつか見て回るときに使います。freeze(アイドルで凍結するボックスが ready または引き継ぎ中のとき):atは状況が変わらなければアイドルの規則で凍結する時刻、blockedBy[]は通常の 10 分を過ぎても今それを起こしたままにしているものです。background(background: trueで起動したコマンド)、url(最後の呼び出し以降に URL 経由で来たリクエスト)、recordingはそれぞれのuntilまでしか数えません。takeover、foreground(実行中のsandbox_exec)、link(別のボックスが接続中)、phone(接続中のスマートフォンが先に凍結し、そのあとボックス)は終わるまで続き、そのときはatがありません。ボックスの状態を参照してください。boxdVersion:ボックス内の boxd のバージョン。その場で問い合わせます(boxd の再起動直後でも正確)。imageId:ボックスが起動したイメージ(microVM のボックスはイメージ ID、box-…)。記録を始める前に起動したボックスにはimageIdがありません。services[].lastProxyError:過去 30 分にそのサービスの URL 経由のリクエストが通らなかったとき、ボックスでの最後の状況です。at、status(ポートで何も応答しなければ 503。再起動中かもしれないのでボックスが 3 秒待ってから返します。ほかの失敗は 502、またはサービス自身が返した 5xx)、error(dial tcp 127.0.0.1:5173: connect: connection refused、タイムアウト)、count。503box is frozen(ほかの状態も)や 502box unreachableはボックスの手前が返したもので、理由は応答そのものに書かれています。同じ記録は、どのサービスにも合わなかった URL も含めてhealth.sceneErrorsにもあります。running.containers[]:Docker コンテナごとのname、image、status、ports。psbx-testdbで起動したデータベースには接続設定のファイルenvFileも付きます(. /work/.sbx/testdb/<名前>.envでDATABASE_URLなどが export されます)。
すべてのツールとトピックはツールリファレンスに並んでいます。