Melso Docs

実行タスク

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

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

イシューと実行タスク

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

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

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

トリガー元

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

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

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

実行の流れ

タスクは通常、次の状態を経ます。

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

ランタイムがオンラインなら、新しいタスクは通常すぐに始まります。キューに入ったあとでランタイムがオフラインになった場合、タスクは復帰までキューで待機します。2 時間を超えて取得されないタスクは失敗として終了します。

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

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

実行履歴の確認

イシューを開くと、実行ログでそのイシューが生んだすべてのタスクを確認できます。各行にはトリガー元、実行したエージェント、状態、時間が表示されます。

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

  • 実行記録を開き、エージェントのメッセージ、ツール呼び出し、エラー出力を確認する。
  • 後で発火する予定・キュー待ち・起動中・ローカルディレクトリ待ち・実行中のタスクを停止する。
  • 失敗またはキャンセルされたタスクをリトライする。

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

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

失敗と自動リトライ

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

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

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

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

失敗理由リファレンス

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

プラットフォーム側

原因意味対処
runtime_offline実行中にランタイムがオフラインになったランタイムを復旧してからリトライ。デーモンとランタイムを参照
queued_expiredランタイムに取得されないまま 2 時間を超えてキューで待機したランタイムがオンラインであることを確認してからリトライ
runtime_recoveryデーモンが再起動後、中断された実行を回収したそのままリトライ
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 から現在のイシューを再実行することもできます。

melso issue rerun <issue-id>

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

実行の完了とイシューの完了

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

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

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

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

状態意味タイムアウトと結果
deferred後で発火するようスケジュール済み予定時刻になると queued に入り、以降は下のルールに従う
queuedランタイムによる取得待ち2 時間取得されないと失敗として終了し、自動リトライされない
dispatchedランタイムが取得し、ツールを起動中5 分を超えてこの状態に留まると失敗として扱われる
waiting_local_directoryローカルディレクトリロックの解放待ち独自のタイムアウトはなし。ディレクトリが解放されると起動フローに戻る
runningAI コーディングツールが実行中固定の時間上限はなし。生存はランタイムのハートビート(15 秒ごと)で判定し、ハートビートを失ったランタイムは遅くとも約 3 分でオフラインと判定され、その上のタスクも失敗する

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

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

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

次のステップ