セッション
セッションは、エージェントが作業するGitブランチとサンドボックスです。
セッションはエージェント作業の単位です。Beeuni はセッション用に Git ブランチを作成し、サンドボックスを用意します。セッション ID、ブランチ名、サンドボックス ID は同じ値です。
ステータス
セッションは実際には次の 4 つの状態になります。
| ステータス | 意味 |
|---|---|
provisioning |
Beeuni がブランチを作成し、サンドボックスをリクエストしています。 |
running |
サンドボックスが稼働し、接続可能です。 |
stopped |
あなた、またはアイドル時の自動停止によって、セッションが一時停止しています。 |
failed |
プロビジョニングに失敗しました。 |
データベースではさらに 3 つの値(queued、branching、completed)が定義されています。現在、Beeuni はセッションにこれらの値を書き込みません。
停止、再開、アイドル時の自動停止
セッションは自分で停止できます。再開すると、同じファイルシステムとランタイム ID を持つ同じサンドボックスが復元されます。リセットされるのは実行中のプロセスとメモリだけです。標準ハーネス の会話は引き続きセッションに紐付けられます。
Beeuni はアイドル状態のセッションも自動停止します。
- 通常のセッションまたはトリガーの実行では、15 分間アイドル状態が続いた後。
- 別のセッションが開始したワーカーセッションでは、2 分間アイドル状態が続いた後。
エージェントがターンを処理中の場合、停止は保留されます。メンテナンス処理は 5 分ごとに実行されます。そのため、通常の自動停止はターミナルのターンが終わってから約 15〜20 分後に行われます。
人からの応答を待つターンは作業を行いません。エージェントが質問した場合や、ツールの実行許可を求めている場合が該当します。このようなターンでは、Beeuni が待機を最初に検知してから最長 2 時間、コンピューターが稼働します。トリガーまたはスケジュールの実行では、質問を受け取る人がいないため、上限は 30 分です。その後、Beeuni はターンを終了してコンピューターを停止します。続行するにはメッセージを送信してください。モデルの呼び出しや、セッションページを開いていることはアクティビティとして扱われ、通常どおりコンピューターの稼働時間が延長されます。
使用中のセッションページがあると、セッションは起動状態を保ちます。タブが表示されており、直近 10 分以内にクリック、入力、スクロール、タッチのいずれかを行っていて、プロジェクトでセッションを開始できる場合に、使用中と見なされます。入力せずにタブを開いたままにしても、10 分後には使用中と見なされなくなり、その約 15〜20 分後にセッションが停止します。読み取り専用ビューアーで開いたタブでは、起動状態は保たれません。ページを開いているだけでセッションが起動状態を保てるのは、最後のエージェントターンから最長 2 時間です。新しいメッセージを送るとターンが始まり、この時間制限がリセットされます。
停止と削除で保持されるもの
停止と再開では、サンドボックスの ID とファイルシステムが保持されます。削除すると、サンドボックスは破棄されます。永続的に残る記録は Git だけです。エージェントがコミットしてプッシュした作業は残り、それ以外は残りません。
ラベル
ラベルはセッションを分類します。例: bug、customer: eu、worker。セッションの ⋯ メニューを開き、ラベルを編集を選択します。セッション一覧の ラベル フィルターでは、選択したすべてのラベルが付いたセッションのみが表示されます。ラベルは自由に設定でき、1〜64 文字、セッションあたり最大 20 個です。
エージェントやスクリプトからもラベルを設定できます。beeuni sessions new --label worker、beeuni sessions update --label needs-review(セッション内で ID を指定しない場合は、そのセッションにラベルを設定)、または API と SDK の labels を使います。セッションには、独自のキーを格納できる自由形式の metadata オブジェクトもあります。詳しくは SDK sessions を参照してください。
ランタイム
セッションは標準ハーネスまたは実験的ハーネスのいずれか 1 つのハーネスを実行します。詳しくは ハーネス を参照してください。セッション開始時に、Beeuni は選択されたエージェントとモデルを保存します。実行中のセッションでは、再起動または再開するまでハーネスが維持されます。
セッションへのアクセス
セッションは作成者だけがアクセスできます。所有者は セッションへのアクセス を開き、3 つのオプションから選択します。
| オプション | セッションを開けるユーザー |
|---|---|
| 自分のみ | 所有者のみ。デフォルトです。 |
| 特定のユーザー | 所有者と、所有者が選択したメンバーおよびグループ。 |
| プロジェクト全体 | プロジェクトの全メンバー。 |
アクセス権を持つ全員が会話を読んで続きを行えます。
共有セッションでは共有キーが使われます。 セッションを共有すると、プロジェクト全体で共有されているプロバイダーキーのみが使われ、個人のキーや ChatGPT 接続は使われません。モデルが個人のキーで実行されていた場合、共有するとそのプロバイダーのプロジェクトキーに切り替わります。プロジェクトにそのモデルを実行できるキーが共有されていない場合、共有は拒否され、セッションは非公開のままです。詳しくは プロバイダーキーとメンバーのアクセス を参照してください。
変更できるのは所有者だけです。 セッションを作成していないプロジェクトマネージャーは、自分に共有されるとセッションを開いて、停止、再起動、削除できます。ただし、ほかのユーザーのアクセス権を変更することはできません。セッションをマネージャーと共有しても、アクセスリストをマネージャーに譲渡することにはなりません。
人間の所有者がいないセッションもあります。トリガーが作成するセッションは、トリガーエージェントの ID で実行されます。これらのセッションはプロジェクトマネージャーが管理します。トリガー自体の セッションへのアクセス で、すべてのセッションに適用するポリシーを設定してください。そこで保存すると、そのトリガーがすでに作成したセッションにも反映されます。
管理者はすべてのセッションを開ける
アカウント所有者は、アカウント所有者と管理者が、メンバーが非公開にしているセッションも含め、アカウント内のすべてのセッションを開けるように設定できます。アカウント → 設定 → セキュリティ → 管理者はすべてのセッションを開けるで有効にします。デフォルトではオフです。
- 変更できるのはアカウント所有者だけです。 管理者にはスイッチが表示されますが、切り替えることはできません。そのため、管理者が自分自身に全員の作業へのアクセス権を付与することはできません。
- 管理者はプロジェクトの「セッション」ページからセッションを見つけます。 サイドバーに表示されるのは、引き続き自分が開始したセッションと自分に共有されたセッションだけです。
- フルアクセスが付与されます。 管理者は、プロジェクト全体に共有されたセッションと同様に、セッションを開いて、読み、続きを行えます。
- メンバーにも表示されます。 この設定がオンの間、「セッションへのアクセス」ダイアログに、所有者と管理者がすべてのセッションを開けることが表示されます。
- すべて監査されます。 切り替えは
iam.session_oversight.enableまたはiam.session_oversight.disableとして記録され、管理者がこの機能を通じて開いた各セッションはproject.admin_oversight_session_readとして記録されます(管理者 1 人につき、セッションごとに 1 時間あたり最大 1 回)。 - エージェントトークンとサンドボックストークンには、管理者が起動した場合でも、このアクセス権は付与されません。
所有者またはアクセス権でセッションを探す
プロジェクトの セッション ページでは、各セッションの行に所有者とアクセス権が表示されます。所有者のアバターと名前(自分のセッションでは 自分)、続いて、セッションを開けるユーザーを示すアイコンが表示されます。鍵は 所有者のみ、人のアイコンは 特定のユーザー、地球儀は プロジェクト全体 を表します。
セッションページで フィルター を開くと、一覧を絞り込めます。
- 所有者 — 人ごとに件数とともに表示されます。
- アクセス — 所有者のみ、特定のユーザー、またはプロジェクト全体。
- グループ化 → 所有者 — 人ごとにセクションを分け、自分が最初に表示されます。
フィルターは ステータス、ソース、検索と組み合わせられます。リセットですべて解除できます。
プレビューの共有
セッションのライブプレビューは、公開リンクで共有できます。閲覧のみ、または操作可能なモードを選べます。リンクを作成できるのはセッションの所有者だけです。リンクは認証されないため、URL を持つ人なら誰でもサインインせずにセッションを見られるからです。プロジェクトマネージャーは所有者でなくてもセッションのリンクを一覧表示して無効化できます。無効化によってアクセス権が追加されることはありません。
ステータスの完全な列挙、注入される環境変数、デーモンのエンドポイントについては、ランタイム を参照してください。セッションで使うエージェントの選択方法については、エージェント を参照してください。スケジュールまたは Webhook で開始されるセッションについては、トリガー を参照してください。セッションの作業をデフォルトブランチに反映する方法については、変更リクエスト を参照してください。