AI를 위한 만능 리모컨 — 알렉스 핸콕, 블록

AAI Engineer
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00알렉스 핸콕: 안녕하세요 여러분. 제 이름은 알렉스 핸콕입니다. 오늘 저는 AI를 위한 범용 원격
00:00:17제어에 대해 이야기하려고 합니다. 시작하기 전에, 앞서 발표하신 분이
00:00:21MCP 클라이언트 메인테이너들이 똑똑해서 태스크 지원을 구현하지 않았다고 하셨는데, 저는
00:00:26MCP 클라이언트 메인테이너입니다. 그냥 제가 게을러서 안 했다고 말씀드릴 수 있네요. 좋습니다,
00:00:33시작하기 전에 저에 대해 간단히 소개하자면. 저는 블록(Block)의 소프트웨어 엔지니어인데, 블록은
00:00:37캐시 앱(Cash App), 스퀘어(Square), 타이달(Tidal)의 모회사입니다. 현재 여러 가지 사업을 진행하고 있죠.
00:00:43저는 그곳에서 오랜 기간 일했습니다. 스퀘어 제품 관련 업무와 캐시 앱 관련 업무를 했고요.
00:00:47하지만 지난 몇 년간은 오픈소스 AI 분야에서 일해왔습니다. 구체적으로는
00:00:51구스(Goose)라는 오픈소스 하니스 프로젝트를 담당하고 있는데, 이는 블록의 내부 프로젝트로 시작되었습니다.
00:00:56네, 관객 중에 구스 팬분들도 계시네요. 그리고 네, 저희는 이를 오픈소스로 전환하고
00:01:02리눅스 재단에 기증했습니다. 그래서 현재 지식재산권은 그쪽에 있지만, 여전히
00:01:07블록 출신의 많은 이들이 여전히 이 프로젝트를 위해 일하고 있습니다. 저 또한 모델 콘텍스트 프로토콜인 MCP의 메인테이너이기도 합니다.
00:01:14해당 프로젝트의 러스트 SDK를 담당하고 있죠. 그리고 최근에는 에이전트 클라이언트 프로토콜인 ACP 작업도 시작했습니다.
00:01:20바로 오늘 제가 말씀드릴 내용입니다. 현재 하니스와 관련해 우리가 겪고 있는 문제가 있다고 생각하는데, 오늘 여러분 앞에
00:01:27이를 문제로 제기하고 해결책을 추천해 드리고자 합니다. 최근 들어 제가 주목하게 된 점은
00:01:35훌륭한 하니스들이 아주 많다는 사실입니다. 연구소에서 만든 것들도 있고,
00:01:40다양한 기업에서 만든 것들도 있습니다. 개방형 표준을 기반으로 한 것들도 많죠.
00:01:46하지만 이들에 대한 인터페이스는 종종 맞춤형이거나 제각각이라는 점을 발견했습니다. 최악의 경우에는,
00:01:52말 그대로 해당 하니스를 제어하기 위해 사용할 수 있는 클라이언트 애플리케이션이 딱 하나뿐인 하니스도 있을 수 있죠.
00:01:57저는 이것이 몇 가지 문제를 내포하고 있다고 생각합니다. 웹에 비유해서 설명하자면,
00:02:03마치 모든 웹사이트에 접속할 때 단 하나의 브라우저나 단 하나의 특정 프로토콜만 사용해야 하는 것과 같습니다.
00:02:11절대 작동하지 않을 겁니다. 브라우저의 현실이 그런 식이라면 오늘날과 같은 개방형 웹은 존재하지 않았겠죠.
00:02:16그래서 우리는 더 나아갈 수 있다고 생각합니다. 표준에 대해 이야기하자면, 표준을 찾아냄으로써
00:02:22생태계와 시장이 창출됩니다. 저는 에이전틱 AI 분야에서,
00:02:28에이전트가 외부로 나가 작업을 수행하는 것과 관련해서는 훌륭한 표준을 가지고 있다고 말씀드리고 싶습니다.
00:02:35즉, 도구를 호출하고, 다른 시스템에서 작업을 수행하고, 리소스를 읽고, 데이터를 읽는 것 말입니다. 우리 모두는
00:02:41커뮤니티로서 MCP를 보유함으로써 혜택을 누려왔습니다. 그리고 MCP의 가장 강력한 점은
00:02:47MCP 자체에 있는 것이 아니라, 모든 사람이 MCP를 사용한다는 데 있습니다. 그것이 바로 전 세계에
00:02:53수천 또는 수만 개의 서버가 존재하고, 모든 에이전트가 그 서버들에 연결하여
00:02:58저러한 다른 시스템에서 작업을 수행할 수 있는 이유입니다. 하지만 저는 클라이언트 소프트웨어가 에이전트에게 무엇을 해야 할지 지시하고,
00:03:05태스크를 부여하며, 어떤 작업을 수행할지 알려주고 업데이트를 받는 방식에 대해서는 아직 마땅한 해결책이나
00:03:13표준이 마련되어 있지 않다고 말씀드리고 싶습니다. 그래서 오늘 저희 팀이 공을 들여왔고
00:03:20개방형 표준 영역에서 훌륭한 해결책이라고 생각하는 옵션을 하나 제시하고자 합니다.
00:03:26그것이 바로 ACP입니다. 에이전트 클라이언트 프로토콜(agent client protocol)이 이 프로젝트의 이름입니다. 이는
00:03:32에디터 개발사들로부터 비롯되었습니다. 예를 들어 젯(Zed) 텍스트 에디터를 사용해 보셨거나 젯브레인(JetBrains)
00:03:39제품 중 하나를 사용해 보셨다면 아실 텐데, 젯 팀과 젯브레인 팀이 힘을 합쳐
00:03:45클라이언트가 하니스를 제어할 수 있는 표준을 제안했습니다. 그들의 입장에서 생각해 보면 매우 당연한 일입니다.
00:03:49그들이 원했던 것은 에디터 내부에서, 어쩌면 젯이나 인텔리제이 같은 곳에서 단 하나의 고품질 클라이언트 구현을 작성하여
00:03:54그 단일 클라이언트 구현으로 어떤 하니스든 제어할 수 있게 되는 것이었습니다. 작업을 전송하고, 결과를 받아오며,
00:04:00어떤 파일이 수정되고 있는지 등을 확인하는 것 말이죠.
00:04:06그들의 입장이 되어보면 정말 타당한 일입니다. 하지만 저희 구스 팀은 이를 눈여겨보았습니다.
00:04:10그리고 이것이 단순히 에디터뿐만 아니라 훨씬 더 광범위한 유용성을 지니고 있다고 생각합니다. 비교적 중립적이고
00:04:17에디터에만 특화된 기능이 많지 않기 때문입니다. 그래서 이것이 더 넓은 범위의 클라이언트 소프트웨어로
00:04:22확산될 수 있다고 생각합니다. ACP의 디자인과 이를 통해 할 수 있는 일에 대해 조금 더 깊이 들어가 보자면,
00:04:30연결과 연관된 특정 기능 세트를 가진 클라이언트와 에이전트 하니스 간의 연결을 설정할 수 있게 해줍니다. 그런 다음
00:04:37세션을 만들 수 있습니다. 세션 내에서는 사용자가 앱에 입력하고 있거나
00:04:45클라이언트 소프트웨어가 전송하고자 하는 사용자 메시지를 보낼 수 있습니다. 그러면 에이전트는 텍스트,
00:04:51추가 이미지나 오디오 등으로 그에 응답할 수 있으며, 진행 상황에 대한 업데이트를 제공할 수도 있습니다. 예컨대 도구가 호출되면
00:04:59도구 호출 알림을 전송하여 어떤 도구가 호출되었고 메타데이터가 무엇이었는지 설명할 수 있습니다. 또한
00:05:04권한 요청 같은 것들도 보낼 수 있어서, 클라이언트 소프트웨어가 사용자에게 '이 도구 호출을 수행할까요, 예 혹은 아니오'라고
00:05:10표시해야 할 경우 이 프로토콜을 통해 처리할 수 있습니다. 디자인도 꽤 단순합니다. JSON-RPC
00:05:16메시지를 사용하죠. 그리고 우리가 가장 마음에 들어하는 점은 확장성도 뛰어나다는 것입니다. 따라서 기본 프로토콜에 있는 내용에만
00:05:24국한되지 않습니다. 사용자 지정 메서드를 추가할 수 있죠. 관례상 언더스코어를 붙이고
00:05:29바닐라 프로토콜에만 국한되지 않고 커스텀 메서드를 추가할 수 있습니다. 관례에 따라 언더스코어를 넣고
00:05:37커스텀 메서드를 작성하기 시작하면 됩니다. 제가 이 방식에서 마음에 드는 점은 충분한 수의
00:05:41하네스 프로젝트나 클라이언트 프로젝트가 이를 채택하면, 우리 모두가 공통으로 하고 있는 작업이 무엇인지
00:05:46눈에 보이기 시작한다는 것입니다. 예를 들어 코덱스 팀이나 구스 팀이 각자 커스텀 메서드를 가지고 있거나
00:05:52클라이언트 팀이나 그 누구든 커스텀 메서드를 만들 때, 생태계에서 어떤 것들이 자연스럽게 대두되는지 파악할 수 있으며
00:05:58어떤 부분을 표준 트랙에 올려 프로토콜 자체에 흡수시키는 것이 타당할지 알 수 있습니다. 이를 통해 사용 방식과
00:06:03커뮤니티에 의해 프로토콜이 형성되는 셈이죠. 표준 I/O 버전을 사용한 데모를 보여드리겠습니다.
00:06:12먼저 Zed를 열어보겠습니다. 아주 간단한 프로젝트가 하나 있는데, 여기서 이 프로젝트에 대해
00:06:18설명해달라고 요청해 보겠습니다. 보시다시피 단일 HTML 파일로 구성된 프로젝트입니다. Zed에 쿼리를 입력할 수 있었고
00:06:25여기서 작동하는 에이전트는 구스(Goose)입니다. 구스의 ACP 인터페이스를 사용하고 있는 것이죠. 보시는 것처럼
00:06:31텍스트를 다시 전송하고 있습니다. 무엇을 읽었고 무엇을 수행했는지에 대한 툴 콜 정보를 전송하며
00:06:36이 파일이 단일 HTML 파일임을 찾아내어 설명해 줍니다. 이번에는 다른 도구를 이용해
00:06:42한 번 더 보여드리겠습니다. 풀사이드 AI(Poolside AI)라는 회사에서 만든 도구인데요, 동일한 프로젝트를 대상으로 이 프로젝트에 대해 설명해 달라고
00:06:50요청해 보겠습니다. 터미널 기반 클라이언트를 사용하고 있지만 하네스 측의 구현은 단 하나뿐인데도 동일한 에이전트로부터
00:06:55정확히 똑같은 경험을 얻을 수 있으며, 이제 어떤 클라이언트든 사용할 수 있습니다. 보시다시피
00:07:01앞서와 똑같이 동작했습니다. 텍스트 결과를 돌려주었고, 툴 콜을 보여주었으며,
00:07:06요약 내용을 스트리밍 형태로 출력해 주었습니다. 로컬 환경에서 표준 I/O를 통해 두 개의 클라이언트가 동일한 에이전트와 통신하는 기본적인 데모였습니다.
00:07:13하지만 로컬 환경만으로는 당연히 부족하겠죠? 이 기술이 널리 쓰이려면 원격 통신도 지원해야 합니다. 에이전트는 클라우드에서 실행될 테니까요.
00:07:21그래서 저희가 이 프로젝트를 처음 접했을 때 아직 원격 지원 기능이 없다는 점을 확인했습니다. 그리하여 HTTP 전송 방식을 명시했고,
00:07:25HTTP 버전과 웹소켓 업그레이드 방식을 마련했습니다. 이제 메시지도 동일하고
00:07:31프로토콜 시맨틱스도 동일하지만, 원격 접속을 가능하게 해주는 새로운 전송 레이어가 방금 도입되었습니다.
00:07:37구스 팀에서 바라보는 에이전틱 스택의 관점은 다음과 같이 크게 네 가지 중요한 컴포넌트로 이루어져 있다는 것입니다.
00:07:42사용자가 사용하는 앱이나 기기의 어딘가에서 실행되는 헤드리스 앱 같은 '클라이언트'가 있습니다.
00:07:49그리고 툴 콜 루프를 구현하는 프로그램인 '하네스'가 존재합니다.
00:07:54보통 MCP로 구현되는 '툴' 자체가 있고, 마지막으로 '모델'이 있습니다.
00:07:59에이전트 클라이언트 프로토콜에 원격 전송 기능이 더해지고, 툴 콜을 위한 MCP 원격 전송이 지원되며,
00:08:04모델이 있는 거고요? 그리고 에이전트 클라이언트 프로토콜에 원격 전송 방식을 적용하고, MCP에도 도구 호출을 위한 원격 전송 방식이 있으며,
00:08:13이 모든 구성 요소가 동일한 기기에 있을 수도 있고, 클라이언트와는 다른 기기에 하네스가 위치할 수도 있습니다.
00:08:18모델만 원격에 둘 수도 있고, 툴만 원격에 둘 수도 있습니다.
00:08:24표준을 준수하고 원격 전송 지원을 확실히 다지는 것이야말로 이 에이전틱 스택의 모든 조각들을 자유롭게 이동시킬 수 있는 기반이 됩니다. 이에 대한 간단한 데모도 보여드리겠습니다.
00:08:29클라이언트 구축이 얼마나 쉬운지 보여드리기 위해 어젯밤에 대충 코딩해서 만든 간단한 클라이언트입니다.
00:08:34시를 한 편 써달라고 요청해 보겠습니다. 이 역시 제 기기에서 실행 중인 동일한 프로세스에 연결하는 것입니다.
00:08:39이번에는 네트워크를 통해 실행하고 있지만 여전히 제 컴퓨터 안에 있습니다.
00:08:46원격으로 무엇을 해야 할지 구스에게 지시사항을 보내며 연결하고 있는 모습입니다. 따라서 이는 컨테이너 안일 수도 있고
00:08:53클라우드 상일 수도 있지만 메시지는 동일하고 사용하는 라이브러리도 같습니다.
00:09:01따라서 로컬과 원격 사이를 매우 쉽고 간편하게 전환할 수 있습니다.
00:09:03이 생태계에 참여하여 지원 기능을 실험해보고 싶다면, 직접 클라이언트를 만들거나 하네스에 기능을 추가해 보세요.
00:09:09시작하는 법을 안내하는 에이전트 클라이언트 프로토콜 사이트로 연결될 것입니다. 이미 다양한 클라이언트와
00:09:15에이전트 서버들이 나와 있습니다. 에디터, 데스크톱 앱, 모바일 앱부터
00:09:21터미널 기반 도구까지 종류가 다양하게 확산되고 있습니다. 여기서 얻을 수 있는 활용 사례도 엄청날 것으로 생각합니다.
00:09:25상호운용성이 확보되면 사람들은 각자 개인용 클라이언트를 만들 수 있기 때문이죠.
00:09:29자신이 원하는 대로 에이전트를 오케스트레이션하는 방식 바로 그것입니다. 특정 비즈니스 도메인이나 개별 기업,
00:09:34또는 여러 기업의 요구에 맞춘 클라이언트가 만들어질 수 있습니다. 화이트라벨 클라이언트를 커스터마이징하여 모든 하네스와 함께 작동하도록 만들 수도 있습니다.
00:09:41또한 여기서 새로운 카테고리를 창출한다면 클라이언트의 품질 역시 향상될 것이라고 봅니다. 에코시스템이나 마켓플레이스가 형성되어 다양한 선택지가 주어지면,
00:09:49클라이언트가 사용자의 요구를 충족하지 못할 때 사용자들이 발길을 돌릴 수 있기 때문입니다.
00:09:54그렇게 되면 사람들은 사용자 경험의 품질을 높이기 위해 경쟁하기 시작할 것입니다.
00:10:00결과적으로 이 모든 과정이 AI를 사용하는 전반적인 사용자 경험을 끌어올릴 것이라 생각합니다.
00:10:06오늘 준비한 내용은 여기까지입니다. 대단히 감사합니다. 저와 이야기를 나누고 싶으시다면 강연 후에 찾아오시거나
00:10:12이메일을 보내주세요. 기꺼이 이 작업에 동참하실 수 있도록 도와드리겠습니다. 감사합니다.
00:10:17이 작업에 동참하실 수 있도록 도와드리겠습니다. 감사합니다.
00:10:22클라이언트가 요구사항을 충족하지 못하면 사용자들이 이탈하기 마련입니다.
00:10:26그래서 사용자 경험의 품질을 두고 경쟁하기 시작할 것이고, 전체적으로 AI 사용 경험이 향상될 것입니다.
00:10:33오늘 준비한 내용은 여기까지입니다. 정말 감사합니다. 저와 대화하고 싶으시다면
00:10:37강연 후에 찾아오시거나 이메일을 보내주세요. 이 작업에 참여하실 수 있도록 기꺼이 안내해 드리겠습니다. 감사합니다.

