GitHub.com での GitHub Copilot Cloud Agent の責任ある使用
その目的、機能、制限事項を理解して、GitHub.com に対して責任を持って Copilot Cloud Agent を使用する方法について説明します。
このユニットを終了すると、次のことができるようになります。
- GitHub.com 上の Copilot Cloud Agent の目的、機能、および制限について理解します。
- 責任ある使用プラクティスを適用する: タスクのスコープ設定、環境のセキュリティ保護、結果の検証。
- セキュリティ対策、リスク、軽減策、およびパフォーマンスを向上させる場所を認識します。
GitHub.com の Copilot Cloud Agent について
Copilot Cloud Agent は、GitHub に統合された自律的で非同期のソフトウェア開発エージェントです。 エージェントは、問題または Copilot Chat からタスクを取得し、ブランチを作成し、コードベースを調査し、実装計画を生成し、コードを下書きすることができます。これにより、pull request を開くかどうかとタイミングを決定できます。
Copilot Cloud Agent では、バグ修正、増分新機能の実装、プロトタイプ作成、ドキュメント、コードベースのメンテナンスなどのタスクなど、説明と構成に基づいて調整された変更を生成できます。 pull request を作成することを決めた場合、エージェントはフィードバックやレビューに基づき、ユーザーと共に改善を進めることができます。
タスクの作業中、エージェントから専用の一時的な開発環境にアクセスできます。ここで、コードを変更し、自動テストを実行し、リンターを実行することができます。 エージェントはさまざまなプログラミング言語で評価されており、主にサポートされている言語は英語です。
エージェントのしくみ (エンド ツー エンド)
プロンプト処理
問題、pull request コメント、または Copilot チャット メッセージを通じて Copilot に提供されるタスクは、他の関連するコンテキスト情報と組み合わせてプロンプトを形成します。 入力には、プレーンな自然言語、コード スニペット、または画像の形式を使用できます。
言語モデルの分析
プロンプトは大規模な言語モデルを通じて渡されます。これにより、入力が分析され、タスクのエージェントの理由を支援し、必要なツールを活用できます。
応答の生成
言語モデルにより、プロンプトの分析に基づいて応答が生成されます。 この応答は、自然言語の提案とコードの提案の形式を取ることができます。
出力の書式設定
エージェントによる最初の実行が完了すると、変更内容に合わせて pull request の説明が更新されます。 エージェントには、アクセスできなかったリソースに関する補足情報が含まれている場合があり、解決する手順に関する提案を提供できます。
pull request 内でコメントを付けるか、エージェントに明示的にメンション (@copilot) することで、エージェントにフィードバックを提供できます。 そうすると、そのフィードバックはエージェントから言語モデルに再送信され、さらに分析されます。 エージェントは、フィードバックに基づいて変更を完了すると、更新された変更でコメントに応答します。
Copilot は、タスク解決に最も適切なソリューションを提供しようとします。 ただし、お探しの回答が必ず提供されるとは限りません。 お客様は、Copilot によって生成された応答が正確かつ適切であることを確認し、検証する責任を負います。 さらに、Microsoft の製品開発プロセスの一環として、GitHub はエージェントの安全性を理解し、改善するためにレッド チーミング (テスト) を行います。
Copilot Cloud Agent のユース ケース
- コードベースのメンテナンス: セキュリティ修正、依存関係のアップグレード、対象となるリファクタリング。
- ドキュメント: ドキュメントの更新と新規作成。
- 機能開発: 機能リクエストの段階的な実現。
- テスト カバレッジの改善: 品質管理用の追加のテスト スイートの開発。
- 新しいプロジェクトのプロトタイプ作成: 新しい概念のグリーンフィールド開発。
Copilot Cloud Agent のパフォーマンスの向上
制限に対処し、パフォーマンスを向上させるには、次の対策を使用します。
次の情報を提供して、タスクのスコープが適切であることを確認します。
- 解決すべき問題または必要な作業の明確な説明。
- 適切なソリューションのイメージに関する完全な受け入れ基準 (単体テストが必要かなど)。
- 変更する必要があるファイルに関するヒントまたはポインター。
追加のコンテキストを使用してエクスペリエンスをカスタマイズする
Copilot Cloud Agent は、提案された変更を生成するときに、プロンプト、コメント、リポジトリのコードをコンテキストとして活用します。 エージェントが変更をビルド、テスト、検証する方法を理解できるように、 カスタムの Copilot 命令 を追加して結果を改善します。
その他の便利なカスタマイズ:
- GitHub Copilot Cloud Agent の開発環境のカスタマイズ
- GitHub Copilot Cloud Agent のファイアウォールのカスタマイズまたは無効化
- モデル コンテキスト プロトコル (MCP) を使用した GitHub Copilot クラウド エージェントの拡張
代替ではなく、Copilot Cloud Agent をツールとして使用する
エージェントによって生成されたコンテンツを常に確認してテストし、要件を満たし、マージ前にエラーやセキュリティ上の問題がないことを確認します。
セキュリティで保護されたコーディングとコード レビューのプラクティスを使用する
Copilot Cloud Agent は構文的に正しいコードを生成できますが、常にセキュリティで保護されるとは限りません。 セキュリティで保護されたコーディング (ハードコーディングされたシークレットの回避、インジェクションの脆弱性の防止) のベスト プラクティスに従い、厳格なテスト、IP スキャン、脆弱性チェックを適用し続けます。
フィードバックを送信する
問題や制限事項が発生した場合は、エージェントの応答の下にあるサムダウン アイコンを使用するか、コミュニティ ディスカッション フォーラムでフィードバックを共有してください。
最新の状態を維持する
Copilot Cloud Agent は進化しています。 新しいセキュリティ リスクとベスト プラクティスが出現した時点で監視します。
Copilot Cloud Agent のセキュリティ対策
特権エスカレーションの回避
- Copilot Cloud Agent は、 書き込み アクセス権を持つユーザーからの対話にのみ応答します。
- エージェント PR によってトリガーされるアクション ワークフローでは、実行前に書き込みアクセス権を持つユーザーからの承認が必要です。
- 非表示の文字 (GitHub.com ではレンダリングされません) は、プロンプト挿入のリスクを軽減するためにフィルター処理されます。
Copilot のアクセス許可の制約
- エージェントは、スコープが設定されているリポジトリにのみアクセスします。他のリポジトリにアクセスできません。
- プッシュは、(既定のブランチではなく) copilot/ で始まる名前を持つブランチに限定されます。
- エージェントは、実行時に組織/リポジトリアクションのシークレットまたは変数にアクセスできません。 副操縦環境に追加されたシークレット/変数のみがエージェントに渡されます。
データ流出の防止
ファイアウォールは、コードや機密データの偶発的または悪意のある流出を防ぐために、既定で有効になっています。 GitHub Copilot Cloud Agent のファイアウォールのカスタマイズまたは無効化を参照してください。
Copilot Cloud Agent の制限事項
コードベースと入力によって、パフォーマンスが異なる場合があります。 次の制約に留意してください。
- 限られた範囲と品質: LLM は、特定のコード構造を処理したり、言語を不明瞭にしたりすることはできません。品質は言語カバレッジによって異なります。
- 潜在的なバイアス: トレーニング データと取得されたコンテキストにはバイアスが含まれる場合があります。エージェントは、特定の言語またはスタイルに傾く可能性があります。
- セキュリティ リスク: 生成されたコードはリポジトリコンテキストに基づいており、レビューされない場合は機密情報を公開する可能性があります。十分なレビューが必要です。
- 不正確なコード: コードは正しいように見えますが、意味的/構文的に間違っているか、意図に誤りがある可能性があります。 適合、パターン、スタイルを検証します。
- パブリック コード: "Block" が設定されている場合でも、エージェントはパブリック コードに対して一致/ほぼ一致を生成する可能性があります。参照が提供されない場合があります。
- 法的/規制: 適用される義務の遵守を確保する。利用規約および行動規範に基づく禁止された使用を避ける。