<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Composed-Agent on Yarang's Tech Lair</title><link>https://blog.fcoinfup.com/ko/tags/composed-agent/</link><description>Recent content in Composed-Agent on Yarang's Tech Lair</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Mon, 30 Mar 2026 00:31:36 +0900</lastBuildDate><atom:link href="https://blog.fcoinfup.com/ko/tags/composed-agent/index.xml" rel="self" type="application/rss+xml"/><item><title>멀티모델 AI 에이전트 팀 설계: 조합형 아키텍처와 5팀 계층 구조</title><link>https://blog.fcoinfup.com/ko/post/%EB%A9%80%ED%8B%B0%EB%AA%A8%EB%8D%B8-ai-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%ED%8C%80-%EC%84%A4%EA%B3%84-%EC%A1%B0%ED%95%A9%ED%98%95-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EC%99%80-5%ED%8C%80-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0/</link><pubDate>Mon, 30 Mar 2026 00:31:36 +0900</pubDate><guid>https://blog.fcoinfup.com/ko/post/%EB%A9%80%ED%8B%B0%EB%AA%A8%EB%8D%B8-ai-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%ED%8C%80-%EC%84%A4%EA%B3%84-%EC%A1%B0%ED%95%A9%ED%98%95-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EC%99%80-5%ED%8C%80-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0/</guid><description>&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;블로그 시스템 구축을 위해 &lt;strong&gt;14명의 AI 전문가, 5개 팀, 4개 LLM 모델&lt;/strong&gt;로 구성된 멀티모델 에이전트 팀을 설계했습니다. 핵심은 두 가지입니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;조합형 에이전트(Composed Agent)&lt;/strong&gt;: 역할 정의와 실행 프로필을 분리해 재사용성 극대화&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;계층형 브릿지 리더십&lt;/strong&gt;: 상위팀-하위팀 간 기술 리드의 이중 소속으로 소통 병목 해결&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 글에서는 최종 구조, 모델 배분 전략, 조합형 아키텍처 설계 과정을 공유합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="배경-왜-멀티모델인가"&gt;배경: 왜 멀티모델인가
&lt;/h2&gt;&lt;p&gt;하나의 LLM으로 모든 작업을 처리하면 두 가지 문제가 발생합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;비용&lt;/strong&gt;: Claude Opus 수준의 모델로 14명 전문가를 실행하면 비용이 통제 불가능&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;적합성&lt;/strong&gt;: 설계에는 빠른 추론이, 보안 분석에는 깊은 논리가, 구현에는 안정적인 코딩이 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그래서 작업 성격에 맞춰 모델을 분배했습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="최종-팀-구조"&gt;최종 팀 구조
&lt;/h2&gt;&lt;p&gt;5개 팀, 14명 전문가, 4개 모델로 구성됩니다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 subgraph UPPER["상위팀 — 조정 팀 (steering-team) · consensus"]
 ORC["오케스트레이터&lt;br/&gt;relay:steering-orchestrator"]
 DES["설계자&lt;br/&gt;gemini:gemini-2.5-flash"]
 SEC["보안 검토자&lt;br/&gt;codex:gpt-4o"]
 STL["백엔드 기술 리드&lt;br/&gt;relay:developer-zai"]
 FTL["프론트엔드 기술 리드&lt;br/&gt;relay:developer-zai"]
 DTL["데스크탑 기술 리드&lt;br/&gt;relay:developer-zai"]
 INF["인프라 네트워크&lt;br/&gt;gemini:gemini-2.5-flash"]
 SAD["서버 관리자&lt;br/&gt;relay:developer-zai"]
 end

 subgraph LOWER_BE["백엔드 팀 · leader_decides"]
 BTL["백엔드 기술 리드"]
 BDEV["백엔드 개발자"]
 end

 subgraph LOWER_FE["프론트엔드 팀 · leader_decides"]
 FTL2["프론트엔드 기술 리드"]
 FDEV["프론트엔드 개발자"]
 FUX["UX 디자이너"]
 end

 subgraph LOWER_DT["데스크탑 팀 · leader_decides"]
 DTL2["데스크탑 기술 리드"]
 DDEV["데스크탑 개발자"]
 DUX["UX 디자이너"]
 end

 subgraph LOWER_INFRA["인프라 팀 · leader_decides"]
 SAD2["서버 관리자 (리더)"]
 INET["클라우드 네트워크"]
 DBA["DB 아키텍트"]
 end

 UPPER -.-&gt;|bridge| LOWER_BE
 UPPER -.-&gt;|bridge| LOWER_FE
 UPPER -.-&gt;|bridge| LOWER_DT
 UPPER -.-&gt;|bridge| LOWER_INFRA

 BTL --&gt; BDEV
 FTL2 --&gt; FDEV
 FTL2 --&gt; FUX
 DTL2 --&gt; DDEV
 DTL2 --&gt; DUX
 SAD2 --&gt; INET
 SAD2 --&gt; DBA&lt;/pre&gt;&lt;h3 id="팀별-상세"&gt;팀별 상세
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;팀&lt;/th&gt;
 &lt;th&gt;유형&lt;/th&gt;
 &lt;th&gt;의사결정&lt;/th&gt;
 &lt;th&gt;리더&lt;/th&gt;
 &lt;th&gt;팀원 수&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;조정 팀&lt;/td&gt;
 &lt;td&gt;upper&lt;/td&gt;
 &lt;td&gt;consensus&lt;/td&gt;
 &lt;td&gt;오케스트레이터&lt;/td&gt;
 &lt;td&gt;8명 (브릿지 포함)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;백엔드 팀&lt;/td&gt;
 &lt;td&gt;lower&lt;/td&gt;
 &lt;td&gt;leader_decides&lt;/td&gt;
 &lt;td&gt;백엔드 기술 리드&lt;/td&gt;
 &lt;td&gt;2명&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;프론트엔드 팀&lt;/td&gt;
 &lt;td&gt;lower&lt;/td&gt;
 &lt;td&gt;leader_decides&lt;/td&gt;
 &lt;td&gt;프론트엔드 기술 리드&lt;/td&gt;
 &lt;td&gt;3명&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;데스크탑 팀&lt;/td&gt;
 &lt;td&gt;lower&lt;/td&gt;
 &lt;td&gt;leader_decides&lt;/td&gt;
 &lt;td&gt;데스크탑 기술 리드&lt;/td&gt;
 &lt;td&gt;3명&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;인프라 팀&lt;/td&gt;
 &lt;td&gt;lower&lt;/td&gt;
 &lt;td&gt;leader_decides&lt;/td&gt;
 &lt;td&gt;서버 관리자&lt;/td&gt;
 &lt;td&gt;3명&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="인프라-팀-분리-결정"&gt;인프라 팀 분리 결정