핵심 요약

에이전트 클라이언트 프로토콜(ACP)은 다양한 클라이언트와 에이전트 하네스 간의 상호운용성을 제공하여 에이전틱 AI 생태계의 표준을 형성한다.

하이라이트

  • 오픈소스 AI 하니스 프로젝트인 구스는 리눅스 재단에 기증되어 블록 출신 개발자들이 여전히 개발에 참여하고 있다.

  • 에이전트 클라이언트 프로토콜(ACP)은 젯과 젯브레인 팀이 힘을 합쳐 클라이언트가 하니스를 제어할 수 있도록 제안한 표준이다.

  • ACP는 JSON-RPC 메시지를 사용하며 언더스코어를 활용해 바닐라 프로토콜에 국한되지 않는 커스텀 메서드를 추가할 수 있다.

  • HTTP 전송 방식과 웹소켓 업그레이드가 마련되어 로컬 환경뿐만 아니라 원격 통신 환경도 지원한다.

  • 에이전틱 스택은 클라이언트, 하네스, 툴, 모델의 네가지 중요 컴포넌트로 이루어져 있다.

타임라인

에이전틱 AI의 표준 부재와 ACP의 등장

  • 구스는 블록의 내부 프로젝트로 시작되어 현재 리눅스 재단에 기증된 오픈소스 하니스 프로젝트이다.
  • 현재 외부 작업을 수행하는 도구 호출과 관련해서는 MCP라는 훌륭한 표준이 존재한다.
  • 반면 클라이언트 소프트웨어가 에이전트에 태스크를 부여하는 방식에는 아직 마땅한 표준이 없다.
  • 젯과 젯브레인 팀이 제안한 에이전트 클라이언트 프로토콜(ACP)은 단일 클라이언트로 어떤 하니스든 제어할 수 있게 해준다.

