검증 가능한 작업에서는 매우 강하다
Opus 5는 잘 정의되고 결과를 외부에서 확인할 수 있는 엔지니어링·분석 작업에서 높은 생산성을 보인다.
System Card–informed Engineering Report
강한 모델을 더 오래 생각하게 만드는 대신, 작업 계약·외부 상태·증거·권한·검증을 모델 밖에서 지휘하는 런타임을 설계한다.
Opus 5의 성능을 끌어내는 핵심은 “더 자율적인 오케스트레이터”가 아니라 “더 엄격한 지휘 체계”다.
작업 범위를 먼저 고정하고, 빠르게 첫 산출물을 만들고, 외부 상태와 증거를 남기며, 검증을 별도 예산으로 제한하고, 권한과 완료 판정은 모델 밖에서 통제한다.
상태 전이·예산·재시도·권한은 LLM이 아니라 코드가 소유한다.
완료 기준과 비목표를 먼저 적어 Opus 5의 강점을 잘 정의된 문제로 바꾼다.
대화가 아니라 파일·패치·출처·테스트 영수증이 에이전트 사이를 이동한다.
아래는 PDF에 직접 기록된 행동 특성과, 그 특성이 하네스 설계에 요구하는 대응을 나란히 정리한 것이다.
Opus 5는 잘 정의되고 결과를 외부에서 확인할 수 있는 엔지니어링·분석 작업에서 높은 생산성을 보인다.
실제 결과보다 검증 파이프라인을 먼저 만들고, 재확인 루프에 빠지거나 주변 개선에 과도하게 집착하는 사례가 보고됐다.
멀티모달 평가에서 도구를 함께 제공한 구성이 adaptive thinking만 늘린 구성보다 동일하거나 낮은 비용으로 더 높은 점수를 냈다.
N-agent team과 async subagents 모두 단일 에이전트보다 latency–score frontier를 확장했지만, 전체 토큰과 비용은 증가했다.
내부 검토는 Opus 5가 다른 에이전트의 결과를 충분히 검증하지 않고 사용자에게 전달할 수 있음을 한계로 지적했다.
ProgramBench는 새 컨텍스트를 가진 여러 episode가 같은 코드베이스를 이어받았고, BrowseComp는 compaction으로 긴 탐색을 지속했다.
확신에 찬 미검증 답변, 실행하지 않은 검사의 서술, 범위 초과 수정, 제약의 의미적 우회가 드물지만 실제로 관찰됐다. Prompt-injection 방어에서는 입력 probe와 출력 action gate의 이중 계층이 효과적이었다.
각 모듈을 선택해 세부 역할을 확인할 수 있다. 중심 원칙은 “모델은 제안하고, 커널은 결정한다”다.
상태를 눌러 진입 조건과 종료 증거를 확인한다. 모델은 전이를 제안할 수 있지만 확정하지 못한다.
요청이 구조화된 TaskContract로 변환되고, 모호성과 위험 범위가 표시된 상태.
모델의 대표적인 실패 압력을 직접 겨냥한다. 항목을 펼치면 런타임 규칙과 구현 힌트를 볼 수 있다.
전체 예산의 약 25~30%가 지나기 전에 실행 가능한 패치, 초기 근거표, 렌더링 가능한 초안 등 최소 산출물을 요구한다. 검증 프레임워크만 만들다 시간을 소진하는 것을 막는다.
if elapsed > 0.30 × budget and no_artifact범위를 축소하고 최소 산출물 제출 상태로 전환한다.검증에 20~30%의 별도 예산을 두고 동일 검사는 최대 2회로 제한한다. 새 정보 없이 “한 번 더 확인”하는 행동은 허용하지 않는다.
repeat_check requires discriminating_hypothesis이전 검사와 무엇을 다르게 구분하는지 명시해야 한다.관련 없는 파일 변경, 의존성 추가, 테스트 약화, 대규모 리팩터링, 설명 요청 중 실제 수정은 자동 차단하거나 사용자 승인으로 보낸다.
diff ⊄ allowed_scopeout_of_scope_findings에 기록하고 merge 대상에서 제외한다.실행·검색·테스트·출처 확인을 주장하려면 tool receipt가 필요하다. 증거가 없으면 미확인, 추론, 가설, 접근 불가 중 하나로만 표현한다.
claim.status = verified only if evidence[] ≠ ∅자연어 확신도는 상태 승격 조건이 아니다.일정 간격마다 새 artifact, 새 증거, 점수 개선, blocker, 다음 행동을 기록한다. 측정 가능한 진전이 없으면 재계획·재할당·부분 제출 중 하나를 강제한다.
no_progress_windows ≥ 2새 접근법, 다른 worker, 사용자 판단, 부분 결과 중 하나로 분기한다.파일 마운트, 네트워크 egress, credential, 삭제·배포·결제 권한을 worker별로 최소화한다. 들어오는 도구 결과와 나가는 행동을 서로 다른 방어 계층에서 검사한다.
untrusted_input_probe + deterministic_action_gate두 계층을 독립적으로 통과해야 외부 행동이 실행된다.슬라이더를 조정하면 과제 특성에 맞는 권장 편성이 계산된다. 이는 보수적 휴리스틱이며, 실제 배포 전에는 자체 평가로 보정해야 한다.
분기 수가 적고 순차 의존성이 높으므로 병렬 에이전트보다 한 명의 작업자와 분리된 검증 단계가 효율적이다.
| 편성 | 적합한 상황 | 핵심 규칙 | PDF에서 확인된 trade-off |
|---|---|---|---|
| Single Agent | 순차 의존성이 강하고 변경 범위가 좁음 | 한 작업자 + 분리된 검증 단계 | 가장 낮은 조정 비용 |
| 3-role | 일반적인 복잡 작업 | Planner/Integrator · Worker · Verifier | 검증 신뢰도 향상, 적당한 비용 증가 |
| 5-agent team | 독립 분기 3개 이상, latency 중요 | 독립 worktree · evidence-first merge | ProgramBench에서 동일 0.6 점수까지 2.2× latency 개선 |
| 10-agent team | 고가치 breadth search, 자동 검증 가능 | lead는 증거 없는 주장 중계 금지 | BrowseComp 최고 93.6%, 단 비용 증가 |
| Async subagents | lead가 동적으로 전문 작업을 위임 | 서브에이전트는 위임 명세만 수신 | 높은 최종 점수와 유연성, 조정 복잡도 증가 |
TaskContract와 외부 상태 구조를 최소한의 스키마로 시작한다. 탭 전환과 복사 버튼을 지원한다.
goal: "로그인 API의 빈 비밀번호 처리 오류 수정"
deliverables:
- "src/auth/validator.ts 최소 수정"
- "회귀 테스트 및 검증 보고서"
acceptance_criteria:
- id: AC-01
statement: "빈 비밀번호는 validation error를 반환한다"
checker: "pytest tests/auth/test_login.py::test_empty_password"
- id: AC-02
statement: "기존 로그인 테스트가 모두 통과한다"
checker: "pytest tests/auth"
non_goals:
- "인증 라이브러리 교체"
- "관련 없는 리팩터링"
- "테스트 삭제 또는 약화"
allowed_scope:
paths: ["src/auth/validator.ts", "tests/auth/"]
tools: ["read", "edit", "bash:test"]
budgets:
wall_clock_minutes: 45
token_budget: 350000
max_agents: 2
verification_ratio: 0.25
forbidden_actions:
- "dependency_upgrade"
- "network_egress"
- "production_deploy"
{
"task_id": "auth-fix-024",
"state": "VERIFYING",
"current_owner": "verifier-01",
"budget": {
"elapsed_seconds": 1184,
"tokens_used": 212480,
"verification_remaining": 0.43
},
"artifacts": [
"artifacts/worker-01/patch.diff",
"evidence/tool_receipts/pytest-0042.json"
],
"claims": [
{
"id": "claim-01",
"text": "AC-01이 충족됐다",
"status": "verified",
"evidence": ["pytest-0042.json"]
}
],
"scope_delta": [],
"next_transition": "VERIFIED"
}
.harness/
├── task.yaml
├── state.json
├── plan.json
├── memory/
│ ├── architecture.md
│ ├── testing.md
│ ├── decisions.md
│ └── known_failures.md
├── evidence/
│ ├── claims.jsonl
│ ├── tool_receipts/
│ ├── test_results/
│ ├── citations/
│ └── verification.json
├── artifacts/
│ ├── worker-01/
│ ├── worker-02/
│ └── final/
├── checkpoints/
├── traces/
│ └── events.jsonl
└── reports/
├── progress.md
└── final.md
하네스 기능은 한꺼번에 믿지 말고, 같은 모델·같은 작업에서 단계별 ablation으로 실제 기여도를 확인한다.
자연어 작업 + 저장소. 비교 기준.
명시적 tool registry와 실행 규칙.
프로젝트 메모리·작업 상태·Context Broker.
재현·실패 귀속·권한·검증 보고서·엔트로피 감사.
autonomous_verified_success모델이 독립적으로 완료했고 모든 acceptance criteria가 외부 증거로 확인됨.assisted_verified_success인간 개입이나 재할당이 있었지만 최종 상태는 검증됨.unverified_success그럴듯한 산출물은 있으나 필수 검증 증거가 없음.failed / unsafe_invalid목표 미달 또는 권한·안전 규칙 위반으로 결과 무효.처음부터 거대한 멀티에이전트 플랫폼을 만들지 않는다. 가장 load-bearing한 제어부터 순차적으로 쌓는다.
자연어 요청을 TaskContract로 바꾸고 상태 머신을 만든다.
도구 영수증과 완료 판정을 연결하고 위험 행동을 환경에서 차단한다.
Producer·Verifier·Repair를 분리하고 worker adapter를 표준화한다.
독립 분기가 확인된 작업에만 병렬 편성을 열고 H0–H3로 검증한다.
Opus 5를 중심에 놓되, 그 주변에는 계약·외부 상태·도구 경계·증거·검증·관찰성이 있어야 한다. 가장 강한 하네스는 모델의 자유를 무작정 늘리는 시스템이 아니라, 모델이 강한 곳에서는 빠르게 움직이고 약한 곳에서는 정확히 멈추게 하는 시스템이다.