&lt;/h2&gt;&lt;p&gt;초기 설계에서는 DB 아키텍트와 서버 관리자가 백엔드 팀에 포함되어 있었습니다. 하지만 &lt;strong&gt;작업 공간(Workspace) 기준&lt;/strong&gt;으로 분리했습니다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 subgraph 백엔드팀
 B["API 코드 작성&lt;br/&gt;FastAPI, Python&lt;br/&gt;workspace: VS Code / SSH"]
 end

 subgraph 인프라팀
 S["서버 관리&lt;br/&gt;Docker, Ubuntu, Nginx&lt;br/&gt;workspace: SSH 터미널"]
 N["클라우드 네트워크&lt;br/&gt;Cloudflare Dashboard&lt;br/&gt;workspace: 웹 콘솔"]
 D["DB 관리&lt;br/&gt;PostgreSQL, 마이그레이션&lt;br/&gt;workspace: psql / SSH"]
 end

 B -.-&gt;|API 배포| S
 B -.-&gt;|쿼리 최적화| D&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;분리 이유:&lt;/strong&gt; 작업 공간이 다르면 같은 팀에 두는 것보다 분리하는 것이 자연스럽습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="모델-배분-전략"&gt;모델 배분 전략
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;pie title 모델별 전문가 수
 "relay:developer-zai (GLM)" : 10
 "gemini:gemini-2.5-flash" : 2
 "codex:gpt-4o" : 1
 "zai:glm-4" : 1&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;모델&lt;/th&gt;
 &lt;th&gt;전문가 수&lt;/th&gt;
 &lt;th&gt;용도&lt;/th&gt;
 &lt;th&gt;선택 이유&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;relay:developer-zai&lt;/td&gt;
 &lt;td&gt;10명&lt;/td&gt;
 &lt;td&gt;구현, 운영, 리드&lt;/td&gt;
 &lt;td&gt;비용 효율적, 안정적 코딩&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gemini:gemini-2.5-flash&lt;/td&gt;
 &lt;td&gt;2명&lt;/td&gt;
 &lt;td&gt;설계, 인프라 네트워크&lt;/td&gt;
 &lt;td&gt;빠른 응답, 외부 API 호출 용이&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;codex:gpt-4o&lt;/td&gt;
 &lt;td&gt;1명&lt;/td&gt;
 &lt;td&gt;보안 검토&lt;/td&gt;
 &lt;td&gt;높은 추론 능력, OWASP 지식&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;zai:glm-4&lt;/td&gt;
 &lt;td&gt;1명&lt;/td&gt;
 &lt;td&gt;컨텍스트 압축&lt;/td&gt;
 &lt;td&gt;무료 티어, 텍스트 요약 특화&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;10명의 구현 전문가를 GLM(저비용 모델)에 배정하여 전체 비용의 &lt;strong&gt;60-70%를 절감&lt;/strong&gt;했습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="조합형-에이전트-아키텍처-composed-agent-pattern"&gt;조합형 에이전트 아키텍처 (Composed Agent Pattern)
