Parallels Discord ラウンドトリップ
macOS Parallels スモークテストで、Discord を介した双方向メッセージ配信がエンドツーエンドで機能することを証明する際に使用します。
目標
以下の項目を網羅します:
- フレッシュな macOS スナップショットへのインストール
- オンボーディング + ゲートウェイの健全性確認
- ゲストから Discord へ
message send(メッセージ送信) - ホストがそのメッセージを Discord 上で確認
- ホストが新しい Discord メッセージを投稿
- ゲストが
message read(メッセージ読み取り) でその新しいメッセージを確認
入力
- 専用の運用承認済み QA Bot トークンを含むホスト環境変数
- 運用承認済み QA ギルドIDおよびチャンネルID
OPENAI_API_KEY
推奨実行方法
承認済みの秘密情報ソースから OPENCLAW_PARALLELS_DISCORD_TOKEN を読み込みます。
OPENCLAW_PARALLELS_DISCORD_GUILD_ID と OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID を
承認済み QA 送信先に設定します。ハーネスが選択したゲスト内部でその Bot を設定します。
pnpm test:parallels:macos \
--discord-token-env OPENCLAW_PARALLELS_DISCORD_TOKEN \
--discord-guild-id "$OPENCLAW_PARALLELS_DISCORD_GUILD_ID" \
--discord-channel-id "$OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID" \
--json
注記
- スナップショット対象:
macOS 26.3.1 freshに最も近いもの。 - スナップショット解決機能は、ベースヒントが一致する場合、
*-poweroff*クローンを優先するようになりました。これにより、ハーネスは長いヒントを指定しなくても、ディスクのみのリカバリ用スナップショットを再利用できます。 - Windows/Linux スナップショット復元ログに
PET_QUESTION_SNAPSHOT_STATE_INCOMPATIBLE_CPUが表示された場合は、サスペンド状態を一度破棄し、*-poweroff*置換スナップショットを作成して再実行してください。スモークスクリプトは現在、復元されたパワーオフスナップショットを自動起動します。 - ハーネスはゲスト内部で Discord を設定します。チェックインされたトークンや設定はありません。
- ゲストの
message send/readにはopenclawラッパーを使用してください。node openclaw.mjs message ...では、遅延評価されるメッセージサブコマンドが同じように公開されません。 channels.discord.guildsは、ドット区切りのconfig set channels.discord.guilds.<snowflake>...パスではなく、1つの JSON オブジェクト (--strict-json) で記述してください。数値のスノーフレークは配列インデックスのように扱われます。- 長い Discord 設定スクリプトでは
prlctl enter/ expect は避けてください。長いコマンドが行折り返しにより破損します。Discord 設定フェーズにはprlctl exec --current-user /bin/sh -lc ...を使用してください。 - 3OS フルスイープ: 共有ビルドロックは並列実行しても安全ですが、スナップショット復元は依然として Parallels のボトルネックです。ホストがすでに負荷が高い場合は、Windows/Linux の復元処理が多い再実行は直列化することを推奨します。
- ハーネスのクリーンアップは、終了時に一時的な Discord スモークメッセージを削除します。
- ハーネスは、Discord の証明が成功した後に選択したゲストの停止を試み、停止に失敗した場合は警告を表示します。アドホックな Discord チェックの場合は、引き継ぎ前にタスク所有のゲストのみを停止してください。証明後も Discord 設定済みのテストゲストを実行したままにしないでください。
- フェーズごとのログ:
/tmp/openclaw-parallels-smoke.* - マシン概要:
--jsonを渡してください - ラウンドトリップが不安定な場合は、まず実行ディレクトリ内の
fresh.discord-roundtrip.logとdiscord-last-readback.jsonを確認してください。
合格基準
- 要求された fresh レーンまたはアップグレードレーンが合格
- サマリーがそのレーンについて
discord=passと報告 - ゲスト送信の nonce がチャンネル履歴に存在する
- ホスト送信の nonce が
openclaw message readの出力に含まれている