2026-05-13 OpenClaw マルチエージェント agents.json 役割分離とヘッドレス レンタル Apple Silicon クラウド Mac(HK / JP / KR / SG / US)
単一ゲートウェイ・単一人格・単一の誤削除物語——OpenClaw を明示的なマルチエージェント構成に分けるまで続く。香港・東京・ソウル・シンガポール・米国でレンタルした Mac mini M4 では同一 UID に xcodebuild レーン、署名ツリー、Slack 応答アシスタントが同居しがちである。2026-05-13 の本稿は agents.json を運用契約として扱う:どのルートに触れよいか、どの OPENCLAW_STATE_DIR が checkpoint を所有するか、インバウンドをどう一意のエージェントへ割り当てるか。ワークスペース許可リスト、セッション checkpoint と再起動、onboard と doctor のトリアージを接続し、launchd 再起動後も durable 状態が混ざらない 開発 vs 運用 分離を再現可能にする。
共有レンタル ビルダーでマルチエージェント設計が効く理由
リポジトリを読めるアシスタントと、デーモン再起動やトークン ローテーションを担うオートメーションはリスク階級が異なる。同一状態ディレクトリを共有すると、重複排除キャッシュ、プラグインマニフェスト、書きかけの JSON がバースト Webhook 下で交錯する——特に npm 更新や launchctl kickstart の嵐のあとに顕在化する。設計の中心は爆発半径:ロールごとにツール面を狭め、ログ接頭辞を分け、スコープ拡大は人のレビューを必須にする。agents.json はインフラコードとして扱い、ピアレビュー、デプロイ tarball のチェックサム、リージョンごとのカナリアを徹底する。
agents.json とゲートウェイ プロセスモデルの層構造
トランスポート(HTTP、Slack、Telegram)、ゲートウェイ(ルーティング・認証・レート制限)、エージェント実行時(ツール実行・モデル呼び出し・ファイルシステム方針)の三層で考える。agents.json は実行時に属し、名前付きエージェント、既定モデル、スキル束、ポリシー項目を宣言する。ゲートウェイは起動時に読み込むため、制御された再起動なしにホット変更するとメモリに旧方針が残る。ビルドごとにホットリロード可能フィールドを文書化し、不可なら checkpoint 手順 に沿った停止順序を守る。
- アイデンティティ — ルーティングとメトリクスが参照する安定した
id。 - スコープ — モノレポ ガードレール の許可ルートと一致させる。
- ツール — 明示的 allow/deny。運用ペルソナだけがサービス制御ツールを持つ構成が一般的。
開発と運用:相互に継承してはいけない権限
開発アシスタント は読み多めのナビゲーション、diff に優しい小さな編集、CI チェックアウト配下に閉じたテストコマンドを主眼とする。運用オートメーション はホスト内省を広げてもよいが、対話プロンプトや無制限 shell は避ける。いずれのインライン プロンプトにも秘密を埋め込まず、キーチェーンや plist 参照の密封 env ファイルから読み込む。「一時的に」境界を曖昧にすると、アシスタント スレッドが運用ツールを継承し launchd plist に触れる事故が起きる。
1 台複数エージェントでの OPENCLAW_STATE_DIR 分離
~/Library/Application Support/OpenClaw/state-dev と .../state-ops のようにプレフィックスで兄弟ツリーを切る。製品ライン共有ならテナント別サブディレクトリを追加する。一方の状態木を他方へ symlink しない。APFS firmlink とバックアップが境界を潰すことがある。エージェント別 TMPDIR で並列ジョブの中途アップロード削除競合を避ける。移行後は doctor 手順 で非対話シェルが意図したパスを解決するか検証する。
# launchd ラッパー例
#!/bin/bash
set -euo pipefail
export OPENCLAW_STATE_DIR="$HOME/.openclaw-state/ops"
exec /usr/local/bin/openclaw gateway --config "$HOME/.openclaw/ops-gateway.json"
ルーティング:相関キー、チャンネル、衝突回避
Webhook には安定 ID を載せる——リポジトリ full name + delivery id、Slack team + channel + thread ts、署名済み内部ジョブ トークンなど。パターンごとに単一 id へ写像し、正規表現のフォールスルーで運用向けトラフィックをデフォルト アシスタントへ誤送しない。デュアル ゲートウェイでは上流ラベルのアイデアを再利用してもよいが、ペルソナ ルーティングは A/B トラフィック分割と直交させる。ロールアウト初期は info でルーティング決定をログし、エラー予算が安定したらレベルを下げる。
意思決定マトリクス:単一エージェント / agents.json 分割 / ゲートウェイ分割
| シグナル | 単一エージェント寄り | agents.json 分割寄り | ゲートウェイ プロセス分割寄り |
|---|---|---|---|
| ツール面の重なり | 高重複・同リスククラス | 低重複・同一ゲートウェイ認証 | 認証ドメインまたは TLS 証明書が異なる |
| リリース頻度 | 週次プロンプト調整のみ | JSON を別チームが所有 | 独立 SLO またはメンテ窓 |
| 状態ディレクトリ競合 | 書き込み少・キャッシュ小 | checkpoint やプラグイン IO が重い | コンプライアンス監査で硬い隔離が必要 |
| 運用コスト | 最小構成 | 中:ディレクトリとルート検証が増える | 最大:launchd とヘルスプローブが二倍 |
レンタル Apple Silicon でマルチエージェント OpenClaw を展開する 8 ステップ
- 過去 30 日のゲートウェイ入口(人と自動)を棚卸しする。
- 開発と運用プロファイルを含む
agents.jsonを起案し、ルートは 許可リスト指針 に合わせる。 - 兄弟
OPENCLAW_STATE_DIRを所有権とクォータ付きで作成する。 - 決定的ルールとサンプル ペイロードのユニットテストを書く。
- ペルソナ別 plist またはラッパーを配備し、ステージングで
launchctl kickstartを検証する。 - 誤ルーティング時に必ず失敗する合成ジョブを走らせる。
- 拒否ツール試行とゲートウェイ p95 を前後比較する。
- ロールバック手順を文書化:状態 tarball と Git タグ付き旧 JSON。
マルチエージェント ゲートウェイの SLO シグナル
| シグナル | しきい値 | アクション |
|---|---|---|
| ルーティング曖昧率 | リクエストの > 0.1% | ルーティング変更を凍結し明示マッチャーを追加 |
| 状態ディレクトリ横断書き込み | 宣言ルート外への書き込みが1 件でも | ゲートウェイ停止し checkpoint スナップショットから復元 |
| Git JSON とホストのドリフト | 未デプロイの手編集があれば即 | ホストを戻し PR のみ運用を強制 |
FAQ
| 質問 | 実務回答(2026-05-13) |
|---|---|
| 開発と運用は同一モデル許可リストを共有してよいか | コスト一元管理ならプロバイダ一覧は共有しやすい。オフライン安価エンドポイントが運用に必須なら禁止モデルリストを分ける。 |
インシデント中に SSH で agents.json をホット編集してよいか |
ペアの再起動計画と Git タグがある場合のみ。そうでなければルータ側フラグの方が爆発半径が小さい。 |
マルチエージェント OpenClaw に Mac mini M4 レンタルが向く理由
高速 NVMe と十分な unified memory により複数状態木、並列モデル キャッシュ、同時ヘルスチェックを swap 圧迫なしで回せる——ルーティング変更のリハーサル中に CI がフルビルドしていても効く。地域キャパは 料金 で比較し、ツール拡大の前に SSH/VNC ガイド へ誘導する。