&lt;/h2&gt;&lt;p&gt;이번 설계의 핵심 혁신은 &lt;strong&gt;역할 정의(Expert)와 실행 프로필(Definition)의 분리&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;h3 id="기존-방식의-문제"&gt;기존 방식의 문제
&lt;/h3&gt;&lt;p&gt;기존에는 역할과 실행 로직이 결합되어 변경 시 전체 재작성이 필요하고 재사용이 불가능했습니다.&lt;/p&gt;
&lt;h3 id="조합형-방식"&gt;조합형 방식
&lt;/h3&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 DEF["Definition&lt;br/&gt;백엔드 개발자"]
 DEF --&gt; BASE["Base: backend-core"]
 DEF --&gt; CAP["Capabilities:&lt;br/&gt;rest-api, crud, auth-jwt"]
 DEF --&gt; PLAT["Platform: fastapi"]
 DEF --&gt; POL["Policy: blog-default"]

 BASE --&gt; |"조합"| RUN["런타임 에이전트"]
 CAP --&gt; |"조합"| RUN
 PLAT --&gt; |"조합"| RUN
 POL --&gt; |"조합"| RUN&lt;/pre&gt;&lt;h3 id="모듈-구조"&gt;모듈 구조
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;agent-library/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── definitions/ ← 14개 에이전트 정의
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── modules/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── base/ ← 6개 기본 모듈
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── capabilities/ ← 15개 역량 모듈
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── platforms/ ← 5개 플랫폼 모듈
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── policies/ ← 1개 정책
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── runs/ ← 실행 이력
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="장점"&gt;장점
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;재사용성&lt;/strong&gt;: &lt;code&gt;rest-api&lt;/code&gt; 역량 모듈은 백엔드 개발자와 기술 리드가 공유&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;플랫폼 교체&lt;/strong&gt;: &lt;code&gt;platform: fastapi&lt;/code&gt;를 &lt;code&gt;platform: django&lt;/code&gt;로 변경하면 즉시 전환&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;역량 확장&lt;/strong&gt;: 새 역량 모듈을 추가하고 Definition에 연결만 하면 됨&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;정책 통일&lt;/strong&gt;: 모든 에이전트가 동일한 &lt;code&gt;blog-default&lt;/code&gt; 정책을 따름&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="전문가-definition-매핑"&gt;전문가-Definition 매핑
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;전문가&lt;/th&gt;
 &lt;th&gt;Definition&lt;/th&gt;
 &lt;th&gt;Base&lt;/th&gt;
 &lt;th&gt;Capabilities&lt;/th&gt;
 &lt;th&gt;Platform&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;백엔드 개발자&lt;/td&gt;
 &lt;td&gt;backend-developer&lt;/td&gt;
 &lt;td&gt;backend-core&lt;/td&gt;
 &lt;td&gt;rest-api, crud, auth-jwt&lt;/td&gt;
 &lt;td&gt;fastapi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;백엔드 기술 리드&lt;/td&gt;
 &lt;td&gt;backend-tech-lead&lt;/td&gt;
 &lt;td&gt;backend-core&lt;/td&gt;
 &lt;td&gt;rest-api, crud, code-review&lt;/td&gt;
 &lt;td&gt;fastapi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;프론트엔드 개발자&lt;/td&gt;
 &lt;td&gt;frontend-developer&lt;/td&gt;
 &lt;td&gt;frontend-core&lt;/td&gt;
 &lt;td&gt;markdown-renderer, list-filter-sort&lt;/td&gt;
 &lt;td&gt;nextjs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;서버 관리자&lt;/td&gt;
 &lt;td&gt;server-administrator&lt;/td&gt;
 &lt;td&gt;server-core&lt;/td&gt;
 &lt;td&gt;docker-management, nginx-config, postgres-admin&lt;/td&gt;
 &lt;td&gt;ubuntu&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;인프라 네트워크&lt;/td&gt;
 &lt;td&gt;infra-network-admin&lt;/td&gt;
 &lt;td&gt;infra-core&lt;/td&gt;
 &lt;td&gt;dns-management, ssl-certificates, rate-limiting&lt;/td&gt;
 &lt;td&gt;cloudflare&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;보안 검토자&lt;/td&gt;
 &lt;td&gt;security-auditor&lt;/td&gt;
 &lt;td&gt;specialist-core&lt;/td&gt;
 &lt;td&gt;security-audit&lt;/td&gt;
 &lt;td&gt;fastapi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;컨텍스트 압축&lt;/td&gt;
 &lt;td&gt;context-compressor&lt;/td&gt;
 &lt;td&gt;specialist-core&lt;/td&gt;
 &lt;td&gt;context-compression&lt;/td&gt;
 &lt;td&gt;markdown&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="tls-인증서-전략-cloudflare-origin-ca"&gt;TLS 인증서 전략: Cloudflare Origin CA
