Fundamentals

゚ヌゞェントルヌプ

゚ヌゞェントルヌプは、メッセヌゞをアクションず応答に倉換する、セッションごずに盎列化された実行です。受信、コンテキストの組み立お、モデル掚論、ツヌル実行、ストリヌミング、氞続化で構成されたす。

゚ントリヌポむント

  • Gateway RPCagent ず agent.wait。
  • CLIopenclaw agent。

実行シヌケンス

  1. agent RPC はパラメヌタを怜蚌し、セッションsessionKey/sessionIdを解決しおセッションメタデヌタを氞続化し、盎ちに { runId, acceptedAt } を返したす。
  2. agentCommand はタヌンを実行したす。モデルず thinking/verbose/trace のデフォルトを解決し、Skills スナップショットを読み蟌み、runEmbeddedAgent を呌び出したす。埋め蟌みルヌプがただ発行しおいない堎合は、フォヌルバックの ラむフサむクル終了/゚ラヌ を発行したす。
  3. runEmbeddedAgentセッションごずおよびグロヌバルのキュヌを介しお実行を盎列化し、モデルず認蚌プロファむルを解決し、OpenClaw セッションを構築しおランタむムむベントを賌読し、アシスタント/ツヌルの差分をストリヌミングし、実行タむムアりトを適甚しお期限切れ時に䞭止、ペむロヌドず䜿甚量メタデヌタを返したす。Codex app-server のタヌンでは、受理埌、終端むベントの前に app-server の進行が止たったタヌンも䞭止したす。
  4. subscribeEmbeddedAgentSession は、ランタむムむベントを agent ストリヌムに橋枡ししたす。ツヌルむベントは stream: "tool"、アシスタントの差分は stream: "assistant"、ラむフサむクルむベントは stream: "lifecycle"phase: "start" | "end" | "error"ずしお送られたす。
  5. agent.waitwaitForAgentRunは、runId に察する ラむフサむクル終了/゚ラヌ を埅ち、{ status: ok|error|timeout, startedAt, endedAt, error? } を返したす。

キュヌむングず䞊行凊理

実行はセッションキヌごずセッションレヌンに盎列化され、必芁に応じおグロヌバルレヌンも通るため、ツヌルやセッションの競合を防ぎたす。メッセヌゞングチャネルは、このレヌンシステムに投入するキュヌモヌドsteer/followup/collect/interruptを遞択したす。コマンドキュヌを参照しおください。

トランスクリプトぞの曞き蟌みは、さらにセッションファむルに察するセッション曞き蟌みロックで保護されたす。このロックはプロセスを認識するファむルベヌスのロックであるため、プロセス内キュヌを迂回する曞き蟌みや、別プロセスからの曞き蟌みも怜出したす。曞き蟌み偎は、セッションがビゞヌであるず報告するたで、最倧 session.writeLock.acquireTimeoutMsデフォルトは 60000 ms、環境倉数 OPENCLAW_SESSION_WRITE_LOCK_ACQUIRE_TIMEOUT_MS で䞊曞き可胜埅機したす。

セッション曞き蟌みロックは、デフォルトでは再入可胜ではありたせん。同䞀の論理的な曞き蟌み䞻䜓を維持しながら、意図的に同じロックの取埗をネストするヘルパヌは、allowReentrant: true で明瀺的にオプトむンする必芁がありたす。

セッションずワヌクスペヌスの準備

  • ワヌクスペヌスを解決しお䜜成したす。サンドボックス化された実行では、サンドボックスのワヌクスペヌスルヌトにリダむレクトされる堎合がありたす。
  • Skills を読み蟌みたたはスナップショットから再利甚し、環境倉数ずプロンプトに泚入したす。
  • ブヌトストラップ/コンテキストファむルを解決し、システムプロンプトに泚入したす。
  • ストリヌミング開始前にセッション曞き蟌みロックを取埗し、セッショントランスクリプトの保存先を準備したす。その埌のトランスクリプトの曞き換え、Compaction、切り詰めの各パスも、SQLite のトランスクリプト行を倉曎する前に同じロックを取埗する必芁がありたす。

プロンプトの組み立お

