SOP の実行方法
ランタイム契約
- SOP 定義は、
<shared>/sops/<sop_name>/SOP.tomlと任意のSOP.mdから読み込まれます。 - CLI
zeroclaw sopは現在、定義のみを管理します:list、validate、show。 - SOP の実行は、ライブイベントのファンイン(認証済みWebhook、MQTT、ファイルシステム、または AMQP)によって、
cronトリガー用のデーモンの定期的なSOPメンテナンスタックによって、またはエージェント内ツールsop_executeによって開始されます。残りのトリガータイプ(peripheral と calendar)は定義・照合されますが、ライブイベントソースにはまだ接続されていません(SOPファンインを参照)。 - 実行の進行は、ツール
sop_status、sop_approve、sop_advanceを使用します。 - 実行状態は、デフォルトではプロセスローカルです。
sop.persist_runs = trueを指定すると、デフォルトの SQLite バックエンドの初期化に成功した場合、実行状態が<data_dir>/sop/runs.dbに保存され、再起動後にアクティブな実行が復元されます。初期化に失敗した場合は警告がログに記録され、プロセスローカルメモリにフォールバックします。 - SOP監査レコードは、設定されたメモリバックエンドのカテゴリ
sop下に永続化されます。
実行状態と監査履歴は独立したサーフェスです。ライフサイクルの所有権、キャンセル、および再起動のセマンティクスについては、Background work lifecycle を参照してください。
イベントフロー
graph LR
MQTT[MQTT listener] -->|topic match| Dispatch
TOOL[sop_execute tool] -->|manual| Dispatch
WH[Webhook request] -->|authenticated HTTP fan-in| Dispatch
CRON[Cron trigger] -->|daemon maintenance tick| Dispatch
GPIO[Peripheral trigger] -.->|defined, unwired| Dispatch
Dispatch --> Engine[SOP Engine]
Engine --> Run[SOP Run]
Run --> Action{Action}
Action -->|ExecuteStep| Agent[Agent Loop]
Action -->|WaitApproval| Human[Operator]
Human -->|sop_approve| Run
はじめに
-
sops_dirはデフォルトでは未設定のため、実行時の SOP の読み込みは初期状態で無効です。ゲートウェイ、zerocode、またはzeroclaw config setを通じてsops_dirを設定すると有効になります。相対値はインストールルート(config.tomlを含むディレクトリ)を基準に解決されるため、ドキュメントに記載されているshared/sopsは、SOP 作成者が書き込むのと同じディレクトリである<install>/shared/sopsになります。絶対値または~-プレフィックス付きの値はそのまま使用されます。""に戻す(または削除する)と、実行時の SOP の読み込みは再び無効になります。CLI はオフライン検査のために引き続き<install>/shared/sopsにフォールバックします。以前のビルドから移行しますか? 相対
sops_dir値は、skill-bundlesディレクトリと同じ方法で、インストールルートを基準に解決されるようになりました。以前のビルドでは、同じ設定に対して 2 つ の異なるルートが存在していたため、アップグレードする前に両方を確認してください:以前のビルドで表面化する Root はそれを使用しました sops_dir = "shared/sops"の配置先ランタイムでの読み込みとローカルの zeroclaw sopCLIdata_dir<data_dir>/shared/sopsWeb および RPC SOP の作成 <install>/shared<install>/shared/shared/sops(重複したセグメント)現在はどちらも、単一の正規の
<install>/shared/sopsに解決されます。両方の古い場所を調べ、見つかった定義を<install>/shared/sopsに移動してください。いずれかのツリーに残された定義は、アップグレード後に見えなくなります。古い Web または RPC サーフェス経由で作成された定義は、ドキュメントで説明されていた場所ではなく、二重化された writer パスに置かれているため、最も見落としやすいものです。その他の相対値も同様に移動します。
sops_dir = "my-sops"は、ランタイムおよび CLI では<data_dir>/my-sopsから、Web および RPC での作成では<install>/shared/my-sopsから、<install>/my-sopsに移動します。絶対値および~-で始まる値は影響を受けません。未設定の場合も変更されます。オフライン CLI フォールバックは、以前は
<data_dir>/sopsをスキャンしていましたが、現在は<install>/shared/sopsをスキャンします。zeroclaw sop listは新しい場所を読み取るため、アップグレード後に一覧が空の場合は、定義が古いディレクトリツリーのいずれかに残っていることを意味します。 -
例えば、SOPディレクトリを作成します:
~/.zeroclaw/shared/sops/deploy-prod/SOP.toml ~/.zeroclaw/shared/sops/deploy-prod/SOP.md -
定義を検証して検査します:
sh
zeroclaw sop list zeroclaw sop validate zeroclaw sop show deploy-prod -
トリガーは構成されたイベントソースを経由して実行されるか、
sop_executeでエージェントターンから手動で実行されます。
トリガーのルーティングと認証の詳細については、SOP Fan-Inを参照してください。