<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ai Agents on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/ko/tags/ai-agents/</link><description>Recent content in Ai Agents on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Thu, 16 Apr 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/ko/tags/ai-agents/index.xml" rel="self" type="application/rss+xml"/><item><title>AI 코딩 에이전트 생태계 도구 — openai-oauth와 Happy</title><link>https://ice-ice-bear.github.io/ko/posts/2026-04-16-agent-ecosystem-tools/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-04-16-agent-ecosystem-tools/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post AI 코딩 에이전트 생태계 도구 — openai-oauth와 Happy" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;이번 주 눈에 띈 두 커뮤니티 프로젝트가 있습니다. 둘 다 AI 코딩 에이전트 생태계를 서로 다른 방향으로 확장합니다. &lt;strong&gt;openai-oauth&lt;/strong&gt;는 ChatGPT 구독의 OAuth 토큰을 무료 API 프록시로 활용하고, &lt;strong&gt;Happy&lt;/strong&gt;는 푸시 알림과 E2E 암호화로 Claude Code 및 Codex 세션을 모바일에서 제어할 수 있게 해줍니다.&lt;/p&gt;
&lt;h2 id="생태계-아키텍처"&gt;생태계 아키텍처
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TB
 Dev["개발자"] --&gt; Happy["Happy CLI&amp;lt;br/&amp;gt;happy claude / happy codex"]
 Happy --&gt; CC["Claude Code"]
 Happy --&gt; Codex["OpenAI Codex"]
 Dev --&gt; Phone["폰 앱&amp;lt;br/&amp;gt;원격 제어"]
 Phone --&gt;|"푸시 알림&amp;lt;br/&amp;gt;권한 승인"| Happy
 Codex --&gt; Proxy["openai-oauth 프록시&amp;lt;br/&amp;gt;127.0.0.1:10531"]
 Proxy --&gt;|"OAuth 토큰&amp;lt;br/&amp;gt;재사용"| API["OpenAI API&amp;lt;br/&amp;gt;무료 접근"]&lt;/pre&gt;&lt;h2 id="openai-oauth--chatgpt-토큰으로-무료-api-접근"&gt;openai-oauth — ChatGPT 토큰으로 무료 API 접근
