Transcript
00:00:00이 친구는 달팽이 게리인데, 달팽이들을 위한 데이팅 플랫폼을 만들겠다는 시장 기회를 포착했습니다.
00:00:04하지만 워낙 느리다 보니, Claude Code가 장기 실행 작업을 자율적으로 처리해주길 원하죠.
00:00:09다행히 요즘 에이전트들은 장기 실행 작업에 아주 능숙해졌습니다. Claude Code에는
00:00:13작업이 완료될 때까지 에이전트를 계속 실행하는 'goal' 명령어가 있습니다. 하지만
00:00:18테스트 결과 goal 명령어에서 많은 문제가 발견되었습니다. 최근 게리가 이혼을 겪어서
00:00:22행복하게 해주고 싶었거든요. 그래서 이 문제를 해결해주는 오픈 소스 도구를 찾았습니다.
00:00:28이 도구는 Claude Code뿐만 아니라 Codex와도 작동합니다. 당신의 어머니가 사랑을 퍼뜨리듯,
00:00:32당신을 직장 다니는 형제만큼이나 사랑하시는 것처럼요. Claude Code는 이전에
00:00:38특정 조건이 충족될 때까지 에이전트를 계속 실행하는 'goal'이라는 명령어를 출시했었습니다. 채널에서 다루진 않았지만,
00:00:42이미 알고 계셨을 겁니다. 그전에는 '랄프 위검(Ralph Wiggum)'이라는 플러그인이 있었는데,
00:00:47상당한 인기를 끌었죠. 이 플러그인은 훅(hook)을 사용하여 프롬프트를
00:00:52조건이 실제로 충족될 때까지 Claude Code에 다시 전달하는 방식이었습니다. 하지만 문제는 이 조건들이
00:00:57정확히 일치해야 한다는 점입니다. 랄프 루프(Ralph loop)는 셸 스크립트를 사용하여 문자 그대로 조건을 확인하거든요.
00:01:02마치 당신의 바디 스프레이가 수하물 규정을 초과했다고 통과시켜주지 않는 공항 보안 요원처럼요.
00:01:06goal 명령어는 다르게 작동합니다. 조건과 지금까지의 대화 내용을 가져와서,
00:01:11작은 모델인 Haiku에게 전달합니다. 이 모델은 작업이 완료되었는지 지능적으로 평가하죠.
00:01:17예 또는 아니오 결정을 내리는데, 아니오라고 하면 Claude는 상사가 페이지에서 버튼을
00:01:22찾지 못했다고 사용자 경험을 개선하라고 할 때처럼, 같은 작업을 계속 반복합니다. 그래서
00:01:27평가를 주관적으로 만들 수 있고, 정량화하기 어려운 것들에 대해서는 확실한 개선이 이루어집니다.
00:01:32goal 명령어가 많은 작업에 잘 작동하긴 하지만 여전히 문제가 많습니다. 첫 번째 문제는
00:01:37작업 진행 상황을 추적하는 지식 베이스나 파일 시스템을 사용하지 않는다는 점입니다.
00:01:42그래서 에이전트에게 유일한 진실의 원천은 채팅 맥락뿐입니다. 당신의 아버지가 2017년에
00:01:47냉장고에서 떨어진 메모지에 암호화폐 자산을 적어두셨던 것처럼, 이건 당신을 불안하게 만들지도 모르겠네요.
00:01:52세션이 어떤 이유로든 종료되고 목표가 완료되지 않았을 때, Claude resume 명령어로 재개할 수는 있지만,
00:01:58목표를 잃어버리지는 않더라도 어디서 멈췄는지 아는 유일한 방법은 채팅 맥락뿐입니다.
00:02:03이 명령어는 단순한 작업이 아닌 장기 실행 작업을 위한 것이기 때문에 중간에 문제가 생길 수 있습니다.
00:02:08물론 goal이 몇 시간씩 실행되면 컨텍스트가 늘어나고 컴팩션(압축) 문제가 발생하는 건 피할 수 없죠.
00:02:13컴팩션 후에는 에이전트의 출력이 나빠집니다.
00:02:18마치 치매 때문에 우리 채널 이름조차 잊어가는 할머니처럼 행동하기 시작할 거예요.
00:02:22여러분들이 할머니를 위해 지난 영상을 봐주셔야 해요. 또 다른 문제는
00:02:27작업을 더 작은 단위로 분해하지 않는다는 것입니다. 대신 그냥 메인 에이전트를 사용해서 작업을 분해하는데,
00:02:32Claude Code가 평소에 하는 방식대로 스스로 해버립니다. 그래서 체계적인 계획이 없고,
00:02:37에이전트가 무엇을 해야 할지 놓칠 수도 있습니다. 비록 일부 경우에는 잘 작동할 수도 있지만,
00:02:42에이전트에게 '완료'의 정의가 불분명한 것은 결코 좋은 것이 아닙니다.
00:02:47goal 명령어는 모델의 완료 평가에 전적으로 의존하기 때문에, 일부 경우에는 효과적이지 않을 수 있습니다.
00:02:52스크립트를 사용해 랄프 위검처럼 완전히 엄격하게 하는 것보다야 낫지만, 최소한 무언가가
00:02:56끝났다는 것이 어떤 모습인지 알려주는 지표가 있어야 합니다. 마치 결혼식 사진사가 전체 행사가
00:03:01끝날 때까지 '딱 한 번만 더'라고 했던 것처럼요. 그래서 이 지점에서 goal은 부족한 면이 있고,
00:03:05별것 아닌 것처럼 보일 수 있지만 실제 무거운 워크플로우에서는 심각한 문제를 일으킬 수 있습니다.
00:03:10이제 Goal Buddy는 goal 명령어가 제대로 작동하도록 만들려는 단 하나의 목적으로 만들어진 도구입니다.
00:03:16우리가 방금 이야기한 모든 문제를 해결해주는데, 유용한 것에 비해 생각보다 주목을 많이 못 받고 있습니다.
00:03:20마치 섹시한 베이비시터 같은 느낌인데, 당신과 시시덕거리는 대신 당신의 장기 실행 작업을 봐주는 거죠.
00:03:25Goal은 작업 상태를 로컬에 보존하지 않는데, 이 도구는 그 문제를 해결해줍니다.
00:03:30채팅 기록에 의존하는 대신 로컬 상태를 읽고 업데이트하도록 goal을 강제합니다.
00:03:36그리고 증거와 함께 마무리해서 에이전트가 시작하기 전에 '완료'가 어떤 모습인지 알게 합니다.
00:03:42진행 상황을 추적하기 위해 에이전트가 작업하는 동안 지켜볼 수 있는 전체 대시보드도 포함되어 있습니다.
00:03:46이 모든 것을 처리하기 위해 스카우트(Scout), 워커(Worker), 판사(Judge)라는 세 가지 에이전트를 기반으로 구축되었습니다.
00:03:51기본적으로 Y 콤비네이터 스타트업 팀 같죠. 한 명은 모든 일을 하고, 한 명은 지켜보고, 한 명은 둘 다 평가하는 식입니다.
00:03:56설치 방법은 꽤 간단합니다. 설치 명령어를 복사해서 프로젝트 폴더에 붙여넣기만 하면 됩니다.
00:04:01Claude Code와 Codex 모두를 위한 플러그인으로 설치될 겁니다.
00:04:06새 세션을 시작하면 바로 명령어를 사용할 수 있습니다.
00:04:10이 세 에이전트는 엄격하게 정의된 역할과 접근 수준을 가지고 있습니다. 이 도구는
00:04:16Codex용으로도 만들어졌기 때문에, 에이전트들이 표준 마크다운이 아닌 TOML 파일로 정의되어 있습니다.
00:04:21첫 번째 에이전트는 읽기 권한만 있는 '판사(Judge)'입니다. 판사는 작업이 안전하게 완료되도록
00:04:26범위가 불명확한 부분, 상충하는 소스 등 어려운 결정을 회의적으로 분석합니다.
00:04:31지침상 편집은 금지되어 있는데, 오직 판단을 내리기 위해 존재하기 때문입니다.
00:04:36작업이 매우 중요하기 때문에, 의사결정이 올바르게 이루어지도록 이 에이전트의 추론 능력이 최고 수준으로 설정되어 있습니다.
00:04:42마치 한밤중에 4시간 동안 짝사랑하는 사람에게 보낼 문자를 고민하는 당신의 모습과 정확히 같습니다.
00:04:47작업이 끝나면 승인 및 거절 결정과 그 근거가 담긴 JSON 구조를 반환합니다.
00:04:52스카우트는 활성 작업을 매핑하고 콤팩트한 증거 영수증을 생성하는 또 다른 읽기 전용 에이전트입니다.
00:04:57작업 상태를 확인하는 것이 전부라, 추론 노력을 낮게 유지합니다.
00:05:02좋아하는 클럽의 입구 관리자처럼 말이죠. 사실 그들에겐 별로 관심이 없거든요.
00:05:07그다음은 편집 권한을 가진 유일한 에이전트인 '워커(Worker)'입니다. 실제로 작업을 수행하며,
00:05:12한 번에 하나의 작업만 실행하도록 허용됩니다. 또한 PM 역할이 있는데, 워크플로우를 조정하는 메인 스레드입니다.
00:05:17실제 프로젝트 매니저처럼 행동하며 최소한의 작업만 수행하죠.
00:05:22작업을 완료됨으로 표시할 수 있는 유일한 권한자입니다. 핵심 워크플로우는
00:05:27우리 인간들이 흔히 그러는 것처럼 모호하게가 아니라, 에이전트가 제대로 이해할 수 있는 명확한 언어로
00:05:33의도를 표현하는 것에서 시작합니다. 그리고 오라클(Oracle)을 정의합니다.
00:05:38오라클은 본질적으로 결과를 식별하는 관측 가능한 신호입니다. 시스템이
00:05:43작업을 완료됨으로 표시할 수 있는지 확인하기 위해 반복적으로 확인하는 것입니다. 테스트 스위트, 브라우저 순회, 벤치마크, 심지어
00:05:49전자레인지를 타임머신으로 바꾸는 코드라도 상관없습니다. 요즘 AI 에이전트들은 무엇이든 하고 있으니까요.
00:05:54다음 단계는 Surface입니다. 작업을 실행 가능한 단계로 분해하고 대시보드를 생성하며
00:06:00작업을 시각적 형식으로 매핑합니다. 마지막 조각은 PM입니다. 매니저 역할을 하며
00:06:06최종 감사가 목표 달성을 확인할 때까지 goal을 계속 실행합니다. Goal Buddy를 사용하려면 goal prep 명령어를 실행하면 됩니다.
00:06:11이 명령어가 워크플로우를 초기화하고 성취하고자 하는 목표를 정의합니다.
00:06:16먼저 에이전트들이 설치되어 있고 사용할 준비가 되었는지 확인합니다. 그다음 워크플로우를 시작하는데,
00:06:21네이티브 goal 명령어와는 달리, 질문을 던짐으로써 모호한 점을 먼저 제거합니다.
00:06:27구현 내용을 명확하게 정의할 수 있도록 말이죠. 마치 의심 많은 아내처럼
00:06:32첫 단계를 이해할 때까지 계속 질문을 던질 겁니다. 목표 파일을 생성하는 데 집중하고,
00:06:38원본 요청을 답변과 함께 배치한 뒤 에이전트가 이해할 수 있는 언어로 목표를 매핑합니다.
00:06:43모든 정보를 요약하고 가장 중요한 부분인 오라클을 정의합니다.
00:06:48이 작업의 오라클은 간단합니다. 모든 테스트가 올바른 동작으로 통과해야 한다는 것이죠.
00:06:53이런 종류의 목표는 프로그래밍 방식으로 평가할 수 있기 때문에 구체적입니다.
00:06:57어젯밤 당신이 아내에게 둘러댄 핑계가 안 통하는 것과는 달리 말이죠. Goal Buddy는 워크플로우 전체를
00:07:03작은 수행 가능한 작업으로 나눕니다. 이것들을 '슬라이스(Slice)'라고 부르는데, 현실과는 달리 여기선 크기가 중요하지 않습니다.
00:07:08작은 슬라이스가 작은 작업을 의미하는 건 아니니까요. 안전하고 쉽게 검증할 수 있으며
00:07:14개별적으로 실행할 수 있다는 의미입니다. 안전한 슬라이스 크기도 문서에 명시되어 있습니다.
00:07:19프로젝트와 작업을 추적하고 PM 루프가 어떻게 보일지 정의하는 state.yaml을 생성합니다.
00:07:26state.yaml은 목표와 규칙들, ID별로 분해된 모든 작업들, 그리고 할당된 에이전트들로 구성됩니다.
00:07:31활성 작업을 추적하는 필드도 있고, 링크된 대시보드도 언급되어 있죠. 모든 해야 할 일 목록과
00:07:36진행 중인 작업들을 나열합니다. 우리의 경우 스카우트 에이전트가 현재 진행 중이며 모든 파일과 엔드포인트를 매핑하고 있습니다.
00:07:42루프를 시작하려면 이 명령어를 복사해서 실행하면 됩니다. Claude에게
00:07:47goal.md 파일의 모든 것을 수행하라고 지시하죠. 거기서 첫 번째 활성 작업을 골라
00:07:52왕처럼 부하 에이전트들을 호출해 작업을 수행합니다. 스카우트가 작업을 완료하면,
00:07:58진행 파일에 모든 결과를 업데이트하고 별도의 디렉토리에 기록합니다.
00:08:03게시판도 '진행 중'에서 '완료'로 업데이트합니다. 그럼 루프가 다음 작업을 집어 들고,
00:08:08활성 상태로 표시한 뒤 판사 에이전트를 시작합니다. 판사는 결과를 비판적으로 검토하고 보고서를
00:08:13워커가 독립적으로 수행할 수 있도록 최소한의 수직적 슬라이스로 분해합니다.
00:08:18그다음 슬라이스 수를 업데이트하고 상태 파일을 수정합니다. 각 작업은
00:08:22어떤 파일을 허용할지, 어떻게 검증할지, 언제 멈출지를 명시합니다. 각 슬라이스를 정의하는 방식이죠.
00:08:28에이전트가 기대 출력, 확인 사항, 필요한 모든 세부 정보를 알 수 있도록요. 하나씩
00:08:33워커 에이전트를 초기화하고 첫 번째 슬라이스부터 시작합니다. 각 에이전트의 진행 상황은
00:08:39대시보드를 통해 추적할 수 있습니다. 각 작업이 무엇을 하고 있는지, 어떤 에이전트가 활성 상태인지, 무엇이 대기 중이고
00:08:44무엇이 완료되었는지 알 수 있죠. 그래서 직접 모니터링할 필요 없이 아이들과 함께
00:08:48필요한 시간을 보낼 수 있습니다. 모든 작업이 완료되면 PM으로서 마지막 감사를 수행합니다.
00:08:53모든 테스트가 제대로 수행되었는지 확인합니다. 감사가 끝나면 판사
00:08:58에이전트의 최종 감사 작업을 완료로 표시하고 목표를 완료로 표시합니다. 그다음엔
00:09:03에이전트들이 환각을 일으키지 않았길 기도해야겠죠. 전반적으로 작업의 복잡성과 규모를 감안할 때
00:09:09상당히 잘 작동했습니다. 하지만 더 효과적인 병렬 처리가 추가될 수 있다고 생각합니다.
00:09:13모든 것을 순차적으로 처리했거든요. 한 번에 하나씩만 작업하고,
00:09:18Claude Code의 병렬 처리 기능을 전혀 활용하지 않았습니다. 다리오(Dario)가 봤다면 실망했을 거예요.
00:09:23그래도 워크플로우를 계획하는 방식은 꽤 훌륭했습니다. 우리 콘텐츠를 즐기고 계신다면,
00:09:28좋아요 버튼을 눌러주세요. 이런 콘텐츠를 더 많이 만들고 더 많은 사람들에게
00:09:33알리는 데 도움이 됩니다. 우리는 Goal Buddy를 더 일반적인 것, 예를 들어 UI 디자인에 테스트해서
00:09:38프로그래밍 방식으로 평가할 수 없는 작업을 어떻게 처리하는지 확인하고 싶었습니다. 이전 테스트는
00:09:44명확한 통과/실패 기준이 있는 특정 워크플로우였죠. 하지만 미용실에서 머리를 자르는 것처럼
00:09:49그런 기준이 없는 작업들도 있습니다. 그래서 일반 goal 명령어에 모호한 프롬프트를 주었습니다.
00:09:54작업을 초기화하고 조언자와 상의하더니 금방 웹사이트를 하나 내놓더군요. 게으르게도 그냥
00:10:00간단한 HTML 페이지만 만들고 프레임워크는 쓰지 않았습니다. 그런데 랜딩 페이지가 나쁘지 않아서
00:10:05Goal Buddy에도 똑같은 프롬프트를 주었습니다. 똑같은 워크플로우를 따르고,
00:10:10의도를 명확히 하기 위해 질문 세션을 거쳤습니다. 여기서 Goal Buddy는 기술 스택까지
00:10:14묻더군요. 평소라면 깐깐하다고 했을 텐데, AI 에이전트를 진지하게 대하는 입장에서 꼼꼼하다고 하겠습니다.
00:10:20마찬가지로 게시판과 goal.md 파일을 만들고 원래 요청을 적절한 목표로 번역했습니다.
00:10:26또한 오라클을 제대로 식별했습니다. 이전 작업의 오라클은 간단했죠. 그냥 모든
00:10:31테스트만 통과하면 됐거든요. 하지만 이번엔 다른 목표가 있었습니다. 개발 서버가
00:10:36실행되고 브라우저 순회를 통해 모든 섹션이 정의대로 작동하는지 확인되면 작업을 완료로 정의했습니다.
00:10:41이렇게 비정량적인 작업을 정량화할 수 있는 것으로 바꾼 겁니다. 그리고 오라클,
00:10:47규칙, 에이전트, 그리고 나열된 모든 작업들을 포함하여 state.yaml을 다시 생성하고 작업을 시작했습니다.
00:10:52일반 goal 명령어보다 시간은 더 걸렸지만, 앱을 제대로 구현해냈습니다.
00:10:57게리에게는 문제가 안 되겠지만, 당신은 그동안 팔굽혀펴기라도 좀 하세요. 살이 좀 찐 것 같네요.
00:11:02비교해보니 전체 웹사이트의 결과물이 단순 goal 명령어가 만든 것보다 훨씬 좋았습니다.
00:11:07튜토리얼만 보는 대신 직접 빌드하고 싶은 AI B2B SaaS 창업자가 되고 싶다면,
00:11:12AI Labs Pro에 합류하세요. 우리 팀 같은 뜻이 맞는 괴짜들과 함께
00:11:17영상 속 리소스와 다양한 자료들을 얻을 수 있습니다. 링크는 설명란에 있으니 확인해보세요.
00:11:22이것으로 이번 영상을 마치겠습니다. 채널을 후원하고
00:11:27계속 영상을 만들 수 있게 돕고 싶으시다면, 아래 '슈퍼 땡스' 버튼을 이용해주세요. 항상
00:11:32시청해주셔서 감사합니다. 다음 영상에서 뵙겠습니다.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video