
GitHub Copilot CLI의 Squad 모드와 Fleet 모드: 차이점은 무엇인가?
요약
GitHub Copilot CLI의 Fleet 모드와 Squad 프레임워크의 차이점을 분석합니다. Fleet은 병렬 처리를 위한 기본 단위이며, Squad는 에이전트 간 협업과 지식 축적을 관리하는 조정 프레임워크입니다.
핵심 포인트
- Fleet 모드는 상태가 없는 하위 에이전트를 병렬로 실행하여 속도를 높임
- Squad는 코드베이스를 학습하고 결정을 기억하는 전문가 팀 프레임워크
- Fleet은 일회성 병렬 작업에, Squad는 장기적인 프로젝트 관리에 적합
- 두 기술은 상호 보완적이며 하이브리드 모드로 함께 사용할 때 효과적임
바쁜 개발자를 위한 요약 (TL;DR)
- Fleet Mode (
/fleet)은 Copilot CLI에 내장되어 있습니다. 사용자의 작업을 자동으로 분해하고 상태가 없는 (stateless) 하위 에이전트 (sub-agents)들을 병렬로 실행합니다. 별도의 설정이 필요 없으며, 세션 간의 메모리(기억)는 유지되지 않습니다. - Squad는 Brady Gaster(Microsoft의 Principal PM Architect)가 만든 오픈 소스 프레임워크입니다. 이름이 지정된 AI 전문가 팀을 사용자의 저장소(repo)에 지속적인 형태로 설치합니다. 이들은 결정을 기억하고, 리뷰 프로토콜을 강제하며, 시간이 지남에 따라 코드베이스를 학습합니다.
- 이들은 서로 다른 문제를 해결하는 **서로 다른 계층 (different layers)**입니다. Fleet은 분산 처리의 기본 단위 (dispatch primitive)이며, Squad는 동일한 하위 에이전트 기본 단위를 기반으로 구축된 조정 프레임워크 (coordination framework)입니다.
- Squad는 Fleet이 있다고 해서 중복되는 것이 아닙니다. Brady는 Fleet을 Squad의 핵심으로 사용하는 방안을 명시적으로 검토했으나 반대하는 결정을 내렸습니다.
- 이들은 함께 사용할 때 더 효과적입니다. Squad v0.10.0은 읽기 작업이 많은 배치 작업에는 Fleet을 사용하고(2.9배 더 빠름), 쓰기 작업에는 자체적인 헌장 인식 분산 (charter-aware dispatching)을 사용하는 하이브리드 분산 모드를 제공합니다.
- 일회성 병렬 작업에는 Fleet을 선택하세요. 에이전트가 며칠 또는 몇 주에 걸쳐 지식을 축적해야 하는 프로젝트라면 Squad를 선택하세요. Fleet의 속도와 Squad의 거버넌스 (governance)를 모두 원한다면 둘 다 선택하세요.
혼란은 실제 상황입니다
저는 /fleet과 squad가 동일한 대화에서 언급되는 것을 계속 보았습니다. 둘 다 여러 에이전트를 포함하며, 작업을 병렬화하고, Copilot CLI 내부에서 실행됩니다. 그래서 무엇이 실제로 다른지 알아내기 위해 문서, 소스 코드, 그리고 GitHub 이슈를 파헤쳐 보았습니다.
짧은 답변은 이렇습니다: 이들은 서로 다른 수준에서 작동합니다. Fleet은 가공되지 않은 병렬성 (raw parallelism)을 제공합니다. Squad는 조정된 팀 (coordinated team)을 제공합니다. 이 차이를 이해하는 것이 멀티 에이전트 워크플로우 (multi-agent workflows)를 생각하는 방식을 바꿉니다.
Fleet Mode란 무엇인가?
Fleet는 Copilot CLI에 내장된 슬래시 명령 (slash command)입니다. /fleet을 입력한 뒤 프롬프트 (prompt)를 작성하면, 오케스트레이터 (orchestrator)가 작업을 독립적인 하위 작업 (sub-tasks)으로 분할한 다음 병렬로 실행합니다.
/fleet refactor the auth module, add tests for each endpoint, and update the README
오케스트레이터는 무엇을 동시에 실행할 수 있는지 판단합니다. 백그라운드 하위 에이전트 (sub-agents)를 파견하고, 이들이 완료될 때까지 기다린 다음 결과를 합성 (synthesize)합니다.
또한 플랜 모드 (plan mode)에서도 이를 실행할 수 있습니다. Shift+Tab으로 계획을 작성한 다음,
squad init 명령어를 실행하면 .squad/ 디렉토리가 스캐폴딩 (scaffolding)됩니다. 그 내부에는 다음이 포함됩니다:
team.md: 팀 구성원을 나열합니다.routing.md: 누가 어떤 종류의 작업을 처리할지 정의합니다.decisions.md: 모든 에이전트 (agent)가 작업을 시작하기 전에 읽게 될 팀의 결정 사항을 기록합니다.agents/{name}/charter.md: 각 에이전트의 정체성, 전문 지식 및 제약 사항을 정의합니다.agents/{name}/history.md: 각 에이전트가 귀하의 특정 프로젝트에 대해 학습한 내용을 저장합니다.
에이전트들은 허구의 세계관에서 가져온 영구적인 이름을 부여받습니다. Apollo 13 미션 컨트롤의 호출 부호(callsigns), 혹은 영화 '유주얼 서스펙트 (The Usual Suspects)'의 캐릭터 이름 같은 것들입니다. 이 이름들은 세션 전반에 걸쳐 유지되며 .squad/casting/registry.json에 저장됩니다.
코디네이터 에이전트 (.github/agents/squad.agent.md)가 라우터 (router) 역할을 수행합니다. 이 에이전트는 귀하의 요청을 읽고, 라우팅 테이블 (routing table)을 확인한 뒤, 적절한 전문가 에이전트들을 생성 (spawn)합니다. 코디네이터는 직접 도메인 작업을 수행하지 않으며, 오직 위임 (delegate)만 합니다.
Scribe라고 불리는 조용한 에이전트가 모든 작업 배치 (batch)가 끝난 후 백그라운드에서 실행됩니다. Scribe는 에이전트들의 결정 사항을 병합하고, 히스토리 (history) 파일을 업데이트하며, 오래된 항목들을 아카이브 (archive)합니다. 귀하는 Scribe와 직접 상호작용할 일이 없습니다.
Ralph라고 불리는 또 다른 에이전트는 귀하의 GitHub 이슈 (issue) 보드를 모니터링하며, 폴링 간격 (polling interval)에 따라 에이전트들을 자동으로 분류 (triage)하고 배정할 수 있습니다.
이 모든 상태 (state)는 git에 저장됩니다. 저장소를 클론 (clone)하면 축적된 모든 지식을 가진 팀을 그대로 가져올 수 있습니다.
나란히 비교하기
| Fleet 모드 | Squad 모드 | |
|---|---|---|
| 설정 (Setup) | 없음. Copilot CLI에 내장됨 | npm install + squad init |
| ... | ||
![]() |
핵심 차이점
Fleet는 다음과 같은 질문에 답합니다: "어떻게 하면 여러 에이전트를 병렬로 실행할 수 있는가?"
Squad는 다른 질문에 답합니다: "어떻게 하면 내 프로젝트를 학습하고 시간이 지남에 따라 품질을 유지하는 전문가 팀을 지속적으로 운영할 수 있는가?"
Fleet은 명령 전달 기본 단위 (dispatch primitive)입니다. Squad는 조정 프레임워크 (coordination framework)입니다. Squad는 Fleet이 하위 에이전트 (sub-agents)를 생성할 때 사용하는 것과 동일한 기반 task 도구를 사용하지만, 그 위에 여섯 가지 요소를 계층적으로 쌓아 올립니다:
- 지속적인 정체성 (Persistent identity). 에이전트는 세션이 종료되어도 유지되는 이름, 헌장 (charters), 그리고 이력을 가집니다.
- 세션 간 메모리 (Cross-session memory). 결정 사항과 기술이 시간이 지남에 따라 축적됩니다. 저장소 (repo)를 클론하면 새로운 기여자가 팀의 모든 지식을 즉시 얻을 수 있습니다.
- 명시적 라우팅 (Explicit routing). 내구성이 있는 파일 내에 도메인 인지형 (domain-aware) 라우팅 규칙이 존재합니다. 명명된 라우팅 (named routing), 도메인 매칭 (domain matching), 기술 인지형 라우팅 (skill-aware routing) 순으로 우선순위가 적용됩니다.
- 품질 게이트 (Quality gates). 리뷰어 잠금 프로토콜 (reviewer lockout protocol)을 통해 에이전트가 자신이 거절당한 작업을 스스로 수정하는 것을 방지합니다. 반드시 다른 에이전트가 개입해야 합니다.
- 의례 (Ceremonies). 공유 시스템을 건드리는 다중 에이전트 (multi-agent) 작업 전에는 디자인 리뷰 (design reviews)가 자동으로 트리거됩니다. 실패 후에는 회고 (retrospectives)가 자동으로 트리거됩니다.
- 거버넌스 (Governance). 쓰기 권한 모델 (write-authority model)을 통해 어떤 에이전트가 어떤 파일에 쓸 수 있는지 제어합니다. 전담 RAI 에이전트가 신호등 방식의 판결 (traffic-light verdicts)을 내립니다.
Brady Gaster는 GitHub issue에서 이를 간단히 설명했습니다:
"Fleet 모드는 Copilot CLI의 기능인 반면, Squad는 CLI 문맥에서의 Copilot Agent입니다. 한때 우리의 생성 (spawn) 과정에 Fleet을 사용하는 것을 조사했으나 실행하지는 않았습니다. Fleet은 정말 끝내줍니다 (awesome sauce)!"
함께 사용할 때 더 효과적입니다
Squad v0.10.0 기준으로, Fleet은 Squad의 watch 시스템 내에서 선택 가능한 명령 전달 모드 (dispatch mode)로 통합되었습니다.
squad watch --execute --dispatch-mode hybrid
하이브리드 (hybrid) 모드에서 Squad의 Ralph 데몬은 제목을 스캔하여 들어오는 GitHub 이슈를 자동으로 분류합니다:
| 이슈 유형 | 예시 키워드 | 전달 방식 |
|---|---|---|
| 읽기 중심 (Read-heavy) | research, review, analyze, audit | /fleet (병렬) |
| 쓰기 중심 (Write-heavy) | fix, implement, create, build | task 도구 (순차적, 헌장 인지형) |
모호한 경우에는 분류 기본값이 "쓰기 (write)"로 설정됩니다. 쓰기 중심 작업은 헌장 준수 (charter enforcement)가 필요하기 때문에 이것이 더 안전한 경로입니다.
왜 순수 Fleet을 사용하지 않나요?
테스트 결과 치명적인 한계가 드러났습니다. Fleet은 사용자 정의 에이전트 헌장(custom agent charters)을 무시합니다. /fleet 프롬프트에서 @my-agent를 참조하더라도, Copilot CLI는 대신 일반적인 탐색 에이전트(explore agent)를 생성합니다. 이 과정에서 에이전트의 정체성, 제약 조건 및 전문 지식이 누락됩니다.
이로 인해 Fleet은 분류(triage)나 감사(audit)와 같은 읽기 전용 작업에는 매우 적합합니다. 하지만 거버넌스(governance)가 필요한 코드 변경의 경우에는 헌장을 인식하는 Squad의 디스패치(dispatch) 방식이 필요합니다.
벤치마크
Squad 팀은 4개의 실제 이슈를 대상으로 하이브리드 모드(hybrid mode)를 순차적 디스패치(sequential dispatch)와 비교하여 벤치마크를 수행했습니다.
| 지표 | Fleet (병렬) | 순차적 (Sequential) | 개선 사항 |
|---|---|---|---|
| 총 소요 시간 | 116s | 332s | 2.9배 빠름 |
| ... |
Fleet은 적절한 긴급도 분류와 실행 가능한 다음 단계(actionable next steps)를 통해 4개의 이슈를 모두 정확하게 분류했습니다.
어떤 것을 사용할 것인가
Fleet을 선택해야 하는 경우:
- 독립적인 조각들로 나뉘는 **일회성 작업(one-off task)**을 수행할 때. (예: 다중 파일 리팩터링, 모듈 전반의 테스트 생성, 여러 컴포넌트에 대한 문서화)
- 세션이 종료된 후 에이전트가 무언가를 기억할 필요가 없을 때.
- 리뷰 프로토콜(review protocols)이나 품질 게이트(quality gates)가 필요하지 않을 때.
- 설정이 전혀 필요 없고 최대의 속도를 원할 때.
Squad를 선택해야 하는 경우:
- 며칠 또는 몇 주에 걸쳐 프로젝트를 진행하며 에이전트가 지식을 쌓기를 원할 때.
- **품질 강제(quality enforcement)**가 필요할 때. (예: 리뷰어 잠금(Reviewer lockout), 복잡한 변경 전 설계 리뷰, 실패 후 회고)
- 세션 전반에 걸쳐 도메인 전문 지식이 유지되는 **이름이 지정된 전문가(named specialists)**를 원할 때.
- CLI뿐만 아니라 VS Code 또는 GitHub.com에서도 작동하기를 원할 때.
- 폴링 간격(polling interval)에 따라 실행되는 **자동화된 이슈 분류(automated issue triage)**가 필요할 때.
- 팀에 에이전트가 일관되게 따라야 할 컨벤션(conventions)이 있을 때.
둘 다 선택해야 하는 경우:
- 이미 Squad를 사용 중이며 배치 작업 (batch operations)을 가속화하고 싶을 때. 예: 이슈 분류 (Issue triage), 코드 감사 (code audits), 리서치.
- 읽기 작업에는 Fleet의 속도를, 쓰기 작업에는 Squad의 거버넌스 (governance)를 원할 때.
멘탈 모델 (The mental model)
Fleet는 하루 동안 프리랜서를 고용하는 것과 같습니다. 그들은 나타나고, 당신은 작업을 설명하며, 그들은 병렬로 빠르게 작업하여 결과물을 전달합니다. 내일이면 당신은 모든 것을 처음부터 다시 설명해야 할 것입니다.
Squad는 상주하는 팀을 갖는 것과 같습니다. 그들은 당신의 코드베이스 (codebase), 컨벤션 (conventions), 그리고 과거의 결정 사항들을 알고 있습니다. 그들은 서로의 작업을 리뷰합니다. 새로운 구성원이 합류하면, 그들은 결정 로그 (decision log)를 읽고 빠르게 적응합니다. 그들은 디자인 리뷰 (design reviews)와 회고 (retros)를 진행합니다. 그들은 시간이 지남에 따라 점점 더 발전합니다.
Fleet는 속도를 제공합니다. Squad는 연속성 (continuity)을 제공합니다. 하이브리드 모드는 각 모드가 가장 강력한 곳에 적용하여 두 가지 모두를 제공합니다.
링크 (Links)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