&lt;/h2&gt;&lt;p&gt;이 도구는 기존 ChatGPT 계정의 OAuth 토큰을 사용하여 별도의 API 크레딧 구매 없이 OpenAI API에 접근합니다. &lt;code&gt;npx openai-oauth&lt;/code&gt;를 실행하면 &lt;code&gt;127.0.0.1:10531/v1&lt;/code&gt;에 로컬 프록시가 시작됩니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;동작 방식:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex CLI가 내부적으로 사용하는 것과 동일한 OAuth 엔드포인트 활용&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npx @openai/codex login&lt;/code&gt;으로 인증&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/v1/responses&lt;/code&gt;, &lt;code&gt;/v1/chat/completions&lt;/code&gt;, &lt;code&gt;/v1/models&lt;/code&gt; 지원&lt;/li&gt;
&lt;li&gt;스트리밍, 도구 호출, 추론 트레이스 완전 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;중요한 주의사항:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;비공식 커뮤니티 프로젝트로 OpenAI 공인이 아님&lt;/li&gt;
&lt;li&gt;개인 용도 전용 — 계정 리스크 존재&lt;/li&gt;
&lt;li&gt;흥미롭게도 Claude/Anthropic은 유사한 접근을 차단했지만, OpenAI는 이를 허용하는 듯 보임 (이 분야의 프로젝트인 OpenClaw를 인수)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="happy--ai-코딩-에이전트의-모바일-제어"&gt;Happy — AI 코딩 에이전트의 모바일 제어
&lt;/h2&gt;&lt;p&gt;Happy는 Claude Code와 Codex를 래핑하는 모바일/웹 클라이언트로, 휴대폰에서 AI 세션을 모니터링하고 제어할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;주요 기능:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 래퍼: &lt;code&gt;happy claude&lt;/code&gt; 또는 &lt;code&gt;happy codex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;권한 요청 및 에러에 대한 푸시 알림&lt;/li&gt;
&lt;li&gt;모든 통신에 E2E 암호화&lt;/li&gt;
&lt;li&gt;오픈소스 (MIT 라이선스), TypeScript 코드베이스&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;구성 요소:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;App&lt;/strong&gt; — Expo 기반 모바일 앱&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLI&lt;/strong&gt; — AI 에이전트용 터미널 래퍼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent&lt;/strong&gt; — CLI와 서버 간 브릿지&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server&lt;/strong&gt; — 원격 통신용 릴레이&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;설치:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g happy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이후 모바일 앱에서 QR 코드를 스캔하여 휴대폰과 터미널 세션을 페어링합니다.&lt;/p&gt;
&lt;h2 id="의미"&gt;의미
&lt;/h2&gt;&lt;p&gt;두 도구 모두 같은 근본적 필요를 다룹니다: AI 코딩 에이전트는 강력하지만 제약이 있습니다. openai-oauth는 API 접근의 비용 장벽을 제거하고 (계정 약관 위반 리스크가 있지만), Happy는 에이전트 세션 관리의 물리적 근접성 요구를 제거합니다. 이 두 도구는 커뮤니티가 AI 에이전트 도구를 공급자들이 공식적으로 지원하는 범위 너머로 확장하고 있음을 보여줍니다.&lt;/p&gt;
&lt;p&gt;생태계가 빠르게 진화하고 있으며, 개발자들은 도구 간 브릿지를 만들고, 모바일 제어 플레인을 구축하고, 기존 구독의 가치를 극대화하는 창의적인 방법을 찾고 있습니다.&lt;/p&gt;</description></item><item><title>GBrain — Garry Tan의 AI 에이전트 메모리 시스템</title><link>https://ice-ice-bear.github.io/ko/posts/2026-04-16-gbrain/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-04-16-gbrain/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post GBrain — Garry Tan의 AI 에이전트 메모리 시스템" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;당신의 AI 에이전트는 똑똑하지만 건망증이 있다. GBrain은 그 에이전트에게 뇌를 준다.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;GBrain은 Y Combinator의 대표이자 CEO인 Garry Tan이 만든 오픈소스 AI 에이전트 메모리 시스템이다. 데모나 장난감이 아니다 — Tan이 실제로 사용하는 에이전트를 위해 구축한 프로덕션 시스템이다. GitHub에서 이미 8,349개의 스타와 931개의 포크를 기록했으며, TypeScript와 PLpgSQL로 작성되었다.&lt;/p&gt;
&lt;h2 id="프로덕션-규모"&gt;프로덕션 규모
&lt;/h2&gt;&lt;p&gt;GBrain의 프로덕션 배포 수치가 모든 것을 말해준다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&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;17,888&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;추적 중인 인물&lt;/td&gt;
 &lt;td&gt;4,383&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;인덱싱된 기업&lt;/td&gt;
 &lt;td&gt;723&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;실행 중인 크론 작업&lt;/td&gt;
 &lt;td&gt;21&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;구축 소요 시간&lt;/td&gt;
 &lt;td&gt;12일&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;개념 증명이 아니다. 매일 실제 에이전트 워크플로를 구동하는 실 서비스 지식 그래프다.&lt;/p&gt;
