サーバールームと音声コラボ基盤。OpenClaw Discord リアルタイム voice と Gateway 受入を象徴

2026 OpenClaw v2026.5.20 完全ガイド:
Discord リアルタイム voice followUsers、xAI device-code OAuth、Policy プラグイン doctor lint(日貸し macOS 隔離)

自ホスト OpenClaw Gateway を v2026.5.20 に上げた直後、Discord テキストは動くのに voice が追従しない、VPS 上の xAI ログインが localhost コールバックで止まる、doctor に初めて見る Policy lint が並ぶ——この三つは別件ではなく、同一リリースのテーマです。本稿は開発者と運用担当向けに、三つの痛点、voice・認証・Policy の決定マトリクス、七手順、分診表、三指標、1~3 日の日貸し macOS 日程を示します。関連:導入・デプロイガイドTelegram/Discord チャネルペアリングv2026.5.12 モジュラーインストールコマンドエラー FAQSSH/VNC FAQ

01. 三つの痛点:voice 追従、ヘッドレス xAI OAuth、Policy lint

1)Discord voice が「別チャネル」扱いで壊れて見える:v2026.5.20 では voice.followUsers により、bot が指定 Discord ユーザー ID に合わせて voice チャネルへ join・move・leave します。/vc join や固定 autoJoin だけに慣れた運用だと、DM は返るのに voice だけ無反応に見えます。表示名ではなく snowflake を入れ忘れたり、guild/channel allowlist を外したりすると、テキスト側のペアリングが通っていても voice ingress は拒否されます。合格信号は追従対象が allowed voice に入る → bot が同室に入る → STT/ルーティングログが出ることです。

2)VPS/SSH 上の xAI OAuth がブラウザ前提で失敗する:5.20 以前は laptop から token をコピーしたり、SSH ポートフォワードで loopback を無理やり通す場面が多かったです。本版は openclaw models auth login --provider xai --device-code で検証 URL と短いコードを表示し、任意端末のブラウザで承認すると資格情報がヘッドレス側に保存されます。失敗パターンは「コールバックが localhost に届かない」から「コード期限切れで誰も端末を見ていない」「profile 順序が古い plaintext key に上書きされる」へ移ります。device-code は人が端末を見守る変更窓として扱ってください。

3)Policy プラグインの doctor lint が初めて目に入る:同梱 Policy プラグインはチャネル conformance、doctor lint、オプションの workspace repair を提供します。WARN 一行を「Gateway 全滅」と読むのが典型ですが、多くは DM policy、allowlist 穴、openclaw.json の平文 secret、宣言セキュリティ posture との矛盾です。5.20 の doctor は sandbox が MCP ツールを隠す警告や symlink 資格情報の fail-closed も同じレポートに載ります。本番 guild で voice を広げるに doctor を回すと、レンタル Mac 上の修正コストははるかに低くなります。

三表面は連動します。realtime voice は既定で IDENTITY.mdUSER.mdSOUL.md を bounded に注入するため、口調の drift は bootstrap ファイル問題であることが多いです。xAI device-code は Grok 系ルートの推理経路をヘッドレスで確保します。Policy lint は、follow-users を開いた Discord チャネルが本当に allowlist ストーリーと一致するかを教えてくれます。

02. 決定マトリクス:followUsers、bootstrapContextFiles、device-code、Policy

変更窓の受入シートとして使い、右列の証拠はレンタルホストで秘匿化してから wipe してください。

表面(5.20) 合格信号 レンタル証拠
voice.followUsers 列名ユーザーが allowed voice に入ると bot が追従;チャネル移動・切断で leave 秘匿 voice 状態ログ + channels status --channel discord JSON
voice.followUsersEnabled リスト設定時は既定 true;false で ID を残したまま一時停止 Control UI voice パネルのトグル画面
voice.realtime.bootstrapContextFiles 既定 IDENTITY/USER/SOUL 注入;部分集合や [] で無効化 口語プローブ前後の transcript 断片
xAI device-code OAuth device-code login 完了;モデル一覧に xAI;1 回の completion smoke 秘匿 auth profile 一覧(設定 JSON に平文 key なし)
Policy プラグイン / doctor lint WARN 解消またはチケット付き明示 waive;repair は opt-in のみ doctor stdout の修復前後アーカイブ
voice allowlist ingress 非 allowlist メンバーの発話は転写前に拒否 許可アカウント vs ブロックアカウントのプローブ