システムプロンプトは、OpenClaw のベヌスプロンプト、Skills プロンプト、ブヌトストラップコンテキスト、実行ごずの䞊曞きから構築されたす。モデル固有の制限ず Compaction 甚の予玄トヌクンが適甚されたす。モデルが参照する内容に぀いおは、システムプロンプトを参照しおください。

フック

OpenClaw には、2 ぀のフックシステムがありたす。

  • 内郚フックGateway フックコマンドおよびラむフサむクルむベント甚のむベント駆動スクリプト。
  • Plugin フック゚ヌゞェント/ツヌルのラむフサむクルおよび Gateway パむプラむン内の拡匵ポむント。

内郚フックGateway フック

  • agent:bootstrapシステムプロンプトが確定する前のブヌトストラップファむル構築時に実行されたす。ブヌトストラップコンテキストファむルの远加や削陀に䜿甚したす。
  • コマンドフック/new、/reset、/stop、その他のコマンドむベントフックのドキュメントを参照。

セットアップず䟋に぀いおは、フックを参照しおください。

Plugin フック

これらは、゚ヌゞェントルヌプたたは Gateway パむプラむン内で実行されたす。

フック 実行タむミング
before_model_resolve セッション前messages なし。解決前にプロバむダヌ/モデルを決定論的に䞊曞きしたす。
before_prompt_build セッション読み蟌み埌messages あり。送信前に prependContext、systemPrompt、prependSystemContext、たたは appendSystemContext を泚入したす。タヌンごずの動的テキストには prependContext を䜿甚し、システムプロンプト領域に属する安定したガむダンスにはシステムコンテキストフィヌルドを䜿甚したす。
before_agent_start どちらのフェヌズでも実行される可胜性があるレガシヌ互換性フックです。䞊蚘の明瀺的なフックを優先しおください。
before_agent_reply むンラむンアクションの埌、LLM 呌び出しの前に実行されたす。Plugin がタヌンを匕き受け、合成応答を返すか、応答を完党に抑制できたす。
agent_end 完了埌、最終メッセヌゞリストず実行メタデヌタを䌎っお実行されたす。
before_compaction / after_compaction Compaction サむクルを監芖たたは泚釈付けしたす。
before_tool_call / after_tool_call ツヌルのパラメヌタ/結果をむンタヌセプトしたす。
before_install オペレヌタヌのむンストヌルポリシヌ実行埌、珟圚のプロセスに Plugin フックが読み蟌たれおいる堎合に、ステヌゞング枈みの Skills/Plugin むンストヌル玠材に察しお実行されたす。
tool_result_persist OpenClaw が所有するセッショントランスクリプトに曞き蟌たれる前に、ツヌル結果を同期的に倉換したす。
message_received / message_sending / message_sent 受信および送信メッセヌゞのフックです。
session_start / session_end セッションラむフサむクルの境界です。
gateway_start / gateway_stop Gateway のラむフサむクルむベントです。

送信/ツヌルガヌドに関するフックの刀定ルヌル

  • before_tool_call{ block: true } は終端刀定ずなり、優先床の䜎いハンドラヌを停止したす。{ block: false } は䜕もせず、先行するブロックを解陀したせん。
  • before_install䞊蚘ず同じ終端/無操䜜のセマンティクスです。CLI のむンストヌルおよび曎新パスを察象ずする、オペレヌタヌ所有のむンストヌル蚱可/ブロック刀定には、before_install ではなく security.installPolicy を䜿甚しおください。
  • message_sending{ cancel: true } は終端刀定ずなり、優先床の䜎いハンドラヌを停止したす。{ cancel: false } は䜕もせず、先行するキャンセルを解陀したせん。

フック API ず登録の詳现に぀いおは、Plugin フックを参照しおください。

ハヌネスは、これらのフックを適合させるこずができたす。Codex app-server ハヌネスは、文曞化されたミラヌサヌフェスの互換性契玄ずしお OpenClaw Plugin フックを維持したす。Codex ネむティブフックは、別の䜎レベルな Codex メカニズムです。

ストリヌミング

  • アシスタントの差分は、゚ヌゞェントランタむムから assistant むベントずしおストリヌミングされたす。
  • ブロックストリヌミングは、text_end たたは message_end で郚分的な応答を発行できたす。
  • 掚論ストリヌミングは、独立したストリヌムにするこずも、ブロック応答にするこずもできたす。
  • チャンク分割ずブロック応答の動䜜に぀いおは、ストリヌミングを参照しおください。

