다양한 코딩 CLI에서 동일 모델의 비용은 얼마나 드는가? 실제 코드베이스에 가장 좋은 품질을 제공하는 모델은 무엇인가?
요약
agent-cost-bench는 다양한 코딩 CLI와 모델(Claude, OpenAI 등)을 실제 GitHub 리포지토리에서 비교하는 프레임워크입니다. 이 도구는 비용, 품질, 지연 시간을 측정하여 어떤 조합이 사용자 코드베이스에 가장 적합한지 검증합니다.
핵심 포인트
- 다양한 코딩 CLI와 모델의 성능 및 비용을 통합적으로 비교 가능
- 실제 GitHub 리포지토리를 활용하여 현실적인 테스트 환경 제공
- 비용(USD, 크레딧)과 품질, 지연 시간을 동시에 측정하는 것이 핵심
다양한 코딩 CLI에서 동일 모델의 비용은 얼마나 드는가? 어떤 모델이 사용자의 실제 코드베이스에 최고의 품질을 제공할까? agent-cost-bench가 단일 실행으로 두 질문에 모두 답합니다.
어떤 모델, 어떤 CLI, 그리고 어떤 사용 사례(use case)든 — 자체 검증 테스트를 가진 실제 GitHub 리포지토리와 함께 — agent-cost-bench는 비용(cost), 품질(quality), 지연 시간(latency)을 나란히 측정합니다. 이 리포지토리를 실행하고 개발 에이전트를 비교하는 방법에 대한 비디오를 여기서 확인하세요.
| 질문 | 모드 | 예시 |
|---|---|---|
| Sonnet 4.6은 Kiro와 Claude Code, Copilot, Codex에서 어떻게 비교되는가? | cli-compare | 동일한 작업을 위한 USD 비용, 지연 시간 및 통과율 비교 |
| Opus, Sonnet 및 기타 모델이 Kiro CLI 내부에서 어떻게 작동하는가? | model-compare | 모델 간 품질 점수 + 비용 비교 |
| GPT-5.5부터 Codex까지가 나의 brownfield 리포지토리에서 Kiro를 거친 Sonnet 4.6보다 우수한가? | cli-compare | 리포지토리를 작업 공간(task workspace)에 클론하고 자체 테스트로 검증합니다. |
이 프레임워크는 유연하도록 설계되었습니다:
어떤 CLI든 — Kiro, Claude Code, GitHub Copilot, Cursor, OpenAI Codex, Antigravity, OpenCode, Devin, pi - 현재 지원되는 CLI입니다.어떤 모델이든 — Anthropic (Claude), OpenAI (o-series, GPT-5.x) 또는 CLI가 노출하는 모든 것.어떤 사용 사례든 — 기본적으로 포함된 greenfield 작업이거나 자체 GitHub 리포지토리(공개 또는 비공개)를 가져올 수 있습니다. 프레임워크는 이를 클론하고 모델에 전달한 후 결과를 검증합니다.다중 검증 옵션 — pytest, Docker 컨테이너, 사용자 지정 스코어러(custom scorers), 또는 LLM-judge 루브릭을 사용합니다. 맞는 것을 선택하면 되며, 루브릭 평가 작업에는 검증 코드가 필요하지 않습니다.
비용은 항상 두 가지 방식으로 보고됩니다: USD와 네이티브 단위(크레딧 / AI Credits / 토큰).
Python 3.10 이상****벤치마킹하려는 코딩 CLI, 설치 및 로그인:cli-compare
: 실행기로 지정하는 CLI (예: kiro-cli, claude, copilot, agent, codex, agy, opencode, devin, pi)
`: Kiro CLI
Docker — 다중 언어 작업(C#/.NET, Java, TypeScript, Terraform, Helm)을 실행할 경우에만 해당됩니다. ./tasks/docker/build-images.sh로 이미지를 한 번 빌드하세요.대안으로, Docker 대신 Finch를 사용하려면 CONTAINER_RUNTIME=finch로 설정하십시오 (기본값은 docker입니다). Finch를 사용할 때는 macOS에서 홈 디렉토리의 볼륨만 마운트할 수 있으므로, 구성 파일에 workspace_base를 홈 디렉토리 아래 경로(예: ~/bench-workspaces)로 설정해야 합니다. 비용 경고: 벤치마크하는 각 CLI는 사용자 자신의 활성 구독 또는 라이선스(Kiro, Claude Code, GitHub Copilot, Cursor, OpenAI Codex, Devin 등)가 필요합니다. 벤치마크를 실행하면 계정에서 크레딧, 토큰 또는 프리미엄 요청이 소모됩니다. 모든 작업을 수행하는 전체 실행은 상당한 리소스를 사용할 수 있습니다. 비용을 추정하려면 작은 하위 집합(task_ids:)부터 시작하십시오. 참고: 여기에서 이 저장소를 실행하고 개발 에이전트를 비교하는 방법을 보여주는 비디오를 확인하십시오.
git clone <repo link>
cd sample-agent-cost-bench
pip install -e . # `agent-cost-bench` 명령어를 설치합니다
...
만약 클론, 설치 및 구성 파일을 직접 작성하는 것이 번거롭다면, 이 저장소는 전체 과정을 안내하는 자체 포함형 인터랙티브 러너를 제공합니다. 이는 0에서 렌더링된 비용 비교까지 가는 가장 빠른 방법이며, 전적으로 사용자의 기기에서 실행됩니다.
./run.sh # 인터랙티브하고 전체 흐름
이 스크립트는 cli-compare를 네 단계에 걸쳐 구동합니다:
사전 점검(Preflight) — 필요한 도구(git, python3, curl, 그리고 npm 기반 CLI의 경우 npm)가 있는지 확인하고, 아무것도 하기 전에 무엇이 누락되었는지 정확히 알려줍니다.설치(Install) — 벤치마크를 타임스탬프가 찍힌 개별 실행 폴더에 새로 클론합니다 (따라서 모든 실행은 최신 main을 사용합니다). 격리된 가상 환경을 생성하고 agent-cost-bench를 설치합니다.
선택한 러너(runners)에 대한 벤더 CLI를 설치하고, 구성(Configure) 기능은 비교할 CLI를 선택하게 해주고, 각 CLI의 사용 가능한 모델을 조회하여 실시간 목록에서 선택할 수 있게 하며, API 키를 수집 및 캐시하고, 대화형 로그인(interactive login)이 필요한 CLI를 처리하며, 유효한 config.yaml 파일을 생성합니다.
사용자를 위해 실행(Run) 기능은 이 호스트에서 벤치마크를 실행하고, HTML/JSON 보고서를 로컬 결과 디렉터리에 작성하며, 마지막에 보고서를 열어줍니다.
설정 파일 수동 작성이 필요 없습니다. 복잡한 개별 CLI 인자(cli_base_args), 가격 블록, 그리고 각 CLI가 실제로 필요로 하는 플래그(예: Antigravity의 --add-dir/--print-timeout)를 포함하여 정확한 cli-compare 설정을 생성하므로, 예시 파일을 복사해서 세부 정보를 수동으로 맞출 필요가 없습니다. 안내되는 모델 선택. 각 CLI에 대해 해당 CLI 자체의 "모델 목록 보기(list models)" 명령을 실행하고 번호가 매겨진 피커를 보여주며, CLI가 목록을 제공할 수 없을 때(로그인되지 않았거나 목록 명령이 없는 경우) 합리적인 기본값으로 대체합니다. 모델 슬러그(model slugs)를 추측할 필요가 없습니다. 인증 처리를 대신 해줍니다. 어떤 CLI가 환경 변수 API 키를 사용하는지 또는 대화형 로그인을 사용하는지 알고 있으며, 키가 적용되는 곳에만 프롬프트를 표시하고 나머지는 로그인 명령을 실행할 것인지 제안합니다. 입력된 키는 캐시되며(chmod 600), 따라서 각 키를 한 번만 입력하면 됩니다. 신선함 + 재현 가능성. 모든 실행은 자체 클론과 가상 환경(venv)을 할당받아 다른 실행과 격리되며, 체크아웃한 정확한 커밋을 기록합니다. 기본적으로 안전합니다. 키에 대한 입력은 숨겨지며, 캐시된 비밀 정보는 로그에서 마스킹되고, .env 캐시는 비공개로 유지됩니다. 이 .env 파일은 git에 포함하지 마십시오.
스크립트가 요청하는 것과 기본값으로 설정되는 값. run.sh는 비교할 CLI를 선택하고, CLI별 모델을 하나씩, 전역 노력 수준(global effort), 그리고 (선택적으로) 보고서 레이블만 요청합니다. 다른 모든 구성 키는 고정된 기본값으로 작성되며, 이를 위해 프롬프트를 표시하지 않습니다. 이들 중 어떤 것을 변경해야 하는 경우, 생성된 config.yaml 파일(경로는 실행 중에 출력됨)을 편집하고 --config <해당 파일>로 다시 실행하거나, config.cli-compare.example.yaml에서 직접 설정을 작성하십시오.
. 기본 설정 값은 다음과 같습니다:
| Config key | Default written by run.sh | 의미 |
|---|---|---|
judge_cli_path | kiro-cli | 루브릭 기반 작업에 대한 LLM judge로 사용되는 CLI (Kiro 설치 및 인증 필요) |
judge_model | claude-opus-4.8 | 평가에 사용되는 모델 |
judge_weight | 0.6 | 혼합 결과에서 judge 점수의 가중치 |
modes | ["vibe"] | cli-compare가 vibe 작업만 실행하도록 함 |
task_ids | (비어 있음) | Docker 기반 작업을 포함하여 모든 번들링된 작업을 실행합니다. 이 경우 로컬 Docker 데몬이 필요합니다. |
concurrency | per_target | 병렬 처리 전략 |
timeout_minutes | 20 | 작업별 타임아웃 |
repeats | 1 | 각 작업을 한 번만 실행함 |
functional_pass_threshold | 0.99 | PASS로 간주되는 데 필요한 점수 |
workspace_base | /tmp/agent-cost-bench-cli-compare | 작업별 워크스페이스가 생성되는 위치 |
devin_permissions_file | tasks/devin/config.json | 각 워크스페이스에 복사된 스코프 지정 Devin 권한 정책 |
output_dir | results | 실행의 벤치마크 체크아웃 내 보고서 디렉토리 (최종 보고서는 또한 acb-results/<runId>로 복사됨) |
open_report | false | 하네스가 자동으로 열지 않음; run.sh가 HTML 자체를 열 때만 예외 |
참고: 비어 있는 task_ids는 일반 실행이 전체 번들링된 작업 스위트(일부는 Docker가 필요함)를 실행한다는 의미입니다. 하위 집합을 실행하려면 생성된 설정 파일에서 task_ids:를 편집하고 --config와 함께 다시 실행하십시오.
./run.sh --yes # 기본값 수락 (Kiro + Claude Code, opus)
./run.sh --skip-install # 가장 최근 클론/venv 재사용, 설치 건너뛰기
./run.sh --no-open # 끝에서 보고서 열지 않음
...
단일 전역 --effort (기본값 high)가 모든 CLI에 적용됩니다. 이는 하나를 받는 CLI의 경우 {effort} 플래그를 통해, 나머지 CLI의 경우 모델 슬러그에 추가됨으로써 이루어집니다. task.yaml 내의 작업별 노력(Per-task effort)이 여전히 이를 재정의합니다.
또한 환경 변수를 사용자 지정 위치로 지정할 수도 있습니다: BENCH_REPO_REF (클론할 브랜치/태그/SHA), BENCH_HOME (워크스페이스 루트), RESULTS_DIR (보고서가 저장되는 위치), 및 ACB_ENV_FILE (캐시된 키 파일).
비용 경고는 여기에도 적용됩니다. 런너(runner)는 사용자의 구독 정보를 기준으로 벤치마크를 수행하며 크레딧/토큰/프리미엄 요청을 소모합니다. 기본적으로 모든 번들링된 작업을 실행하도록 설정되어 있습니다.
예시 구성 파일은 템플릿으로 제공됩니다. 이들을 복사하여 사용자의 특정 세부 정보로 채우고 — *.example.yaml 파일을 직접 수정하지 마세요 (참고용입니다).
# CLI 비교를 위해 (Kiro vs Claude Code vs Copilot vs Cursor vs Codex vs Devin):
cp config.cli-compare.example.yaml config.cli-compare.yaml
# 모델 비교를 위해 (Kiro CLI 내 여러 모델):
...
그런 다음 복사본을 사용자의 특정 경로, 모델 ID 및 가격 책정 비율로 수정하세요 (아래 참조).
구성 파일을 직접 작성하는 것이 번거로우신가요? 대화형 런너 스크립트(Interactive runner script)가 1단계부터 3단계까지 모두 처리해 줍니다. 아래의 '대화형 런너'를 확인하세요.
각 CLI는 표준 환경 변수에서 API 키를 읽어옵니다. 실행하기 전에 셸(shell)에 다음을 설정하세요:
export KIRO_API_KEY=... # Kiro (또는 `kiro-cli login` 사용)
export ANTHROPIC_API_KEY=... # Claude Code (또는 `claude login` 사용)
export GITHUB_TOKEN=... # Copilot (또는 `copilot auth login` 사용)
...
이 하네스(harness)는 부모 셸의 환경을 상속받으므로 모든 CLI가 키를 자동으로 가져옵니다. 따라서 러너별로 env: 블록이 필요하지 않습니다.
가격 책정 비율은 변동성이 크며 시간이 지남에 따라 변경됩니다. 실행하기 전에 각 공급업체의 현재 가격 페이지를 확인하세요. 예시 구성 파일에는 작성 당시 유효했던 비율이 인라인 주석으로 포함되어 있지만, 사용자가 이 수치가 자신의 구독 등급 및 현재 공개된 비율과 일치하는지 확인할 책임이 있습니다.
| CLI | Pricing config | Reference |
|---|---|---|
| Kiro | usd_per_credit: 0.04 | Credits consumed fractionally per task; check your plan's credit value |
| Claude Code | 가격 설정 불필요 — total_cost_usd를 직접 보고함 | Direct API billing; cost reported in CLI JSON output |
| GitHub Copilot | 가격 설정 불필요 — 비용은 JSON 출력의 AI-credit (AIU) 텔레메트리를 통해 파생되며, 1 AIU = $0.01 USD | |
| Cursor | 토큰별 요율 (아래 참조) | cursor.com/docs/models-and-pricing |
| OpenAI Codex | 토큰별 요율 (아래 참조) | platform.openai.com/docs/pricing |
| Antigravity | 토큰별 요율 (아래 참조) | 선택한 agy 모델의 토큰당 요율을 확인하세요 |
| OpenCode | JSON 출력에서 제공업체 비용을 직접 읽음; 폴백(fallback)으로 토큰별 요율은 선택 사항입니다 (아래 참조) | 요율은 OpenCode에 구성하는 공급업체에 따라 다릅니다 |
| Devin | 토큰별 요율 (아래 참조) | devin models list는 모델 슬러그당 토큰당 요율을 출력합니다 |
| pi | 가격 설정 불필요 — 번들된 모델 카탈로그에서 매 턴마다 가격을 책정하고 USD를 보고함 | pi --list-models가 카탈로그를 보여주며, 토큰 요율은 가격이 책정되지 않은 모델의 폴백으로 제공될 수 있습니다 |
이러한 CLI들은 원시(raw) 토큰 수를 보고하며, 하네스(harness)는 사용자가 제공하는 요율을 사용하여 비용을 계산합니다. Opus 4.8을 사용하는 Cursor의 예:
pricing:
usd_per_input_token: 0.000005 # $5.00 / 1M (fresh input)
usd_per_cache_write_token: 0.00000625 # $6.25 / 1M (cache write)
...
GPT-5.5를 사용하는 Codex의 예:
pricing:
usd_per_input_token: 0.000005 # $5.00 / 1M
usd_per_cached_input_token: 0.0000005 # $0.50 / 1M
...
중요: 이 요율은 변경됩니다. 항상 공급업체의 가격 페이지와 교차 확인하세요. 모델마다 다른 요율이 있으므로 model_id를 변경할 때 가격 책정 블록을 업데이트해야 합니다.
하네스는 바이너리 이름에 따라 각 CLI에서 비용을 읽는 방법을 자동으로 감지합니다.
Kiro 비용 보고는 현재 kiro-cli (v3 기본 엔진; 2.23.0에서 관찰됨)의 경우, 실행은 여전히 일반 텍스트 모드에서 수행되고 점수가 매겨지지만, 크레딧/비용 원격 측정(telemetry)은 stream-json 이벤트 스트림으로만 방출됩니다. 따라서 비용은 --output-format stream-json 없이는 보고되지 않습니다.
번들된 Kiro 러너는 이 플래그를 설정합니다. 이전 CLI 버전에서는 일반 텍스트 ▸ Credits: 배너가 인쇄되었습니다. 비용 파서는 하위 호환성이 있습니다: 스트림-json 이벤트 스트림에서 크레딧을 읽고, 그렇지 않으면 레거시 ▸ Credits: 배너로 폴백(fallback)하므로 현재 및 이전 kiro-cli 버전 모두 자동으로 처리됩니다.
"Kiro를 통한 Sonnet 4.6 비용 대 Claude Code 대 Copilot의 비용은 얼마인가요? Opus 4.8은 네 가지 CLI와 Cursor 전반에 걸쳐 어떻게 비교되나요?"
agent-cost-bench cli-compare run config.cli-compare.yaml
예제 설정 파일은 Kiro, Claude Code, Copilot, Cursor, Antigravity, OpenCode, 그리고 Devin의 러너를 정의합니다. 비용은 바이너리 이름에서 자동 감지됩니다 — 사용자는 CLI 경로, 모델 ID, 및 가격 책정 비율을 제공합니다:
runners:
- name: kiro
display_name: "Kiro (claude-opus-4.8)"
...
참고: Cursor, Devin, 그리고 Antigravity는 노력/사고 수준(effort/thinking level)을 별도의 플래그가 아닌 모델 슬러그의 일부로 인코딩합니다 (예: claude-opus-4-8-high, gemini-3.8-flash-high). 이 하네스(harness)는 작업의 노력 수준을 model_id에 자동으로 추가합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기