Developer Flow
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
Developer Flow는 이슈와 머지 리퀘스트 전반에서 더 효율적으로 작업하도록 돕습니다. 최상의 결과를 얻으려면 Developer Flow를 처음 사용하기 전에 프로젝트를 설정합니다. Developer Flow가 더 나은 결과를 내도록 하려면 다음의 선택적 설정으로 프로젝트를 구성하는 것이 좋습니다.
히스토리
- GitLab 18.3에서
duo_workflow_in_ci라는 기능 플래그와 함께 베타로 도입되었습니다. 기본적으로 비활성화되어 있지만 인스턴스 또는 사용자에 대해 활성화할 수 있습니다. - GitLab 18.6에서
duo_developer_button이라는 플래그와 함께Issue to MR에서Developer Flow로 이름이 변경되었습니다. 기본적으로 비활성화되어 있지만 인스턴스 또는 사용자에 대해 활성화할 수 있습니다. 기능 플래그duo_workflow도 활성화해야 하며, 이 플래그는 기본적으로 활성화되어 있습니다. - GitLab 18.8에서 정식 출시되었습니다.
- 기능 플래그
duo_workflow_in_ci,duo_developer_button,duo_workflow가 GitLab 18.9에서 제거되었습니다. - GitLab 18.10에서 GitLab.com의 Free 티어에서 GitLab Credits와 함께 사용할 수 있게 되었습니다.
- 멘션 트리거가 GitLab 18.11에서 도입되었습니다.
- 이미지를 컨텍스트로 제공하는 기능이 GitLab 19.5에서
dap_tool_image_input이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
Developer Flow는 이슈와 머지 리퀘스트 전반에서 더 효율적으로 작업하도록 돕습니다. Developer Flow로 다음을 수행할 수 있습니다.
- 이슈에서 초안 머지 리퀘스트를 생성합니다.
- 리뷰 피드백을 바탕으로 기존 머지 리퀘스트를 반복해서 개선합니다.
- 구현 접근 방식을 조사하고 결과를 토론에 게시합니다.
- 큰 머지 리퀘스트를 더 작고 초점이 분명한 머지 리퀘스트로 나눕니다.
- 머지 충돌을 해결합니다.
사전 요구 사항#
- GitLab Duo Agent Platform의 사전 요구 사항을 충족해야 합니다.
- 최상위 그룹에 대해 Allow foundational flows와 Developer를 켭니다.
- 프로젝트에서 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.
- 서비스 계정을 허용하도록 푸시 규칙을 구성합니다.
- 자체 러너를 구성하거나 프로젝트에서 GitLab 호스팅 러너를 켭니다.
최상의 결과를 얻으려면 Developer Flow를 처음 사용하기 전에
프로젝트를 설정합니다. AGENTS.md와 agent-config.yml
파일을 구성하면 Developer Flow 결과의 품질과 신뢰성이 크게 향상됩니다.
프로젝트 설정#
Developer Flow가 더 나은 결과를 내도록 하려면 다음의 선택적 설정으로 프로젝트를 구성하는 것이 좋습니다.
AGENTS.md파일 추가: 테스트 명령, 린팅 규칙, 커밋 형식, 코딩 패턴 같은 프로젝트 규칙을 문서화합니다. Developer Flow는 리포지터리에서 작업할 때 이 파일을 컨텍스트로 사용합니다. 자세한 내용은 AGENTS.md 사용자 지정 파일을 참고합니다.- 워크스페이스 서브에이전트 추가: 리뷰나 조사처럼 초점이 분명한 작업을 Developer Flow가 위임할 수 있는
전문 서브에이전트를
.agents/agents/디렉터리에 정의합니다. 이 기능은 실험 기능입니다. 자세한 내용은 워크스페이스 서브에이전트를 참고합니다. - 실행 환경 구성: 프로젝트에 특정 도구(예: Go, Python, Node.js)가 필요하면
agent-config.yml파일로 에이전트 환경을 구성합니다. 이렇게 하지 않으면 Developer Flow가 의존성을 설치하거나 테스트를 실행할 수 없으며, 빌드되지 않거나 통과하지 못하는 변경 사항을 만들 가능성이 더 높아집니다. 환경이 제대로 구성되어 있으면 Developer Flow는 커밋하기 전에 테스트를 실행하고 자신의 변경 사항을 검증할 수 있습니다. 자세한 내용은 플로 실행 구성을 참고합니다. - 모델 선택: Developer Flow는 비용과 성능의 균형에 맞춰 조정된 GitLab 기본 모델을 사용합니다. 초점이 분명한 작업에는 더 빠른 모델이 반복 시간을 줄여 주고, 복잡한 다단계 작업에는 성능이 더 높은 모델이 불완전한 계획의 위험을 줄여 줍니다. 자세한 내용은 GitLab Duo AI 모델을 참고합니다.
플로 사용#
사전 요구 사항:
- 이벤트 유형 Mention과 Assign이 Developer Flow의 트리거에 구성되어 있어야 합니다.
토론에서 Duo Developer 멘션#
댓글을 Developer Flow의 실행 가능한 작업으로 바꾸려면 댓글에서 @duo-developer-<namespace>를 멘션합니다. <namespace>는 GitLab 네임스페이스 경로(예: gitlab-org)로 바꿉니다.
이슈 또는 머지 리퀘스트의 내용과 제공하는 컨텍스트의 양에 따라 플로는 다음 작업을 실행할 수 있습니다.
- 코드 변경
- 머지 리퀘스트와 이슈 생성
- 구현 접근 방식을 조사한 뒤 결과를 보고하거나 그에 맞게 업데이트
예를 들면 다음과 같습니다.
@duo-developer-<namespace> research approaches for implementing pagination
on the /users endpoint, then create a draft MR with the most
promising approach.
Developer Flow는 해당 세션으로 연결되는 링크로 응답합니다.
또는 진행 상황을 모니터링하려면 왼쪽 사이드바에서 AI > Sessions를 선택합니다.
이슈에서 머지 리퀘스트 생성#
이슈에서 머지 리퀘스트를 생성하려면 다음을 수행합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Plan > Work items를 선택한 다음 Type = Issue로 필터링합니다.
- 머지 리퀘스트를 생성할 이슈를 선택합니다.
- 이슈에서 머지 리퀘스트를 생성하려면 다음 중 하나를 수행합니다.
- 이슈에 Duo Developer 서비스 계정을 지정합니다.
- 오른쪽 사이드바의 Assignees 섹션에서 Edit를 선택합니다.
duo developer를 입력하고 검색 결과에서 선택합니다.
- 이슈 헤더 아래에서 Implement를 선택합니다.
- 이슈에 Duo Developer 서비스 계정을 지정합니다.
- 진행 상황을 모니터링하려면 왼쪽 사이드바에서 AI > Sessions를 선택합니다.
- 세션이 완료되면 이슈의 Activity 섹션에 있는 링크에서 머지 리퀘스트를 리뷰합니다.
Agentic Chat에서 플로 사용#
히스토리
- GitLab 19.2에서
agentic_foundational_flow_tool이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 활성화되어 있습니다. - GitLab 19.5에서 정식 출시되었습니다. 기능 플래그
agentic_foundational_flow_tool이 제거되었습니다.
GitLab Duo Agentic Chat 대화에서 Developer Flow를 사용해 다음과 같은 여러 작업을 완료할 수 있습니다.
- 코딩 목표 달성. 이 목표와 연결된 이슈는 필요하지 않습니다.
- 머지 리퀘스트를 열어 이슈 해결.
Agentic Chat 대화에서 플로를 사용하려면 다음을 수행합니다.
-
상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
GitLab Duo 사이드바에서 새 Agentic Chat 대화 또는 기존 Agentic Chat 대화를 엽니다.
-
Agentic Chat에 Developer Flow를 사용해 작업을 수행하도록 요청합니다.
플로 진행 상황이 Chat 대화에 표시됩니다. 자세한 내용을 보려면 다음을 수행할 수 있습니다.
- 대화에서 View Agent Session을 선택합니다.
- 왼쪽 사이드바에서 AI > Sessions를 선택합니다.
이미지를 컨텍스트로 제공#
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참고합니다.
사전 요구 사항:
- GitLab 관리형 모델을 사용합니다. 직접 호스팅하는 모델은 지원되지 않습니다.
- 파이프라인에서 실행되는 플로의 경우 실행 환경에 GitLab Duo CLI 9.27.0 이상이 포함되어 있어야 합니다.
Developer Flow는 이미지를 읽고 작업의 컨텍스트로 사용할 수 있습니다. Agentic Chat에서 플로를 사용할 때, GitLab Duo CLI에서, 또는 토론이나 이슈에서 시작한 플로에서 이미지를 제공할 수 있습니다. 플로는 다음을 읽을 수 있습니다.
- 리포지터리에 있는 이미지 파일.
- 같은 프로젝트의 이슈, 머지 리퀘스트 또는 댓글에 첨부된 이미지.
프롬프트에 이미지를 직접 업로드할 수는 없습니다. 대신 이미 존재하는 이미지를 지정합니다.
- 리포지터리의 파일은 파일 경로를 제공합니다. 예:
docs/architecture.png. - 첨부 파일은 Markdown에 표시되는 업로드 참조를 제공합니다.
예:
/uploads/<secret>/screenshot.png.
플로가 이슈에서 작업할 때는 해당 이슈에 첨부된 이미지도 읽을 수 있습니다.
이미지 요구 사항#
이미지를 컨텍스트로 사용하려면 다음 요구 사항을 충족해야 합니다.
- 형식: PNG, JPEG 또는 WebP 파일
- 크기: 10 MB 이하
- 크기(해상도): 가로 또는 세로가 8,000픽셀을 넘지 않아야 함
모범 사례#
명확한 컨텍스트 제공#
Developer Flow는 사용자가 알려 준 내용이나 이슈, 머지 리퀘스트, Chat 대화, 토론 스레드의 컨텍스트에서 확인할 수 있는 내용만 압니다. 사람 협업자에게 도움이 되는 방법이 여기에도 그대로 적용됩니다.
- 관련 파일이나 토론 링크와 함께 명확한 문제 설명을 작성합니다.
- "완료"가 어떤 모습인지 정의하는 인수 조건을 포함합니다.
- 정확한 파일 경로를 알고 있다면 지정합니다.
- 일관성을 유지하기 위해 기존 패턴의 코드 예시를 포함합니다.
- 스크린샷, 다이어그램 또는 목업을 이슈에 첨부하거나 리포지터리에 커밋하고, 요청에서 그 이름을 지정합니다. 자세한 내용은 이미지를 컨텍스트로 제공을 참고합니다.
토론에서 Duo Developer를 멘션할 때 명시적으로 요청#
토론에서 Duo Developer를 멘션할 때는 원하는 작업을 정확히 알려 줍니다. 예를 들면 다음과 같습니다.
- "
/api/users엔드포인트에 페이지 매김을 구현하는 초안 머지 리퀘스트를 생성합니다." - "이 머지 리퀘스트의 리뷰 피드백을 반영합니다."
- "로깅 변경 사항을 별도의 머지 리퀘스트로 분리합니다."
- "이 서비스를 gRPC로 마이그레이션하는 접근 방식을 조사하고 결과를 여기에 게시합니다."
- "이 머지 리퀘스트에 머지 충돌이 있습니다. 해결합니다."
명시적인 지침이 없으면 플로가 자체적으로 접근 방식을 선택하며, 이는 기대와 맞지 않을 수 있습니다.
작업은 초점을 좁게 유지#
복잡한 작업은 더 작고, 초점이 분명하며, 실행 중심인 요청으로 나눕니다. 크고 범위가 열려 있는 작업은 반복 한도에 걸릴 가능성이 더 높습니다.
예시#
머지 리퀘스트 생성을 위한 이슈#
이 예시는 Developer Flow가 머지 리퀘스트를 생성하는 데 사용할 수 있는, 잘 작성된 이슈를 보여 줍니다.
## 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.
머지 리퀘스트 리뷰 피드백 반영#
머지 리퀘스트를 리뷰한 뒤 Developer Flow를 멘션해 피드백을 반영하도록 할 수 있습니다. 예를 들어 특정 줄의 리뷰 댓글에서 다음과 같이 합니다.
@duo-developer-<namespace> move this validation logic into the `BaseService` class
in `app/services/base_service.rb` instead of duplicating it here.
전체 리뷰를 제출한 다음 Developer Flow를 멘션해 열려 있는 모든 스레드를 처리하도록 할 수도 있습니다.
@duo-developer-<namespace> please address the review feedback on this MR.
머지 리퀘스트 분리#
머지 리퀘스트가 너무 커졌다면 Developer Flow에 일부를 별도의 머지 리퀘스트로 추출하도록 요청할 수 있습니다.
@duo-developer-<namespace> the logging changes in this MR are out of scope.
Split them into a separate MR.
구현 접근 방식 조사#
변경하기 전에 Developer Flow에 문제를 조사하고 결과를 보고하도록 요청할 수 있습니다.
@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.
이미지를 컨텍스트로 사용#
Developer Flow는 리포지터리의 이미지나 같은 프로젝트의 이슈 및 머지 리퀘스트 첨부 파일에서 이미지를 읽을 수 있습니다. 프롬프트에서 이미지를 지정합니다.
이슈에 첨부된 스크린샷에 나타난 UI 버그를 수정하도록 Developer Flow에 요청할 수 있습니다.
Look at the screenshot attached to issue 1234 and fix the alignment bug it shows.
아키텍처 다이어그램을 설명하도록 Developer Flow에 요청할 수 있습니다.
Read docs/architecture.png, explain the data flow, and identify any single points of failure.
화이트보드 사진을 설계 문서로 만들도록 Developer Flow에 요청할 수 있습니다.
Read whiteboard.jpg and turn it into a design document in docs/design.md.
Agentic Chat에서 Developer Flow 사용#
Agentic Chat 대화에서 Developer Flow를 사용해 다양한 작업을 완료할 수 있습니다.
- 코딩 목표를 달성하려면 다음을 입력할 수 있습니다.
Use the developer flow to resolve this code review feedback.Use the developer flow to update this dependency.
- 머지 리퀘스트를 열어 이슈를 해결하려면 다음을 입력할 수 있습니다.
Resolve this issue.Open a merge request to resolve this issue.