&lt;/h2&gt;&lt;p&gt;프로덕션 환경의 TLS 인증서로 Let&amp;rsquo;s Encrypt 대신 &lt;strong&gt;Cloudflare Origin CA&lt;/strong&gt;를 선택했습니다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;sequenceDiagram
 participant Client as 방문자
 participant CF as Cloudflare (Proxy)
 participant Nginx as Nginx (Origin)
 participant API as FastAPI

 Client-&gt;&gt;CF: HTTPS 요청
 CF-&gt;&gt;CF: Cloudflare 관리 인증서로 종료
 CF-&gt;&gt;Nginx: Origin CA 인증서로 암호화
 Nginx-&gt;&gt;API: HTTP (로컬)
 API--&gt;&gt;Nginx: 응답
 Nginx--&gt;&gt;CF: Origin CA로 암호화
 CF--&gt;&gt;Client: 응답&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;항목&lt;/th&gt;
 &lt;th&gt;Let&amp;rsquo;s Encrypt&lt;/th&gt;
 &lt;th&gt;Cloudflare Origin CA&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;유효 기간&lt;/td&gt;
 &lt;td&gt;90일 (갱신 필요)&lt;/td&gt;
 &lt;td&gt;15년 (갱신 불필요)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;발급 방식&lt;/td&gt;
 &lt;td&gt;ACME 자동화 필요&lt;/td&gt;
 &lt;td&gt;Dashboard에서 수동 발급&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;복잡도&lt;/td&gt;
 &lt;td&gt;certbot 설정&lt;/td&gt;
 &lt;td&gt;인증서 파일 복사만&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;프로덕션 아키텍처:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Oracle Cloud ARM (4 OCPU, 24GB)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── PostgreSQL (호스트 직접 설치)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── Docker Compose
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── blog-api (FastAPI)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── blog-frontend (Next.js standalone)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── MinIO (S3 호환 스토리지)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── Nginx (Cloudflare Origin CA)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── Cloudflare Proxy (Full Strict SSL)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="relay-플러그인-에이전트-호출-메커니즘"&gt;Relay 플러그인: 에이전트 호출 메커니즘
&lt;/h2&gt;&lt;p&gt;팀 구조는 &lt;strong&gt;Relay 플러그인&lt;/strong&gt;을 통해 Claude Code에서 실행됩니다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;sequenceDiagram
 participant User as 사용자
 participant Claude as Claude Code
 participant Plugin as Relay Plugin
 participant MCP as MCP 서버
 participant LLM as 외부 LLM

 User-&gt;&gt;Claude: /relay:invoke-agent
 Claude-&gt;&gt;Plugin: 전문가 slug로 정의 로드
 Plugin-&gt;&gt;Plugin: Definition 조합 (base + capabilities + platform + policy)
 Plugin-&gt;&gt;Plugin: backed_by 확인

 alt relay:developer-zai
 Plugin-&gt;&gt;Claude: 내부 에이전트 실행
 else gemini:*
 Plugin-&gt;&gt;MCP: gemini_mcp 서버 호출
 MCP-&gt;&gt;LLM: Gemini API
 LLM--&gt;&gt;MCP: 응답
 MCP--&gt;&gt;Plugin: 결과
 else codex:*
 Plugin-&gt;&gt;MCP: codex_mcp 서버 호출
 MCP-&gt;&gt;LLM: OpenAI API
 LLM--&gt;&gt;MCP: 응답
 MCP--&gt;&gt;Plugin: 결과
 end

 Plugin--&gt;&gt;Claude: 최종 결과
 Claude--&gt;&gt;User: 응답&lt;/pre&gt;&lt;h3 id="backed_by-네임스페이스"&gt;backed_by 네임스페이스
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;네임스페이스&lt;/th&gt;
 &lt;th&gt;MCP 서버&lt;/th&gt;
 &lt;th&gt;용도&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;relay:developer-zai&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;내부 에이전트&lt;/td&gt;
 &lt;td&gt;구현, 운영 (저비용)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;relay:steering-orchestrator&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;내부 에이전트&lt;/td&gt;
 &lt;td&gt;조율, 최종 결정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;gemini:gemini-2.5-flash&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;gemini_mcp&lt;/td&gt;
 &lt;td&gt;설계, 외부 API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;codex:gpt-4o&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;codex_mcp&lt;/td&gt;
 &lt;td&gt;보안 분석&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zai:glm-4&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;zai_mcp&lt;/td&gt;
 &lt;td&gt;컨텍스트 압축&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="설계-결정-이력"&gt;설계 결정 이력
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;결정&lt;/th&gt;
 &lt;th&gt;대안&lt;/th&gt;
 &lt;th&gt;선택 이유&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;인프라 팀 분리&lt;/td&gt;
 &lt;td&gt;백엔드 팀에 포함&lt;/td&gt;
 &lt;td&gt;작업 공간이 다름 (SSH vs IDE)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cloudflare Origin CA&lt;/td&gt;
 &lt;td&gt;Let&amp;rsquo;s Encrypt&lt;/td&gt;
 &lt;td&gt;15년 유효, 갱신 불필요&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PostgreSQL 호스트 설치&lt;/td&gt;
 &lt;td&gt;Docker 컨테이너&lt;/td&gt;
 &lt;td&gt;단일 서버에서 메모리 효율 우선&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;조합형 에이전트&lt;/td&gt;
 &lt;td&gt;단일 정의 에이전트&lt;/td&gt;
 &lt;td&gt;모듈 재사용성, 플랫폼 교체 용이&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;GLM 다수 배정&lt;/td&gt;
 &lt;td&gt;Claude 다수 배정&lt;/td&gt;
 &lt;td&gt;60-70% 비용 절감&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="회고-설계하며-배운-것"&gt;회고: 설계하며 배운 것
