① 対象:OpenClaw で設計書き出しの自動化をフォルダ監視しているチーム。② キーワード:OpenClaw、リモート Mac、launchd、ログローテーション、フォルダ監視。2026 年のゲートウェイ熱再読込と常駐デーモンの運用に沿い、マージ(設定・ジョブ・書き出し原子性)と失敗リトライを切り分ける手順中心のチェックリストです。
ゲートウェイとリスナータスクのアーキテクチャ
役割の分離:Gateway はトークン境界・スキル登録・設定 YAML の熱再読込を担当し、FSEvents をゲートウェイ本体に抱え込みすぎない構成が安定します。リスナーは launchd の WatchPaths、fswatch、またはスキル内ウォッチャの一系統に寄せ、同一 inbox に二重トリガーを載せないのがマージの第一歩です。.tmp→rename 完了までサイズ 2〜5 秒不変ゲートを README に固定。監視・リトライ・ログ HowTo と骨格を揃えます。
手順:① 監視ルート 1 本化 ② Node 22 LTS で Gateway 固定・スキル差し替え ③ 熱再読込後にスキル登録確認 ④ リスナー用 plist に PATH 明示。
システムログとの突き合わせ
リモート Mac で観測がずれたら log show --predicate で launchd と対象バイナリを同一時刻で開き、JSONL の job_id と相関させます。熱再読込直後のみ失敗する場合はソケット残留や ThrottleInterval 未満の連打を疑います。ログ粒度は 参照レビュー・巡検パイプライン と合わせると追いやすいです。
手順:① 再現時刻±2 分で log show ② JSONL 失敗行の PID/cwd ③ StandardOutPath のローテ確認 ④ 環境変数修正後 launchctl bootout/bootstrap。
launchd とログサイズのしきい値
ログローテーションは「単一ファイル上限」と「保持日数または総容量」の二段が扱いやすいです。目安 10〜50 MB で切るか日次 gzip で archive/ へ、7〜30 日または空き%しきい値で削除。OpenClaw の JSONL は日付分割が相関しやすいです。stdout 無制限は I/O 詰まりで「無イベント」に見えるため、しきい値は Runbook に数値で固定します。
手順:① du で最大ログ把握 ② 上限・gzip 周期を plist に記載 ③ ローテ直後も監視継続か確認 ④ NTP で時刻ずれを排除。
よくある排障 FAQ(無イベント/権限/サンドボックス)
- 無イベント:シンボリックリンク越しの別ボリューム、クラウド同期の遅延コミットを疑う。
touchで一度発火するか確認。 - 権限:GUI と
launchdユーザが異なるとPermission denied。フルディスクアクセスと ACL を同一ユーザーに。監視とリネームの基礎 のディレクトリ約束へ寄せる。 - サンドボックス:補助アプリは対象パス外へ書けない。非サンドボックスのラッパーにブローカーを寄せ、OpenClaw へは最小権限のローカル接続のみ。
- リトライ:一時 I/O は指数バックオフ、冪等キー(パス+mtime)を JSONL に残し、上限超えは dead-letter。
まとめ
ゲートウェイ熱再読込と常駐リスナーを分離し、launchd とログローテーションの数値を固定し、無イベントを設定・権限・ネットワーク越しストレージの三段で切れば、リモート Mac の OpenClaw 設計書き出しは夜間も追跡しやすくなります。