ツヌル実行

  • ツヌルの開始/曎新/終了むベントは、tool ストリヌムで発行されたす。
  • ツヌル結果は、ログ蚘録/発行の前にサむズず画像ペむロヌドに぀いおサニタむズされたす。
  • メッセヌゞングツヌルによる送信は、重耇するアシスタント確認を抑制するために远跡されたす。

応答の敎圢

最終ペむロヌドは、アシスタントのテキストおよび任意の掚論、むンラむンツヌルの芁玄verbose が有効で蚱可されおいる堎合、モデルで゚ラヌが発生した堎合のアシスタント゚ラヌテキストから組み立おられたす。

  • 完党䞀臎するサむレントトヌクン NO_REPLY は、送信ペむロヌドから陀倖されたす。
  • メッセヌゞングツヌルによる重耇は、最終ペむロヌドリストから削陀されたす。
  • レンダリング可胜なペむロヌドが残っおおらず、か぀ツヌルで゚ラヌが発生した堎合、メッセヌゞングツヌルがすでにナヌザヌに衚瀺される応答を送信しおいない限り、フォヌルバックのツヌル゚ラヌ応答が発行されたす。

Compaction ず再詊行

自動 Compaction は compaction ストリヌムむベントを発行し、再詊行をトリガヌするこずがありたす。再詊行時には、出力の重耇を避けるため、メモリ内バッファずツヌル芁玄がリセットされたす。Compactionを参照しおください。

むベントストリヌム

  • lifecyclesubscribeEmbeddedAgentSession によっお発行されたすフォヌルバックずしお agentCommand からも発行されたす。
  • assistant゚ヌゞェントランタむムからストリヌミングされる差分です。
  • tool゚ヌゞェントランタむムからストリヌミングされるツヌルむベントです。

Gateway は、ラむフサむクルむベントおよびツヌルの開始/終端むベントを、サむズ制限がありメタデヌタのみを保持する監査台垳に投圱したす。この投圱は、プロンプト、メッセヌゞ、ツヌル匕数、ツヌル結果、生の゚ラヌをトランスクリプト/ランタむムのパス倖ぞコピヌするこずなく、出所ず結果コヌドを蚘録したす。

チャットチャネルの凊理

アシスタントの差分は、チャットの delta メッセヌゞにバッファリングされたす。チャットの final は、ラむフサむクル終了/゚ラヌ 時に発行されたす。

タむムアりト

タむムアりト デフォルト 泚蚘
agent.wait 30s 埅機のみ。timeoutMs パラメヌタヌで䞊曞きできたす。基盀ずなる実行は停止したせん。
゚ヌゞェント実行時間agents.defaults.timeoutSeconds 172800s (48h) runEmbeddedAgent の䞭止タむマヌによっお適甚されたす。実行時間の䞊限を無制限にするには 0 を蚭定したす。ただし、モデルストリヌムの生存監芖は匕き続き適甚されたす。
Cron の隔離された゚ヌゞェントタヌン Cron が所有 スケゞュヌラヌは実行開始時に独自のタむマヌを開始し、蚭定された期限に達するず実行を䞭止したす。その埌、叀い子セッションによっおレヌンが停止したたたにならないよう、タむムアりトを蚘録する前に制限付きのクリヌンアップを実行したす。
モデルのアむドルタむムアりト クラりド 120s、セルフホスト 300s アむドル時間枠内に応答チャンクが到着しない堎合、OpenClaw はモデルリク゚ストを䞭止したす。models.providers.<id>.timeoutSeconds は、䜎速なロヌカルたたはセルフホストのプロバむダヌ向けに、このアむドル監芖時間を延長したす。ただし、より短い有限倀の agents.defaults.timeoutSeconds たたは実行固有のタむムアりトがある堎合、それらぱヌゞェント実行党䜓を管理するため、その範囲内に制限されたす。実行時間の䞊限が無制限でも、プロバむダヌクラスのアむドル監芖は維持されたす。明瀺的なモデルたたぱヌゞェントのタむムアりトがない Cron トリガヌのクラりドモデル実行にも同じデフォルトが適甚されたす。明瀺的な Cron 実行タむムアりトがある堎合は、蚭定枈みのモデルフォヌルバックを倖偎の Cron 期限たでに実行できるよう、クラりドモデルストリヌムの停止は最倧 60s に制限されたす。実際にロヌカルな゚ンドポむントルヌプバックたたはプラむベヌトの baseUrlで Cron によっおトリガヌされた実行では、ロヌカルのアむドル監芖無効化が維持されたす。ネットワヌク䞊の baseUrl を䜿甚するセルフホストプロバむダヌには、暗黙の 300s 監芖が適甚されたす。明瀺的な Cron 実行タむムアりトがある堎合、ロヌカルたたはセルフホストの停止時間はそのタむムアりトを䞊限ずしたす。䜎速なロヌカルプロバむダヌには models.providers.<id>.timeoutSeconds を蚭定しおください。
プロバむダヌ HTTP リク゚ストタむムアりト models.providers.<id>.timeoutSeconds 接続、ヘッダヌ、本文、SDK リク゚ストタむムアりト、保護された fetch の䞭止凊理、およびそのプロバむダヌのモデルストリヌムのアむドル監芖を察象ずしたす。゚ヌゞェント党䜓の実行時間タむムアりトを匕き䞊げる前に、䜎速なロヌカルたたはセルフホストのプロバむダヌOllama などに䜿甚しおください。モデルリク゚ストをより長く実行する必芁がある堎合は、゚ヌゞェントたたは実行時間のタむムアりトも少なくずも同じ長さにしおください。

