AI / Automation 2026年4月25日

2026-04-25 ヘッドレス・レンタル・クラウド Mac 上の OpenClaw doctor、CLI 設定とモデル許可リスト:アップグレード後トリアージ

MacXCode Engineering Team 2026年4月25日 約17分

HK / JP / KR / SG / USレンタル した Mac mini M4 では、通常 SSH が先で、GUI がどうしても要るときだけ VNC です。これは OpenClaw が想定する失敗モードそのものです:長寿命の gateway、JSON 設定、そして npm の高速リリースで「git diff は無いのに本番だけ壊れた」が起きます。依存が検証を厳しくしたり、デフォルトを移したり、モデル許可リスト を締めたりするからです。本稿(2026-04-25)はトリアージ経路であり、エグレスと DNS初回オンボード の繰り返しではありません。openclaw doctor(任意で --fix)、CLI 管理キーと手編集ファイルの分離、LaunchAgent が実際に読んだ ~/.openclaw の証明、そして「対話 ssh -t では動くが launchd では落ちる」罠の回避を一直線に並べます。npm と二重 gateway 再起動 は、古いネイティブモジュールや重複 gateway を doctor が示したときのロールバック話に入れておいてください。

アップグレードがヘッドレス Mac で「幽霊」問題を浮かべる理由

時計は三つあります:あなたのノート PC(PATH が厚い、zshrc、忘れた VPN の HTTPS_PROXY)、自動化が使う CI 風 SSH セッション、そしてデーモンにとって本当に効くべき launchd 環境です。npm -g やタグ付き OpenClaw のあと、スキーマ検証が四月から持ち越したキーを拒否したり、gateway が 二つ目の PID を書いたり、これまで暗黙だったツール呼び出しが verbose にしか出ない 承認/ケイパビリティ を要したりします。readiness127.0.0.1:18789 のリスナー早見フィルタであり、人格設定全体が一貫している証明ではありません。必要条件であって、「全チャットが通る」の十分条件ではありません。

最初の 90 秒:openclaw doctor(と --fix

非破壊のあと、ロールバック可能な修正へ:openclaw status --all でバージョン・PID・待受ポートと部品マトリクスを印刷;openclaw doctor でスキーマ検証と古い/衝突キー検出(版によりサポート誘導);openclaw doctor --fix は CLI が安全に掃けるゴミ向け—クラッシュ後の古い ~/.openclaw/gateway.pid やマイグレータが書き換えられる非推奨サブキーなど。社内 wiki に 順序 を固定してください。手順 kill -9 のあと doctor か、openclaw gateway stop のあと doctor かで出力は変わります。doctor がプラグイン読込失敗を出したら WebSocket 1006 系とも突き合わせ、「別の gateway が listen」と一行で止まらず、古い clawdbot 系プロセスが残っていないか同じアカウントで確認してください。

単一の正:CLI config とディスク上の JSON

変更は openclaw config set <key> <value>openclaw config get <key>(版により表面が異なる)を優先—~/.openclaw/openclaw.json を手で触って余計なカンマや、UI が一度書いたが CLI がもう直列化しないキーを残すとスキーマが漂流します。手編集のあとは必ず doctor。ホットリロードは多くの agent / model / prompt を覆いますが、gateway.portgateway.bind は上流のホットリロード契約どおり フル openclaw gateway restart が筋です。nginx + webhook でスタックの片側だけ変えたときと同じです。秘密は ~/.openclaw/.env に置き、launchd の API キー と同じ EnvironmentVariables で継承してください。オンボード時に一度だけ cat >> ~/.zshrc した export に寄せないでください。

モデル許可リスト:「許可されていない」はしばしばポリシーであって障害ではない

プロバイダがモデル文字列を変えたのに skill が anthropic/claude-3-5-sonnet-latest のまま、gateway は固定リストだけ許可、というとき失敗は資格情報に見えます。実効リストを見る:openclaw config get agents.defaults.models(版に最も近いもの)で、カタログと 完全一致—大文字小文字、ベンダー接頭辞、スロット(primary / fallback)まで。エグレス 記事とセットで:エラーが TLS と HTTP/2 のあと ならモデルルーティング、TCP が終わらないなら DNS/TLS です。cron やサブエージェント負荷を足すなら、忘れていた別プロファイルの薄い許可リストをマージ漏れしていないか。スケジュールごとに 解決済み モデルをログし、Slack の人間向けラベルだけ残さないでください。

Gateway、PID、そして「もう kill したのに」

二重リスンは、ユーザー LaunchAgent が再起動したのに 手動フォアグラウンド がポートを握っているときや、アップグレードで 子 Nodelaunchd に養子に行ったときに出ます。lsof -iTCP:18789 -sTCP:LISTENps -ax | grep -i openclaw は plist を持つ 同一アカウント で—root ではありません。強制が必要なら、文書の 順序どおり に止めてから doctor、そのあと起動。gateway アップグレード/ロールバック 表とセットで、古い PID、node バージョン、sidecar ネイティブビルド用 DEVELOPER_DIR をチケットテンプレに残すと悪いリリースが見えやすくなります。

マージ阻害ルール: 捨てられる レンタル ステージングでアップグレード後に CI で緑の openclaw doctor を通し、status --all ログを保存する方が、Telegram がモバイルから見えるスクリーンショット一枚より証拠になります。

症状 / 層 / 安定化

症状 安定化
マイナー更新直後に「モデルが許可リストにない」 設定ポリシー 許可を広げ、文字列をピン留め、debug で一回チャット
doctor OK だがシェルでは新しい API キーなのに 403 launchd 環境 / エグレス 実行中 PID から環境を印刷し、エグレス TLS 検査へ
プラグイン追加後に WebSocket 1006 Node プラグイングラフ npm install をやり直し、gateway stderr を読む—サブエージェント 注記と照合

運用の背骨をつなぐ:ClawHub skills で何を自動化してよいか、構造化ログ で誤モデルと誤ルートを見分け、100.64/ と公開ホスト名が設計の一部なら Tailscale。まだブートストラップなら オンボード + デーモン が前提です。同じ日の CI 側は xcodebuild テスト + カバレッジ閾値 を参照してください。

FAQ:共有ビルダー上の doctor

質問 実務回答
毎デプロイ前に doctor を? npm 変更と gateway/バイナリ更新のあとなら最低限。週末のチャット断より速いです。
手編集 JSON は許される? 上流サンプルをマージするときは—すぐ doctor とチャット煙テスト。盲目再起動は避ける。
HK が US よりイメージ遅れ? 時間差は普通。ポリシーエグレス の差は別物。ダッシュボードは リース ラベルで分割し、地域プラン で拡張。

五地域のベアメタル M4 がまだ勝つ理由

診断と gateway はピーク FLOPS より ジッター再現性のある I/O を気にします。MacXCode の Mac mini M4 はシングルテナント NVMe で冗長な JSON ログを残し、恒常 SSH を与え、国別に provider 許可を分けるなら第二ノードを足せます。2026 年に OpenClaw を 本物 の配送パイプラインと並走させるなら、同じ系譜で Xcode テスト + カバレッジ ゲートも載せられます。リースは p95 で 測れる キャパシティとして扱い、緑になるまで再起動するブラックボックスにしないでください。

安定した SSH ファースト Mac で OpenClaw を

HK · JP · KR · SG · US · VNC は任意