v2026.5.12 と併読してください。Discord プラグインが installed/enabled であることが前提で、5.20 は voice/realtime 層を足します。join モードは意図的に選びます。followUsers はオペレータが huddle 間を移動する現場向け、autoJoin は常駐ルーム向け、/vc join はゲストを驚かせない単発向けです。

bootstrapContextFiles:realtime voice で変わること

realtime ターンは低遅延で、workspace 全文は自動再生されません。5.20 は小さな profile ファイルを provider 命令に注入し、口語応答を routed agent の persona に合わせます。latency が重い場合は部分集合、中立性を最優先するなら [] を選びます。これは openclaw_agent_consult によるツール・記憶・最新事実の代替ではありません。

Policy プラグイン:lint と repair

lint は構造化された nudge です。repair は明示承認時のみ——本番時間帯の silent auto-migrate として使わないでください。平文 provider key の lint が出たら、customer guild で voice を有効化する前に SecretRef へ移行します。

03. 七手順:アップグレード → voice → xAI → doctor → 証拠

  1. ベースライン凍結:openclaw --version、Discord voice ブロック、xAI auth profiles、openclaw channels status --json を記録します。読み込まれる openclaw.json パスと Gateway 起動引数も控えます。
  2. バックアップとアップグレード:設定と IDENTITY/USER/SOUL をスナップショットし、openclaw updatev2026.5.20 へ更新します。stdout、終了コード、npm integrity(pin する場合)を保存します。
  3. Discord voice followUsers 設定:snowflake ID(生値または discord:<id>)を追加します。ペアリングガイドの guild/channel allowlist を確認し、変更後は Gateway を再起動します。
  4. bootstrapContextFiles 調整:既定から短い口語プローブを実行します。persona が重い場合は部分集合へ、中立性優先なら [] を選びます。
  5. ヘッドレス xAI 認可:SSH/VPS セッションで device-code login を実行し、コード寿命内にスマホまたは laptop で検証を完了します。customer トラフィック前にモデル一覧と 1 回の completion を確認します。
  6. Policy プラグインと doctor:openclaw doctor を実行し、lint を解消するか waive を文書化します。repair は捨てられるホストで先に試し、doctor --fix 後に stale schema key を再確認します。
  7. channels クロスチェックと証拠:Discord configured/enabled と voice プローブ成功を一致させます。ログを秘匿化し、デモ token と一時 OAuth profile をレンタルマシンから削除します。
openclaw --version
openclaw channels status --json | head -c 8000 | tee /tmp/oc520-channels-before.json
openclaw update

openclaw models auth login --provider xai --device-code

openclaw doctor 2>&1 | tee /tmp/oc520-doctor.txt
openclaw channels status --probe --channel discord

空きディスクが 15 GB 未満だと、アップグレード・voice provider ウォームアップ・doctor repair の並行実行は失敗しやすくなります。帯域とレンタルコストは SSH/VNC FAQ を参照してください。新規導入は マルチプラットフォーム導入ガイド に従い、Node 24(または ≥22.19)を合わせます。

followUsers 設定断片の例

{
  "channels": {
    "discord": {
      "voice": {
        "enabled": true,
        "followUsers": ["123456789012345678"],
        "followUsersEnabled": true,
        "realtime": {
          "bootstrapContextFiles": ["IDENTITY.md", "USER.md", "SOUL.md"]
        }
      }
    }
  }
}

編集後は Gateway を再起動し、追従対象ユーザーが allowlisted voice に入る間ログを tail します。bot が動かない場合は followUsersEnabled、allowlist、Connect/Speak 権限を先に確認し、モデルルートは後回しにしてください。

04. 分診表:症状 → 優先動作 → 誤操作

