- 미공개 광섬유망 최적화 문제를 30분씩 풀게 한 결과, Fable 5가 최고 점수와 가장 안정적인 성능을 보였지만
/goal은 일관된 향상을 만들지 못함
/goal은 단순히 더 오래 작업하게 하는 기능이 아니라 제어 루프와 탐색 경로를 바꿔, 좋은 전략뿐 아니라 잘못된 전략도 지속시킬 수 있음
/goal이 Fable 5와 GPT-5.6 Sol의 6회 비교 중 4회 이겼지만, 드물게 발생한 큰 성능 저하로 평균 점수는 각각 759점과 868점 악화됨
- Fable 5 일반 모드는 평균 32,386점과 319점 범위로 가장 안정적이었고,
/goal 모드는 전체 최고 기록인 31,934점을 달성함
- 어려운 최적화에서는 반복 여부보다 반복하는 전략의 품질이 중요하며, 개별 승률과 평균 성능이 서로 반대 결론을 낼 수 있음
KIRO 광섬유망 최적화 문제
- KIRO는 2018년 공학 학생 대상 해커톤에 제출됐던 운영 연구 문제로, Grenoble·Nice·Paris의 방향성 거리 행렬을 이용해 총 케이블 길이를 최소화해야 함
- 배전 허브에서 시작하는 중복 루프와 루프 위 타워에서 뻗는 짧은 분기로 네트워크를 구성함
- 모든 타워가 정확히 한 번씩 등장해야 함
- 여러 구조적 제약을 충족해야 함
- 케이블 구간은 방향을 뒤집으면 비용이 달라질 수 있음
- 점수가 낮을수록 더 좋은 해임
- 인간 기준선은 과거 이 문제를 풀기 위해 일주일 동안 작성한 C++ 솔버임
-
탐색 공간의 규모
- 루프 수와 크기, 분기의 기준점과 순서가 달라 단일 폐쇄형 수식으로 전체 탐색 공간을 계산하기 어려움
- Paris의 532개 터미널을 순서와 분기 없이 11개 배전 허브에 할당하는 경우만 따져도
11^532가지임
- 터미널 28개짜리 루프 19개를 사용하고 분기를 없앤 제한된 유효 해만 계산해도 탐색 공간은 약
10^1223에 달함
19 × 28 = 532이므로 모든 터미널을 포함함
- 각 루프는 터미널 30개 제한을 넘지 않음
- 계산식은
(532! / 19!) × 11^19 ≈ 10^1223임
모델과 실행 조건
- Claude 계열의 Fable 5·Opus 4.8·Sonnet 5와 GPT 계열의 GPT-5.6 Sol·Terra·Luna를 비교함
- 각 모델은 일반 모드와 네이티브
/goal 모드로 실행함
- 최적화 시간은 30분
- 외부 에이전트 제한 시간은 1,900초
- 추론 설정은 각 모델에서 사용할 수 있는 최댓값
- 실행 환경은 Harbor 0.1.43, Docker, 구독 인증임
- 먼저 모든 모델에 힌트 없는 30분짜리 일반·
/goal 대응 실행을 한 번씩 수행함
- 핵심 비교 대상인 Fable 5와 GPT-5.6 Sol은 각각 3개의 대응 실행 쌍이 생길 때까지 반복함
- 전체 코드·프롬프트·결과표·제외 기준·실행 궤적은 CLIArena에 있으며, 이전 벤치마크 글의 후속 실험임
Fable 5와 GPT-5.6 Sol의 결과
/goal 점수에서 일반 모드 점수를 뺀 값이 음수이면 /goal이 더 좋은 결과임
- Fable 5의 세 실행 결과는 다음과 같음
- 1회: 일반 32,197점,
/goal 31,934점으로 263점 개선
- 2회: 일반 32,516점,
/goal 32,324점으로 192점 개선
- 3회: 일반 32,446점,
/goal 35,178점으로 2,732점 악화
- GPT-5.6 Sol의 세 실행 결과는 다음과 같음
- 1회: 일반 33,581점,
/goal 39,371점으로 5,790점 악화
- 2회: 일반 35,539점,
/goal 32,703점으로 2,836점 개선
- 3회: 일반 33,663점,
/goal 33,313점으로 350점 개선
-
승률과 평균이 엇갈린 이유
/goal은 6회 중 4회 이겼지만, 두 모델 모두 작은 개선을 자주 얻는 대신 드물게 큰 성능 저하를 겪음
- Fable 5는 일반 모드 평균 32,386점,
/goal 평균 33,145점으로 759점 악화됨
- 중앙값 기준으로는 192점 개선됨
- GPT-5.6 Sol은 일반 모드 평균 34,261점,
/goal 평균 35,129점으로 868점 악화됨
- 중앙값 기준으로는 350점 개선됨
- Fable 5의 일반 모드 평균은 Sol보다 1,875점 좋았고,
/goal 평균도 1,984점 앞섬
- 안정성에서도 차이가 나타남
- Fable 5 일반 모드의 세 결과는 319점 범위 안에 머묾
- Sol 일반 모드는 1,958점 범위에 걸침
- Fable 5
/goal은 전체 최고 점수인 31,934점을 기록함
- 가장 안전한 구성은 Fable 5 일반 모드였음
같은 /goal, 서로 다른 구현
-
Claude Code의 별도 평가 모델
- Claude Code의
/goal은 세션 범위 Stop 훅(hook) 으로 동작함
- 메인 모델이 한 턴을 끝낼 때마다 기본값인 Haiku 평가 모델이 목표 조건과 대화를 읽고 이유와 함께 yes 또는 no를 반환함
- no이면 새 턴을 시작하고, yes이면 목표를 해제함
- 평가 모델은 도구를 사용하거나 파일을 검사할 수 없으며 대화 기록에 나타난 증거만 판단함
- 너무 일찍 작업을 끝내는 상황은 감지할 수 있지만, 솔버를 1,000만 회 더 반복할 가치가 있는지는 알 수 없음
- Claude Code가 오픈소스가 아니므로 구현 정보는 Anthropic의 goal 문서에 의존함
-
Codex의 영속 상태와 생명주기 도구
- 벤치마크에 사용한 Codex CLI 0.144.4는 목표를 스레드에 연결된 영속 상태로 취급함
- TUI가 활성 스레드의 목표를 저장하고 SQLite가 상태와 예산 사용량을 기록함
- 작업 모델은
create_goal, get_goal, update_goal 도구를 받음
- 목표가 활성화된 상태에서 스레드가 유휴 상태가 되면 목표와 완료 감사를 포함한 후속 턴을 주입함
- Claude는 독립 평가 모델에 완료 판단을 맡기지만, 해당 모델은 대화 기록만 볼 수 있음
- Codex에서는 작업 모델이 파일과 도구를 사용하고 스스로 완료를 선언하며, 영속 목표가 활성 상태이면 다시 작업을 이어감
/goal이 전략을 증폭하는 방식
- 일반 코딩 작업은 추가 턴으로 테스트를 수정하거나 마이그레이션을 완료하는 등 진행 상황을 확인하기 쉬움
- 최적화에서는 에이전트가 솔버를 선택한 뒤 추가 시간이 좋은 결정과 나쁜 결정 모두를 증폭할 수 있음
/goal이 도움이 된 경우는 다음과 같음
- Fable 5의 빠른 컴파일 기반 포트폴리오를 계속 실행함
- Sol의 성공적인 체인 재분할 전략을 지속함
- 반대로 성능을 떨어뜨린 경우도 있었음
- Fable 5가 느린 솔버를 구축한 뒤 계속 실행함
- Sol이 모든 기준점을 훑는 완전 탐색에 집착함
- 중앙값은 소폭 개선됐지만 나쁜 결과의 꼬리는 훨씬 크게 악화돼 평균 성능이 낮아짐
결과 해석의 제약
- 실험 대상은 미공개 NP-난해 문제 하나이므로 일반적인 코딩 리더보드로 볼 수 없음
- Fable 5와 Sol만 깨끗하게 대응되는 실행 쌍을 각각 3개 확보함
- 다른 모델 비교에는 서로 다른 프롬프트·래퍼 버전·시간 제한이 섞여 있음
- 구독 서비스를 통해 순차 실행했으므로 서비스 상태가 실험 도중 달라졌을 수 있음
- 작업 메타데이터에는 CPU 1개로 기록됐지만 컨테이너에는 CPU 8개가 노출돼 Fable 5의 병렬 포트폴리오에 유리했음
- 래퍼가 중간 체크포인트와 최종 검증을 요구한 덕분에 점수에 포함된 Fable 5와 Sol의 모든 출력은 유효했음
- 측정 대상은 모델 단독이 아니라 모델·CLI·프롬프트·구독 서비스·하네스를 포함한 전체 시스템임
재현 자료와 판단
- CLIArena에 벤치마크 작업, 래퍼, 분석 스크립트, 도표 생성기, 전체 증거 메모가 공개돼 있음
- 원시 작업 디렉터리는 크기 때문에 Git에서 제외됐지만, 메모에는 공개 가능한 모든 점수·도시별 결과·경과 시간·전략·제외 항목·실행 ID가 기록돼 있음
- 주요 실행 명령은 다음과 같음
RUN_ID=article-kiro-YYYYMMDD-clean \
PHASE=nohint-all \
./scripts/run_subscription_article_matrix.sh
uv run python scripts/summarize_subscription_article_results.py RUN_ID...
uv run python scripts/analyze_subscription_article_results.py RUN_ID...
/goal은 일률적으로 성능을 높이거나 낮추지 않았으며, 개별 실행 대부분을 이기면서도 관측된 평균 성능을 악화시킬 수 있음
- 어려운 최적화에서는 제어 루프 자체의 품질보다 그 루프가 반복해서 수행하는 전략의 품질이 더 중요함