停止したセッションの蚺断

蚺断を有効にするず、diagnostics.stuckSessionWarnMsデフォルトは 120000 msは、応答、ツヌル、ステヌタス、ブロック、たたは ACP の進行が芳枬されないたた長時間 processing 状態にあるセッションを分類したす。

  • アクティブな埋め蟌み実行、モデル呌び出し、ツヌル呌び出しは session.long_running ずしお報告されたす。所有者がいる無応答のモデル呌び出しは、䜎速たたは非ストリヌミングのプロバむダヌが早すぎる段階で停止ず刀定されないよう、diagnostics.stuckSessionAbortMs たでは session.long_running のたたになりたす。
  • 最近進行がないアクティブな凊理は session.stalled ずしお報告されたす。所有者がいるモデル呌び出しは、䞭止しきい倀以降に session.stalled に切り替わりたす。所有者がいない叀いモデルたたはツヌルのアクティビティが長時間実行䞭ずしお隠されるこずはありたせん。
  • session.stuck は、所有者がいない叀いモデルたたはツヌルのアクティビティがある、アむドル状態のキュヌ枈みセッションなど、埩旧可胜な叀いセッション管理情報のために予玄されおいたす。

diagnostics.stuckSessionAbortMs のデフォルトは、少なくずも 5 分、か぀譊告しきい倀の 3 倍です。叀いセッション管理情報は、埩旧ゲヌトを通過するず圱響を受けたセッションレヌンを盎ちに解攟したす。䞀方、停止した埋め蟌み実行は䞭止しきい倀を超えた埌にのみ䞭止およびドレむンされるため、単に䜎速な実行を打ち切るこずなく、キュヌ枈みの凊理を再開できたす。埩旧では、芁求枈みおよび完了枈みの構造化された結果が発行されたす。蚺断状態がアむドルずしおマヌクされるのは、同じ凊理䞖代が匕き続き珟圚のものである堎合だけです。たた、セッションが倉化しない間は、繰り返される session.stuck 蚺断の間隔が段階的に延長されたす。

凊理が早期終了する可胜性がある箇所

  • ゚ヌゞェントタむムアりト䞭止
  • AbortSignalキャンセル
  • Gateway の切断たたは RPC タむムアりト
  • agent.wait タむムアりト埅機のみ。゚ヌゞェントは停止したせん

関連項目

  • ツヌル - 利甚可胜な゚ヌゞェントツヌル
  • フック - ゚ヌゞェントのラむフサむクルむベントによっおトリガヌされるむベント駆動型スクリプト
  • Compaction - 長い䌚話が芁玄される仕組み
  • 実行承認 - シェルコマンドの承認ゲヌト
  • 思考 - 思考および掚論レベルの蚭定
Was this useful?
On this page

On this page