96 lines
13 KiB
Markdown
96 lines
13 KiB
Markdown
# 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 호출은 재시도하지 않았다.
|