対象:リモート Macで OpenClaw/モデルキャッシュを扱う開発者。キーワード:OpenClaw、リモート Mac、モデルキャッシュ、クリーンアップ、自動化。パス設計・symlink階層・クォータ・LaunchAgent 時間窗を再現手順で整理。併読:モデルプル自動化、ゲートウェイ健康診断、失敗回復、ブログ一覧、ヘルプ。
前提条件と環境のパーティション
「どのボリュームに何を載せるか」を先に固定します。APFS でもシステム・ワークスペース・テラ級モデル実体を同一ディスクに詰めると I/O がぶつかりやすいです。
インストール前チェックリスト
diskutil listで内蔵/外付けを確認し、外付けは常時マウントか(ログイン前ジョブ用なら特に重要)- Node 固定(
fnm等)。ゲートウェイは別稿の plist と整合 - launchd 実行ユーザがキャッシュに書けるか
ls -leで確認
キャッシュパスと階層(ティアード)設計
速いボリュームにメタ、巨大 blob は広いボリュームへ。論理パスは据え置き、実体を symlink で差し替えます。
| 構成 | 長所 | 注意/向かない場合 |
|---|---|---|
| 単一ボリューム(~/ のみ) | 設定が最も単純 | 容量逼迫時に OS と取得が同時に詰まる |
| 内蔵 SSD + 大容量ボリューム + symlink | IOPS と容量のバランスが良い | 外付けのマウント順・スリープに弱い(下記 FAQ) |
| ネットワークマウントを実体に | 複数 Mac で実体共有しやすい | レイテンシで取得が不安定になりやすい |
例:実体を外付けに置き、ワークスペース側から見える既定名へ接続します(パスは環境に合わせて置換)。
mkdir -p "/Volumes/BulkData/openclaw-models" # 既定のキャッシュ位置に既存があれば退避してから ln -s "/Volumes/BulkData/openclaw-models" "$HOME/ws/.openclaw/cache/models" # 検証: ls -l と test -w
キャッシュ系 env(例 HF_HOME 等)は1 ファイルに集約し、手動と LaunchAgent の EnvironmentVariables を同一に。
定期クリーンアップとログローテーション
クリーンアップはスケジュールと削除順を固定し、実行中ジョブと競合させない。時間窗は低負荷帯(深夜〜早朝)に、CI ピークと重ねない。
| スケジューラ | 向くケース | 設定の要点 |
|---|---|---|
LaunchAgent(StartCalendarInterval) |
GUI セッション/ユーザ権限で十分なとき | StandardOutPath/StandardErrorPath を絶対パスで。ログイン前実行が要るなら LaunchDaemon 検討 |
cron |
既存サーバ運用と揃えたいとき | Full Disk Access と PATH を明示したラッパシェル経由にする |
クリーンアップシェルは flock で多重起動を防ぎ、まず DRY_RUN=1 で削除候補をログへ出すと安全です。
#!/bin/bash
set -euo pipefail
exec 200>"${LOCK_FILE:-/tmp/openclaw-cache-clean.lock}"
flock -n 200 || exit 0
# DRY_RUN=1 のときは find の結果を表示のみ
: "${CACHE_ROOT:?}"
ログローテーションは newsyslog または日付 mv+圧縮を同じ時間窗で。
クォータとディスク水位しきい値
使用率と空き GB の二段で見る(ビルドプール FAQ 参照)。85%/90%+最低空き GB が実用的です。
通知・行動マトリクス(例)
- < 80%:通常。週次で傾き記録
- 80〜85%:通知、LRU 候補をレビュー
- 85% 超/空き < 30GB:大容量プル抑制、クリーンアップ前倒し
- 〜90%:緊急削除、取得は手動承認
df -g / | awk 'NR==2 {u=$5+0; gsub(/%/,"",$5); print "use_pct", $5; print "free_gb", $4}'
プロバイダクォータは df と契約パネルを突合し週次記録。
失敗時のリトライとトラブルシュート
典型は未マウント・権限・ディスクフル・切断。失敗回復のバックオフと併用。
| 症状/ログ | まず見る場所 | 対処の筋 |
|---|---|---|
No such file or directory |
readlink、mount |
マウント待ち or 実体を内蔵へ |
Permission denied |
ユーザ・ACL・FDA | 所有者揃え、手動と同じユーザで検証 |
| 途中停止/ゼロバイト | df |
水位を下げ、再開可能な取得に |
PATH ドリフト:LaunchAgent は .zshrc を読まない。スクリプトは絶対パスかラッパ1本に集約。
本番投入前の受け入れチェックリスト
Go-Live 前に全部チェック
- 手動/LaunchAgent 双方で取得成功・キャッシュヒット
DRY_RUNで削除候補が想定どおり- 時間窗と CI が競合しない(キュー or 窓調整)
- 85%/90% で通知→Runbook 実行、ログローテーション確認
まとめ
モデルキャッシュと CI を同じリモート Mac で安定運用
OpenClaw 向けリモート Mac を選ぶ
容量・帯域・常時稼働をまとめて確保し、取得失敗の再実行コストを下げます。料金・購入・ヘルプはログイン不要です。