무슨 일이야
Claude Code의 /goal은 “일하는 모델”과 “끝났는지 판정하는 모델”을 떼어냈어. 완료 조건을 걸어두면 Claude가 매번 프롬프트를 안 넣어도 그 조건까지 계속 일하는데, 공식 문서에 따르면 완료 판정은 작업하던 그 모델이 아니라 별도의 작은 모델이 맡아. VentureBeat도 이걸 “일하는 에이전트와 끝났다고 정하는 에이전트를 분리한 것”이라고 정리했어.
왜 이게 필요하냐면, 작업하던 모델 스스로 “다 됐다”고 하는데 열어보면 절반이 안 돼 있는 일이 잦았거든. 판정하는 눈을 따로 두면 그 자화자찬을 한 번 걸러.
어떻게 작동해
동작은 턴 단위야.
- 매 턴 종료 시: 지금까지의 대화와 조건이 설정된 작은 빠른 모델(기본 Haiku)로 보내져.
- 판정: 그 모델이 예/아니오와 짧은 이유를 돌려줘.
- “아니오”면: 계속 일하라는 신호이고, 그 이유가 다음 턴 가이드로 붙어.
- “예”면: 목표를 지우고 달성 기록을 트랜스크립트에 남겨.
조건은 이렇게 써야 해
핵심 제약이 1개 있어. 평가 모델은 명령을 실행하거나 파일을 직접 읽지 않아. 오직 Claude가 대화에 꺼내 놓은 내용만 보고 판단해. 그래서 조건은 Claude 자기 출력으로 증명 가능한 형태로 써야 해.
예를 들어 “test/auth의 테스트가 전부 통과”는 잘 작동해. Claude가 테스트를 돌리면 그 결과가 대화에 남고, 평가 모델이 그걸 읽을 수 있으니까. 반대로 파일을 열어봐야만 확인되는 조건은 판정이 헛돌 수 있어.
언제 써
코딩 에이전트를 오래 돌리는 작업 중 “검증 가능한 끝 상태”가 있는 경우에 맞아.
- 모듈 마이그레이션: 모든 호출부가 컴파일되고 테스트가 통과할 때까지.
- 설계 문서 구현: 수용 기준이 전부 충족될 때까지.
- 큰 파일 분리: 각 파일이 크기 예산 아래로 내려갈 때까지.
쓰기 전에 2가지만 기억해. Claude Code v2.1.139 이상이 필요하고, 세션당 목표는 1개야. 완료 판정을 떼어냈다고 결과 품질이 저절로 오르는 건 아니고, 판정 오류 위험을 “조건을 얼마나 잘 쓰느냐”로 옮긴 거라 조건 설계가 곧 품질이야.