Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

セッションワーカー

セッションワーカーは、エージェントセッションにプロセスレベルの分離を提供します。すべてのセッションを単一プロセスで実行する代わりに、PRX は専用のワーカープロセスをスポーンして障害を封じ込め、OS レベルでリソース制限を強制できます。

モチベーション

プロセス分離にはいくつかの利点があります:

  • 障害封じ込め -- 1 つのセッションでのクラッシュが他のセッションに影響しない
  • リソース制限 -- cgroups または OS メカニズムを通じてセッションごとのメモリと CPU 制限を強制
  • セキュリティ境界 -- 異なる信頼レベルのセッションが別々のアドレス空間で実行
  • グレースフルデグラデーション -- メインプロセスが失敗したワーカーを再起動可能

アーキテクチャ

┌──────────────┐
│  Main Process │
│  (Supervisor) │
│               │
│  ┌──────────┐ │    ┌─────────────┐
│  │ Session A ├─┼───►│ Worker Proc │
│  └──────────┘ │    └─────────────┘
│  ┌──────────┐ │    ┌─────────────┐
│  │ Session B ├─┼───►│ Worker Proc │
│  └──────────┘ │    └─────────────┘
└──────────────┘

メインプロセスはスーパーバイザーとして機能し、IPC(Unix ドメインソケットまたはパイプ)を介してワーカーと通信します。

通信プロトコル

ワーカーは IPC チャネル上の長さプレフィックス付き JSON プロトコルを使用してスーパーバイザーと通信します:

  1. Spawn -- スーパーバイザーがセッション設定をワーカーに送信
  2. Messages -- ユーザー/エージェントメッセージの双方向ストリーミング
  3. Heartbeat -- 定期的なヘルスチェック
  4. Shutdown -- グレースフル終了シグナル

設定

toml
[agent.worker]
enabled = false
ipc_socket_dir = "/tmp/prx-workers"
heartbeat_interval_secs = 10
max_restart_attempts = 3

リソース制限

Linux で実行する場合、セッションワーカーは cgroup ベースのリソース制限を適用できます:

toml
[agent.worker.limits]
memory_limit_mb = 256
cpu_shares = 512

関連ページ

Released under the Apache-2.0 License.