[보관] 실험 제약 (Constraints)
본 실험의 산출물은 L1(도구 비교) + L2(평가 프레임워크) + L3(접근 자체에 대한 평가) 셋이다. C1~C6는 L1을 무너뜨리지 않기 위한 제약, C7·C8·C9는 L2/L3 산출물을 가능하게 하는 제약이다(채집·반증 사전 명시·평가 fork). 둘 다 위반 시 실험 가치 손상.
C1. 모델 — 두-트랙 순차 백엔드
섹션 제목: “C1. 모델 — 두-트랙 순차 백엔드”원래의 “단일 백엔드 통일” 가정은 폐기. 두 백엔드를 동일 도구·동일 태스크에 각각 적용해 순차 실행한다.
flowchart LR
subgraph A["Track A · 1차"]
HA[Hermes]
OA[OpenClaw]
BA[Claude Code<br/>Anthropic OAuth]
HA --> BA
OA --> BA
end
subgraph B["Track B · 2차"]
HB[Hermes]
OB[OpenClaw]
BB[Codex<br/>ChatGPT 구독, gpt-5.5]
HB --> BB
OB --> BB
end
A ==> B
classDef tool fill:#eef,stroke:#557
classDef backend fill:#ffe,stroke:#a80
class HA,OA,HB,OB tool
class BA,BB backend
운영 원칙
섹션 제목: “운영 원칙”- 트랙 안에서는 백엔드 고정 → 도구 비교(Hermes vs OpenClaw)는 LLM 변량 없이 측정.
- 트랙 사이의 차이 = LLM 변량 보너스 데이터 → 동일 에이전트가 LLM 바뀌면 얼마나 달라지는가.
- 한 트랙이 끝나기 전에 다른 트랙으로 섞지 않음 (시간 분리 = 변수 분리).
- Hermes 설치가 Claude Code OAuth를 자동 import해 Anthropic backend가 사실상 무료/무마찰 → Anthropic 트랙 진입 비용 ≈ 0.
- Codex 트랙은 STEP 2(history/21)에서 codex CLI·OAuth·스모크 모두 통과 → Codex 트랙 진입 비용도 이미 지불됨.
- 한쪽만 고른다면 어느 한 백엔드의 결과로 결론을 내야 하는데, 본 실험의 외부 가치는 “이 비교가 LLM에 의존하는가”의 답을 같이 내는 것.
- 평가 내러티브가 “Claude 에이전트 비교”라는 본래 표현과 정합적이 됨 (Track A).
호환성 확인 (Day 0)
섹션 제목: “호환성 확인 (Day 0)”| 도구 | Track A (Anthropic) | Track B (Codex) |
|---|---|---|
| Hermes | ✓ provider=anthropic 자동 import 확인됨 (2026-04-28) | ✓ provider=openai-codex 지원 명시 (config.yaml 주석) |
| OpenClaw | ❓ 미확인 — 공식 문서 V1·V2 필요 | ❓ 미확인 — 공식 문서 V1·V2 필요 |
OpenClaw 한쪽 백엔드 미지원 시 → 그 트랙에서 OpenClaw는 빠짐(공정성 약화 명시). 어댑터 자작은 채택 안 함 (C2 폐기).
트레이드오프 (수용)
섹션 제목: “트레이드오프 (수용)”- 총 운영 기간: probe 시리즈
911일 (P1P9, 하루 1 probe + P9 통합 13일). 본 실험이 아니라 L2/L3 평가 패치를 단위 검증하는 누적 운용. 자세한 일정·진입 조건은experiments/00-plan.md. - 비용: 두 구독 (Anthropic Claude Code + ChatGPT Plus) — 트랙 분리라 한 시점엔 한 구독만 가동되면 됨
- Track A·B 분배는 probe 단위로 결정. P1·P2·P5(권장)·P9는 Track A에서 시작이 자연스럽고, Track B 검증 probe는 별도 시점에. Hermes 메모리 초기화 여부는 해당 probe의 §2 반증 조건에서 다룸.
폐기된 차선안 기록
섹션 제목: “폐기된 차선안 기록”Codex 단일 통일(2026-04-28 두-트랙으로 변경, 사용자 결정)OpenRouter 통일Anthropic API 직접 통일(종량제)— 구독 사용으로 대체
C2. (폐기) 어댑터 자작 트랙
섹션 제목: “C2. (폐기) 어댑터 자작 트랙”새 C1에서 두 백엔드를 모두 명시적으로 실행하므로, 한쪽이 어떤 도구의 미지원 백엔드여도 우회 어댑터를 만들 필요 없음 — 그 트랙에서 빠지고 결과에 명시. 자작 어댑터가 도구 학습 신호를 왜곡하는 위험을 그대로 감수할 이유가 사라짐.
남겨둔 이유: 향후 OpenClaw 양쪽 백엔드 모두 미지원 같은 극단 케이스에서 다시 검토할 수 있어 항목 자체는 보존(채택 안 함).
C3. 환경 격리 강제
섹션 제목: “C3. 환경 격리 강제”~/.hermes/,~/.openclaw/,~/.claude/세 디렉토리는 서로 침범하지 않아야 한다- 평소 쓰는
~/.claude/설정에 실험이 영향을 주면 안 된다 - 실제 커뮤니티 데이터 사용 금지. 샌드박스(가짜 데이터)로만 운영
C4. 페르소나 모드 강제
섹션 제목: “C4. 페르소나 모드 강제”- 모든 지시는 자연어로만
- 코드·JSON·YAML 직접 작성 금지
- 셋업도 “코딩 없이” 모드만 허용 — 비개발자가 못 깐다면 그게 데이터다
- 예외: T_burst (rate-limit 인프라 테스트)는 스크립트 호출이 본질이라 페르소나 모드 외부에서 별도 수행. 모든 probe·main 측정 종료 후 마지막에만 1회
C5. 측정 무결성
섹션 제목: “C5. 측정 무결성”- 한 도구의 결과를 다른 도구에 보여주지 않기 (cross-contamination 방지)
- 매일 도구 사용 순서는 랜덤 (선행 도구의 컨텍스트 누수 방지)
- OpenClaw 셋업은 probe 시리즈 진입 전 (P1 시작 전) 한 번만 — 이후 모든 probe 동안 동결
- Hermes의 자동 학습은 의도된 강점이므로 제한하지 않음
- 트랙 간 측정 분리: Track A·B 결과는 별도 CSV로 기록. Hermes 메모리 초기화 여부는 해당 probe의 §2 반증 조건에서 다룸 — 학습 효과 측정 한계는 리포트에 명시
- 평가자 = 1명, 시간 분리 강제: 한 태스크에 대해 즉시 정량 기록 → 30분 텀 → 정성 메모 순서. 동시 수행 금지 (정량이 정성에 미치는 편향 차단)
- 컨컬런시 측정 분리: T_concurrent(I8)는 단발 측정과 별도 probe(또는 별도 시점)에서 실행. T_burst는 모든 probe·main 측정 종료 후 마지막 1회만
C6. 비용 한계
섹션 제목: “C6. 비용 한계”- 두 정액 구독 동시 운영: Anthropic Claude (Claude Code OAuth) + ChatGPT Plus 또는 Pro
- 트랙 분리 실행이라 한 시점에 부하는 한 구독에만 → 다른 구독은 일시 정지·해지 검토 가능 (트랙 간 약 1주 간격을 두면 서브스크립션 갱신 주기 맞추기 쉬움)
- 모니터링 대상: 금액이 아니라 rate limit
- Track A: Claude Code 일일 한도 (
~/.claude/평소 사용과 같은 계정이면 평소 사용량과 충돌 → 별도 계정 권장) - Track B: ChatGPT 시간당 메시지 한도
- Track A: Claude Code 일일 한도 (
- 한도 도달 시 액션
- 그날 잔여 태스크는 다음 날로 이월 (해당 트랙 일정 +1일 연장)
- 자주 도달 → Pro로 업그레이드 또는 두 번째 계정 분리 검토 (계정 분리는 평소
~/.claude/워크플로 보호 차원에서 오히려 권장)
C7. 3단 데이터 채집 강제 (L2/L3 전제)
섹션 제목: “C7. 3단 데이터 채집 강제 (L2/L3 전제)”매 태스크 실행 시 다음 셋을 모두 남긴다. 어느 하나가 빠지면 그 태스크는 L3 분석에서 제외된다.
| 채집 | 형식 | 위치 |
|---|---|---|
| 정량 | 7개 지표 값 | runs/runs.csv |
| 정성 | 1~3줄 자유 메모 (도구 식별 제거, anonymous tool ID만) | runs/notes.jsonl |
| Raw | 명령·응답 원천 로그 | logs/history-${EXPERIMENT_TOOL}.jsonl + ~/.{hermes,openclaw}/logs/ |
이유:
- 정량 단독으로는 L3(접근 자체에 대한 평가)를 못 함 — “지표가 못 잡은 무엇”의 증거가 정성·raw에만 남음
- 사후에 대안 프레이밍 B/C/D/E로 같은 raw를 재해석하려면 raw가 무삭제 보존돼야 함
- 정성 메모를 도구명 표기 없이 anonymous로 적는 이유: 다음 probe 진입 전 / P9 통합 분석 시 평가자가 도구 정체를 모른 채 정성·정량 정합성 판정 가능
상세 양식·익명화 규칙: 08-meta-eval.md §3.
C8. 반증 조건 사전 명시
섹션 제목: “C8. 반증 조건 사전 명시”L2/L3는 끝나고 회고로 떠올려서는 못 풀린다. “이러면 지표 X는 죽는다 / 접근 A는 틀렸다” 를 실험 시작 전에 적어둔다.
지표별 반증 조건 (요약 — 상세 07-indicator-spec.md, 08-meta-eval.md):
- 두 도구의 지표 값이 표준편차 이내로 겹침 → 민감도 실패 (지표 죽임)
- 자가 재측정 ICC < 0.5 (1명 평가자 운영) → 신뢰성 실패 (κ는 v2에서)
- 정성 메모와 지표 결론이 정반대 → 타당성 실패
- 지표 기록 시간이 태스크 시간의 30% 초과 → 실용성 실패
접근(A: 지표 사전정의) 자체에 대한 반증:
- 7개 중 5개 이상이 위 4종 실패 중 하나 → A 자체 의문
- 사후 코딩(B)·일기(D) 재해석이 A의 결론과 정반대 → A의 결론 신뢰 불가
probe 단위로 위 조건을 재평가 — 각 probe의 §2 반증 조건과 §6 결정에서. 빨간불이면 그 probe에서 즉시 지표 재정의·삭제·추가, 다음 probe 진입 전에 처리.
C9. 평가 fork 분리 강제 (L2/L3 전제)
섹션 제목: “C9. 평가 fork 분리 강제 (L2/L3 전제)”평가는 두 트랙으로 갈라져 병렬로 굴러간다. fork 분리가 깨지면 L2와 L3가 같은 데이터로 같은 결론을 내게 되어 메타평가 자체가 무의미해짐.
| 트랙 | 인풋 | 활동 | 산출물 |
|---|---|---|---|
| Quant | raw + 7지표 즉시 | 민감도/신뢰성/타당성/실용성 4종 사망 판정 | L2 v1 (지표 스펙 + 측정 프로토콜) |
| Qual | raw + 정성 메모 + 일기 | 사후 코딩(framing B) + 일기 코딩(framing D) | L3 대안 framing 비교 데이터 |
운영 규칙:
- 평가자 1명이지만 시간 분리(C5 참조)로 두 트랙을 직렬 처리
- Qual 트랙은 anonymous tool ID(tool_X/tool_Y)만 사용 — 사용자만 보관하는
runs/.tool_map.json봉인 - Quant 트랙은 도구 식별 OK (지표는 도구 알아도 객관적이라는 가정)
- probe 단위 fork 분기 트리거: 해당 probe에서 quant 지표 5개 이상 4종 실패 → 다음 probe를 qual 트랙 비중 70%로 재분배 (또는 P4 임계 완화 채택 시 3+로 트리거)
- 채택된 사후 framing: B(사후 코딩) + D(일기 사후 코딩) 만. C(결과 도달률)·E(행동 추적)는 본 파일럿에서 보류, v2 후보로만 명시