00:00:00Claude 팀이 Claude 관리형 에이전트(managed agents)를 출시했는데, 그들은 이를
00:00:09에이전트 SDK 이후의 차세대 진화라고 부릅니다.
00:00:11이 기능을 사용하면 단 한 줄의 코드도 작성하지 않고 커스텀 에이전트를 만들 수 있습니다.
00:00:16이 에이전트들은 Anthropic의 자체 관리형 인프라에서 실행되는데, 아주 멋진 아키텍처를 갖추고 있죠.
00:00:22보안이 뛰어나고 확장 가능하며, 운영 환경에 즉시 적용할 수 있는 에이전트를 배포하기에 완벽합니다.
00:00:27여러분이 원하는 거의 모든 것을 할 수 있습니다.
00:00:28지식 베이스를 바탕으로 고객 문의에 답변하거나, 주기적인 조사를 수행하여
00:00:32특정 시간에 Slack으로 보고서를 보내주는 일도 가능하죠.
00:00:36하지만 왜 사람들은 개인 VPS에 Claude 코드를 설치하는 대신 이걸 사용할까요?
00:00:40구독 버튼을 누르시고, 본격적으로 알아보겠습니다.
00:00:46시작하기 전에 Anthropic에 대해 잠시 이야기해 보죠. 지난 몇 주 동안 아주 바쁘게 움직였거든요.
00:00:49최근에 이들은 사람들이 OpenClaw 같은
00:00:50제3자 도구에서 Claude 구독을 사용하는 것을 막았습니다.
00:00:55사람들은 이게 관리형 에이전트 때문이라고 생각하지만, 둘은 완전히 같은 것이 아닙니다.
00:01:00제 말은, 둘이 정확히 일치하지는 않는다는 뜻입니다.
00:01:01OpenClaw는 리눅스와 비슷하다고 할 수 있습니다.
00:01:04사용자가 직접 만지며 설정하는 에이전트죠.
00:01:06하드웨어를 직접 고르고, 모델을 선택하고, 보안과 그 사이의 모든 것을
00:01:11직접 처리해야 합니다.
00:01:12반면 Claude 관리형 에이전트는 감히 애플과 같다고 말씀드리고 싶네요. 그런 것들을 고민할 필요가 없으니까요.
00:01:17사용자가 신경 쓸 필요가 전혀 없습니다.
00:01:19Claude가 인프라와 보안을 책임집니다. 여러분은 그저 평범한 언어로 원하는 것을 말하기만 하면,
00:01:24완벽한 에이전트를 알아서 구축해 줍니다.
00:01:28간단하면서도 개인적인 사례를 통해 이게 얼마나 쉬운지 직접 보여드리겠습니다.
00:01:34저는 NHS 앱에서 긁어온 제 모든 의료 정보가 담긴 비공개 GitHub 저장소를 가지고 있습니다.
00:01:39영국 의료 서비스 데이터죠.
00:01:40그리고 Slack을 통해 그 데이터와 소통하거나 정보를 얻고 싶습니다.
00:01:45데스크톱이나 모바일 등 제가 어디에 있든 사용할 수 있도록 말이죠.
00:01:49그 과정에서 Claude 관리형 에이전트가 데이터를 긁어오는 작업을 수행하기를 원합니다.
00:01:54도구를 사용해 올바른 정보를 가져오고, 제가 이해할 수 있는 방식으로 번역하는 일 말이죠.
00:02:01그렇게 설정하려고 합니다.
00:02:02시작하려면 Claude 콘솔로 이동하여 새로운 관리형 에이전트 옵션을 선택하고,
00:02:07자연어로 입력하여 에이전트를 처음부터 만들 수 있습니다.
00:02:11이 방식은 curl 명령을 통해 Claude API와 통신하며, 필요한 모든 코드는
00:02:16Anthropic 인프라에 호스팅됩니다.
00:02:19하지만 선호하는 언어로 관리형 에이전트 스킬(skill)을 사용할 수도 있습니다.
00:02:23저는 TypeScript를 선택하겠습니다. 이 스킬은 TypeScript용 Claude SDK를 사용하여
00:02:29저를 위한 에이전트를 생성할 것입니다.
00:02:31이를 위해 관리형 에이전트 스킬이 내장된
00:02:36특정 버전 이상의 Claude 코드가 필요합니다.
00:02:38제 경우에는 해당 버전보다 높기 때문에 슬래시(/) Claude API 명령 뒤에
00:02:42managed-agents-onboarding을 붙여 스킬을 실행할 수 있습니다.
00:02:46엔터를 치면 어떤 종류의 에이전트를 만들고 싶은지 묻습니다.
00:02:50잘 모르겠지만, 일단 어떻게 진행되는지 보죠.
00:02:52그리고 다음 세 단계를 안내해 줄 것이라고 알려줍니다.
00:02:55도구, 스킬, 파일 및 저장소, 그리고 환경과 아이덴티티 설정입니다.
00:02:59놀랍게도 문맥을 많이 활용하더군요. 약간의 압축이 있을 수도 있겠지만,
00:03:04결과를 지켜보겠습니다.
00:03:05어쨌든, 비공개 GitHub 저장소의 마크다운 파일을 읽는 의료용 에이전트를 만들라는 명령을 내리겠습니다.
00:03:10의사처럼 정보를 이해하고, 제가 Slack으로
00:03:15대화할 수 있도록 해달라고 말이죠.
00:03:17그러자 사전 구축된 도구 세트인 read, glob, grep을 사용하고
00:03:22write, edit, bash는 사용하지 말라고 추천합니다. 의사가 저장소를 수정할 이유는 없으니까요. 일리가 있습니다.
00:03:27저장소 URL도 묻습니다. 저는 추천된 도구와 권한을
00:03:31그대로 사용하겠다고 말하고 저장소 링크를 전달했습니다.
00:03:35그다음 B단계와 C단계에 대해 제안을 하는데, 매우 기본적인 에이전트라서
00:03:39내용이 꽤 자명합니다.
00:03:41그리고 에이전트를 위한 시스템 프롬프트를 생성하고,
00:03:45사용할 모델도 추천해 줍니다.
00:03:46Opus에 비용을 너무 많이 쓰고 싶지 않아서 Sonnet을 사용하라고 지시했습니다.
00:03:49이유는 나중에 설명하겠지만, 그 외에는 좋아 보이네요. 필요한 인증 정보와
00:03:53사용할 언어도 제공했습니다.
00:03:56이제 TypeScript로 된 두 개의 파일이 생성되었습니다.
00:03:59첫 번째는 설정(setup) 파일로, Anthropic 인프라 내에
00:04:04환경, 에이전트 및 필요한 스킬들을 구성합니다.
00:04:07두 번째는 런타임(runtime) 파일로, 실제로 Anthropic 서버와 통신하며
00:04:12그 정보를 Slack에 전달하는 역할을 합니다.
00:04:15이 모든 것을 설정하고 완료된 모습을 보여드리겠습니다.
00:04:19설정 파일을 실행하면 여기 보이는 환경 ID(Environment ID)가 나옵니다.
00:04:24그리고 에이전트 ID도 함께 제공됩니다.
00:04:27앞서 말씀드렸듯이, 이 요소들은 Anthropic 인프라에 생성됩니다.
00:04:32따라서 Claude 콘솔 내부에서 제가 방금 만든
00:04:36에이전트와 환경을 확인할 수 있습니다.
00:04:37또한 Slack 앱을 만들고 필요한 모든 정보를 .env 파일에 넣어
00:04:42apps.ts 파일이 사용할 수 있게 했습니다. 파일을 실행하면 Slack 봇이 돌아가겠죠.
00:04:48봇에게 "어떤 모델을 사용하고 있니?"라고 물어볼 수 있습니다.
00:04:50잠시 후 봇이 "저는 Anthropic이 만든 Claude입니다."
00:04:54"도움이 필요한 의료 관련 사항이 있나요?"라고 대답합니다.
00:04:56정말 멋지네요.
00:04:57하지만 더 멋진 점은 Claude 콘솔에서 세션 기록을 볼 수 있다는 것입니다.
00:05:01네, 몇 번 테스트를 해봤는데 여기서 무슨 일이 일어났는지 자세히 볼 수 있습니다.
00:05:04창을 닫아서 크게 보면 사용자가 질문한 내용을 확인할 수 있습니다.
00:05:09그다음 Slack 메시지 도구를 사용했고 에이전트가 응답했죠.
00:05:12이 서비스의 가격 책정 방식에 대해 말하는 걸 깜빡했네요.
00:05:15문서를 보면 관리형 에이전트가 사용하는 모든 토큰은
00:05:20여기 보이는 Claude API의 가격 모델을 따릅니다.
00:05:25따라서 아쉽게도 Pro, Max 또는 Team 구독은 관리형 에이전트에 적용되지 않습니다.
00:05:30토큰 비용뿐만 아니라 세션당 비용도 지불해야 하는데, 세션 시간당 8센트입니다.
00:05:358센트 정도 됩니다.
00:05:36그리고 이건 세션이 실행 중일 때만 부과됩니다.
00:05:38Claude 콘솔의 세션 목록에서 유휴 상태(idle)인 세션들에 대해서는
00:05:42요금이 청구되지 않습니다.
00:05:43좋습니다. 이 봇으로 좀 더 흥미로운 일을 해보죠.
00:05:46"나에 대한 의료 정보를 바탕으로, 내가 칼라마리(오징어 튀김)를 먹어도 괜찮을까?"라고 묻겠습니다.
00:05:50먹어도 될까요?
00:05:51봇이 저장소에서 정보를 가져오기 위해 bash 도구를 실행했습니다.
00:05:56두 번의 파일 읽기를 수행한 후 몇 초 뒤에 Slack 메시지를 보냈는데,
00:06:01제가 새우 알레르기가 있기 때문에 칼라마리를 주의해야 한다고 합니다. 사실이거든요.
00:06:06혀가 가렵거나 목이 붓는 등의 증상까지 언급하며
00:06:11정보를 너무 많이 준 것 같긴 하지만,
00:06:12솔직히 말해서 아주 잘 작동합니다.
00:06:13사실 에이전트를 약간 수정하기도 했습니다.
00:06:15Claude 콘솔을 클릭해 보면 세 개의 버전이 있는데,
00:06:19이는 이 에이전트가 세 번 변경되었음을 나타냅니다.
00:06:21시스템 프롬프트를 좀 더 인간처럼 들리게 바꿨고,
00:06:26모델을 Opus에서 Sonnet으로 변경했습니다.
00:06:27UI에서 에이전트의 시스템 프롬프트, 모델, 그리고
00:06:32접근 가능한 도구들을 바꿀 수 있어 테스트에 매우 유용합니다.
00:06:35그게 전부입니다.
00:06:36Claude와 몇 번 대화하며 찾아낸 작은 코드 수정 사항들을 제외하면,
00:06:41에이전트를 만드는 것이 이렇게나 쉽습니다.
00:06:44Claude 에이전트 SDK의 작동 방식을 배울 필요도 없습니다.
00:06:47그저 스킬을 사용해 Claude와 소통하며 나만의 에이전트를 만들 수 있죠.
00:06:51그렇다면 이 모든 것이 내부적으로는 어떻게 작동할까요?
00:06:54Anthropic이 모든 작동 원리를 담은 매우 상세한 기사를 작성했는데,
00:06:58설명란에 링크를 걸어두겠습니다.
00:07:00전체 아키텍처는 세 가지 핵심 구성 요소로 이루어져 있다고 봅니다.
00:07:05세션, 하네스(harness), 그리고 오케스트레이션입니다. 샌드박스와 도구가
00:07:09덜 중요하다는 뜻은 아니지만, 이 세 가지가 매우 독특합니다.
00:07:12시스템의 '손'으로도 불리는 하네스는 Claude 모델이 사용되는 곳입니다.
00:07:17또한 '상태 비저장 라우터'로 알려져 있는데, 도구 호출, 리소스, MCP를
00:07:23적절한 곳으로 전달하거나 샌드박스 환경에서 코드를 실행하고 파일을 편집합니다.
00:07:28도구 호출을 하네스 자체와 분리했을 때의
00:07:32이점에 대해서는 곧 말씀드리겠습니다.
00:07:33세션은 시스템의 '기억'과 같으며 하네스의
00:07:37추가 전용(append-only) 로그를 포함합니다.
00:07:38하네스가 Claude 코드라고 생각하실 수도 있지만,
00:07:43사실 관리형 에이전트를 위해 커스텀 제작된 하네스입니다.
00:07:44그 이유도 잠시 후에 설명하겠습니다.
00:07:47마지막으로 오케스트레이터는 하네스가 어떤 모드(빌드, 계획 등)에
00:07:51있어야 할지를 결정합니다.
00:07:54중요한 것은 하네스가 실패할 경우 새로 생성한다는 점입니다.
00:07:58여기에 있는 하네스가 실패하거나 중단되었다고 가정해 봅시다.
00:08:02오케스트레이터는 새로운 하네스를 만들 수 있습니다.
00:08:04세션 로그가 하네스와 분리되어 있기 때문에, 새로운 하네스는 로그를 읽어
00:08:09무슨 일이 있었는지, 정확히 어디서부터 계속해야 할지 알 수 있습니다.
00:08:13사실 이 모든 것은 확장을 염두에 두고 설계되었습니다.
00:08:15모델과 환경을 원하는 만큼 가질 수 있고,
00:08:20아키텍처가 이를 모두 처리할 수 있습니다.
00:08:21이 아키텍처의 또 다른 이점은 보안 측면입니다.
00:08:25Claude 콘솔의 인증 정보 보관함(credentials vault)을 클릭해 보면
00:08:30인증 정보가 안전한 장소에 저장되어 있음을 알 수 있습니다.
00:08:32에이전트를 로컬에서 실행한다면 .env 파일이나
00:08:36직접 만든 별도의 방식이 필요하겠죠.
00:08:37하지만 Claude 콘솔이나 UI를 사용하면
00:08:41모든 인증 정보가 여기에 저장됩니다.
00:08:42이 방식의 묘미는 인증 정보가 실행 시점(runtime)에 호출된다는 것입니다.
00:08:45특정 MCP API 키나 도구 전용 키가 있어도, 하네스나 모델은
00:08:50그것에 대해 전혀 모르며 접근할 수도 없습니다.
00:08:54예를 들어 날씨 MCP 도구를 호출해야 하고 API 키가 필요한 경우,
00:09:00하네스가 도구를 호출할 때 API 키는 도구 호출 자체나 MCP 내에만 존재합니다.
00:09:05그리고 실행 시점에 사용됩니다.
00:09:07마찬가지로 샌드박스에서 키가 필요한 경우에도 보관함에 저장되며,
00:09:12실행 시점에 사용될 뿐 모델은 그 내용을 알지 못합니다.
00:09:15심지어 자신의 Anthropic API 키조차 모릅니다.
00:09:20그것 역시 실행 시점에 사용되기 때문입니다.
00:09:21전체적인 구성 방식을 자세히 알고 싶다면 해당 기사를 읽어보시길 강력히 추천합니다.
00:09:25정말 독특한 방식입니다.
00:09:28솔직히 저는 Claude 관리형 에이전트를 만드는 과정이 매우 즐겁습니다.
00:09:31일각에서는 이것이 OpenAI 에이전트들처럼
00:09:36사라질 것이라고 생각하는 사람들도 있습니다.
00:09:37만약 OpenAI 에이전트들이 아직 건재하다면 댓글로 알려주세요. 소식이 뜸하거든요.
00:09:39잘 안 들리더라고요.
00:09:40하지만 저는 이 기능이 에이전트 생성이 매우 쉽다는 점 때문에 오래 남을 것이라 생각합니다.
00:09:45매우 쉽거든요.
00:09:46SDK를 배울 필요도 없고, 원치 않는다면 터미널을 사용할 필요도 없습니다.
00:09:51UI 안에서 MCP 서버와 도구들을 거의 다 연결할 수 있는데,
00:09:56코드를 작성하고 싶지 않은 분들에게는 아주 매력적입니다.
00:10:01하지만 한 가지 아쉬운 점은 API 토큰 비용을 지불하거나
00:10:06API 과금 방식을 사용해야 한다는 점입니다. 저처럼 Claude Pro를
00:10:12구독 중인 사람이라면 Pro 범위 내의 한도를 관리형 에이전트에도
00:10:17사용하고 싶을 테니까요. 두 군데에 따로 돈을 내지 않아도 되게 말이죠.
00:10:20그래도 공정하게 말하자면 Sonnet이나 Haiku 같은 저렴한 모델을 쓰면 그렇게 비싸지 않습니다.
00:10:26보시다시피 Notion, Slack, MCP 서버 등에 접근할 수 있도록
00:10:31큐레이션되어 있지만, 만약 그 범위를 벗어나는 무언가를
00:10:36만들고 싶다면 직접 코드를 짜야 합니다. 그런 면에선 OpenClaw가 아주 좋죠.
00:10:40OpenClaw가 좋습니다.
00:10:41OpenClaw는 이름처럼 매우 개방적이고 텔레그램, 디스코드,
00:10:46왓츠앱 등 많은 채널을 지원합니다. 반면 관리형 에이전트로 똑같은 걸 하려면
00:10:51직접 솔루션을 코딩하거나 Claude에게 코드를 짜달라고 해야 할 겁니다.