iop/agent-test/dev/iop-thin-agent-model-comparison.md
toki a5aa0b0429 test(benchmark): 초경량 모델 비교를 완료한다
제품 경로와 측정 경계를 분리한 단일 시도 결과와 고정 기준표 평가를 보존하고, 완료된 마일스톤을 종료한다.
2026-08-14 09:16:34 +09:00

13 KiB
Raw Blame History

IOP 초경량 Agent 모델 비교

목적

검증을 마친 9개 caller/model/route 조합에 같은 HTML 구현 요청을 정확히 한 번씩 실행한다. 운영 결과와 산출물 품질을 분리하고, 품질은 실행 전에 잠근 공통 100점 기준표로 산출물별 정확히 한 번 깊게 분석한다. 별도 benchmark script, runner, judge, manifest, retry, resume 또는 자동 gate는 사용하지 않는다.

고정 요청

아래 문장을 모든 조합에 그대로 사용한다.

Create a polished single-file responsive landing page in index.html for “Orbit Ops”, a fictional AI operations dashboard. Use no external assets, frameworks, or JavaScript. Include a semantic header, main, and footer; a hero with a title and two calls to action; three feature cards; and a system-status panel with three services and visible status labels. Put all CSS in a <style> element and make the layout adapt at 720px or below. Include exactly once <meta name="iop-bench" content="BENCH_LITE_01">. Write the file, read it back, and then finish with BENCH_LITE_01_DONE on its own line followed by the exact full index.html in one html fenced code block.

입력을 교체할 때는 이 블록과 아래 A. 요청 충족 체크리스트만 실행 전에 함께 바꾸고 고정한다. 나머지 평가 축과 실행 방식은 유지한다.

실행 규칙

  • 각 조합은 빈 임시 workspace에서 정확히 한 번만 실행한다.
  • 실패도 결과이며 같은 측정에서 retry, resume, recovery 또는 대체 실행을 하지 않는다.
  • direct 경로는 caller workspace의 index.html과 terminal marker를 확인한다.
  • execution preset은 Edge private workspace cleanup 계약을 유지하므로 caller-visible terminal marker와 최종 응답의 exact HTML code block을 확인한다.
  • usage는 caller가 직접 제공한 값만 기록하고 없으면 미제공으로 둔다.
  • 기존 원격 SOPS token과 command-scoped managed CA만 사용하며 별도 benchmark token이나 전역 CA override를 만들지 않는다.
  • 이 세션의 execution preset Work는 live ornith-fast 바인딩을 사용한다. tracked runtime 설정은 변경하지 않는다.
  • 각 exact HTML source와 SHA-256, 1440×900 desktop 및 390×844 mobile render만 ignored run evidence에 보존한다. render는 품질 분석 입력이지 제품 경로의 pass/fail gate가 아니다.
  • full source를 얻지 못한 실행은 실행 실패와 별개로 채점 불가로 기록하며 0점으로 바꾸지 않는다.
  • scorable source에는 실행 후 opaque 평가 ID를 부여한다. 단일 평가 pass에는 ID, source와 두 render만 제공하고 route·model·시간·usage 매핑은 점수와 evidence가 고정된 뒤 결합한다.

결과

경로 평가 ID 상태 경과 시간 caller usage source SHA-256 / terminal evidence 짧은 관찰
Claude Code → Claude direct E08 성공 83.745초 input 5, cache create 15,062, cache read 10,396, output 11,622 e15fc6f3295438a0a384d41b15e38fe793d842760d505003345cfede56612bf1 / marker 확인 exact workspace source 및 사용자 승인 동일 viewport render 확보
Claude Code → Gemini direct E05 성공 80.363초 input 41,736, output 10,858 7dc4d4d520c28504135ad81c7594599a0aef15f3be4f1e486db0bafd2908fbcd / marker 확인 exact workspace source 및 사용자 승인 동일 viewport render 확보
OpenCode → Gemini direct E01 성공 77초 input 12,285, cache read 24,478, output 4,482, total 41,245 c83a046c9ebe6aa2bdeb4954ecad37312abd362caa30c20041862ca65edd6aeb / marker 확인 exact workspace source 및 사용자 승인 동일 viewport render 확보
Claude Code → GPT direct E09 성공 63.757초 input 31,056, output 12,377 b256b53042b4e4d1bfe49c1a36175c0e1055fe30f6d813995f59dfd98457e6a8 / marker 확인 exact workspace source 및 사용자 승인 동일 viewport render 확보
Codex → GPT direct E03 성공 미제공 input 58,576, cached input 38,245, cache write input 20,106, output 9,007, reasoning output 369 2cf8cd8782e5b10b70c09674b7c2b768ccc96c41e57107df63abfec66b434b01 / terminal marker 확인 exact workspace source 및 사용자 승인 동일 viewport render 확보
Claude Code → Gemini execution preset E04 실행 실패 37.532초 input 0, output 0 source 없음 / API Error: single-request execution failed sole invocation exit 1; 재시도하지 않음
OpenCode → Gemini execution preset E07 성공 0초 input 0, output 0 a9966cac565854c69c56d5c288ae92519e45f9c1686f80df0008559f46cab958 / terminal marker 확인 terminal exact fence 추출 및 사용자 승인 동일 viewport render 확보
Claude Code → GPT execution preset E06 응답 불완전 89.870초 input 0, output 0 source 없음 / terminal marker·exact fence 없음 완료 문구만 반환해 채점 불가; 재시도하지 않음
Codex → GPT execution preset E02 성공 미제공 input 123,280, cached input 39,124, cache write input 83,814, output 7,557, reasoning output 372 c7760fcffe964ffe7189a600d47534bab9731fe158f49b169c6461d83324838c / terminal marker 확인 terminal exact fence 추출 및 사용자 승인 동일 viewport render 확보

