はじめに
Visual Studio Code (VSCode) の拡張機能には "Copilot Studio (Preview)" というものがあり、こいつを利用することで Copilot Studio を自身のローカル PC から VSCode 経由でコードベースでの変更が可能になっています。

拡張機能はこちらからインストールすることができます。
この記事ではこの拡張機能の紹介と簡単な使い方を紹介します。
Overview みれば使い方わかるよって人にとっては物足りない内容かな。と思いますので、ご注意ください。
Copilot Studio (Preview) 拡張機能を利用する
Copilot Studio との接続を行う
はじめてこの拡張機能を利用する場合、この拡張機能を利用して Copilot Studio に接続を行うアカウントでサインインを行う必要があります。
- 左のサイドバーに Copilot Studio のアイコンがあると思うので選択を行います

- 初回こちらの拡張機能を開くとサインインを求めるポップアップが表示されるので、手順に従って任意のアカウントでサインインを行います。
エージェントのクローンを行う
Copilot Studio 上で作成したエージェントを自身のローカルにコピーします。
- 拡張機能を開くと「Clone agent」というボタンがあると思うのでこちらを選択します

- 選択すると先ほどサインインしたアカウントで利用可能な環境一覧が表示されますので、任意の環境を選択します

- 続いて選択した環境で先ほどサインインしたアカウントで利用可能なエージェント一覧が表示されますので、任意のエージェントを選択します

- 選択したエージェントを自身のローカルのどこにクローンするかを確認されますので、任意のフォルダを選択します
- エージェントを構成する YAML ファイル群がクローンされます

中身を確認してみる
こちらのエージェントはテストのためにこんな感じの構成になっています。



まず1枚目のスクショにあるような「指示」や3枚目のスクショにあるような「推奨プロンプト」は"agent.mcs.yml"に記載されています。

# Name: VSCode Test # ユーザーの質問や要求に対して、蓄積されたナレッジを活用して的確かつ迅速に回答する。専門的な情報やFAQ、ガイドラインなどをもとに、ユーザーの課題解決をサポートする。 kind: GptComponentMetadata instructions: |- - ユーザーからの質問や要求に対して、ナレッジベースの情報を活用して回答してください。 - 不明点や不足情報がある場合は、追加情報の提供を促す。 - 回答は簡潔かつ分かりやすく、必要に応じて詳細な説明も行う。 - ユーザーの目的達成を最優先にサポートする。 - ナレッジベースにない内容は、正直にその旨を伝える。 - 常に丁寧な言葉遣いで対応する。 gptCapabilities: {} conversationStarters: - title: ナレッジからFAQを教えて text: よくある質問とその回答をナレッジから教えてください。 - title: ガイドラインの説明 text: 業務のガイドラインについてナレッジをもとに説明してください。 - title: 専門用語の意味 text: ナレッジを使って専門用語の意味を教えてください。 - title: 手順の詳細 text: 作業手順についてナレッジをもとに詳しく説明してください。 - title: トラブル対応方法 text: よくあるトラブルの対応方法をナレッジから教えてください。 - title: 最新情報の確認 text: ナレッジベースにある最新情報を教えてください。
ナレッジ情報は"knowledge"フォルダ配下にあるファイルに設定されています。

# Name: https://learn.microsoft.com/ # このナレッジ ソースは Web サイト https://learn.microsoft.com/ から情報を検索します kind: KnowledgeSourceConfiguration source: kind: PublicSiteSearchSource site: https://learn.microsoft.com/
こちらの内容は接続しているナレッジの種類によって設定が異なりますので気を付けましょう。

# このナレッジ ソースは SharePoint の Book1.xlsx にある情報を提供します。 kind: KnowledgeSourceConfiguration source: kind: FederatedStructuredSearchSource connectionProperties: mode: Invoker skillConfiguration: Book1xlsx_7A78hjir4NhIz6TP7Vbny
アクションは"actions"フォルダ配下にあるファイルに設定されています。

