Skip to main content
Skip to content

動的ワークフロー

GitHub Copilotを使用して、決定論的な処理、エージェント、ツール、API 呼び出し、ユーザーとのやり取りを必要に応じて組み合わせながら、複雑なタスクの処理をオーケストレーションします。

メモ

この機能はパブリック プレビュープレビューで、変更される可能性があります。

この記事では、動的ワークフローとは何か、およびどのようなことができるのかについて説明します。 使用方法の詳細については、 動的ワークフローの使用 を参照してください。

動的ワークフローについて

動的ワークフローは、タスクの実行方法を定義するプログラムです。自動化された手順と 1 つ以上のエージェントの作業を組み合わせることができます。 ステップは、並行して、または両方の組み合わせとして、1 つずつ実行できます。

動的ワークフローは、複雑な複数ステップのタスクや、毎回実行される決定論的な一連のアクションで繰り返すことができるタスクに特に役立ちます。 たとえば、動的ワークフローを使用して、ログとテレメトリを収集し、独立したエージェントを割り当ててさまざまなシステムを分析し、その構造化された結果をタイムラインと根本原因レポートに組み合わせることによって、サービス中断インシデントを調査できます。

動的ワークフローでは、次のことができます。

  • コマンドを実行し、ツールを使用し、または他のサービスを呼び出します。
  • 目標をタスクに分割し、独立したタスクを並列で実行します。
  • あるステージから次のステージに結果を引き継ぎます。
  • サブエージェントが互いの結果を確認します。
  • 結果を 1 つの回答にまとめる。
  • 使用しているアプリケーションでサポートされている場合は、入力を求めます。
  • 準備ができたら、結果を確認して実行を再開できるように、チェックポイントで一時停止します。

すべてはコードで定義されています:手順、いつエージェントを関与させるか、そしてその結果をどう使うか。 エージェントは、分析または判断が必要な部分を処理します。

ワークフローは、後の手順で結果を使用できるように、指定した形式で結果を返すようにエージェントに依頼できます。 Copilot は、必要に応じて、エージェントに形式を修正するよう依頼できます。

動的ワークフローは、 Copilot 拡張機能で定義されます。 次のいずれかです:

  • 執筆者Copilot。 タスクと、ワークフローが従うべきプロセスを説明してください。
  • あなたが作成しました。 Copilotの組み込みの作成ガイダンスを使用して、拡張機能を自分で記述できます。
  • 自分と共有します。 拡張機能が読み込まれると、その動的ワークフローを使用できるようになります。

動的ワークフローを使用するには、自然言語で Copilot に名前で実行するように依頼できます。 例えば次が挙げられます。

Copilot prompt
Run the java-security-review dynamic workflow on the java files in the current directory.

プロンプトから動的ワークフローを開始すると、 Copilot バックグラウンドで実行され、完了するとレポートが返されます。 セッションの実行中は、セッションで作業を続けることができます。

重要

チャット エージェントが動的ワークフローを作成または実行するのは、動的ワークフローを明示的に要求したとき、またはスキルまたはスラッシュ コマンドによって指示された場合のみです。

Copilot CLIでは、ターミナルでcopilot workflow run WORKFLOW-NAMEを使用して、既存の動的ワークフローを直接実行することもできます。 対話型チャットを開いたり、エージェントにそれを開始するよう依頼したりする必要はありません。 ワークフローでは、引き続きエージェントを使用してその手順を実行できます。

コマンドは、シェルに制御を返す前に、実行が完了または停止するのを待機します。 この方法を使用して、特定の入力でワークフローを繰り返すか、結果を保存するか、スクリプトまたは CI/CD パイプラインから実行します。 詳細については、「動的ワークフローの使用」を参照してください。

拡張機能のスラッシュ コマンド、カスタム ツール、プログラム用フックを通じて、または GitHub Copilot SDK を使用する他のコードから、ワークフローを開始することもできます。 Copilot app では、拡張機能でワークフローを開始するためのコントロールを備えたキャンバス(カスタム インターフェイス)を提供できます。 これらの代替手段は、使用している拡張機能とクライアントによって異なります。

キャンバスの詳細については、「GitHub Copilot アプリ でのキャンバス拡張機能の操作」を参照してください。

利用可能な動的ワークフローを確認するには、Copilot に尋ねるだけです:

Copilot prompt
What dynamic workflows are available?

動的ワークフローとオートパイロットとフリートの違い

オートパイロット モードと /fleet コマンドを既に使用している場合、動的ワークフローは同じ種類のように見える場合があります。 主な違いは、使用されるエージェントの数だけでなく、作業の計画と制御方法です。

  • Autopilot は、自律性を重視したモードです。 これにより、 Copilot 各ステップの後に入力を取得するために一時停止することなく、タスクの作業を続けることができます。
  • /fleet は、Copilot がサブエージェントに作業を委任し、その作業を並行して調整することを促します。 Copilot は、毎回タスクを分割する方法を決定します。
  • 動的ワークフローは 、コードで定義されたプロセスを実行します。 ワークフローの作成者は、ステップ、条件、およびハンドオフを定義します。 このプロセスでは、1 つまたは複数のエージェントを使用して、作業を順番に、並列で、または両方で実行できます。