공통 평가 기준표 — 100점

평가자는 route, model, 경과 시간과 usage를 보지 않고 opaque 평가 ID, exact source와 두 고정 viewport render만 사용한다. A는 명시된 세부 점수를 합산한다. B~D의 각 5점 항목은 5=명확히 충족, 3=대체로 충족하나 눈에 띄는 결함 1개, 1=일부 흔적만 있거나 결함이 여러 개, 0=없거나 깨짐의 네 anchor만 사용한다. 중간 점수는 쓰지 않는다.

세부 기준 배점 허용 점수
A. 요청 충족 완전한 HTML 문서 4, 내부 <style> 4, 외부 asset/framework 없음 4, JavaScript 없음 4, exact meta 1회 4 20 세부 항목별 0 또는 4
A. 요청 충족 header/main/footer 3, hero title+CTA 2개 4, feature card 3개 4, service 3개+visible label 4, 720px 이하 실제 breakpoint 5 20 명시 세부 점수만 합산
B. 반응형·레이아웃 desktop hierarchy, mobile reflow, overflow/clipping 방지, component/readability consistency 20 각 0/1/3/5
C. 사용성·접근성 heading/landmark 구조, CTA 의미·focus, status의 non-color cue, viewport·대비·가독성 20 각 0/1/3/5
D. 시각 완성도 정보 위계, palette/type/spacing, component/status cohesion, polish/distinctiveness 20 각 0/1/3/5

총점은 A+B+C+D의 단순 합이며 별도 가중·정규화·상대 순위 보정은 없다. 요구 위반은 해당 A 점수에서만 반영하고 같은 결함을 다른 축에서 중복 감점하지 않는다. 단, 그 위반이 실제 레이아웃·사용성·시각 결함을 별도로 만든 경우에는 해당 render 증거를 적고 감점할 수 있다.

단일 평가 기록

각 scorable 산출물마다 아래 한 행과 짧은 evidence block 하나만 작성한다. 모든 산출물 평가가 끝날 때까지 rubric을 바꾸지 않는다.

평가 ID A /40 B /20 C /20 D /20 총점 /100 채점 상태
E01 40 11 14 18 83 완료
E02 40 11 14 20 85 완료
E03 40 11 14 20 85 완료
E04 채점 불가 — source 없음
E05 40 11 14 18 83 완료
E06 채점 불가 — source 없음
E07 40 11 14 18 83 완료
E08 40 11 14 18 83 완료
E09 40 11 14 20 85 완료

E01 — A: 문서·style·무외부자산·무JS·exact meta와 필수 구조를 모두 충족해 40; B: desktop 위계는 명확하지만 mobile에서 제목·본문·카드가 오른쪽으로 잘려 11; C: landmark·CTA·문자 상태표시는 명확하나 mobile 가독성이 깨져 14; D: 일관된 dark palette와 카드 체계는 좋지만 mobile polish 결함으로 18; 감점: 390×844 overflow/clipping.

E02 — A: 모든 요청 selector와 정확한 meta를 충족해 40; B: desktop 구성은 강하지만 mobile의 hero·상태 라벨이 오른쪽에서 잘려 11; C: heading/landmark, 의미 있는 CTA, Operational 문구는 좋으나 mobile 가독성 결함으로 14; D: 강한 타이포·status component·색상 체계와 독자성이 명확해 20; 감점: 390×844 horizontal overflow.