다양한 하니스들이 존재하지만 이들을 제어하기 위한 인터페이스가 제각각이라는 문제가 있다. 웹의 발전 과정과 마찬가지로 에이전틱 AI 분야에서도 표준이 필요하며, 도구 호출 영역에서는 MCP가 그 역할을 해왔다. 클라이언트와 하네스 간의 제어 문제를 해결하기 위해 에디터 개발사들이 협력하여 ACP를 고안했다.

ACP의 디자인과 로컬 데모

  • ACP는 클라이언트와 에이전트 하니스 간의 연결을 설정하고 세션을 만들어 메시지를 교환한다.
  • 도구 호출 알림과 권한 요청 등을 프로토콜을 통해 처리할 수 있다.
  • JSON-RPC 메시지를 기반으로 하며 언더스코어를 활용한 커스텀 메서드로 확장성이 높다.
  • 표준 I/O 버전을 통해 Zed와 터미널 기반 클라이언트가 동일한 구스 에이전트와 통신하는 데모가 확인되었다.

ACP는 세션 내에서 텍스트, 이미지, 오디오 응답과 진행 상황 업데이트를 지원한다. 기본 프로토콜 외에 커스텀 메서드를 추가할 수 있어 생태계에서 자연스럽게 표준 트랙을 형성할 수 있다. 표준 I/O를 활용한 로컬 데모에서는 서로 다른 두 클라이언트가 동일한 에이전트로부터 정확히 같은 응답을 도출해냈다.

원격 전송 지원과 에이전틱 스택의 확장

  • HTTP 전송 방식과 웹소켓 업그레이드가 추가되어 원격 통신이 가능해졌다.
  • 에이전틱 스택은 클라이언트, 하네스, 툴, 모델의 네 가지 중요한 컴포넌트로 구성된다.
  • 표준 준수와 원격 전송 지원을 통해 스택의 각 조각들을 자유롭게 이동시킬 수 있다.
  • 상호운용성 확보를 통해 사용자들은 맞춤형 클라이언트를 만들고 사용자 경험 경쟁을 통해 전체적인 AI 사용 경험이 향상된다.

로컬 환경뿐만 아니라 클라우드나 컨테이너 환경에서도 에이전트를 실행할 수 있도록 HTTP 전송 레이어가 도입되었다. 클라이언트, 하네스, 툴, 모델이 각각 원격에 위치하더라도 동일한 프로토콜을 통해 유기적으로 연결된다. 이러한 상호운용성은 개발자들이 다양한 개인용 클라이언트를 구축하고 품질 경쟁을 벌일 수 있는 기반이 된다.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기