ワークフローを再利用することは、そのステップとルールを再利用することを意味します。 これらの手順のパスは、入力または結果によって変更される可能性があり、エージェントは実行ごとに異なる回答を提供できます。

特徴オートパイロットFleet動的ワークフロー
主な目的
Copilot自律的に作業し続けるサブエージェントに作業を委任する Copilot を奨励するコードで定義されたプロセスを実行する
プロセスを定義するユーザー
Copilot は、次の手順を決定します
Copilot は、作業を分割して調整する方法を決定しますワークフロー作成者は、ステップ、条件、およびハンドオフを定義します
作業の実行方法タスクと Copilotの決定によって異なります独立した作業を並列で委任できる1つまたは複数のエージェントを使用して、順番に、並列に、またはその両方で実行できます

ワークフローの実行を制御する方法について詳しくは、「動的ワークフローの制限」および「実行の監視、停止、一時停止、再開」を参照してください。

動的ワークフローを使用するタイミング

再利用できるプロセスを定義する場合、または 1 つのタスクに明確なステージ、チェック、または制限が必要な場合は、動的ワークフローを使用します。 適切な候補は次のとおりです。

  • リリース チェックを実行し、1 つのエージェントにエラーの評価を求め、再開する前に結果を確認するために一時停止します。
  • プル要求で多数の変更されたファイルを並列で確認する。
  • コードを使用してマージされたプル要求の未解決のレビュー コメントを検索し、コメントがまだ重要かどうかを 2 つのモデルに尋ねます。 ワークフローのコードは、双方が一致した場合にのみ検出結果を報告します。
  • パターンの大規模なコードベース (たとえば、削除する API の不足テストや使用状況) を、多数のディレクトリに一度にスイープします。
  • 変更を調査し、その結果から実装を計画し、変更を行います。
  • 後で一時停止して再開したい可能性がある、コストの高い可能性がある長い実行を開始します。

簡単な回答や簡単な変更を行う場合は、通常、標準チャット モードの通常のプロンプトで十分です。

動的ワークフローのアクセス許可

動的ワークフローのサブエージェントは、CLI のアクセス許可システムを使用し、それらを開始したセッションのアクセス許可を継承します。 セッションで既に許可されているものは、動的ワークフローのサブエージェントに適用されます。

ワークフローのサブエージェントの 1 つが、まだ許可されていない操作を行おうとすると、その要求は対話型 CLI セッションで通常のアクセス許可プロンプトとして表示されます。 メインエージェントの場合と同じように、その画面で承認します。 承認が必要なサブエージェントは、あなたが答えるまで待つだけです。

1 つのサブエージェントがアクセス許可を求め、そのセッション中の利用を許可した場合、その許可は同じアクセス許可を必要とするすべてのサブエージェントに適用されます。

copilot workflow runを使用する場合、このコマンドはアクセス許可の承認プロンプトを表示しません。 実行を開始する前に、ワークフローのエージェントに必要なアクセス許可を付与します。 「動的ワークフローの使用」を参照してください。

拡張機能は、これらの許可を求めるプロンプトを介さずに、独自のコードを直接実行することもできます。

動的ワークフローの作成

対話型セッションで、Copilot にそのように依頼することで、動的ワークフローを作成できます。 ワークフロー Copilot 実行する内容を伝えます。

既定では、 Copilot は現在のセッションの拡張機能を作成します。 代わりに、個人用またはプロジェクト用の拡張機能を作成するよう依頼することも、Copilot の組み込みの作成ガイドを使って拡張機能を自分で作成することもできます。

詳細については、「動的ワークフローの使用」を参照してください。

動的ワークフローの改訂

通常、動的ワークフローを初めて使用するときは、限られたスコープで実行してテストします。 たとえば、複数ファイルを処理するように設計された動的ワークフローでは、まずは 2~3 個のファイルだけでワークフローを実行するよう Copilot に指示することがあります。 その後、結果を評価できます。 必要に応じて、その後、再度実行する前に、Copilot にワークフローを修正するよう依頼できます。

自然言語要求を使用して、1 回の実行の制限をオーバーライドするのではなく、ワークフローの保存された定義を変更する Copilot を取得します。 例えば次が挙げられます。

Copilot prompt
Update the check-python-style dynamic workflow to use no more than 10 subagents in total.

リビジョンは、セッション、個人用拡張機能ディレクトリ、またはプロジェクト リポジトリに保存されているかどうかにかかわらず、動的ワークフローの拡張機能に保存されます。 新規の実行では、更新された拡張機能が読み込まれた後、改訂版が使用されます。 これは、一時停止中の実行で保存済みの結果を上書きしません。

