前提:リモート Mac に OpenClaw 導入済み(ヘルプ・OpenClaw ガイド)、VS Code/Cursor 等で SSH 越しに単一ルートを開くこと。OpenClaw・自動化 のゲートウェイ話を 権限 と 可観測性 で補強。同機で RAG も回すなら ローカル RAG マトリクス のパス規律を併用。ホーム/購入ページ でリージョン比較。
設計原則(2026 最小権限)
- ゲートウェイはループバックのみ。 OpenClaw を
127.0.0.1にバインドし、SSH リバーストンネルやプライベート転送経由でだけ IDE から届ける。未認証の制御面を公網に晒さない。 - トークンはスコープを絞る。
workspace:read、ホワイトリスト化したexec、タスクに不要な権限は付けない。0600ファイルに格納しOPENCLAW_TOKEN_FILEで読み込む。シェル履歴や Git 管理下の dotfiles に生のシークレットを流さない。 - 二ルート構成。
~/ide-bridge/repoはエージェントから読み取り専用。~/ide-bridge/scratchにビルド成果物・キャッシュ・プローブログ・一時モデルパスを集約する。 - diff は要約で十分なことが多い。 自動作業の前後で
git diff --stat(とステージ済み)を追記し、人と自動化が変更規模で合意する。 - プローブの前に doctor。 設定を大きく変えた直後は
openclaw doctor。環境が健全なら高頻度の/healthを回し、半壊プロセスを緑表示しない。
再現手順(コピー用)
1. ディレクトリと権限。 リモート Mac で次を実行します。
mkdir -p ~/ide-bridge/repo ~/ide-bridge/scratch/probe
# コードを repo に同期したあと、書き込みビットを外す例
chmod -R a-w ~/ide-bridge/repo人手編集が要るなら worktree/書き込み可能クローン/ACL で分離。ゲートウェイ用は読み取り専用推奨。不変条件は 自動化が既定で正典ツリーを書き換えないこと。
2. ゲートウェイ用トークンを発行。 インストール済み OpenClaw CLI で、IDE ブリッジに必要な最小スコープだけ付与(サブコマンド名は版により異なるのでリリースノート優先)。~/.openclaw/gateway.token に書き chmod 600。~/.zprofile または launchd の EnvironmentVariables で export OPENCLAW_TOKEN_FILE="$HOME/.openclaw/gateway.token"。リポジトリの env や commit hook に生トークンを貼らない。
3. ループバックでゲートウェイ起動。 IDE 拡張が期待するポートに合わせます。
openclaw gateway listen \
--bind 127.0.0.1:18765 \
--token-file "$HOME/.openclaw/gateway.token"常駐は launchd+KeepAlive、ログは ~/ide-bridge/scratch/logs/gateway.log。ノートから ssh -R 18765:127.0.0.1:18765 user@remote で IDE→Mac ループバックのみ。公網バインド禁止。
4. IDE のワークスペースルート。 Remote-SSH で ~/ide-bridge/repo を開く。OUT_DIR、一時ディレクトリ、テスト成果物、OpenClaw キャッシュはビルドスクリプトやワークスペース設定で ~/ide-bridge/scratch へ。読み取り専用ツリーへの偶発書き込みと、サンドボックスを壊す chmod 運用を防ぐ。
5. diff 要約の固定。 自動化エントリの前後で日次ログへ追記します。
LOG=~/ide-bridge/scratch/probe/diff-$(date +%F).log
{ echo "=== $(date -Iseconds) pre ==="; git -C ~/ide-bridge/repo diff --stat; \
git -C ~/ide-bridge/repo diff --cached --stat; } >> "$LOG"
# ... タスク実行 ...
{ echo "=== $(date -Iseconds) post ==="; git -C ~/ide-bridge/repo diff --stat; \
git -C ~/ide-bridge/repo diff --cached --stat; } >> "$LOG"全文 diff が無くても stat で規模合意と巻き戻し判断がしやすい。
6. doctor と定期ヘルス探針。 モデル・パス・トークンを変えたあとベースラインを残す。
openclaw doctor --json > ~/ide-bridge/scratch/probe/doctor-last.json続けて launchd で 5 分間隔(認証ヘッダは自環境に合わせて調整)の例。
curl -fsS -H "Authorization: Bearer $(cat ~/.openclaw/gateway.token)" \
http://127.0.0.1:18765/health \
|| echo "$(date -Iseconds) health FAIL" >> ~/ide-bridge/scratch/probe/health.log典型原因はディスク満杯・ポート衝突・古いトークン・TCP だけ生きるワーカー詰まり。doctor と同一ユーザー curl で切り分け。CPU ティアより FS/サービス衛生の話(料金)。
トラブルシュート FAQ
401/403。 トークン 0600、Bearer 字面、ローテ後の全プロセス再起動。新旧シークレット混在に注意。
EROFS。 repo が読み取り専用。worktree/scratch+パイプライン/対話のみ一時緩和。ゲートウェイ用は緩めない。
doctor がキャッシュを怒る。 ~/ide-bridge/scratch/openclaw-cache に固定。
diff stat が空。 git -C が .git ルートか。サブモジュールは別 stat。
ハングだが health 緑。 プローブを深めるか doctor 時系列比較。FD 枯渇・launchd スロットルも疑う。
SSH が夜間切断。 ServerAliveInterval/ClientAliveInterval または再接続ウォッチドッグを scratch/probe へ。
まとめ: 最小権限は読み取り専用 repo、書き込み scratch、ループバック ゲートウェイ、スコープ付きトークン。可観測性は doctor --json のベースライン、diff stat の痕跡、定期 /health。上の順で揃えれば、実験一つにマシン全体を明け渡さずに IDE ブリッジを載せられる。