&lt;h2 id="아키텍처-신호에서-메모리로의-루프"&gt;아키텍처: 신호에서 메모리로의 루프
&lt;/h2&gt;&lt;p&gt;핵심 루프는 단순하다: 모든 메시지는 신호이고, 모든 신호는 브레인을 통해 처리된다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 A["신호 도착"] --&gt; B["Signal Detector &amp;lt;br/&amp;gt; 모든 메시지에서 실행"]
 B --&gt; C["Brain-Ops &amp;lt;br/&amp;gt; 브레인 먼저 확인"]
 B --&gt; D["엔티티 추출 &amp;lt;br/&amp;gt; 인물, 기업, 주제"]
 C --&gt; E["브레인 컨텍스트로 &amp;lt;br/&amp;gt; 응답"]
 E --&gt; F["지식 그래프에 &amp;lt;br/&amp;gt; 기록"]
 F --&gt; G["동기화 &amp;lt;br/&amp;gt; 에이전트 간 메모리"]
 D --&gt; F&lt;/pre&gt;&lt;p&gt;핵심 통찰은 signal detector가 &lt;strong&gt;모든 메시지에 대해&lt;/strong&gt; 병렬로 실행된다는 점이다. 메인 응답이 시작되기도 전에 에이전트의 사고 과정을 포착하고 엔티티를 추출한다. 이는 명시적으로 요청할 때만이 아니라 항상 컨텍스트가 축적된다는 뜻이다.&lt;/p&gt;
&lt;h2 id="철학-thin-harness-fat-skills"&gt;철학: Thin Harness, Fat Skills
&lt;/h2&gt;&lt;p&gt;GBrain은 독특한 설계 철학을 따른다: &lt;strong&gt;지능은 런타임이 아니라 스킬에 있다&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;하네스 자체는 의도적으로 가볍다 — 메시지 라우팅, 데이터베이스 연결, 신호 감지 루프만 처리한다. 나머지는 모두 &lt;code&gt;RESOLVER.md&lt;/code&gt;가 관리하는 25개의 스킬 파일로 밀어넣었다:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;signal-detector&lt;/strong&gt; — 항상 켜져 있으며, 모든 메시지에서 실행&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;brain-ops&lt;/strong&gt; — 외부 호출 전 5단계 조회 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ingest&lt;/strong&gt; — 페이지, 문서, 피드 수집&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;enrich&lt;/strong&gt; — 메타데이터 추가, 분류, 엔티티 연결&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;query&lt;/strong&gt; — 지식 그래프에서 구조화된 검색&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;maintain&lt;/strong&gt; — 가비지 컬렉션, 중복 제거, 헬스 체크&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;daily-task-manager&lt;/strong&gt; — 반복 워크플로&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cron-scheduler&lt;/strong&gt; — 21개(그리고 계속 늘어나는) 크론 작업&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;soul-audit&lt;/strong&gt; — 성격 및 행동 일관성 점검&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ldquo;skill files are code&amp;quot;라는 표현이 이를 잘 포착한다. 각 스킬은 전체 워크플로를 인코딩하는 두꺼운 마크다운 문서다 — 단순한 프롬프트 템플릿이 아니라 의사결정 트리, 에러 처리, 출력 포맷을 포함한 완전한 운영 명세서다.&lt;/p&gt;
&lt;h2 id="brain-first-규칙"&gt;Brain-First 규칙
&lt;/h2&gt;&lt;p&gt;에이전트가 외부 API를 호출하기 전에, 반드시 엄격한 5단계 브레인 조회를 거친다:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;지식 그래프에서 기존 정보 확인&lt;/li&gt;
&lt;li&gt;최근 신호에서 컨텍스트 확인&lt;/li&gt;
&lt;li&gt;엔티티 관계 확인&lt;/li&gt;
&lt;li&gt;시간적 패턴 확인&lt;/li&gt;
&lt;li&gt;그래야만 필요시 외부 API 호출&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 &amp;ldquo;brain-first&amp;rdquo; 규칙은 중복 API 호출을 극적으로 줄이고, 에이전트의 응답이 축적된 지식에 기반하도록 보장한다. 매번 새로 가져온 (그리고 잠재적으로 일관성 없는) 데이터에 의존하지 않는다.&lt;/p&gt;
&lt;h2 id="기술-스택"&gt;기술 스택
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;PGLite&lt;/strong&gt;는 특별히 언급할 가치가 있다. Postgres 서버를 요구하는 대신, GBrain은 PGLite를 사용하여 즉시 데이터베이스를 구축한다 — 제로 상태에서 실행 가능한 지식 그래프까지 약 2초. Docker도, 서버 프로비저닝도, 커넥션 스트링도 필요 없다.&lt;/p&gt;
&lt;p&gt;시스템은 &lt;strong&gt;MCP 서버&lt;/strong&gt;로도 제공되므로, Claude Code, Cursor, Windsurf와 직접 통합된다. MCP 호환 도구라면 무엇이든 브레인에 접근할 수 있다.&lt;/p&gt;
&lt;p&gt;설치는 약 30분이 걸리며, 에이전트가 자체 셋업을 처리한다 — 레포를 지정하면 데이터베이스를 부트스트랩하고, 스킬을 설치하고, 크론 작업을 설정한다.&lt;/p&gt;
&lt;h2 id="왜-중요한가"&gt;왜 중요한가
&lt;/h2&gt;&lt;p&gt;대부분의 AI 에이전트 프레임워크는 오케스트레이션에 집중한다: LLM 호출을 어떻게 체이닝할지, 도구 사용을 어떻게 관리할지, 에러를 어떻게 처리할지. GBrain은 완전히 다른 문제를 다룬다 — &lt;strong&gt;세션과 에이전트를 넘나드는 영속적이고 구조화된 메모리&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;12일 만에 구축되어 이미 프로덕션 규모(17,888 페이지, 4,383 인물)로 운영되고 있다는 사실은 &amp;ldquo;thin harness, fat skills&amp;rdquo; 접근법이 철학적으로 깔끔할 뿐 아니라 실용적으로도 효과적임을 시사한다.&lt;/p&gt;
&lt;p&gt;GitHub: &lt;a class="link" href="https://github.com/garrytan/gbrain" target="_blank" rel="noopener"
 &gt;garrytan/gbrain&lt;/a&gt;&lt;/p&gt;</description></item><item><title>멀티 에이전트 오케스트레이션이 잘 작동하지 않는 이유</title><link>https://ice-ice-bear.github.io/ko/posts/2026-04-16-multiagent-orchestration/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-04-16-multiagent-orchestration/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post 멀티 에이전트 오케스트레이션이 잘 작동하지 않는 이유" /&gt;&lt;p&gt;멀티 에이전트 오케스트레이션은 AI 기반 개발의 자연스러운 다음 단계처럼 들린다. 복잡한 작업을 하위 작업으로 나누고, 각각을 전문 에이전트에 할당하고, 협업하게 만든다. 하지만 실제로는 예측 가능하고 구조적인 방식으로 실패한다. shalomeir는 Claude Code 에이전트 팀, Gastown(도시 스타일 오케스트레이션), Paperclip(회사 스타일 오케스트레이션) 등의 시스템을 테스트하면서 약 5,000달러 상당의 토큰을 소모한 끝에, 모든 멀티 에이전트 시스템에 공통으로 나타나는 세 가지 근본적인 병목 현상을 발견했다.&lt;/p&gt;
