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 直結、トンネルは検証向け。
再現手順(七段)
- 名前空間・
task_queue・Identity(版付き)を決める。 - ツール呼び出しをアクティビティ化し、
start_to_close_timeoutとheartbeat_timeoutをゲート秒より長めに。 - ゲートのツールホワイトリストだけ呼ぶ。
- Bearer を環境変数で載せ、失敗は短い JSON のみ親へ。
- 同居ならループバック、跨ぐなら SSH トンネルを常駐化。
openclaw doctorと意図的 heartbeat 停止で再配信を検収。- 親は要約だけ UI/シグナルへ、全文ログはアクティビティ側へ。
{
"failure_class": "tool_denied|heartbeat_lost|gateway_401|timeout",
"retryable": false,
"correlation": "run_id",
"human_line": "一行説明"
}締めと購入導線
表にキュー・Identity・秒・heartbeat を書けば再現性が揃います。テックブログで手順を固め、購入でノード階層を選び、料金と ヘルプで契約後を確認(ログイン不要)。
要約:キューと Identity固定、ゲートホワイトリスト、heartbeat、失敗 JSONのみ親へ。購入で専用 Mac を確保し、ホームと突合すると発注が早いです。