症状 優先動作 誤操作
オペレータの voice を bot が無視 followUsers の user ID、allowed チャネル、Connect 権限を確認 テキスト側 groupPolicy: open で voice を「直す」
voice の persona がテキスト agent と違う bootstrapContextFiles と workspace の profile MD を点検 AGENTS.md 全文を voice 設定に複製(非対応)
xAI device-code が期限切れ オペレータ待機のうえ再 login;VPS の時刻ずれを確認 git 追跡 JSON に長期 API key を埋め込む
doctor が Policy WARN で埋まる secret / allowlist / sandbox・MCP 別に分類し、修正またはチケット waive doctor 無効化や Policy プラグイン削除
無関係ユーザーの発話が転写される Discord member/channel allowlist を締め、ブロックアカウントで再試験 bot が join した=voice 公開と早合点
DAVE 切断後 bot が固まる follow 移動を再試行;5.20 DAVE 回復メモを確認;必要なら Gateway 再起動 allowlist 削除で強制 join

テキスト Discord は動くのに voice だけ失敗する場合、問題を分割してください。Gateway 登録と Discord app OAuth は共有ですが、voice には realtime provider 設定、follow 状態機械、ingress allowlist が加わります。openclaw channels status と短い voice ログを、xAI 再認証・SOUL 書き換え・allowlist 拡大を同時に行う前に保存してください。ツール拒否は コマンドエラー FAQ も参照します。

05. 三指標・誤解と 1~3 日レンタル日程

  • 指標 1:GitHub v2026.5.202026-05-21 公開。Discord followUsers、realtime bootstrap、Policy プラグイン、xAI device-code が Release Notes に明記されています——変更監査のアンカーに使えます。
  • 指標 2:npm tarball integrity sha512-cgshS76CxS3Vp9NGtJR2UGtVZxVR5/4rvok8DKGGL19DugAftNabsXfYajyAEiJ3dC8QTXNqF62MdQNzUnQe8Q== が release ページに掲載されています——顧客 incident 再現時はレンタルホストで pin してください。
  • 指標 3:M4 レンタル hardware のオペレータ样本では、allowlist 文書が揃っていれば followUsers・device-code・Policy lint の集中検証を3~5 時間に収めた例があります——5.12 以前の pairing 負債があると 1~2 日に伸びます。

誤解 A:「followUsers が allowlist を置き換える」——置き換えません。ingress は policy-gated のままです。誤解 B:「device-code が SecretRef を不要にする」——平文 key の doctor WARN は依然 relevant です。誤解 C:「Policy lint = ロールバック必須」——多くは conformance 負債の可視化であり、runtime crash ではありません。

1 日目(凍結+更新+doctor):午前:channels status と auth profiles。午後:5.20 へ更新、doctor をアーカイブ。夕方:テスト guild で 1 オペレータ ID の followUsers。

2 日目(voice persona+xAI):口語プローブで bootstrapContextFiles を調整;本番 VPS と同形ホストで device-code;routed agent で xAI completion を確認。

3 日目(Policy repair+引き継ぎ):残 lint を解消または waive;allowlisted vs blocked voice プローブ;レンタル secret を wipe;Runbook に voice ID、bootstrap 選択、auth profile 順序を記載。

06. ヘッドレス Linux VPS vs 日貸し Mac

Linux VPS は 24/7 Gateway と device-code OAuth に向いています——スマホブラウザで承認し、資格情報はサーバーに残ります。一方、Discord voice 状態デバッグ、Control UI の voice トグル確認、Keychain の deploy key、profile MD を聞きながら読む作業まで含めると、SSH ログ・スマホ・個人 laptop の Discord を行き来する隠れコストが、短い Apple Silicon レンタルを上回ることがあります。

CLI チェックリストの多くは VPS 単体で完了し、本番は Linux のままでも構いません。日貸し Mac の価値はリハーサル忠実度です。ネイティブ macOS なら Gateway、Control UI、Discord デスクトップを同一セッションに置き、followUsers 証拠を三機またぎでコピーせずに取れます。コンテナはスパイク向きですが、voice レイテンシ調整や follow handoff の UX は再現しにくいです。

1~3 日で引き継ぎ可能な Runbook が必要で、ハードウェア購入や個人 Discord への production OAuth を避けたいなら、VPS SSH+スマホ OAuth+即席オーディオより日貸し Macの方がスムーズなことが多いです。プランは M4 料金案内、接続とコストは SSH/VNC FAQ をご覧ください。