プロジェクトのリポジトリで共有した動的ワークフローを変更する場合、そのプロジェクトで作業しているユーザーは、変更されたバージョンを使用する前に、リポジトリの更新バージョンをプルしてから拡張機能を再読み込みする必要があります。

動的ワークフローの再利用と共有

既定では、作成者 Copilot ワークフローのスコープは現在のセッションになります。 拡張機能を個人用拡張機能ディレクトリにコピーしてセッション間で使用したり、リポジトリの拡張機能ディレクトリにコピーして、そのプロジェクトで作業しているユーザーと共有したりできます。 これにより、元のセッションの実行履歴や保存された進行状況ではなく、定義が共有されます。 詳細については、「動的ワークフローの使用」を参照してください。

動的ワークフローをより広く共有するには、プラグインとしてパッケージ化し、使用しているプラグイン管理システムを使って配布できます。 詳細については、「用のプラグインを作成する GitHub Copilot CLI」を参照してください。

動的ワークフローの制限

動的ワークフローには、次の制限を設定できます。

  • 同時にアクティブにできる、ワークフローが所有するエージェントの最大数。

  • 実行の過程で、合計で起動できるワークフロー所有のエージェントの最大数。

  • アクティブな最大実行時間 (一時停止前に使用された時間を含む)。 実行の一時停止中の時間は計測されません。

  • ワークフローのエージェントとそのサブエージェントが使用できる AI credits のおおよその最大数。

    メモ

    Copilot は、ワークフローのエージェントによって使用されるクレジットを追跡し、合計が上限に達すると新しい作業を停止します。 使用状況は発生した後に報告されるため、既に進行中の作業は上限を超えた合計を取ることができます。 これは、ハード天井ではなく、おおよその最大値です。

制限は、次の 3 つの場所で定義できます。

  • プロンプトで次の操作を行います。 動的ワークフローの実行に使用するプロンプト内で、自然言語の制限を指定します。 例えば次が挙げられます。

    Use the architecture-research dynamic workflow on this repo, with a timeout of 1 hour.
    
  • ワークフロー コードでは: 動的ワークフローを作成するときに、必要に応じて、その動的ワークフローの実行時に使用する制限を定義できます。

  • **個人設定では:**Copilot のデフォルトの制限を個人設定で設定できます。 これらは、プロンプトまたはワークフロー コードで同じ種類の制限が指定されていない場合に、実行するすべての動的ワークフローに適用されます。

Copilot CLIでは、/settings コマンドで次のキーを使用して、動的ワークフローの個人用の既定の制限を構成できます。

  • workflows.defaultLimits.maxConcurrentSubagents
  • workflows.defaultLimits.maxTotalSubagents
  • workflows.defaultLimits.timeoutSeconds (秒単位で指定する必要があります)
  • workflows.defaultLimits.maxAiCredits

例えば次が挙げられます。

/settings workflows.defaultLimits.timeoutSeconds 3600

制限は、上記の順に優先されます。 プロンプトで制限を指定すると、動的ワークフローまたは個人用設定で定義されている対応する制限がオーバーライドされます。

同時実行サブエージェントの制限により、他のサブエージェントが終了するまで、追加のサブエージェントが待機します。 そこに達しても、ワークフローは停止しません。

他の制限では実行を停止できますが、後で再開できるように、その状態と保存された結果が保持されます。 制限で停止した実行を再開する場合は、その制限を引き上げて作業を増やします。 新しい上限は、その実行全体での合計値であり、停止前の使用量も含まれます。新たに付与される許容量ではありません。

予期しない AI credit の使用を防ぐ

多数のサブエージェントを起動するワークフローは、完了に時間がかかり、大量の AI creditsを消費する場合があります。

AI credits が予期せず大量に消費されるのを防ぐには、大規模なジョブで使用する前に、小規模な範囲で動的ワークフローをテストする必要があります。 小さな実行を実行した後、実際の AI credit の使用状況を確認し、大規模な実行の AI credits に適切な制限を設定します。

実行の監視、停止、一時停止、再開

/workflows セッションで Copilot CLI スラッシュ コマンド、または **** の Copilot app ボタンを使用して、現在または過去のワークフローの実行履歴を表示できます。

詳細には、 AI credits 使用状況と、ワークフロー レポートのフェーズ、進行状況メッセージ、サブエージェントが表示されます。 こちらから、現在実行中のワークフローをキャンセルまたは一時停止できます。 拡張機能は、 Copilot appのキャンバスなど、独自の進行状況ビューを提供することもできます。

実行を一時停止した場合、または制限に達したために停止した場合は、実行リストから実行を選択して再開できます。 ワークフローでは、完了したステップとサブエージェントから保存された結果を再利用できます。 保存されなかった作業を再度実行する必要がある場合があります。

詳細については、「動的ワークフローの使用」を参照してください。