Managed Agents

🏷️ 정보 Headliner
managed_agents.png

원문: Scaling Managed Agents: Decoupling the brain from the hands — Anthropic Engineering Blog

Anthropic이 관리형 에이전트(Managed Agents)를 설계하면서 얻은 아키텍처 교훈을 정리한 글입니다. 하네스 엔지니어링과 관리형 에이전트. 우리의 페인 포인트를 정확히 짚어낸 Anthropic의 통찰이 돋보입니다.

에이전트 하네스는 "Claude가 스스로 못하는 것"에 대한 가정을 내장합니다. 문제는 모델이 발전하면 이 가정이 금방 낡는다는 점입니다.

예를 들어, Claude Sonnet 4.5는 컨텍스트 한계에 가까워지면 작업을 성급하게 마무리하는 "컨텍스트 불안" 현상이 있었습니다. 하네스에 컨텍스트 리셋을 추가해 해결했지만, Claude Opus 4.5에서는 그 현상 자체가 사라져 리셋이 불필요한 잔재가 되었습니다.

하네스는 계속 진화해야 합니다. 그래서 특정 구현에 종속되지 않는 인터페이스를 설계해야 했습니다.

운영체제에서 배운 패턴

수십 년 전 운영체제는 하드웨어를 프로세스, 파일 같은 추상화로 가상화해 아직 존재하지 않는 프로그램도 돌릴 수 있게 했습니다. read() 명령은 1970년대 디스크 팩이든 현대 SSD든 상관하지 않습니다. 위의 추상화는 안정적으로 유지되고, 아래의 구현체는 자유롭게 바뀝니다.

관리형 에이전트도 같은 패턴입니다. 에이전트의 구성 요소를 가상화했습니다:

각 구현체를 다른 것에 영향 없이 교체할 수 있습니다.

반려동물을 키우지 마라

처음에는 세션, 하네스, 샌드박스를 하나의 컨테이너에 넣었습니다. 결과적으로 서버가 "반려동물(pet)"이 되어버렸습니다. 반려동물 대 가축(cattle) 비유에서, 반려동물은 이름이 있고 정성 들여 돌봐야 하며 잃을 수 없는 개체이고, 가축은 대체 가능합니다.

문제점: - 컨테이너 실패 시 세션을 통째로 잃음 - 하네스 버그, 패킷 유실, 컨테이너 오프라인 모두 같은 증상으로 나타나 디버깅 불가 - 컨테이너에 사용자 데이터가 있어 셸 접근도 어려움 - 고객 VPC 연결 시 네트워크 피어링이 필수

분리 아키텍처의 구현

하네스가 컨테이너를 떠나다. 하네스는 컨테이너를 다른 도구처럼 호출합니다: execute(name, input) → string. 컨테이너가 죽으면 도구 호출 에러로 처리하고, 새 컨테이너를 provision({resources})로 초기화합니다. 컨테이너가 가축이 된 것입니다.

하네스 실패에서 복구. 세션 로그가 하네스 외부에 있으므로, 하네스가 크래시해도 wake(sessionId)getSession(id)로 이벤트 로그를 가져와 재개합니다.

보안 경계. 결합된 설계에서는 Claude가 생성한 코드가 인증 정보와 같은 컨테이너에서 실행되어 프롬프트 인젝션에 취약했습니다. 분리 후에는:

세션 ≠ 컨텍스트 윈도우

장시간 작업은 컨텍스트 윈도우를 초과합니다. 압축(compaction)이나 트리밍으로 대응하지만, "미래에 어떤 토큰이 필요할지" 알기 어려워 비가역적 결정이 실패로 이어질 수 있습니다.

관리형 에이전트에서 세션은 컨텍스트 윈도우 외부에 존재하는 영구 컨텍스트 객체입니다. getEvents() 인터페이스로 이벤트 스트림을 위치별로 슬라이싱해 조회할 수 있습니다:

세션의 영구 저장과 하네스의 컨텍스트 관리를 분리한 것은, 미래 모델에서 어떤 컨텍스트 엔지니어링이 필요할지 예측할 수 없기 때문입니다.

많은 두뇌, 많은 손

많은 두뇌. 분리 전에는 모든 세션이 컨테이너 프로비저닝을 기다려야 했습니다. 샌드박스가 필요 없는 세션조차 레포 클론, 프로세스 부팅을 거쳐야 했습니다. 분리 후에는 컨테이너가 필요할 때만 도구 호출로 프로비저닝됩니다.

결과: - p50 TTFT(첫 토큰까지 시간) 약 60% 감소 - p95 TTFT 90% 이상 감소

많은 손. 각 손은 도구 인터페이스 execute(name, input) → string로 추상화됩니다. 커스텀 도구, MCP 서버, 자체 도구 모두 같은 인터페이스입니다. 하네스는 샌드박스가 컨테이너인지, 폰인지, 포켓몬 에뮬레이터인지 알 필요가 없습니다. 두뇌가 서로 손을 넘겨줄 수도 있습니다.


관리형 에이전트는 메타 하네스입니다. 특정 하네스에 대한 의견이 아니라, 다양한 하네스를 수용할 수 있는 범용 인터페이스를 제공합니다. Claude Code도 하나의 하네스이고, 특정 도메인에 특화된 에이전트 하네스도 가능합니다.

설계 원칙: - Claude에게는 상태 조작(세션)과 계산 수행(샌드박스) 능력이 필요합니다 - 많은 두뇌와 많은 손으로 확장 가능해야 합니다 - 인터페이스는 장기간 안정적·안전하게 운영되어야 합니다 - 두뇌나 손의 수와 위치에 대해서는 가정하지 않습니다