Multica Docs

作業

エージェントの 1 回の実行がどのようにキューに入り、実行され、停止・リトライされるかを説明します。

エージェントが動き出すたびに、Multica は作業(task)を 1 件作成します。作業には、この実行が何によってトリガーされ、どのエージェントに渡され、いまどこまで進んでいて、最終的に成功したかどうかが記録されます。

タスクと作業

タスクは 1 つの取り組みの目標、議論、担当者、最終ステータスを保持します。作業は、そのタスクに対するエージェントの 1 回の実行を記録します。

タスク作業
記録する内容継続的に進む 1 つの取り組みエージェントの 1 回の実行
続く期間何度でも議論・追記・再割り当てできるトリガーから、完了・失敗・キャンセルまで
数の関係1 つのタスクに複数の実行が積み重なる実行ごとに独立した記録が残る

そのため、同じタスクを順番に別のエージェントへ渡すことも、失敗のあとにもう一度実行することもできます。実行のたびに新しい作業が作成され、以前の記録が上書きされることはありません。

トリガー元

次の操作はいずれも実行をトリガーできます。

  • タスクをエージェントまたはスクワッドに割り当てる。
  • コメントでエージェントをメンションする。
  • チャットでエージェントにメッセージを送る。
  • オートパイロットがスケジュールまたは外部イベントで発火する。

入口によって渡されるコンテキストは異なりますが、実行の仕組みは同じです。Multica が作業を作成し、ランタイムがそれを取得して、エージェントに設定された AI コーディングツールを呼び出します。

実行の流れ

作業は通常、次の状態を経ます。

状態意味
deferred後で発火するようスケジュール済み。指定時刻になるとキューに入る
queuedランタイムによる取得を待っている
dispatchedランタイムが取得し、AI コーディングツールを起動中
waiting_local_directory対象のローカルディレクトリを別の実行が使用中で、ディレクトリロックの解放を待っている
runningAI コーディングツールが実行中
completedこの実行は正常に終了した
failed実行がエラーになったか中断された
cancelled実行が手動で停止された

ランタイムがオンラインなら、新しい作業は通常すぐに始まります。キューに入ったあとでランタイムがオフラインになった場合、作業は復帰までキューで待機します。待ち時間の長さ自体では失効しません。ハートビートを送り続けているランタイムは「いなくなった」のではなく「取り込み中」なので、その滞留分は必要なだけ待てます。キュー内の作業が失敗するのは、担当ランタイムが再接続猶予を超えて沈黙し、かつその作業自身も同じ時間だけキューで待った場合だけです。2 つ目の条件は「すでに休止中のマシンに割り当てたとき」のためのもので、その場合も作業は即座に失敗せず、マシンを復帰させるための猶予をまるまる 1 回分確保します。

トリガーの前の時点で対象ランタイムのオフラインが分かっている場合、一部の即時操作は、誰も取得できない作業を作成する代わりに、いまは実行できない旨をその場で表示します。

ハートビートが正常なランタイムは長時間の作業を実行できます。実行時間が長いという理由だけで、サーバーが実行を強制終了することはありません。プロセスが停滞しているかどうかは、ランタイムが実際のアクティビティに基づいて判断します。関連する設定は環境変数を参照してください。

実行履歴の確認

タスクが生んだ作業は、タスク右サイドバーの実行ログセクションにすべて一覧表示されます。専用のページやタブに移動する必要はありません。このセクションは既定で展開され、実行中のものが上部に固定され、終了したものは**過去の実行を表示 (N)**の下にまとまります。各行にはトリガー元、実行したエージェント、状態、時間が表示されます。見当たらない場合は、タスク上部のパネルボタンでサイドバーを開いてください。画面幅が狭いときは既定で閉じています。

ページを開いたままにしていれば、実行ログはリアルタイム接続経由で自動更新されます。新しい実行、状態の変化、エージェントのコメントは手動リロードなしで表示されます。

エージェントの作業中は、タスク上部にライブ表示(例:「Engineer が作業中」)も出ます。ホバーすると同じ実行中の行が表示され、ページを離れずに進捗を確認できます。

