OpenClaw Lobster活用ガイド:確実なワークフローを構築する
AIエージェントに複雑な作業を任せると、何度もやり取りが発生してトークンを消費しすぎたり、途中で意図しない動作をしないか不安になったりすることはありませんか?特に、人間による最終確認が必要なステップを含むワークフローを自動化するのは、意外と難しいものです。
Lobsterは、こうした課題を解決するために設計されました。複数のツール実行を、明示的な承認ポイントを持つ単一の確定的な操作として実行できるようにするワークフローシェルです。
Lobster
Section titled “Lobster”Lobsterは、OpenClawが複数のツールシーケンスを、明示的な承認チェックポイントを伴う単一の確定的な操作として実行できるようにするオーサリングレイヤーです。
Lobsterは、バックグラウンドで実行されるタスクの上位に位置します。もし古い ClawFlow という用語を見かけた場合は、同じタスク指向のランタイム領域に関する歴史的な名称として扱ってください。現在のオペレーター向けCLIインターフェースは openclaw tasks です。
Lobsterの紹介
Section titled “Lobsterの紹介”アシスタント自身を管理するためのツールを、アシスタント自身に作らせることができます。ワークフローを依頼すれば、30分後には1回の呼び出しで実行可能なCLIとパイプラインが完成します。Lobsterは、確定的なパイプライン、明示的な承認、そして再開可能なステート(状態)という、これまで欠けていたピースを提供します。
なぜLobsterなのか
Section titled “なぜLobsterなのか”現在、複雑なワークフローには多くのツール呼び出しのやり取りが必要です。呼び出しごとにトークンコストがかかり、LLMがすべてのステップをオーケストレーションしなければなりません。Lobsterは、そのオーケストレーションを型定義されたランタイムに移動します。
- 多数の呼び出しを1回に: OpenClawは1回のLobsterツール呼び出しを実行し、構造化された結果を受け取ります。
- 組み込みの承認機能: メールの送信やコメントの投稿などのサイドエフェクトが発生する場合、明示的に承認されるまでワークフローを一時停止します。
- 再開可能: 中断されたワークフローはトークンを返します。すべてを再実行することなく、承認して再開できます。
なぜプログラムではなくDSLなのか?
Section titled “なぜプログラムではなくDSLなのか?”Lobsterは意図的に小さく作られています。目標は「新しい言語」を作ることではなく、第一級の承認機能と再開トークンを備えた、予測可能でAIフレンドリーなパイプライン仕様を提供することです。
- 承認と再開が組み込み: 通常のプログラムでも人間に確認を求めることはできますが、独自のランタイムを構築しない限り、永続的なトークンを使って「一時停止して再開」することは困難です。
- 確定性と監査性: パイプラインはデータであるため、ログの記録、差分の確認、リプレイ、レビューが容易です。
- AI向けの制限されたインターフェース: 小さな文法とJSONによるパイプ処理により、「独創的な」コードパスが減り、バリデーションが現実的になります。
- 組み込みの安全ポリシー: タイムアウト、出力制限、サンドボックスチェック、許可リストなどは、各スクリプトではなくランタイムによって強制されます。
- プログラマブル: 各ステップで任意のCLIやスクリプトを呼び出せます。JS/TSを使用したい場合は、コードから
.lobsterファイルを生成することも可能です。
OpenClawはローカルの lobster CLIを tool mode で起動し、stdoutからJSONエンベロープを解析します。
パイプラインが承認のために一時停止した場合、ツールは resumeToken を返すので、後で続きから再開できます。
パターン:小さなCLI + JSONパイプ + 承認
Section titled “パターン:小さなCLI + JSONパイプ + 承認”JSONを出力する小さなコマンドを作成し、それらを単一のLobster呼び出しにチェーンします。(以下のコマンド名は例です。自身の環境に合わせて入れ替えてください。)
inbox list --jsoninbox categorize --jsoninbox apply --json{ "action": "run", "pipeline": "exec --json --shell 'inbox list --json' | exec --stdin json --shell 'inbox categorize --json' | exec --stdin json --shell 'inbox apply --json' | approve --preview-from-stdin --limit 5 --prompt 'Apply changes?'", "timeoutMs": 30000}パイプラインが承認を要求した場合は、トークンを使用して再開します。
{ "action": "resume", "token": "<resumeToken>", "approve": true}AIがワークフローをトリガーし、Lobsterがステップを実行します。承認ゲートにより、サイドエフェクトは明示的かつ監査可能な状態に保たれます。
例:入力アイテムをツール呼び出しにマッピングする:
gog.gmail.search --query 'newer_than:1d' \ | openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'JSON限定のLLMステップ (llm-task)
Section titled “JSON限定のLLMステップ (llm-task)”構造化されたLLMステップが必要なワークフローでは、オプションの llm-task プラグインツールを有効にして、Lobsterから呼び出します。これにより、モデルによる分類、要約、ドラフト作成を行いながら、ワークフローの確定性を維持できます。
ツールの有効化:
{ "plugins": { "entries": { "llm-task": { "enabled": true } } }, "agents": { "list": [ { "id": "main", "tools": { "allow": ["llm-task"] } } ] }}パイプラインでの使用:
openclaw.invoke --tool llm-task --action json --args-json '{ "prompt": "Given the input email, return intent and draft.", "thinking": "low", "input": { "subject": "Hello", "body": "Can you help?" }, "schema": { "type": "object", "properties": { "intent": { "type": "string" }, "draft": { "type": "string" } }, "required": ["intent", "draft"], "additionalProperties": false }}'詳細と設定オプションについては LLM Task を参照してください。
ワークフローファイル (.lobster)
Section titled “ワークフローファイル (.lobster)”Lobsterは、name, args, steps, env, condition, approval フィールドを持つYAML/JSONワークフローファイルを実行できます。OpenClawのツール呼び出しでは、pipeline にファイルパスを指定します。
name: inbox-triageargs: tag: default: "family"steps: - id: collect command: inbox list --json - id: categorize command: inbox categorize --json stdin: $collect.stdout - id: approve command: inbox apply --approve stdin: $categorize.stdout approval: required - id: execute command: inbox apply --execute stdin: $categorize.stdout condition: $approve.approved注意点:
stdin: $step.stdoutやstdin: $step.jsonは、前のステップの出力を渡します。condition(またはwhen)を使用して、$step.approvedに基づいてステップを制御できます。
Lobsterのインストール
Section titled “Lobsterのインストール”OpenClaw Gatewayを実行しているのと同じホストに Lobster CLIをインストールし(Lobsterリポジトリを参照)、lobster が PATH に通っていることを確認してください。
ツールの有効化
Section titled “ツールの有効化”Lobsterは オプション のプラグインツールです(デフォルトでは有効になっていません)。
推奨される設定(安全な追加設定):
{ "tools": { "alsoAllow": ["lobster"] }}またはエージェントごとの設定:
{ "agents": { "list": [ { "id": "main", "tools": { "alsoAllow": ["lobster"] } } ] }}制限の厳しい許可リストモードで実行する場合を除き、tools.allow: ["lobster"] の使用は避けてください。
注意:許可リストはオプションのプラグインに対してオプトイン方式です。許可リストにプラグインツール(lobster など)のみを指定した場合、OpenClawはコアツールを有効なまま保持します。コアツールを制限したい場合は、許可リストにそれらのコアツールやグループも含めてください。
例:メールの仕分け
Section titled “例:メールの仕分け”Lobsterを使用しない場合:
User: "Check my email and draft replies"→ openclaw calls gmail.list→ LLM summarizes→ User: "draft replies to #2 and #5"→ LLM drafts→ User: "send #2"→ openclaw calls gmail.send(repeat daily, no memory of what was triaged)Lobsterを使用する場合:
{ "action": "run", "pipeline": "email.triage --limit 20", "timeoutMs": 30000}返されるJSONエンベロープ(一部省略):
{ "ok": true, "status": "needs_approval", "output": [{ "summary": "5 need replies, 2 need action" }], "requiresApproval": { "type": "approval_request", "prompt": "Send 2 draft replies?", "items": [], "resumeToken": "..." }}ユーザーが承認して再開:
{ "action": "resume", "token": "<resumeToken>", "approve": true}単一のワークフロー。確定的。安全。
ツールのパラメータ
Section titled “ツールのパラメータ”ツールモードでパイプラインを実行します。
{ "action": "run", "pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage", "cwd": "workspace", "timeoutMs": 30000, "maxStdoutBytes": 512000}引数を指定してワークフローファイルを実行する場合:
{ "action": "run", "pipeline": "/path/to/inbox-triage.lobster", "argsJson": "{\"tag\":\"family\"}"}resume
Section titled “resume”承認後に中断されたワークフローを続行します。
{ "action": "resume", "token": "<resumeToken>", "approve": true}オプション入力
Section titled “オプション入力”cwd: パイプラインの相対的な作業ディレクトリ(現在のプロセスの作業ディレクトリ内である必要があります)。timeoutMs: サブプロセスがこの時間を超えた場合に強制終了します(デフォルト: 20000)。maxStdoutBytes: stdoutがこのサイズを超えた場合にサブプロセスを強制終了します(デフォルト: 512000)。argsJson:lobster run --args-jsonに渡されるJSON文字列(ワークフローファイルのみ)。
出力エンベロープ
Section titled “出力エンベロープ”Lobsterは、以下の3つのステータスのいずれかを持つJSONエンベロープを返します。
ok→ 正常に終了needs_approval→ 一時停止中。再開にはrequiresApproval.resumeTokenが必要cancelled→ 明示的に拒否またはキャンセルされた
ツールはこのエンベロープを content(整形されたJSON)と details(生のオブジェクト)の両方で表示します。
承認プロセス
Section titled “承認プロセス”requiresApproval が存在する場合、プロンプトを確認して以下を決定します。
approve: true→ 再開してサイドエフェクトを続行approve: false→ キャンセルしてワークフローを終了
approve --preview-from-stdin --limit N を使用すると、カスタムの jq やヒアドキュメントを使わずに、承認リクエストにJSONプレビューを添付できます。再開トークンはコンパクトになりました。Lobsterはワークフローの再開状態をステートディレクトリに保存し、小さなトークンキーを返します。
OpenProse
Section titled “OpenProse”OpenProseはLobsterと非常に相性が良いです。/prose を使用してマルチエージェントの下準備をオーケストレーションし、確定的な承認のためにLobsterパイプラインを実行します。ProseプログラムでLobsterが必要な場合は、tools.subagents.tools を介してサブエージェントに lobster ツールを許可してください。OpenProse を参照してください。
- ローカルサブプロセスのみ — プラグイン自体からネットワーク呼び出しは行いません。
- シークレットなし — LobsterはOAuthを管理しません。それを行うOpenClawツールを呼び出すだけです。
- サンドボックス対応 — ツールコンテキストがサンドボックス化されている場合は無効になります。
- 堅牢性 —
PATH上の固定された実行ファイル名(lobster)を使用し、タイムアウトと出力制限が強制されます。
トラブルシューティング
Section titled “トラブルシューティング”lobster subprocess timed out→timeoutMsを増やすか、長いパイプラインを分割してください。lobster output exceeded maxStdoutBytes→maxStdoutBytesを増やすか、出力サイズを小さくしてください。lobster returned invalid JSON→ パイプラインがツールモードで実行され、JSONのみを出力していることを確認してください。lobster failed (code …)→ ターミナルで同じパイプラインを実行し、stderrを確認してください。
ケーススタディ:コミュニティのワークフロー
Section titled “ケーススタディ:コミュニティのワークフロー”公開されている例として、3つのMarkdownボルト(個人用、パートナー用、共有用)を管理する「セカンドブレイン」CLIとLobsterパイプラインがあります。CLIは統計、インボックス一覧、古いスキャンのためのJSONを出力します。Lobsterはそれらのコマンドを weekly-review, inbox-triage, memory-consolidation, shared-task-sync といったワークフローに繋ぎ、それぞれに承認ゲートを設けています。AIは可能な場合に判断(分類)を行い、そうでない場合は確定的なルールにフォールバックします。
- スレッド: https://x.com/plattenschieber/status/2014508656335770033
- リポジトリ: https://github.com/bloomedai/brain-cli
- Cron vs Heartbeat — Lobsterワークフローのスケジューリング
- Automation Overview — すべての自動化メカニズム
- Tools Overview — 利用可能なすべてのエージェントツール
次のステップ
Section titled “次のステップ”- AI Setup Assistant で設定を始める
- LLM Task の詳細を確認する
- Automation Overview で自動化の全体像を把握する
OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。