&lt;p&gt;이 글에서는 그 병목 현상을 분석하고, 왜 정교한 오케스트레이션 프레임워크가 아니라 기존의 단일 에이전트 도구에서 이미 답을 찾을 수 있는지 살펴본다.&lt;/p&gt;
&lt;h2 id="세-가지-구조적-병목-현상"&gt;세 가지 구조적 병목 현상
&lt;/h2&gt;&lt;p&gt;멀티 에이전트 시스템이 실패하는 것은 개별 에이전트가 약하기 때문이 아니라, 에이전트 간 연결이 복합적 실패를 만들어내기 때문이다. 세 가지 병목 현상 &amp;ndash; 컨텍스트 붕괴(Context Collapse), 유령 위임(Ghost Delegation), 검증 오류(Verification Error) &amp;ndash; 은 독립적인 문제가 아니다. 서로 연쇄적으로 작용하며, 각 부분의 합보다 더 심각한 실패 모드를 만들어낸다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD
 A["오케스트레이터가 하위 작업 할당"] --&gt; B["에이전트가 부분적 컨텍스트 수신"]
 B --&gt; C{"컨텍스트 붕괴 &amp;lt;br/&amp;gt; 전체 그림을 볼 수 없음"}
 C --&gt;|불완전한 작업| D{"유령 위임 &amp;lt;br/&amp;gt; 인수인계가 조용히 실패"}
 D --&gt;|잘못된 가정| E{"검증 오류 &amp;lt;br/&amp;gt; QA가 결함 있는 출력을 통과시킴"}
 E --&gt;|결함 있는 출력 수용| F["후속 에이전트가 잘못된 &amp;lt;br/&amp;gt; 기반 위에 구축"]
 F --&gt;|복합적 악화| C

 style C fill:#ff6b6b,stroke:#c92a2a,color:#fff
 style D fill:#ffa94d,stroke:#e67700,color:#fff
 style E fill:#ffd43b,stroke:#f08c00,color:#333
 style F fill:#868e96,stroke:#495057,color:#fff&lt;/pre&gt;&lt;p&gt;각 병목 현상은 면밀한 검토가 필요하다. 메커니즘을 이해하는 것이 단순히 에이전트를 더 추가하거나 프롬프트를 개선해도 문제가 해결되지 않는 이유를 이해하는 핵심이기 때문이다.&lt;/p&gt;