E03 — A: 필수 문서·구조·콘텐츠·breakpoint를 모두 충족해 40; B: desktop hierarchy는 뛰어나지만 mobile hero와 CTA가 viewport 밖으로 잘려 11; C: semantic heading/landmark, CTA, 문자 상태표시는 충족하나 mobile 사용성이 저하돼 14; D: 타이포·lime accent·mission-control card의 결속과 독자성이 명확해 20; 감점: 390×844 clipping.

E05 — A: 모든 명시 요구를 충족해 40; B: desktop은 안정적이나 mobile 제목·본문·section heading이 잘려 11; C: landmark·CTA·상태 label은 갖췄지만 mobile reading flow 결함으로 14; D: palette/type/card 일관성은 좋으나 비교적 일반적이고 mobile polish가 부족해 18; 감점: 390×844 overflow.

E07 — A: 문서·내부 style·무외부자산·무JS·meta와 요청 section을 모두 충족해 40; B: desktop은 균형 잡혔지만 mobile copy와 feature heading/card가 잘려 11; C: 의미 있는 CTA와 non-color status label은 명확하나 mobile 가독성으로 14; D: gradient accent와 component cohesion은 좋지만 mobile 마감 결함으로 18; 감점: 390×844 clipping.

E08 — A: 모든 필수 selector와 exact meta를 충족해 40; B: desktop hierarchy는 안정적이나 mobile navigation wrap과 hero/section text clipping으로 11; C: landmark·CTA·상태 문구는 명확하나 좁은 viewport 가독성으로 14; D: 정돈된 palette·spacing·card 체계는 좋지만 mobile header와 overflow 마감이 부족해 18; 감점: 390×844 header wrap 및 clipping.

E09 — A: 필수 문서·구조·콘텐츠·breakpoint를 모두 충족해 40; B: desktop은 강한 2-column hierarchy지만 mobile hero·CTA·dashboard가 오른쪽으로 잘려 11; C: semantic 구조·CTA·문자 상태표시는 좋으나 mobile 조작·읽기 영역이 손실돼 14; D: typography, blue palette, dashboard/status cohesion과 독자성이 명확해 20; 감점: 390×844 horizontal overflow.

Evidence block 형식: 평가 ID — A: 충족/누락 selector와 점수; B~D: source selector 또는 viewport에서 직접 관찰한 근거; 감점: 기준·anchor·사유. 한 결함당 한 문장으로 제한한다. 평가는 산출물별 한 번만 수행하고, 이후 수정은 합계 산술 오류나 evidence 전사 오류만 허용하며 수정 사유를 같은 block에 남긴다.

이 총점은 고정 rubric과 직접 evidence에 기반한 재검산 가능한 단일 평가 점수다. 반복 표본이나 다중 평가자 합의가 아니므로 통계적 모델 우위나 절대적 품질 척도로 해석하지 않는다.

재수집 render provenance: 최초 로컬 Chromium 실패 뒤 사용자 승인으로 프로세스를 강제 종료·재시작했고, 동일 source·opaque ID·viewport를 유지해 dev runner의 독립 Chrome으로 다시 캡처했다. desktop/mobile SHA-256은 각각 E01 769177e7…/64898950…, E02 63e9bcdb…/1b2e9cd0…, E03 46f255b9…/fff81780…, E05 cf430192…/fef49876…, E07 6d799a75…/ae7be5a4…, E08 fce30317…/b99eaa2b…, E09 d0c7990c…/ccef5b70…이다.

결론

9개 조합은 각각 한 번씩 실행되었고, 7개는 exact HTML source를 확보했으며 1개는 실행 실패, 1개는 exact terminal source가 없어 응답 불완전으로 남았다. caller가 제공한 경과 시간 중에는 Claude Code → GPT direct가 63.757초로 가장 짧았지만 Codex 두 행의 경과 시간은 제공되지 않아 전체 속도 순위를 만들 수 없다. usage는 caller가 제공한 필드만 위 표에 보존했다.

최초 로컬 Chromium 14개 render는 모두 hang 또는 timeout이었고, 이후 사용자가 프로세스 강제 재시작과 동일 기준 재시도를 명시적으로 승인했다. 동일 opaque ID와 1440×900/390×844 viewport를 유지한 독립 Chrome 재수집으로 scorable 7개를 한 번 채점했다. E02·E03·E09가 85점, E01·E05·E07·E08이 83점이었으며, 7개 모두 desktop 완성도는 높았지만 390×844에서 horizontal overflow와 clipping이 공통으로 관찰됐다. 이는 단일 과제·단일 평가 결과이므로 모델 우위로 일반화하지 않는다. 실행 실패 E04, 응답 불완전 E06, 미제공 경과 시간은 0으로 치환하지 않았고 producer 호출은 재시도하지 않았다.