GitHub Copilot Spacesの使い道を考えたい
先日、GitHub Copilotに「Copilot Spaces」という新機能が追加されました。
最初にこのChangelogを見ただけではどういう機能なのか全然イメージできなかったのですが、実際に触ってみると「GitHub版のNotebookLM」という表現が一番他の人に伝わりやすそうかなと思いました。ただし、現時点では制約が多く使い道は限られそうな印象も受けました。
本記事では、Copilot Spacesがどういうものなのか軽く紹介しつつ、現時点でどういった用途に使えそうか考察してみたいと思います。
Copilot Spacesの機能
まずはドキュメントを読んでみたいという方はこちらをどうぞ。Changelogよりは詳しく書かれているので、想像できる方はドキュメントを見るだけでもイメージがつくかもしれません。
スペースの作成
使い方は https://github.com/copilot/spaces から始められます。右上のNew Spaceボタンを押すと、以下のスペースの作成画面が表示されます。
Instructionsの部分がおそらくシステムプロンプトになっていそうです。
Attachmentsには、GitHubのリポジトリからファイルを選択して追加できます。複数のリポジトリからファイルを選ぶことも可能です。
ただしファイル数の制限、というよりおそらくはトークン数の制限が結構厳しいため、リポジトリ全体のファイルを登録するのは到底不可能です。実際に試してみると、自分の場合はいくつかのリポジトリのREADMEや過去のブログ記事を数本選択しただけで既に上限の58%に達してしまったようです。
スペースの共有
Organization内にスペースを作成すると、同じOrganizationに所属するメンバーとスペースを共有できるようです。これもNotebookLMに似ていますね。
スペースの利用
スペースを作成するとこのような画面が表示されます。
今のところはだいぶ簡素なUIでチャットぐらいしかできません。ここからチャットでGitHub Copilotに質問すると、スペースに登録した情報をコンテキストとして利用して応答してくれるようです。
今回は試しに自分がメンテしているKesin11/CIAnalyzer, Kesin11/actions-timelineという2つのGitHub Actionsに関するOSSのREADMEと、それらを解説した過去のブログ記事(その1, その2)を登録してみました。
試しにチャットで2つのOSSの違いについて質問してみます。
ちゃんと2つのOSSの機能の違いについて答えてくれました。
ちなみに実はGitHub Actionsに関する自分が作成したOSSはCIAnalyzerが1作目で、actions-timelineは3作目でした。その間に2作目としてgithub_actions_otel_traceというOSSも作成しているのですが、これは使い勝手が微妙だったのでお蔵入りして既にarchivedにしているものの、actions-timelineについて紹介したブログ記事の中で一応触れていました。
このスペースにはそのブログ記事も追加していたので、github_actions_otel_traceも加えて3つのOSSの違いについて質問してみます。
(3つのOSSそれぞれについての詳細も教えてくれましたが、スクショでは省略)
ちゃんと回答してくれました。github_actions_otel_traceの内容はブログの文章の内容を引用してくれていますね。
Copilot Spacesのメリット?
このように複数のリポジトリの情報に対して横断的に質問できるのが他のGitHub Copilotの機能にはないCopilot Spacesのメリットだと思いました。
・・・という文を書きながら、改めて久しぶりにgithub.com上でGitHub Copilotを使って一応確認してみたところ、なんといつの間にかチャットの画面で複数のリポジトリをコンテキストとしてアタッチできるようになっていました。
この状態でCIAnalyzerとactions-timelineの違いについて質問してみると、ちゃんと2つのOSSの特徴を比較してくれました。じゃあ別にCopilot Spacesにいらなくない・・・?
現状ではシステムプロンプトを設定できることと、Organization内で共有できる2点だけがCopilot Spacesのメリットかなぁ。
DeepWikiのような能動的な知識構築ツールではない
最近、AIが情報を能動的に収集・整理しドキュメントを自動生成するDeepWikiのようなツールが注目を集めていますが、Copilot Spacesはこれらとは明確に異なると思いました。
Copilot SpacesはGitHub Copilotが自らドキュメントを生成したり知識を構造化したりするわけではなく、あくまでユーザーが手動で登録した情報をチャットのコンテキストとして利用できるだけです。
この点もCopilot SpacesとNotebookLMの立ち位置が似ていると個人的には感じました。
現状の制約
Copilot SpacesはPublic Previewで登場したばかりなので仕方ないとは思いますが、スペースに追加できるファイルの数(あるいはトークン数)にかなり厳しい上限があるように感じられる点が残念です。
実際に試してみると、先ほどの2つのOSSのREADMEと過去のブログ記事2本だけでもう58%に達していました。これでは実際の業務規模のコードでは複数リポジトリを横断した知識ベースを構築するのはかなり厳しいでしょう。
今後のアップデートで登録できるファイル数やトークン数の上限が緩和されることに期待したいところです。あるいは既に通常のチャットの画面で可能なように、リポジトリ丸ごとであれば複数リポジトリもアタッチできるようになるといいですね。
Copilot Spacesの活用を考えたい
現状の制約を踏まえつつ、それでもCopilot Spacesに活路を見出すとすればどのような使い方が考えられるでしょうか?
- 共有ライブラリのREADMEやAPIドキュメントの集約
- 社内やチームで複数の共有ライブラリを利用している場合、それぞれのREADMEやAPIドキュメントを1つのスペースに集約すれば横断的にCopilotに質問ができそう
- リポジトリの情報を圧縮して集約する
- 各リポジトリで別のAIツール(DeepWikiを模倣したOSSなど)を使って情報を要約・圧縮したドキュメントを生成しておき、それらをCopilot Spacesに登録すればREADMEやドキュメントが存在しないリポジトリに対しても横断的に質問できるようになりそう
- RAG込みの自作AIドキュメント検索システムの軽量な代替
- 開発ドキュメントなどを対象としたRAGシステムを自前で構築・運用する代わりに、Copilot Spacesを手軽な代替として利用する
自分の方でパッと思い付いたのはこのあたりですが、皆さんはどうでしょうか。
Discussion