&lt;h2 id="병목-1-컨텍스트-붕괴-context-collapse"&gt;병목 1: 컨텍스트 붕괴 (Context Collapse)
&lt;/h2&gt;&lt;p&gt;오케스트레이터가 하위 작업을 에이전트에 위임할 때, 어떤 컨텍스트를 전달할지 결정해야 한다. 여기서 첫 번째 실패가 발생한다. 오케스트레이터는 전체 프로젝트 컨텍스트를 전달할 수 없다 &amp;ndash; 토큰 한도, 비용, 지연 시간이 모두 이를 막기 때문이다. 그래서 요약하거나, 자르거나, 선택적으로 정보를 전달한다. 이 과정을 거칠 때마다 중요한 세부 사항이 손실된다.&lt;/p&gt;
&lt;p&gt;프론트엔드 컴포넌트가 특정 백엔드 API 계약에 의존하는 웹 애플리케이션을 생각해 보자. 오케스트레이터가 프론트엔드 작업을 에이전트 A에, 백엔드 작업을 에이전트 B에 할당한다. 에이전트 A는 API 스펙의 요약을 받지만, 그 스펙을 형성한 오류 처리 에지 케이스에 대한 미묘한 논의는 받지 못한다. 에이전트 A는 합리적이지만 틀린 가정을 하게 되고, 결과 코드는 컴파일되지만 통합 시 실패한다.&lt;/p&gt;
&lt;p&gt;이것은 프롬프팅 문제가 아니다. 근본적인 정보 이론적 제약이다. 오케스트레이터는 에이전트와 전체 프로젝트 상태 사이의 손실 압축 계층(lossy compression layer)으로 작동한다. 아무리 프롬프트 엔지니어링을 해도 정보 손실을 제거할 수 없다 &amp;ndash; 어떤 세부 사항이 누락될지가 바뀔 뿐이다. 하나의 긴 컨텍스트 윈도우에서 작업하는 단일 에이전트는 이전의 모든 결정이나 제약 조건을 직접 참조할 수 있기 때문에 이 문제에 직면하지 않는다.&lt;/p&gt;
&lt;p&gt;아이러니한 점은, 프로젝트가 복잡해질수록(따라서 병렬화가 더 필요해질수록) 전체 컨텍스트가 더 중요해지고, 컨텍스트를 손실 없이 에이전트들에게 분배하기가 더 어려워진다는 것이다.&lt;/p&gt;
&lt;h2 id="병목-2-유령-위임-ghost-delegation"&gt;병목 2: 유령 위임 (Ghost Delegation)
&lt;/h2&gt;&lt;p&gt;유령 위임은 에이전트 간 인수인계가 성공한 것처럼 보이지만 실제로는 조용히 실패할 때 발생한다. 에이전트 A가 하위 작업을 완료하고 결과를 오케스트레이터에 전달하면, 오케스트레이터가 이를 에이전트 B에 전달한다. 하지만 인수인계 과정에서 뉘앙스가 사라진다: 에이전트 A의 암묵적 가정, 특정 선택의 이유, 실행 중 발견한 제약 조건 등이 모두 누락된다.&lt;/p&gt;
&lt;p&gt;Gastown과 Paperclip 실험에서 이것은 에이전트들이 미묘하게 잘못된 기반 위에 자신 있게 구축하는 것으로 나타났다. 데이터베이스 스키마 에이전트가 스키마를 생성하고, 백엔드 에이전트가 그 위에 API를 구축하고, 프론트엔드 에이전트가 UI 컴포넌트를 만든다 &amp;ndash; 각 단계가 기술적으로는 성공적으로 완료되지만, 원래 의도에서 점점 벗어나는 누적적 드리프트가 발생한다.&lt;/p&gt;
&lt;p&gt;핵심 문제는 에이전트 간 통신이 명시적 아티팩트 &amp;ndash; 코드 파일, JSON 스펙, 텍스트 요약 &amp;ndash; 로 제한된다는 것이다. 하지만 소프트웨어 개발에는 방대한 양의 암묵적 지식이 관여한다: 왜 특정 접근 방식이 대안보다 선택되었는지, 어떤 트레이드오프가 고려되었는지, 어떤 에지 케이스가 알려져 있지만 미뤄졌는지. 이 암묵적 지식은 모든 인수인계 경계에서 증발한다.&lt;/p&gt;
&lt;p&gt;실제 소프트웨어 팀은 공유 환경을 통해 이 문제를 해결한다 &amp;ndash; 같은 코드베이스, 같은 이슈 트래커, 컨텍스트가 유기적으로 축적되는 같은 Slack 채널. 환경이 아닌 대화를 공유하는 멀티 에이전트 시스템은 이 주변 컨텍스트(ambient context)를 완전히 잃어버린다.&lt;/p&gt;
&lt;h2 id="병목-3-검증-오류-verification-error"&gt;병목 3: 검증 오류 (Verification Error)
&lt;/h2&gt;&lt;p&gt;마지막 병목 현상이 가장 교활하다. 에이전트 B가 에이전트 A의 출력을 기반으로 작업을 완료하면, 결과가 올바른지 검증하는 무언가가 필요하다. 대부분의 멀티 에이전트 프레임워크에서 이 검증은 다른 에이전트나 오케스트레이터 자체가 수행한다. 하지만 검증에는 첫 번째 병목에서 이미 손실된 것과 동일한 전체 컨텍스트가 필요하다.&lt;/p&gt;
&lt;p&gt;출력과 명세서만 보는 검증 에이전트는 전달되지 않은 컨텍스트에서 비롯된 오류를 잡을 수 없다. 구문을 검사하고, 테스트가 있으면 실행하고, 표면적 정확성을 검증할 수 있다. 하지만 아키텍처 접근 방식이 세 번의 인수인계 전에 논의되었지만 스펙에 반영되지 않은 제약 조건과 모순된다는 것은 감지할 수 없다.&lt;/p&gt;
&lt;p&gt;실제로 이것은 멀티 에이전트 시스템이 자동화된 검사를 통과하지만 통합이나 실제 환경에서 실패하는 출력으로 수렴한다는 것을 의미한다. 검증 단계가 거짓 확신을 제공한다: 시스템이 성공을 보고하고, 오케스트레이터가 다음으로 넘어가며, 후속 단계에서 오류가 복합된다.&lt;/p&gt;
&lt;p&gt;여기서 연쇄 효과가 진정으로 파괴적이 된다. 검증 오류는 컨텍스트 붕괴로 피드백된다 &amp;ndash; 하류 에이전트들은 이제 검증자가 승인한 잘못된 가정을 포함하는 확장된 컨텍스트를 갖게 된다. 오류가 수용된 진실로 세탁된 것이다.&lt;/p&gt;
&lt;h2 id="오케스트레이터-설계-문제"&gt;오케스트레이터 설계 문제
&lt;/h2&gt;&lt;p&gt;실험 결과는 직관에 반하는 통찰을 보여준다: 병목 현상은 에이전트의 품질이나 수가 아니라 오케스트레이터 설계에 있다. 잘못 설계된 오케스트레이션에 에이전트를 더 추가하면 상황이 나아지는 것이 아니라 악화된다. 각 추가 에이전트가 컨텍스트가 붕괴되고 위임이 유령화될 수 있는 또 다른 인수인계 지점을 추가하기 때문이다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR
 subgraph bad["대화 기반 오케스트레이션"]
 O1["오케스트레이터"] --&gt;|요약| A1["에이전트 1"]
 O1 --&gt;|요약| A2["에이전트 2"]
 O1 --&gt;|요약| A3["에이전트 3"]
 A1 --&gt;|결과| O1
 A2 --&gt;|결과| O1
 A3 --&gt;|결과| O1
 end

 subgraph good["환경 기반 오케스트레이션"]
 E["공유 환경 &amp;lt;br/&amp;gt; (코드베이스, 상태, 히스토리)"]
 B1["에이전트 1"] &lt;--&gt;|직접 접근| E
 B2["에이전트 2"] &lt;--&gt;|직접 접근| E
 B3["에이전트 3"] &lt;--&gt;|직접 접근| E
 end

 style bad fill:#fff5f5,stroke:#c92a2a
 style good fill:#f0fff4,stroke:#2b8a3e&lt;/pre&gt;&lt;p&gt;핵심적인 구분은 대화 기반 오케스트레이션과 환경 기반 오케스트레이션 사이에 있다. 대화 기반 시스템에서는 에이전트들이 오케스트레이터를 통해 통신하며, 오케스트레이터가 병목이 된다. 환경 기반 시스템에서는 에이전트들이 공통 작업 공간 &amp;ndash; 파일 시스템, git 히스토리, 실행 중인 애플리케이션 &amp;ndash; 을 공유하며, 컨텍스트가 메시지 전달이 아닌 환경 자체에 보존된다.&lt;/p&gt;