ここでは次の操作ができます。

  • 行のトランスクリプトを表示をクリックし、エージェントのメッセージ、ツール呼び出し、エラー出力を確認する。実行中の作業なら、ダイアログを開いている間も内容がリアルタイムに追記され、新しい順で並び替えられる。
  • 後で発火する予定・キュー待ち・起動中・ローカルディレクトリ待ち・実行中の作業を停止する。
  • 失敗またはキャンセルされた作業をリトライする。

タスク右サイドバーの実行ログ: 実行中の行と過去の実行

実行記録: 状態のタイムライン、エージェントの要約、個々のツール呼び出し

タスクの担当者やステータスを変更しても、すでに始まった実行は止まりません。中断したいときは、実行ログで該当する作業を停止してください。アクティブな作業がタスクと一緒にキャンセルされるのは、タスクを削除したときだけです。

失敗と自動リトライ

ランタイムの一時的なオフライン、デーモンの再起動、実行タイムアウト、AI コーディングツールのネットワーク中断といった一時的な障害は、自動リトライをトリガーできます。通常の作業はデフォルトで最大 2 回まで、ツールのネットワーク中断は最大 3 回まで実行されます。

エージェント自身が返したエラーは、通常は自動リトライされません。認証の失効、クォータ不足、設定ミス、モデルがリクエストを完了できない場合などは、まず原因を解消してから手動でリトライしてください。

オートパイロットの実行のみモードは、次のスケジュール実行と重ならないよう自動リトライしません。タスクを作成モードが生成するのはタスク由来の通常の作業なので、インフラ障害は上記のルールどおりリトライされます。どちらのモードも、最終結果はオートパイロットの実行履歴で確認できます。

タスク上に他のアクティブな作業がなく、実行を待つ新しいリトライもない場合、失敗によって in_progress のタスクは todo に戻ります。

失敗理由リファレンス

実行ログと使用量統計に表示される失敗理由は 2 つに分かれます。接頭辞のない理由コードはプラットフォームが記録するもの、agent_error.* は AI コーディングツール自身のエラーから分類されたものです。

プラットフォーム側

原因意味対処
runtime_offline実行中にランタイムがオフラインになったランタイムを復旧してからリトライ。デーモンとランタイムを参照
queued_expiredランタイムが再接続猶予を超えてハートビートを停止し、かつその作業も同じ時間キューで待っていたランタイムがオンラインであることを確認してからリトライ
runtime_recoveryデーモンが再起動後、中断された実行を回収したそのままリトライ
environment_prepare_failedデーモンがこの実行の実行環境(作業ディレクトリ、およびそこに書き込むローカルランタイム設定)を準備できなかった生のエラーでどの段階が失敗したかを確認し、そのマシンのディスク空き容量・権限・ディレクトリの使用状況、AI コーディングツールのローカル設定を点検
cancelled手動で停止されたか、アーカイブ・削除に伴ってキャンセルされた対処不要
timeoutデーモンに設定された実行時間の上限を超えたタスクの範囲を狭めるか、デーモンの agent_timeout を調整する
iteration_limit実行の反復回数の上限に達したタスクの範囲を狭める
agent_blockedエージェントが続行できないと自ら報告したエージェントがコメントで求めた情報を補う
api_invalid_requestプラットフォーム API が不正なリクエストを拒否したリトライし、繰り返し発生する場合は問題を報告する
codex_semantic_inactivityCodex が長時間有効な出力を出さず、停滞と判定されたリトライするか、Codex の停滞タイムアウトを調整する

ツール側(agent_error.*、接頭辞は省略)

