OPENCLAW MULTI
CHANNELS_
JSONL_
BOOTSTRAP.
Telegram と業務 IM、社内ボットをひとつの OpenClaw Gateway に載せるのは効率的ですが、ある日HTTP は 200 のまま全チャネルだけ無音になることがあります。2026.4.x では channels.start のような構造化 RPC で名前付きチャネルアカウントを起動できますが、~/.openclaw/agents/main/sessions/*.jsonl が cron と長時間エージェントで数十 MB に膨らむと、Gateway は Bootstrap: Session Queue Acquired QueueKey=agent:main:main をログに出した直後、巨大ファイルの同期パースにブロックされ Node のイベントループを占有します。結果は CPU 張り付き・トレース停止・ハンドラ飢餓です。別件として、マルチチャネル時の歴史的な announce キュー不具合も「無音」に似た見え方をします——JSONL の Bootstrap 停滞と配送経路バグは切り分けが必要です。あわせて読む:WebSocket 握手 / Ed25519 Runbook、sessions + OAuth + cron の jsonl 復旧、Gateway systemd / launchd の恒久化。
1. 課題の分解 —「RPC が通った」の意味しないとき
1) RPC 成功 ≠ メインループ健全。channels.start が started:true を返しても、Supervisor 側が詰まっていればプラグインは進みません。2) Bootstrap のパースはホットパス。ソケットが生きていても、巨大 JSONL の同期的処理だけでスケジューラが止まります。3) マルチチャネルは症状を増幅。announce キューの誤ルーティングは「全チャネル無音」に似ますが、対処はリリースノートやキュー修正が中心です。4) リモート launchd のズレ。対話シェルの HOME と plist の環境が違うと、運用が触っているファイルと Gateway が読んでいるファイルが別物になります。
2. 症状マトリクス
| 兆候 | 最初に疑うもの | 証拠の取り方 |
|---|---|---|
| Bootstrap 行のあとログが進まない | 巨大な jsonl | ls -lhS ~/.openclaw/agents/main/sessions/*.jsonl |
| CPU は高いがメモリは平坦 | JSON パースの busy loop | チャネル tic が出ない perf / trace |
| announce / サブエージェントのみ異常 | 過去のキュー経路バグ | リリースノートと「全滅」パターンの diff |
| リモート Mac だけ再現 | plist と環境変数の drift | launchctl print の env ブロック |
3. 五段階レスキュー
Step 01 影響範囲の固定
同時再起動や設定変更を止め、Gateway のビルドハッシュと OS パッチレベルを記録します。
Step 02 channels.start を意図して使う
channel と必要なら accountId を明示します。Bootstrap が詰まっているときに単発プローブの緑だけを信用しないでください。
Step 03 最大 jsonl の特定とバックアップ
破壊的操作の前に、巨大ファイルをタイムスタンプ付きでコピーします。
Step 04 停止 → 退避 → lock 削除 → コールドスタート
ホットパスから monster JSONL を外し、古い *.lock を削除して再起動し、Bootstrap を超えてログが進むことを確認します。
Step 05 段階的検証
openclaw gateway status、単一チャネルのスモーク、その後 cron。リモート Mac では plist の環境と対話シェルのパスを launchd ガイドに沿って揃えます。
4. 決定マトリクス
| 証拠 | 第一選択 | 次善 | 避けること |
|---|---|---|---|
| Bootstrap 停滞 + 単一ファイル >50MB | jsonl のアーカイブと cron 予算 | エージェント分割 | 無限再起動ルーレット |
| announce 系のみの異常 | キュー修正入りのアップグレード | ノイズの大きい外向き配送の一時停止 | 監査ログを理由なく無効化 |
| リモート plist のみ | HOME とボリュームの整合 | 専用サービス UID | 同一性を確認せずコピー |
数値ゲート:単一 jsonl が40MBを監査で連続 3 回超過 → アーカイブ方針を義務化;Bootstrap 後120 秒ログなし → P0;リモート Mac で週 2 回の無音フリーズ → データボリューム移行と jsonl 増加率の Grafana などを検討してください。
5. FAQ
JSONL を動かすとチャット履歴は失われる? バックアップから戻さない限り埋め込みトランスクリプトの細部は失われます。可用性を優先し、ステージングでリストアをリハーサルしてください。
channels.start と gateway 再起動は同じ? 別レイヤーです。巨大ファイルを退避せず再起動しても Bootstrap 停滞は直りにくいです。
Windows と Mac で挙動が違う理由は? AV、スケジューラの実行ユーザー、パス解釈が異なります。ラベルではなくメトリクスで見てください。
6. 事例メモ
「OAuth が壊れた」と見えたが、実際は main.jsonl が 80MB。アーカイブ後、数秒で Gateway が復帰した。
チームはプロバイダ障害と誤認していたが、ファイルシステムの増加率が CPU を支配していたことが判明。その後、OAuth ダッシュボードとは別に時間あたりのバイト増をグラフ化した。
7. まとめ — MACGPU
RPC が揃ったあとの次の SLA はセッションストレージの増加速度です。VPS だけの構成は検証には速い一方、Apple ツールチェーンでのデバッグが絡むなら、ディスク監視の効いた安定したリモート Mac に Gateway を載せる——MACGPU の時間課金ノードは、無音インシデントの頻度と設備投資を揃えやすくします。
無音の多くはモデル障害ではなく、イベントループへのストレージ飢餓です。ハンドシェイク設定を触る前に JSONL を確認してください。リモート Mac のキャパシティは、ノート PC の熱と Wi‑Fi から本番稼働を切り離すのに有効です。