mcpField
O
openclaw-relay

openclaw-relay

github.com/steipeteエージェントワークフロー7.4k116 回インストール1 週間前に更新
リポジトリ

openclaw-relay について

OpenClaw Relay は、ローカルまたは SSH 経由で OpenClaw のエージェントセッションにメッセージやタスクを中継するコマンドラインスキルです。対象解決、非公開の質問、直接送信やセッション経由の投稿、非同期タスクのキュー処理に対応します。

主な機能

  1. 01ローカルまたは SSH 経由の中継
  2. 02対象エイリアスの解決
  3. 03質問、送信、投稿
  4. 04非同期タスクのキュー処理とポーリング
  5. 05中継の稼働状態確認

活用シーン

  1. 01エージェントセッションへの非公開質問
  2. 02解決済みのチャンネル対象への投稿
  3. 03リモート OpenClaw セッションでのタスク登録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/steipete/agent-scripts --skill openclaw-relay

インストール後、Claude Code で/openclaw-relayを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
config/
session_aliases.json
scripts/
openclaw_relay.py
test_doctor_token.py

詳細

OpenClaw Relay

次のような作業で使用します。

  • 「Molty と話す」
  • 「これを OpenClaw のチャンネルセッションに中継する」
  • 「acpx を使う」
  • 「acp 経由でゲートウェイを通して送信する」
  • 「SSH 経由でリモートの OpenClaw ブリッジを通して作業する」

team.openclaw.ai には使用しないでください。Team サーバー上の Roboclaw セッションの開始や確認には、openclaw/agent-skills の $team-handoff を使用します(Cloudflare Access 経由で Peter として 1 回の Gateway リクエストを実行します。オペレーターの値は ~/.config/openclaw/team-handoff.env にあります)。

1 つのスキルで、2 つのトランスポートを使用できます。

  1. local
  2. ssh

現在の OpenClaw チェックアウトから直接、電話ゲームのように中継する場合は、local をデフォルトとして使用します。対象のエージェント/セッションが別のマシンにある場合は、ssh を使用します。

Peter の環境では、Molty は通常 Mac Studio のゲートウェイ上にあり、[email protected] で接続します。単発の中継作業では、tmux に自動接続する mac-studio SSH エイリアスは避けてください。

スクリプトのパス:scripts/openclaw_relay.py

対象エイリアスファイル:config/session_aliases.json

モードの選択

次の場合は local を選択します。

  • ユーザーが明示的に acpx と指定している
  • 対象セッションが現在のマシン上にある
  • すばやく中継する、または非公開で質問するのが目的である

次の場合は ssh を選択します。

  • 対象のエージェント/セッションが別のホスト上にある
  • 永続的なブリッジセッションが必要である
  • リモートマシンで非同期のキュー/待機/表示フローが必要である

デフォルト設定

このスクリプトには個人用パスがハードコードされていません。必要に応じて環境変数またはフラグで上書きしてください。

  • トランスポート:local
  • ローカルリポジトリの作業ディレクトリ:現在の作業ディレクトリ
  • ローカルの acpx リポジトリ:<cwd>/extensions/acpx
  • ssh ホスト:[email protected]
  • リモートリポジトリの作業ディレクトリ:<remote-home>/clawdbot
  • リモートの acpx リポジトリ:<remote-home>/Projects/oss/acpx
  • ゲートウェイトークンファイル:<home>/.openclaw/gateway.token
  • 制御セッション名:codex-bridge
  • 対象エイリアスファイル:config/session_aliases.json

便利な環境変数:

  • OPENCLAW_RELAY_TRANSPORT
  • OPENCLAW_RELAY_HOST
  • OPENCLAW_RELAY_CWD
  • OPENCLAW_RELAY_ACPX_REPO
  • OPENCLAW_RELAY_GATEWAY_URL
  • OPENCLAW_RELAY_GATEWAY_TOKEN_FILE
  • OPENCLAW_RELAY_SESSION
  • OPENCLAW_RELAY_TARGETS_FILE

クイックスタート

ヘルスチェック:

python3 scripts/openclaw_relay.py doctor

登録済みの対象エイリアスを一覧表示します。

python3 scripts/openclaw_relay.py targets

対象エイリアスを解決します。

python3 scripts/openclaw_relay.py resolve --target maintainers

対象セッションに非公開で質問します。

python3 scripts/openclaw_relay.py ask \
  --target maintainers \
  --message "Summarize the current vibe in this channel."

解決済みの対象にテキストを強制送信します。

python3 scripts/openclaw_relay.py force-send \
  --target maintainers \
  --text "Deploy is done."

複数行の投稿には、メッセージをシェルで引用符付けする代わりに、--text-file <path> または --text-file - を使用します。

ユーザーがチャンネルへの投稿を明示的に希望している場合は、メディアを強制送信します。

python3 scripts/openclaw_relay.py force-send \
  --transport ssh \
  --host [email protected] \
  --target maintainers \
  --text "Demo video." \
  --media /tmp/demo.mp4

永続的な制御セッションを使用します。

python3 scripts/openclaw_relay.py ensure
python3 scripts/openclaw_relay.py send --message "Reply with exactly OK."
python3 scripts/openclaw_relay.py show

リモートホストの例:

python3 scripts/openclaw_relay.py doctor --transport ssh --host [email protected]
python3 scripts/openclaw_relay.py send \
  --transport ssh \
  --host [email protected] \
  --message "Reply with exactly OK."

非同期ワークフロー

作業をキューに追加し、同じ制御セッションをポーリングします。

python3 scripts/openclaw_relay.py start --message "Work on X and reply when done."
python3 scripts/openclaw_relay.py wait --after-seq <last-seq>
python3 scripts/openclaw_relay.py show

対象エイリアス

config/session_aliases.json にはプレースホルダーが含まれています。環境に合わせて実際の値に置き換えてください。

設定例:

{
  "main": "agent:<agentId>:main",
  "maintainers": "agent:<agentId>:discord:channel:<channelId>"
}

セッションのルール

コマンドを選択する際は、次のルールを使用します。

  • 特定のセッションから非公開の返信を受け取りたい:ask
  • 投稿するかどうかを対象セッションに判断させたい:publish
  • 確実に直接投稿したい:force-send
  • 制御側のブレインと連続性を保ちながらブロッキングで実行したい:send
  • 結果を待たずに非同期で実行したい:start の後に wait と show
  • キューに追加された作業を停止したい:cancel

障害への対処

中継に失敗した場合:

  1. doctor を実行します。
  2. status を実行します。
  3. show を実行します。
  4. 制御セッションが応答しなくなった場合は、cancel、ensure の順に実行してから再試行します。

ルートの検出に確信が持てない場合:

  1. まず対象を解決します。
  2. エイリアスまたは正確なセッションキーを優先します。
  3. 実際のペイロードを送信する前に、短いプローブ質問を送ります。

出力の中継

シェルのノイズではなく、実際のアシスタントのテキストまたは配信結果を返します。

中継作業では、次の内容を報告します。

  • 使用したトランスポート
  • 対象のセッションキー
  • ルートのプローブ/解決に成功したかどうか
  • 最終的に投稿または返された結果

コメント