GitHub Copilot最新化では、構造化されたアプローチを使用して.NET プロジェクトをアップグレードします。 エージェントのシナリオ、スキル、タスク、ワークフローなど、エージェントのしくみを理解することは、エージェントと効果的に共同作業を行い、最適な結果を得るのに役立ちます。
ヒント
エージェントは、.NETを深く理解し、構造化された計画に従い、フィードバックに適応する熟練した同僚と考えてください。 コンテキストが多いほど、エージェントのパフォーマンスが向上します。
チームメイトとしてのエージェント
エージェントは、バキュームでの自動化ではなく、コラボレーションに優れています。
- Deep .NET knowledge: エージェントは、C# プロジェクトとVisual Basic プロジェクトの両方について、プロジェクト ファイル、NuGet の依存関係、破壊的変更、および多数の.NET テクノロジにわたるアップグレード パターンを理解します。
- 構造化ワークフロー: アップグレードのたびに、評価、計画、実行が行われます。 ランダムな変更も、驚きもありません。
-
ユーザー設定について説明します。 "
varではなく常に明示的な型を使用する" と言うと、エージェントはその優先設定をscenario-instructions.mdに書き込み、セッション間でそれを記憶します。 - 飛行中に修正可能: 間違った判断をしましたか? エージェントに指示します。 それは適応し、今後修正を適用します。
- その理由について説明します。「なぜそのアプローチを選択したのですか」と尋ねると、エージェントが決定を進めます。
シナリオ
シナリオは、エンド ツー エンドのマネージド モダン化ワークフローです。 "ソリューションを .NET 10 にアップグレードする" とエージェントに指示すると、.NET version upgrade シナリオがトリガーされます。
シナリオの検出方法
シナリオ名を覚える必要はありません。 エージェントは、関連するシナリオを自動的に検出します。
- コードベースを分析して、言語、フレームワークのバージョン、ライブラリ、プロジェクトの種類など、使用しているテクノロジを理解します。
- プロジェクトに関連するシナリオを識別します。
- 重要度と重みによってシナリオをランク付けします。 最も関連性の高いものが最初に表示されます。
また、"自分のソリューションで使用できるシナリオは何か" を直接確認することもできます。
シナリオの永続化
アクティブな各シナリオは、 .github/upgrades/{scenarioId}/に独自のフォルダーを取得します。 シナリオ フォルダーには、プラン、タスクの進行状況、ユーザー設定、実行ログが含まれています。 このフォルダーは Git リポジトリの一部です。
シナリオの完全な一覧については、「 シナリオとスキルリファレンス」を参照してください。
ワークフローのライフサイクル
すべてのシナリオは、同じライフサイクル (3 段階のワークフロー) に従います。
ステージ 1: 評価
エージェントは、作業を開始する前に必要なすべてのものを収集します。
- ターゲット フレームワーク: アップグレードするバージョン。
- Git 戦略: エージェントは分岐を提案し、詳細 (ブランチ名、タスクごとのブランチを使用するかどうか、コミットのタイミング) を制御します。
- フロー モード: 自動 (エージェント ドライブ) またはガイド付き (各ステージを承認します)。
- シナリオ固有のパラメーター: シナリオによっては、エージェントからさらに質問が寄せられる場合があります。
エージェントは、 .github/upgrades/{scenarioId}/でシナリオ ワークスペースを初期化します。
その後、エージェントはコードベースを分析します。
- Project依存関係グラフ (トポロジカル順序)
- ターゲット フレームワークとの NuGet パッケージの互換性
- API の破壊的変更
- テスト範囲
- 複雑さとリスク要因
エージェントは、包括的な評価レポートを assessment.mdに保存します。
評価に基づいて、エージェントはソリューションを評価し、関連するアップグレードの決定を識別します。 適切な既定値が表示され、任意の選択肢を確認してオーバーライドできます。
オプションには、次のようなものがあります。
- アップグレード戦略: ボトムアップ、トップダウン、またはオールインワン。
- プロジェクトのアップグレード方法: Web アプリケーションはインプレースリライトまたはサイドバイサイド、ライブラリはインプレースまたはマルチターゲティング。
- テクノロジの最新化: Entity Framework のアップグレード、依存関係の挿入、ログ記録、構成の選択肢。
- パッケージ管理: 中央パッケージ管理を導入するかどうかとタイミング。
- 互換性の処理: サポートされていない API とパッケージに対処する方法。
エージェントは、確認された決定を upgrade-options.mdに保存します。
ガイド付きモードでは、エージェントは、先に進む前にレビューのためにここに一時停止します。
ステージ 2: 計画
エージェントは、評価と確認済みのオプションに基づいてタスク計画を作成します。 計画では、次の 3 つの主要なファイルが生成されます。
-
plan.md: 戦略とタスクの説明を含むアップグレード計画。 -
scenario-instructions.md: ユーザーの好み、決定事項、エージェントのメモリ。 -
tasks.md— エージェントが実行するタスクの順序付きリスト。
ステージ 3: 実行
エージェントは、タスクを順番に処理します。
tasks.mdのタスクごとに、エージェントはサイクル (開始、実行、検証 (ビルドとテスト)、完了) に従います。 エージェントが変更をコミットするタイミングと方法 (タスクごと、タスクのグループごと、または最後) を制御します。 エージェントが動作すると、進行状況を追跡できるように、 tasks.md がライブ 状態インジケーターで更新されます。
アップグレード戦略
評価段階では、エージェントによってソリューションが評価され、次のいずれかの戦略が推奨されます。
| 戦略 | 最適な用途 | どのように機能するのか |
|---|---|---|
| ボトムアップ | 深い依存関係グラフを持つ大規模なソリューション | リーフ プロジェクト (依存関係なし) から開始し、上方向に作業します。 |
| トップダウン | メイン アプリに関するクイック フィードバック | アプリケーション プロジェクトから開始し、必要に応じて依存関係を修正します。 |
| 一度にすべて | 小規模でシンプルなソリューション | すべてを 1 回のパスでアップグレードします。 |
ヒント
エージェントは、プロジェクトに関連する決定のみを表示します。 単純なコンソール アプリでは Web フレームワークの選択肢が表示されず、Entity Framework を使用しないプロジェクトにはデータベースのアップグレード オプションが表示されません。
スキル
スキル は、より小さく、ターゲットを絞ったモダン化機能です。 アップグレード中にエージェントが EF6 コードを検出すると、詳細なステップ バイ ステップのアップグレード手順を含む EF6 からEF-Core スキルが読み込まれます。 アップグレード中にスキルを直接呼び出します。 "プロジェクト内の WCF サービスを CoreWCF にアップグレードします"。
エージェントには、ドメイン別に整理された 30 以上の組み込みスキルが付属しています。
- データ アクセス: EF6 から EF Core (コード優先と EDMX)、LINQ to SQL、および SqlClient のアップグレード
- Web/ASP.NET: アイデンティティ、Global.asax、OWIN、MVC ルーティング/フィルター/バンドル、WCF から CoreWCF
- シリアル 化: Newtonsoft.Json から System.Text.Json へ
- Cloud: インプロセスから分離型ワーカーモデルへのAzure Functions
- ライブラリー: ADAL から MSAL、SignalR、PowerShell SDK など
スキルは、エージェントがコードベースで検出した内容に基づいて自動的に読み込まれます。 スキルの読み込みを管理する必要はありません。 必要な内容を説明するだけです。
完全な一覧については、「 シナリオとスキルリファレンス」を参照してください。
タスク
タスク は、シナリオ内のアトミック作業単位です。 各タスクは、"Upgrade CommonLib from .NET 6 to .NET 10" や "Upgrade EF6 usage in DataLayer to EF Core" など、アップグレードの特定の境界のある部分を表します。
タスクのライフサイクル
タスクは次の状態を経過します。
- 利用 可能: 開始する準備ができました。すべての依存関係が満たされました。
- 進行中: エージェントはタスクに積極的に取り組んでいます。
- 完了: コードの変更が適用され、ビルドが成功し、テストが成功します。
各タスクについて、エージェントは次の処理を行います。
- 関連するスキルとコンテキストを読み込みます。
- 複雑さを評価し、タスクにサブタスクが必要かどうかを判断します。
- スコープの概要を
tasks/{taskId}/task.mdに書き込みます。 - コードの変更を実行します。
- ビルドとテストを実行して検証します。
- 結果を
tasks/{taskId}/progress-details.mdで記録します。 - 変更をコミットし、次のタスクに移動します。
ステート管理
エージェントは永続的な状態を維持するため、いつでも停止および再開できます。 すべてが .github/upgrades/{scenarioId}/の下のリポジトリに存在します。
| File | Purpose |
|---|---|
scenario-instructions.md |
ユーザー設定、決定事項、およびカスタム命令。 エージェントの永続メモリ。 |
upgrade-options.md |
確認されたアップグレードの決定 |
plan.md |
戦略とタスクの説明を含むアップグレード 計画 |
tasks.md |
タスクの状態を示すビジュアル進行状況ダッシュボード |
execution-log.md |
すべての変更と決定の詳細なログ |
tasks/{taskId}/task.md |
タスクごとのスコープとコンテキスト |
tasks/{taskId}/progress-details.md |
タスクごとの実行に関するメモと結果 |
再開可能性
チャットを閉じるか、IDE を閉じるか、翌日に戻ります。 エージェントは中断したところから再開します。
- 次の操作では、エージェントはワークスペースの現在の状態を自動的にチェックします。
- エージェントは、既存のシナリオを検出し、現在の進行状況 ("8 つのタスクのうち 3 つが完了しました" など) を表示します。
- エージェントは、以前の中断したセッションで停止した古いタスクを検出し、それらを再開または再起動できるようにします。
- エージェントは、
scenario-instructions.mdからユーザー設定を再読み込みします。
IDE 間の継続性
状態は Git に存在するため、アップグレード中に VS Code、Visual Studio、Copilot CLI を切り替えることができます。
.github/upgrades/ フォルダーは、両方の IDE が認識する共有状態です。
ヒント
.github/upgrades/ フォルダーをブランチにコミットします。 ブランチをリモート リポジトリにプッシュして、チーム メンバーが進行状況を表示したり、別のコンピューターでアップグレードを続行したりできるようにします。
フロー モード
エージェントは、監視の量を制御する 2 つのフロー モード ( 自動モード と ガイド付きモード) をサポートしています。
自動モード
エージェントは、承認のために一時停止することなく、すべてのステージ (評価、計画、実行) を通じて動作します。 主要な結果と進行状況の更新が表示されますが、前進し続けます。
経験豊富なユーザー、簡単なアップグレード、小さなソリューションに最適です。
ガイド付きモード
エージェントは、各段階の境界においてレビューのために一時停止します。
- 評価後: "私が見つけたものは次のとおりです。アップグレード オプションを続行しますか?
- 計画後: "タスク計画を次に示します。実行を開始しますか?
- 複雑なタスクの内訳の前: "このタスクは複雑です。私はそれを分解する方法を次に示します。
初めてのユーザー、複雑なソリューション、およびプロセスを学習する場合に最適です。
いつでもモードを切り替える
- 「一時停止」または「ガイド付きモードに切り替える」と言って、ガイド付きモードに切り替えます。
- 自動モードに切り替えるには 、「続行」 または 「先に進む」と 言います。
ヒント
最初のアップグレードのガイド付きモードから開始してワークフローを理解し、快適になったら自動に切り替えます。
関連するコンテンツ
.NET