&lt;/h2&gt;&lt;h3 id="1-완벽한-구조보다-실행-가능한-구조"&gt;1. &amp;ldquo;완벽한 구조&amp;quot;보다 &amp;ldquo;실행 가능한 구조&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;팀 구조, 모델 배정, 인프라 설정을 완벽하게 설계하려다 보면 시작조차 못 합니다.&lt;/p&gt;
&lt;h3 id="2-작업-공간이-곧-팀-경계"&gt;2. 작업 공간이 곧 팀 경계
&lt;/h3&gt;&lt;p&gt;코드를 작성하는 사람과 서버를 관리하는 사람은 물리적 작업 환경이 다르고, 그것이 자연스러운 팀 경계가 됩니다.&lt;/p&gt;
&lt;h3 id="3-조합형-아키텍처의-가치"&gt;3. 조합형 아키텍처의 가치
&lt;/h3&gt;&lt;p&gt;14명의 전문가, 5개 팀, 4개 모델이 얽히는 환경에서는 모듈 분리가 필수적입니다.&lt;/p&gt;
&lt;h3 id="4-비용은-설계-단계에서-결정된다"&gt;4. 비용은 설계 단계에서 결정된다
&lt;/h3&gt;&lt;p&gt;&amp;ldquo;이 작업에 꼭 고비용 모델이 필요한가?&amp;ldquo;를 매번 물어보면 자연스럽게 비용이 최적화됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="다음-단계"&gt;다음 단계
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Phase 1 구현 착수: DB, Auth, Post/Category CRUD, Docker&lt;/li&gt;
&lt;li&gt;팀 운영 경험 공유: 실제 실행 중 겪은 문제와 해결 과정&lt;/li&gt;
&lt;li&gt;성능 모니터링: 모델별 응답 시간, 비용 대비 품질 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;

 &lt;blockquote&gt;
 &lt;p&gt;이 글은 Claude Code + Relay 플러그인을 활용한 AI 에이전트 팀 구성 경험을 정리한 것입니다.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item></channel></rss>