前提条件
Node.js 22 LTS以上、openclaw onboard --install-daemon(推奨時)、資格ローテ後の openclaw doctor、API キーは Git 外と chmod 600。HTTPS の SAN はモデル表のホストと一致。構造化ログ保存用にディスクを確保し、CI 側はビルド要約の受け口(チェック/Webhook)と外向き先 URL を許可リスト化します。
順を追った排障ステップ
上から順に。前段がクリーンなら次へ。
ルーティング表の /v1/chat/completions 等とラベルを一致。Git の別名だけ更新しているとカードは緑のまま四〇四になります。
マスクのうえで上限付き grep。例:
model_auth_probe、invalid_api_key、insufficient_quotatool_invocation、tool_result、permission_deniedrate_limit、retry_after、upstream_timeout
request_id でダッシュボードと CI 時刻を突き合わせます。
/health または openclaw gateway status --json に、軽量モデルへの最小認証呼び出しを同一シェルで足し、片方失敗で非ゼロ。LaunchAgent 手順と揃えます。
構造化要約+マスク。フラップ時は tool_name・所要・終了クラスが一行に出るかを確認し、全文に依存しないようにします。
失敗コマンドをゲートウェイと同じユーザーと plist 環境で SSH 再実行。HOME/キーチェーン差がツール拒否に見えることがあります。
リモート Mac CI との連携例
統合ヘルス失敗や重大度一致でラッパーを非ゼロにし、許可リストへ JSON を POST。二・四・八秒バックオフは Harbor/Jenkins 記事と同じ運用にすると揃います。失敗要約 Webhook のプレースホルダー例:
{
"source": "openclaw-gateway",
"pipeline_id": "<CI_PIPELINE_ID>",
"commit": "<GIT_SHA_SHORT>",
"gateway_host": "<GATEWAY_PUBLIC_HOSTNAME>",
"model_auth_snapshot": "<OK|DEGRADED|FAIL>",
"last_tool_error_excerpt": "<LAST_20_LOG_LINES_REDACTED>",
"request_id": "<CORRELATION_REQUEST_ID>",
"ts_unix": "<UNIX_TIMESTAMP>"
}
curl --max-time は短めに。環境系は 失敗回復と再試行へ誘導します。
よくあるエラー FAQ
時刻ずれ・部分リロード・カナリア鍵の取りこぼし。デーモンをまとめて再起動し、設定パスと NTP を確認します。
SSH エージェント・キーチェーン・FDA の差を比較。秘密は専用ユーザーのファイルへ。
本番は意図通り。request_id でログ基盤へ遡ります。