デベロッパーフロー
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
デベロッパーフローは、イシューとマージリクエストを横断してより効率的に作業するのに役立ちます。デベロッパーフローを次の目的で使用できます:
- イシューからドラフトのマージリクエストを作成します。
- 既存のマージリクエストについて、レビューフィードバックに基づいてイテレーションを行います。
- 実装アプローチを調査し、ディスカッションに調査結果を投稿します。
- 大規模なマージリクエストを、より小さく焦点を絞ったマージリクエストに分割します。
- マージコンフリクトを解決する。
前提条件
- GitLab Duo Agent Platformの前提条件を満たしていること。
- トップレベルグループで、基本フローを許可とデベロッパーを有効にします。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。
- サービスアカウントを許可するようにプッシュルールを設定します。
- プロジェクトで独自のRunnerを設定するか、GitLabホスト型Runnerを有効にします。
プロジェクトをセットアップする
デベロッパーフローがより良い結果を出すのに役立つよう、以下のオプション設定でプロジェクトを設定する必要があります:
AGENTS.mdファイルを追加します: テストコマンド、Lintルール、コミット形式、およびコードパターンなど、プロジェクトの慣例をドキュメント化します。デベロッパーフローは、リポジトリで作業する際に、このファイルをコンテキストとして使用します。詳細については、AGENTS.mdカスタマイズファイルを参照してください。- 実行環境を設定します: プロジェクトに特定のツール (Go、Python、Node.jsなど) が必要な場合は、エージェント環境を
agent-config.ymlファイルで設定します。適切に設定された環境があれば、デベロッパーフローはコミットする前にテストを実行し、自身の変更を検証できます。詳細については、フローの実行を設定するを参照してください。
フローを使用する
前提条件:
- デベロッパーフローのトリガーでは、イベントタイプメンションとアサインが設定されています。
ディスカッションでDuo Developerをメンションする
コメントをデベロッパーフローの実行可能なタスクにするには、ディスカッションで@duo-developer-<namespace>を使用してメンションします。<namespace>をGitLabのネームスペースパス (gitlab-orgなど) に置き換えます。
イシューまたはマージリクエストのコンテンツと提供するコンテキストの量に応じて、フローは以下のタスクを実行できます:
- codeコードの変更
- マージリクエストとイシューの作成
- 実装アプローチを調査し、それに応じてレポートまたは更新を報告する
例:
@duo-developer-<namespace> research approaches for implementing pagination
on the /users endpoint, then create a draft MR with the most
promising approach.デベロッパーフローは、そのセッションへのリンクで応答します。
あるいは、進捗を監視するには、左サイドバーでAI > セッションを選択します。
イシューからマージリクエストを生成する
イシューからマージリクエストを作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左サイドバーでPlan > 作業アイテムを選択し、次にタイプ = Issueでフィルタリングします。
- マージリクエストを作成するイシューを選択します。
- イシューからマージリクエストを作成するには、次のいずれかの方法を使用します:
- Duo Developerサービスアカウントをイシューに割り当てます:
- 右サイドバーの担当者セクションで、編集を選択します。
duo developerと入力し、検索結果から選択します。
- イシューヘッダーの下にあるGitLab Duoでマージリクエストを生成を選択します。
- Duo Developerサービスアカウントをイシューに割り当てます:
- オプション。フローの進捗を監視するには、左サイドバーでAI > セッションを選択します。
- セッションが完了したら、イシューのアクティビティセクションにあるリンクからマージリクエストをレビューします。
ベストプラクティス
明確なコンテキストを提供する
デベロッパーフローは、あなたが伝える情報、またはイシュー、マージリクエスト、ディスカッションスレッドのコンテキストで利用可能な情報のみを知っています。人間の共同作業者を助けるのと同じプラクティスがここに適用されます:
- 関連ファイルやディスカッションへのリンクを含め、明確な問題記述を作成します。
- 「完了」の基準を定義する受け入れ基準を含めます。
- 正確なファイルパスを知っている場合は、それを指定します。
- 一貫性を保つため、既存パターンのコード例を含める。
ディスカッションでDuo Developerをメンションする際は明確にする
ディスカッションでDuo Developerをメンションする際は、実行してほしいことを正確に伝えます。例:
- 「
/api/usersエンドポイントのページネーションを実装するドラフトのマージリクエストを作成します。」 - 「このマージリクエストに関するレビューフィードバックに対応します。」
- 「ロギングの変更を別のマージリクエストに分割します。」
- 「このサービスをgRPCに移行するためのアプローチを調査し、ここに調査結果を投稿してください。」
- 「このマージリクエストにはマージコンフリクトがあります。解決してください。」
明確な指示がない場合、フローは独自のアプローチを選択するため、期待と一致しない可能性があります。
タスクに集中する
複雑なタスクは、より小さく、スコープが絞られた、アクション指向のリクエストに分割してください。大規模で自由度の高いタスクは、イテレーションの制限に達する可能性が高くなります。
例
マージリクエストを生成するためのイシュー
この例は、デベロッパーフローがマージリクエストを生成するために使用できる、適切に作成されたイシューを示しています。
## Description
The users endpoint currently returns all users at once,
which will cause performance issues as the user base grows.
Implement cursor-based pagination for the `/api/users` endpoint
to handle large datasets efficiently.
## Implementation plan
Add pagination to GET /users API endpoint.
Include pagination metadata in /users API response (per_page, page).
Add query parameters for per page size limit (default 5, max 20).
#### Files to modify
- `src/api/users.py` - Add pagination parameters and logic.
- `src/models/user.py` - Add pagination query method.
- `tests/api/test_users_api.py` - Add pagination tests.
## Acceptance criteria
- Accepts page and per_page query parameters (default: page=5, per_page=10).
- Limits per_page to a maximum of 20 users.
- Maintains existing response format for user objects in data array.マージリクエストのレビューフィードバックにイテレーションを行う
マージリクエストをレビューした後、Duo Developerデベロッパーフローをメンションしてフィードバックに対応できます。たとえば、特定の行に対するレビューコメントで、:
@duo-developer-<namespace> move this validation logic into the `BaseService` class
in `app/services/base_service.rb` instead of duplicating it here.レビューを完了した後、デベロッパーフローをメンションして、すべての未解決のスレッドに対応することもできます:
@duo-developer-<namespace> please address the review feedback on this MR.マージリクエストを分割する
マージリクエストが大きくなりすぎた場合は、デベロッパーフローにその一部を別のマージリクエストに抽出するように依頼できます:
@duo-developer-<namespace> the logging changes in this MR are out of scope.
Split them into a separate MR.実装アプローチを調査する
変更を加える前に、デベロッパーフローに問題を調査し、レポートするように依頼できます:
@duo-developer-<namespace> research whether the `PUT /api/users` endpoint also needs
rate limiting like we added to the `POST /api/users` endpoint.
Post your findings here.