Codex와 Claude Code는 잊으세요, Goal Buddy가 드디어 두 가지 모두 해결했습니다

AAI LABS
Computing/SoftwareSmall Business/StartupsInternet Technology

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시청해주셔서 감사합니다. 다음 영상에서 뵙겠습니다.

Key Takeaway

Goal Buddy는 로컬 상태 관리와 3단 에이전트 구조를 통해 Claude Code의 자율 실행 도구인 'goal' 명령어의 모호성과 컨텍스트 손실 문제를 해결하고 작업 성공률을 높인다.

Highlights

  • Goal Buddy는 3개의 전문 에이전트(스카우트, 워커, 판사)를 활용하여 장기 실행 작업의 정확도를 높인다.

  • 기존 Claude Code의 'goal' 명령어는 로컬 상태를 유지하지 않아 세션 종료 시 작업 맥락을 잃기 쉽다.

  • Goal Buddy는 state.yaml 파일에 작업 상태를 기록하여 에이전트가 중단된 지점부터 구조적으로 작업을 재개한다.

  • 모호한 요청을 명확한 오라클(검증 가능 신호)과 작은 단위의 '슬라이스' 작업으로 분해하여 구현 결과물의 품질을 향상시킨다.

  • Codex와 Claude Code 모두에서 플러그인 형태로 설치 가능하며, 표준 TOML 파일 기반의 명확한 역할 정의를 수행한다.

Timeline

Claude Code의 goal 명령어와 한계

  • 기존 goal 명령어는 채팅 맥락에만 의존하여 장기 작업 시 컨텍스트 압축 문제와 정보 손실이 발생한다.
  • 복잡한 작업을 하위 단위로 분해하지 않고 단일 에이전트가 처리하여 작업 완료 정의가 불분명해지는 경우가 많다.

Claude Code의 goal 명령어는 특정 조건이 충족될 때까지 에이전트를 반복 실행하지만, 작업 진행 상황을 파일 시스템에 저장하지 않습니다. 세션이 중단되거나 컨텍스트가 길어지면 에이전트는 이전에 무엇을 했는지 망각하거나 계획 없이 작업을 수행하게 됩니다. 이는 결국 복잡한 워크플로우에서 심각한 오류를 유발합니다.

Goal Buddy의 구조와 에이전트 역할

  • Goal Buddy는 스카우트, 워커, 판사라는 세 가지 특화된 에이전트를 기반으로 작업을 수행한다.
  • 판사 에이전트는 읽기 전용으로 추론 능력을 극대화하여 작업의 안전성과 완료 여부를 비판적으로 검토한다.
  • 워커 에이전트는 유일하게 편집 권한을 가지며, 한 번에 하나의 작업만 수행하여 혼선을 방지한다.

이 도구는 작업 상태를 로컬 파일로 업데이트하고 증거 기반의 보고서를 생성합니다. 판사 에이전트는 결과가 안전한지 분석하고, 스카우트는 작업 현황을 매핑하며, 워커는 실제 코드를 수정합니다. 각 에이전트는 명확히 정의된 역할과 권한을 지니며 TOML 파일로 관리됩니다.

워크플로우 실행 및 검증

  • 사용자는 goal prep 명령어를 통해 목표와 관측 가능한 신호인 오라클을 정의하여 작업을 시작한다.
  • 모든 작업은 '슬라이스' 단위로 쪼개어 독립적으로 실행 및 검증된다.
  • 정량적 평가가 어려운 비기획 작업도 Goal Buddy를 통해 구체적인 구현 단계로 번역되어 더 나은 결과물을 도출한다.

도구는 초기 질문 세션을 통해 모호한 의도를 제거하고, 작업의 성공을 판단할 구체적 기준인 오라클을 설정합니다. state.yaml 파일을 통해 전체 진행 상황을 대시보드 형태로 모니터링하며, 모든 슬라이스가 완료될 때까지 자동으로 루프를 실행합니다. 실제 테스트 결과, 단순 goal 명령어보다 훨씬 체계적이고 품질 높은 앱 구현 결과를 보였습니다.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video