&lt;p&gt;이것이 Claude Code 같은 도구가 실제 개발 작업에서 대부분의 멀티 에이전트 프레임워크보다 이미 더 잘 작동하는 이유다. 전체 코드베이스에 직접 접근하고, 명령을 실행할 수 있으며, 세션 내에서 지속적 컨텍스트를 가진 단일 에이전트는 설계상 세 가지 병목 현상을 모두 회피한다. 컨텍스트를 잃을 인수인계가 없고, 유령화될 위임이 없으며, 컨텍스트가 부족한 별도의 검증자가 없다.&lt;/p&gt;
&lt;h2 id="도메인-내부는-깊게-경계-간에는-느슨하게"&gt;도메인 내부는 깊게, 경계 간에는 느슨하게
&lt;/h2&gt;&lt;p&gt;실용적인 핵심 메시지는 한 마디로 요약된다: &amp;ldquo;도메인 내부는 깊게, 경계 간에는 느슨하게(deep within domains, loose across boundaries).&amp;rdquo; AI 에이전트는 잘 정의된 도메인에 깊이 들어가야 한다 &amp;ndash; 특정 모듈, 서비스, 기능의 전체 컨텍스트를 이해하면서. 하지만 도메인 간 경계는 느슨하게 처리되어야 한다: 에이전트 간의 긴밀한 결합이 아니라, 잘 정의된 인터페이스, 공유 환경, 인간의 감독을 통해서.&lt;/p&gt;
&lt;p&gt;이것은 효과적인 인간 팀의 작동 방식과 잘 맞는다. 시니어 엔지니어는 자신의 컴포넌트에 깊이 들어가고, 다른 팀과는 API, 설계 문서, 코드 리뷰를 통해 소통한다 &amp;ndash; 관리자가 요약된 지시 사항을 중계하는 방식이 아니라. 관리자(오케스트레이터)는 방향을 설정하고 갈등을 해결하지만, 기술적 세부 사항의 소통 채널 역할을 하지 않는다.&lt;/p&gt;
&lt;p&gt;에이전트에 얼마나 위임할지 결정하는 다섯 가지 평가 기준이 도출된다: 작업 범위의 명확성, 컨텍스트 자체 완결성, 검증 용이성, 롤백 비용, 도메인 전문성 깊이. 다섯 가지 모두에서 높은 점수를 받는 작업 &amp;ndash; 명확한 범위, 자체 완결적 컨텍스트, 검증 용이, 되돌리기 저비용, 깊은 도메인 일치 &amp;ndash; 은 에이전트 위임의 훌륭한 후보다. 어느 하나라도 낮은 점수를 받는 작업은 인간이나 전체 컨텍스트를 가진 단일 에이전트가 처리하는 것이 낫다.&lt;/p&gt;
&lt;h2 id="메타포-자체가-틀렸을-수도-있다"&gt;메타포 자체가 틀렸을 수도 있다
&lt;/h2&gt;&lt;p&gt;아마도 가장 도발적인 통찰은 AI 에이전트에 대한 직원 메타포가 근본적으로 오해를 불러일으킨다는 것이다. 우리는 에이전트를 &amp;ldquo;고용&amp;quot;하고, 작업을 &amp;ldquo;위임&amp;quot;하고, 에이전트의 &amp;ldquo;팀&amp;quot;과 &amp;ldquo;회사&amp;quot;를 구축한다고 말한다. 하지만 에이전트는 직원이 아니다. 세션 간에 조직적 지식을 축적하지 않는다. 시간이 지나면서 협업을 개선하는 다른 에이전트와의 관계를 구축하지 않는다. 같은 사무실에 앉아 있어서 생기는 주변 인식(ambient awareness)이 없다.&lt;/p&gt;
&lt;p&gt;에이전트는 비싼 호출 비용의 순수 함수에 더 가깝다: 입력 컨텍스트를 받고, 출력을 생성하고, 모든 것을 잊는다. 에이전트를 직원처럼 오케스트레이션하는 것 &amp;ndash; 조직도, 보고 구조, 위임 계층 &amp;ndash; 은 시스템 설계자를 세 가지 병목 현상을 극대화하는 아키텍처로 적극적으로 오도하는 메타포를 적용하는 것이다.&lt;/p&gt;
&lt;p&gt;더 나은 메타포는 뛰어난 도구를 가진 단일 전문가일 수 있다. 강력한 IDE, 좋은 문서, 전체 코드베이스에 대한 접근 권한을 가진 숙련된 개발자 한 명이, 파편화된 컨텍스트를 가진 열 명의 에이전트 &amp;ldquo;팀&amp;quot;보다 항상 더 나은 성과를 낸다. AI 기반 개발의 미래는 더 큰 에이전트 팀을 구축하는 것이 아니다. 개별 에이전트를 더 깊게 만들고, 더 풍부한 환경 접근 권한을 부여하며, 경계를 도입하는 시점과 위치에 대해 신중하게 생각하는 것이다.&lt;/p&gt;
&lt;p&gt;5,000달러의 소모된 토큰은 낭비가 아니었다 &amp;ndash; 답이 이미 우리 앞에 있었다는 것을 배우는 비용이었다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Claude Code 에이전트 팀, Gastown, Paperclip에서의 멀티 에이전트 오케스트레이션 실패에 대한 &lt;a class="link" href="https://shalomeir.substack.com/p/multi-agent-orchestration-problems" target="_blank" rel="noopener"
 &gt;shalomeir의 분석&lt;/a&gt;을 기반으로 작성.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>