배경
속도/토큰 최적화 논의를 객관화하려면 cold start, warm latency, token/payload size, memory, parallel throughput을 반복 측정할 수 있어야 한다. agent-browser는 benchmark에서 command latency, cold start, daemon/browser RSS, CPU time, binary/distribution size를 수집한다.
목표
OpenChrome의 주요 agent loop 성능을 회귀 감지 가능한 benchmark matrix로 정리한다.
구현 범위
tests/benchmark 또는 별도 script에 다음 시나리오를 추가/정리한다.
- cold start: server start 또는 session init → first usable tab
- warm
read_page mode="dom"
- warm
read_page mode="ax"
read_page mode="dom" compression="delta"
find 또는 interactive discovery
- click/fill action latency
- screenshot inline/path latency 및 payload size
- agent-loop:
read_page -> action -> read_page(delta)
- parallel tabs: 1/5/20 tabs where feasible
- 각 시나리오에서 최소 다음 지표를 출력한다.
- avg/p50/min/max/stddev ms
- response char length / approximate token estimate
- base64 bytes for screenshots if applicable
- Node process RSS
- Chrome process RSS 또는 가능한 경우 process tree memory
- CI에서는 너무 무거운 real Chrome benchmark를 기본 차단하고, smoke/fixture mode만 실행한다.
- full benchmark는 local/manual command로 실행 가능해야 한다.
비범위
- 외부 사이트 의존 benchmark
- 성능 목표를 무리하게 CI hard gate로 즉시 강제
- Rust/native rewrite 평가
성공 기준
- 개발자가 한 명령으로 benchmark를 실행하고 JSON/Markdown 결과를 얻을 수 있다.
- DOM/AX/delta/screenshot payload 크기가 비교 가능하게 출력된다.
- 최적화 PR에서 before/after 비교가 가능하다.
- CI smoke는 안정적으로 1분 내외 또는 합리적 시간 안에 끝난다.
테스트 계획
단위/통합 테스트
- benchmark utility의 stats 계산(avg/p50/stddev)이 deterministic input에서 올바른지 검증한다.
- token estimate/payload size 계산이 빈 문자열, 큰 문자열, image payload에서 안전한지 검증한다.
- smoke fixture가 외부 네트워크 없이 동작하는지 검증한다.
OpenChrome 실검증
- OpenChrome build 후 benchmark smoke 실행:
npm run build
npm run benchmark -- --category agent-loop --runs 3 --json
- 결과 JSON에 다음 항목이 있는지 확인한다.
- scenario name
- samples
- avg/p50/min/max/stddev
- response chars / estimated tokens
- process RSS where available
- full local benchmark 실행:
npx ts-node tests/benchmark/run-parallel.ts --mode real --category batch-js --runs 1
- 결과를 PR description에 붙일 수 있는 Markdown summary로 변환 가능한지 확인한다.
리스크와 완화
- 리스크: benchmark가 flaky해서 CI를 불안정하게 만들 수 있다.
- 완화: CI는 smoke만, real benchmark는 manual/advisory로 둔다.
- 리스크: 환경별 Chrome RSS 측정 방식이 다르다.
- 완화: 측정 불가 시
null과 reason을 기록하고 실패로 처리하지 않는다.
OpenChrome 실검증 체크리스트
2026-05-14 최신 merged 버전 적용 후 재검증. OpenChrome 응답, 로컬 fixture, 빌드/테스트 산출물로 직접 증명 가능한 항목만 합격 조건으로 남겼다. 사람 리뷰, 외부 사이트 안정성, 미확인 PR 상태 같은 조건은 합격 조건에서 제외한다.
검증 대상
최신 버전/공통 런타임 검증
이슈별 해결 증거
실패/보류 기준
- 체크가 하나라도 미충족이면 이슈를 닫지 않는다.
- 실패가 최신 코드 결함으로 재현되면 실패한 OpenChrome 호출, 응답 excerpt, fixture 상태를 증거로 남기고 별도 수정 PR을 올린다.
배경
속도/토큰 최적화 논의를 객관화하려면 cold start, warm latency, token/payload size, memory, parallel throughput을 반복 측정할 수 있어야 한다.
agent-browser는 benchmark에서 command latency, cold start, daemon/browser RSS, CPU time, binary/distribution size를 수집한다.목표
OpenChrome의 주요 agent loop 성능을 회귀 감지 가능한 benchmark matrix로 정리한다.
구현 범위
tests/benchmark또는 별도 script에 다음 시나리오를 추가/정리한다.read_page mode="dom"read_page mode="ax"read_page mode="dom" compression="delta"find또는 interactive discoveryread_page -> action -> read_page(delta)비범위
성공 기준
테스트 계획
단위/통합 테스트
OpenChrome 실검증
리스크와 완화
null과 reason을 기록하고 실패로 처리하지 않는다.OpenChrome 실검증 체크리스트
검증 대상
최신 버전/공통 런타임 검증
npm run build통과를 확인했다.npm run lint:tier통과를 확인했다.npm test -- --runInBand결과 504/507 suites 통과, 3 skipped, 6429/6525 tests 통과, 96 skipped를 확인했다. 단, Jest open-handle 경고는 별도 런타임 리스크로 기록했다.oc_connection_health가 connected 상태를 반환했다.navigate/read_page/interact/javascript_tool경로로 DOM 상태 변화를 관찰했다.이슈별 해결 증거
실패/보류 기준