# Name: MSN 天気 - 現在の天気を取得する kind: TaskDialog modelDisplayName: 現在の天気を取得する modelDescription: ある場所の現在の天気を取得します。 outputs: - propertyName: responses.source.coordinates.lat - propertyName: responses.source.coordinates.lon - propertyName: responses.source.location - propertyName: responses.weather.current.baro - propertyName: responses.weather.current.cap - propertyName: responses.weather.current.created - propertyName: responses.weather.current.dewPt - propertyName: responses.weather.current.feels - propertyName: responses.weather.current.rh - propertyName: responses.weather.current.sky - propertyName: responses.weather.current.temp - propertyName: responses.weather.current.uv - propertyName: responses.weather.current.uvDesc - propertyName: responses.weather.current.vis - propertyName: responses.weather.current.windDir - propertyName: responses.weather.current.windGust - propertyName: responses.weather.current.windSpd - propertyName: responses.weather.current.wx - propertyName: units.distance - propertyName: units.pressure - propertyName: units.speed - propertyName: units.temperature action: kind: InvokeConnectorTaskAction connectionReference: cr115_vsCodeTest.shared_msnweather.shared-msnweather-bbe317f0-d98d-4c70-82dd-7af1e53a1806 connectionProperties: mode: Invoker operationId: CurrentWeather outputMode: All
アクションのコードは Web の Copilot Studio からも表示、編集を行うことができますね。


最後にトピックは"topics"フォルダ配下にあるファイルに設定されています。

# Name: 会話の開始 # このシステム トピックは、新しい会話の開始を示すアクティビティをエージェントが受信するとトリガーされます。エージェントが会話を開始しないようにする場合は、このトピックを無効にします。 kind: AdaptiveDialog beginDialog: kind: OnConversationStart id: main actions: - kind: SendActivity id: sendMessage_M0LuhV activity: text: - こんにちは、私は仮想アシスタントの {System.Bot.Name} です。ご質問への回答時に必要に応じて AI を利用します。たとえば、コパイロットの作成時に Web サイトの情報を提供する場合、その Web サイトについて質問できます。さらに、生成 AI を設定することでコパイロットにナレッジを追加することができます。 speak: - "{System.Bot.Name} にお電話いただき、ありがとうございます。一部の応答が AI によって生成されているため、正確性の確認が必要な場合があります。お問い合わせ内容をお知らせください。"
VSCode での編集内容をエージェントに反映させる
"agent.mcs.yaml" 内の以下を変更して、指示文の追加を行いました。

こちらの変更をエージェントに反映させてみます。
Copilot Studio (Preview) の拡張機能は VSCode のソース管理機能と同じものが利用されています。
左のサイドバーにある「ソース管理」を選択します。(もしくは Ctrl + Shift + G)

すると、「Local Changes」配下に先ほど変更したファイルが含まれているかと思います。
こいつをエージェントに反映させます。
「Local Changes」にカーソルを合わせると上方向の矢印のようなものが表示されますので、こちらを選択します。

Push(反映) が完了すると右下に「Successfully completed pushing changes」が表示されるはずです。

エージェントをブラウザで開いてみると変更が行われていることが確認できます!

Web でのエージェントの変更をローカルに反映させる
今度は逆に Web でのエージェントの操作をローカルのコードに反映させます。
「推奨プロンプト」を以下のように変更してみます。
Before

After

VSCode に戻り、「Remote Changes」にカーソルを合わせると表示される下矢印を選択します。

すると変更があったファイルが表示され、またそれを選択すること差分をチェックすることができます。

内容に問題なければ「Local Changes」の上矢印を選択して変更を同期させます。

おわりに
Copilot Studio もこれでコードベースで管理や変更ができるようになります。
Grep(特定の単語をまとめて検索)や一括置換なんかがこれでできるようになりますので、必要に応じて活用してみてください!
