iop/agent-test/dev/iop-thin-agent-model-comparison.md
toki 3d10de0652 docs(bench): 단일 평가 기준을 추가한다
별도 채점 하네스를 만들지 않고도 산출물을 재검산 가능하게 비교할 수 있도록 고정 100점 rubric, opaque 평가, 직접 evidence와 단순 총점 규칙을 마지막 작업으로 추가한다.
2026-08-14 06:07:30 +09:00

78 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:35b` 바인딩을 사용한다. 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 | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| Claude Code → Gemini direct | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| OpenCode → Gemini direct | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| Claude Code → GPT direct | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| Codex → GPT direct | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| Claude Code → Gemini execution preset | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| OpenCode → Gemini execution preset | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| Claude Code → GPT execution preset | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
| Codex → GPT execution preset | 미부여 | 미실행 | 미측정 | 미제공 | 미확인 | — |
## 공통 평가 기준표 — 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 | 채점 상태 |
|---|---:|---:|---:|---:|---:|---|
| 미부여-01 | — | — | — | — | — | 미채점 |
| 미부여-02 | — | — | — | — | — | 미채점 |
| 미부여-03 | — | — | — | — | — | 미채점 |
| 미부여-04 | — | — | — | — | — | 미채점 |
| 미부여-05 | — | — | — | — | — | 미채점 |
| 미부여-06 | — | — | — | — | — | 미채점 |
| 미부여-07 | — | — | — | — | — | 미채점 |
| 미부여-08 | — | — | — | — | — | 미채점 |
| 미부여-09 | — | — | — | — | — | 미채점 |
Evidence block 형식: `평가 ID — A: 충족/누락 selector와 점수; B~D: source selector 또는 viewport에서 직접 관찰한 근거; 감점: 기준·anchor·사유`. 한 결함당 한 문장으로 제한한다. 평가는 산출물별 한 번만 수행하고, 이후 수정은 합계 산술 오류나 evidence 전사 오류만 허용하며 수정 사유를 같은 block에 남긴다.
이 총점은 고정 rubric과 직접 evidence에 기반한 재검산 가능한 단일 평가 점수다. 반복 표본이나 다중 평가자 합의가 아니므로 통계적 모델 우위나 절대적 품질 척도로 해석하지 않는다.
## 결론
9개 단일 시도와 단일 평가가 끝난 뒤 scorable 결과의 총점과 축별 강점·약점만 짧게 비교한다. 실행 성공률·속도·usage는 품질 총점과 별도로 제시한다. 실패, 채점 불가와 미제공 usage를 0점으로 바꾸거나 반복 실행·통계적 우위로 일반화하지 않는다.