前提:リモート Mac に OpenClaw 導入済み、ループバック ゲートウェイ稼働。ホーム/ヘルプ・OpenClaw ガイド/専用ノードは 購入ページ(閲覧のみならログイン不要)。ログとリトライ痕跡は IDE ブリッジ記事 と同様、読み取り専用 repo と 書き込み scratch に分離する。
ゲートウェイとスキルディレクトリ
ゲートウェイ状態 は ~/.openclaw 等に集約。スキル は ~/openclaw-skills/<skill>/ に skill.yaml(または skill.json)+任意で schemas/・scripts/。ログ・一時ファイル は ~/openclaw-scratch/ に固定し、Git ルートへ書かない。
- マニフェスト一枚/スキル。 ツール名・エントリ・既定ポリシー・Schema 参照を Git でレビュー可能に。
- シークレット分離。
0600+OPENCLAW_TOKEN_FILE。マニフェストはパスのみ。 - 常駐。 launchd の
KeepAlive、ログは~/openclaw-scratch/logs/gateway.log。plist はマニフェストと同リポジトリに。
変更後は openclaw doctor --json > ~/openclaw-scratch/probe/doctor-last.json でベースライン保存。
Schema 検証の例
呼び得るツールすべてに inputSchema(Draft-07 または 2020-12、ビルドのバリデータに合わせる)。検証は実行前。エラーは型・制約・パスを返してモデルが直せる形に。
例:課題 ID のみ受け付けるツール。
{
"name": "linear.fetch_issue",
"description": "Fetch one Linear issue by stable id",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": ["issueId"],
"properties": {
"issueId": {
"type": "string",
"pattern": "^[A-Z]{2,10}-[0-9]+$",
"maxLength": 32
},
"includeComments": { "type": "boolean", "default": false }
}
}
}additionalProperties: false、maxLength/maxItems、モードは enum。肥大化した Schema は ~/openclaw-skills/.../schemas/ に外だし。ログは tool・correlationId・エラーパスまで。生の秘密は出さない。
タイムアウトとサーキットブレーカー(熔断)パラメータ
タイムアウト=単発呼び出しの熔断。ブレーカー=連続失敗で下流を守る。マニフェストまたは policies.yaml に明示し、ツール単位で上書き。
executionTimeoutMs— HTTP 8〜30s、リポジトリ走査 60〜120s から調整。queueWaitMs— 任意。並列スパム時は503 tool_backpressureで拒否。- ブレーカー — 例:連続 5 失敗、または 60s でエラー率 40% →
openDurationMs: 30000でbreaker_open。 - ハーフオープン — 回復確認用にカナリア 1 本。
数値はレビューでツール横にコメント。SLO 変更はマニフェスト先行→再配備。
リトライとバックオフ
sleep のコピペではなく共通テンプレ。読み取りは指数バックオフ+ジッター、書き込みは厳選したステータスのみ。API 向けの例:
retry:
maxAttempts: 4
initialDelayMs: 200
multiplier: 2.0
maxDelayMs: 8000
jitterRatio: 0.2
retryOnHttpStatus: [408, 425, 429, 500, 502, 503, 504]
nonRetryOnHttpStatus: [401, 403, 404, 422]変更系は冪等キー。サブプロセスは idempotent: true かつ終了コードで一過性/入力不良を分けられるときだけ自動リトライを検討。ログは attempt・delayMs・errorClass・correlationId。ブレーカー オープン中はリトライしない。
ログとトラブルシュート FAQ
モデル更新後に検証エラー増。 未知キーをログし、落ち着いてから additionalProperties: false。
タイムアウトするが下流は元気。 Mac 上で DNS/TLS を計測。p95 と executionTimeoutMs を突き合わせ、コールドスタート超過を疑う。
回復後もブレーカー開き。 ハーフオープン、4xx/5xx 分類、時刻ずれ、永続エラー型(例 ECONNRESET)を確認。
リトライで 429 悪化。 Retry-After 尊重、maxAttempts 削減。
成功ログだが効果なし。 非同期 enqueue のみの可能性。タイムアウト延長かツール分割。
doctor OK・実行 NG。 資格情報は別。カナリア実行、トークン readable、launchd とシェルのパス一致を確認。
まとめ: 三層パスを固定し Schema で実行前ゲート、タイムアウト+ブレーカーで暴走を止め、共通リトライで副作用を統制。correlationId でログを貫通させれば、リモート Mac でも再現可能な運用になる。
ゲートウェイを専用 Mac に載せるなら 購入 でリージョン比較、ヘルプ で手順、ホーム から コンソール へ。料金感は 料金。