GitLab DuoのAIカタログを理解しよう #GitLab #GitLabDuo #AI駆動開発

はじめに
前回の記事で紹介したDuo Agent PlatformはGitLabが提供するAIエージェントのプラットフォームです。AIを単にアシスタントとして使うだけでなく、様々な機能が包括的に統合されたプラットフォームが目指されています。(公式ブログ)
その中のAIカタログという機能がリリースされたので、本記事で紹介します。
機能紹介
前回の記事では専門エージェントとAgent Flowsの概念を紹介しました。専門エージェントは「詳細設計」などの特定のタスクに特化したAIで、Agent FlowsはAIを利用して問題を解決させるためのワークフローです。AIカタログは、作成した専門エージェントやAgent Flowsを公開したり、公開されているものを自分のプロジェクトで使ったりできるという機能です。公開されているものを使うことにより高速に生産性を上げていくことが可能になります。

本記事では専門エージェントやAgent Flowsの作成方法を確認しながら、AIカタログの機能についても見ていくことにします。なお、前回の記事では専門エージェントやAgent Flowsと書いていましたが、GitLab上でエージェントやフローという名前で機能が公開されたため、今回はそのように呼ぶことにします。
エージェント
早速オリジナルのエージェントを作成してみましょう。左のメニューからエージェントを選択し、新しいエージェントボタンを押します。

新しいエージェントの設定画面が表示されます。

名前と説明は自分が分かりやすいように設定しましょう。今回は「深堀りを促すエージェント」を作ることにします。

表示レベルとアクセスは、画面の通りです。公開にすると世界中のユーザーが誰でも使うことができるようになります。非公開にすると対象のプロジェクトでだけ使うことができるようになります。

プロンプトには、このエージェントにどのように振る舞って欲しいかを書きます。

利用可能なツールは、このエージェントに利用を許可するツールの設定です。ファイルの読み取りや編集、イシューやマージリクエストの作成、イシューやジョブのログの読み取りなど、GitLab内の様々な機能にアクセスさせることができます。


入力が完了したらエージェントを作成ボタンを押します。これで一つ目のエージェントが作成できました。右上の有効ボタンを押して有効化しておきます。

作成したエージェントを使ってみましょう。画面の右側にあるAdd new chatを押すと先ほど作成したエージェントが表示されているので、それを選択します。

いつも通りチャットを行うと、エージェントに設定しておいたとおり、最後に深掘りを促してくれていることが分かります。GitLabのエージェント機能はGitHub Copilotのカスタムエージェント機能やOpenAIのGPTsに似ています。このチャットは「エージェント」として振る舞うので、単にテキストで回答してくれるだけでなく、事前に設定しておいたツールを使って様々な処理を実行してくれます。

エージェントの作成(または編集)時に表示レベルとアクセスを公開にしておくと、自分が作ったエージェントを公開することができます。ここでは既に他のユーザーから公開されているエージェントを見てみましょう。上部の検索欄にAIと入力してAIカタログ(エージェント)の探索を選択します。

公開されているエージェントの一覧が表示されます。(自分が作ったエージェントは非公開のものでもここに表示されます。)

適当なエージェントを選択すると内容を確認して自分のプロジェクトで有効にすることができます。また複製することによって内容をカスタマイズして使うこともできます。作成したエージェントを公開してお互いに利用できる点はGPTsと似ています。

フロー
左のメニューからフローを選択して、新しいフローボタンを押してフローを作成していきます。

新しいフローの作成画面が表示されます。エージェントに接続して、複雑なタスクを自動化します。と記載されているのですが、ここでのエージェントは先ほどの画面から作成できるエージェントのことではありません。先ほどのエージェントはチャットの相手として使うものであり、フローから呼び出すものではありません。フローで接続するエージェントについては、後ほど説明します。

基本情報と表示レベルとアクセスはエージェントの作成時と同様に入力していきます。

フローの設定はプロンプトではなくYAMLで行います。このYAMLにはCI/CDのように動作環境となるimageや実行するcommandsを記述していきます。画面上部に記載されているエージェントに接続してと表示されているのは、例えば「commandsの中からNPMパッケージの@anthropic-ai/claude-codeをインストールしてclaudeコマンドを実行することにより外部のAIを呼び出してその結果を利用する」という意味です。ここでは外部のAIのことがエージェントと呼ばれているわけです。繰り返しになりますが、GitLabで作成したエージェントをフロー(のYAML)から呼び出すことはできません。
フローの実行(起動)方法は後述のTriggersの章で説明しますが、フローの起動時に指定したプロンプトと、処理対象となるイシューやマージリクエストの内容などがフロー実行環境の環境変数として渡されるため、フローのcommands内でclaudeコマンドなどに対する指示(引数)としてこのイシューの内容を実行してマージリクエストを作りなさいのように仕込んでおくことができます。commandsの前半でGitLab CLIをインストールしておけば「claudeが環境変数からイシューの内容を読み取って、GitLab CLIを用いてマージリクエストを作成してくれる」というようなフローが実現できることになります。具体的なサンプルは公式ドキュメントに記載されています。

入力が完了したら、フローを作成ボタンを押して保存しておきましょう。右上の有効ボタンを押して有効化しておきます。

作成したフローはエージェントと同様にAIカタログに公開できます。先ほどのAIカタログの画面でフロータブを選択して、公開されているフローを確認してみましょう。

Triggers
Triggersはフローを起動するための設定です。左のメニューからTriggersを選択して、新しいフロートリガーボタンを押してみましょう。

トリガーの設定画面が開きました。

説明欄には自分が分かりやすいように入力しておきます。イベントタイプにはMention・Assign・Assign reviewerの3つから複数を指定できます。「マージリクエストなどでメンションしたとき」「イシューにアサインしたとき」「マージリクエストのレビュアー」としてアサインしたときのそれぞれで、指定のフローを起動させるという設定です。「誰をメンションまたはアサインすればよいのか」や「どのフローを起動するのか」については後述します。フローを起動した対象のイシューやマージリクエストの内容は環境変数としてフローに渡されます。

サービスアカウントユーザーには、指定のフローを実行する際に使うGitLabのサービスアカウントを指定します。サービスアカウント自体は事前に作成しておく必要があります。また、ここで指定したサービスアカウントをメンションしたりイシューにアサインしたりすることで指定のフローを起動することができます。

最後に、どのフローを起動するのかを選択して、flowトリガーの作成ボタンでトリガーを作成します。

フローは、作るだけでは実行できず、トリガーを設定することで起動できるようになるのです。「何をすると」「どのサービスアカウントで」「どのフローを起動するか」という三点セットがトリガーの内容です。「フローとトリガーを設定しておき、イシューやマージリクエストで指定の操作を行うと、そのイシューやマージリクエストの内容が環境変数としてセットされた状態で指定のフローが起動される」という流れです。
まとめ
Agentic modeなチャット相手の挙動をプロンプトでカスタマイズできる「エージェント」とAIを利用した一連の処理をYAMLで定義しておける「フロー」でAI driven developmentがますます促進されそうです。今回紹介した「AIカタログ」はエージェントやフローのエコシステムです。記事執筆時点(2025年11月)で既に大量のエージェントやフローが公開されています。NPMやDocker Hubのように世界中の開発者が相互に恩恵を受けながら発展していくとよいですね。
