Temporalにオーケストレーション、OpenClawにツール出口の単一路化。Python ワーカーではワークフローとアクティビティを分け、ホワイトリストheartbeat_timeoutを揃えると詰まりが予測しやすくなります。

目次:ワーカー識別 · リトライ · シークレット · ループバックとトンネル · 手順 · 購入導線

費用の置き方はワークフロー検収表、要約の型はsessions_spawn 稿、ゲートのすきーま固定はPydanticAI ゲート稿を参照。

ワーカー識別子と Task Queue

task_queue は環境接尾辞で分離し、Identity に版かホスト名を入れて二重ポーリングを追跡。移行時は接続先も設定で切替えます。

リトライ方針(ワークフローとアクティビティ)

HTTP など非決定処理はアクティビティへ。ゲートの拒否401は非再試行、瞬断のみバックオフ。heartbeat_timeout 内で activity.heartbeat() に段階名を載せ、ハングと落ちを切り分けます。

シークレット注入と履歴境界

Bearer は起動時に os.environ へ。launchd の EnvironmentVariables 等で注入し、履歴引数に混ぜません。

ゲートウェイのループバック接続とトンネル接続

ループバック:ワーカーとゲートが同一 Mac なら http://127.0.0.1トンネルssh -L でローカルポートをゲートへ転送し、アクティビティは localhost のみ。本番は VPC 直結、トンネルは検証向け。

再現手順(七段)

  1. 名前空間・task_queue・Identity(版付き)を決める。
  2. ツール呼び出しをアクティビティ化し、start_to_close_timeoutheartbeat_timeout をゲート秒より長めに。
  3. ゲートのツールホワイトリストだけ呼ぶ。
  4. Bearer を環境変数で載せ、失敗は短い JSON のみ親へ。
  5. 同居ならループバック、跨ぐなら SSH トンネルを常駐化。
  6. openclaw doctor と意図的 heartbeat 停止で再配信を検収。
  7. 親は要約だけ UI/シグナルへ、全文ログはアクティビティ側へ。
{ "failure_class": "tool_denied|heartbeat_lost|gateway_401|timeout", "retryable": false, "correlation": "run_id", "human_line": "一行説明" }

締めと購入導線

表にキュー・Identity・秒・heartbeat を書けば再現性が揃います。テックブログで手順を固め、購入でノード階層を選び、料金ヘルプで契約後を確認(ログイン不要)。

要約:キューと Identity固定、ゲートホワイトリストheartbeat失敗 JSONのみ親へ。購入で専用 Mac を確保し、ホームと突合すると発注が早いです。