原因意味対処
provider_auth_or_accessモデルプロバイダーの認証に失敗したか、アクセス権がない(401/403)その AI コーディングツールで再ログインするか、API キーを確認する
provider_quota_limitクォータまたは残高を使い切った(402)チャージするか、アカウントを切り替える
provider_capacity_or_rate_limitレート制限または容量不足(429/529)時間をおいてリトライ
provider_server_errorモデルプロバイダー側のサーバーエラー(5xx)時間をおいてリトライ
provider_networkモデルプロバイダーへのネットワーク障害自動でリトライされる。続く場合は実行マシンのネットワークを確認する
model_not_found_or_unavailableモデルが存在しないか、現在利用できないエージェント設定で利用可能なモデルを選び直す
context_overflowコンテキストがモデルのウィンドウを超えたタスクの範囲を狭めるか、入力を減らす
missing_configAPI キーなどの必須設定が不足しているエージェントの環境変数またはツールの設定を補う
runtime_missing_executableAI コーディングツールの実行ファイルが見つからないツールを再インストールする。AI コーディングツールのインストールを参照
runtime_version_unsupportedAI コーディングツールのバージョンが古すぎるツールをアップグレードする
process_failureツールのプロセスが異常終了した実行記録で原因を特定してからリトライ
empty_or_unparseable_outputツールが出力を返さなかったか、出力を解析できなかったリトライし、繰り返す場合はツールのインストールを確認する
agent_timeoutツールが長時間応答せず終了されたリトライするか、タスクの範囲を狭める
unknown分類できなかった失敗実行記録の元のエラーを確認する

手動リトライ

実行ログで行の再試行ボタンをクリックすると、当時その作業を実行したエージェントが再び呼び出されます。その後タスクの担当者が変わっていても、新しい担当者には切り替わりません。

リトライは、前回の実行がローカルディレクトリに書き込んだファイルをできる限り保持します。元のセッションがまだ安全で、同じランタイムが取得した場合は、前回のセッションも引き継ぎます。コンテキスト超過や不正なリクエストなど、セッションを汚染するエラーの場合は、元の作業ディレクトリの上で新しいセッションを開始します。元のディレクトリがすでに存在しない場合は、新しい作業ディレクトリを使います。

CLI から現在のタスクを再実行することもできます。

multica issue rerun <issue-id>

この方法は過去の特定の作業を指さないため、タスクの現在のエージェント担当者を使い、新しいセッションと作業ディレクトリから開始します。

実行の完了とタスクの完了

completed は、この 1 回の実行が正常に終了したことだけを表し、タスクの目標が達成されたことを保証するものではありません。結果を確認し、議論を続け、要件を追加し、もう一度エージェントをトリガーできます。

タスクが完了したかどうかは、実際の作業の進み具合とタスクのステータスで判断してください。

状態とタイムアウトの早見表

以下の数値はサーバーのデフォルト設定に対応しており、トラブルシューティング時の照合に使えます。

状態意味タイムアウトと結果
deferred後で発火するようスケジュール済み予定時刻になると queued に入り、以降は下のルールに従う
queuedランタイムによる取得待ちランタイムがハートビートを送り続けている限り待機し、さらにどの場合でもキュー投入から最低 1 回分の再接続猶予は確保される。両方の期間が過ぎたときにのみ失敗し、自動リトライはされない
dispatchedランタイムが取得し、ツールを起動中5 分を超えてこの状態に留まると失敗として扱われる
waiting_local_directoryローカルディレクトリロックの解放待ち独自のタイムアウトはなし。ディレクトリが解放されると起動フローに戻る
runningAI コーディングツールが実行中固定の時間上限はなし。生存はランタイムのハートビート(15 秒ごと)で判定し、ハートビートを失ったランタイムは遅くとも約 3 分でオフラインと判定され、その上の作業も失敗する

自動リトライは以下の一時的な障害のみを対象とし、タスクまたはチャットに紐づく作業にのみ適用されます(オートパイロットの実行のみモードを除く):

自動リトライされる失敗原因実行回数の上限
ランタイムのオフラインデフォルト 2 回(初回実行 + リトライ 1 回)
デーモン再起動後の回収デフォルト 2 回
プラットフォームが判定した実行タイムアウトデフォルト 2 回
Codex が長時間有効な出力を出さないデフォルト 2 回
スキルバンドルのダウンロード失敗デフォルト 2 回(この時点でエージェントのプロセスは未起動。ダウンロード済みのバンドルはローカルキャッシュから使われる)
ツールのネットワーク中断最大 3 回。最後の 1 回は約 5 秒遅らせて開始

その他の失敗原因(認証、クォータ、設定、モデルなど)は自動リトライされません。先に原因を解消してから手動でリトライしてください。

次のステップ