콘텐츠로 이동

[보관] 실험 제약 (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).
도구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 직접 통일(종량제) — 구독 사용으로 대체

새 C1에서 두 백엔드를 모두 명시적으로 실행하므로, 한쪽이 어떤 도구의 미지원 백엔드여도 우회 어댑터를 만들 필요 없음 — 그 트랙에서 빠지고 결과에 명시. 자작 어댑터가 도구 학습 신호를 왜곡하는 위험을 그대로 감수할 이유가 사라짐.

남겨둔 이유: 향후 OpenClaw 양쪽 백엔드 모두 미지원 같은 극단 케이스에서 다시 검토할 수 있어 항목 자체는 보존(채택 안 함).


  • ~/.hermes/, ~/.openclaw/, ~/.claude/ 세 디렉토리는 서로 침범하지 않아야 한다
  • 평소 쓰는 ~/.claude/ 설정에 실험이 영향을 주면 안 된다
  • 실제 커뮤니티 데이터 사용 금지. 샌드박스(가짜 데이터)로만 운영

  • 모든 지시는 자연어로만
  • 코드·JSON·YAML 직접 작성 금지
  • 셋업도 “코딩 없이” 모드만 허용 — 비개발자가 못 깐다면 그게 데이터다
  • 예외: T_burst (rate-limit 인프라 테스트)는 스크립트 호출이 본질이라 페르소나 모드 외부에서 별도 수행. 모든 probe·main 측정 종료 후 마지막에만 1회

  • 한 도구의 결과를 다른 도구에 보여주지 않기 (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회만

  • 두 정액 구독 동시 운영: Anthropic Claude (Claude Code OAuth) + ChatGPT Plus 또는 Pro
  • 트랙 분리 실행이라 한 시점에 부하는 한 구독에만 → 다른 구독은 일시 정지·해지 검토 가능 (트랙 간 약 1주 간격을 두면 서브스크립션 갱신 주기 맞추기 쉬움)
  • 모니터링 대상: 금액이 아니라 rate limit
    • Track A: Claude Code 일일 한도 (~/.claude/ 평소 사용과 같은 계정이면 평소 사용량과 충돌 → 별도 계정 권장)
    • Track B: ChatGPT 시간당 메시지 한도
  • 한도 도달 시 액션
    1. 그날 잔여 태스크는 다음 날로 이월 (해당 트랙 일정 +1일 연장)
    2. 자주 도달 → 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.


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가 같은 데이터로 같은 결론을 내게 되어 메타평가 자체가 무의미해짐.

트랙인풋활동산출물
Quantraw + 7지표 즉시민감도/신뢰성/타당성/실용성 4종 사망 판정L2 v1 (지표 스펙 + 측정 프로토콜)
Qualraw + 정성 메모 + 일기사후 코딩(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 후보로만 명시