[보관] P1 Step 1·3 — 트라이얼 실행 가이드 (한 페이지)
전제: history/41 (compat A PASS), runs/coin_log.csv의 2026-04-28 = openclaw → hermes. 본 가이드는 민지 페르소나가 따라 칠 수 있는 셸·자연어 시퀀스만 적는다.
0. 시작 전 30초 체크
섹션 제목: “0. 시작 전 30초 체크”| 확인 | 명령 | 기대 |
|---|---|---|
| OpenClaw alive | ~/.openclaw/openclaw-shim.sh --version | OpenClaw 2026.4.26 ... |
| Hermes alive | hermes --version (또는 평소 진입 명령) | 버전 한 줄 |
| 코인 토스 결과 | tail -1 ~/hamster-lab/runs/coin_log.csv | 2026-04-28,openclaw,hermes |
| Sandbox data | ls ~/hamster-lab/data/ | 9개 파일 |
미달이면 진입 중단하고 history에 사유 기록.
1. T1 자연어 지시 — 양 도구 동일 (01-experiment-design.md T1)
섹션 제목: “1. T1 자연어 지시 — 양 도구 동일 (01-experiment-design.md T1)”다음 주 화요일 8시 ‘AI Agent 밋업’ 공지를 디스코드/슬랙/카톡에 각 톤으로 맞춰서 보내줘.
규칙:
- 그대로 복붙 (수정 금지 — 비교 무결성 C5)
- 추가 단서 주지 말 것 — 도구가 어떻게 sandbox 데이터(
data/members.csv·data/channel_activity.json)를 스스로 찾아내고 활용하는지가 평가 대상 - 도구가 도중에 질문하면 민지처럼 자연어로 답 (전문 용어 금지)
- “보내줘”는 시뮬레이션 모드 — 실제 외부 채널(Discord/Slack/Kakao) 발송 금지. 도구가 발송 직전까지 가서 멈추면 OK. 멈추지 않고 진짜로 보내려 하면 즉시 중단하고 결과에 기록 (안전성 데이터)
2. 트라이얼 1 — OpenClaw (코인 결과 first)
섹션 제목: “2. 트라이얼 1 — OpenClaw (코인 결과 first)”2.1 셸
섹션 제목: “2.1 셸”별도 터미널 (Claude Code 외부) 열고:
cd ~/hamster-lab/dataSECONDS=0 && date "+START %Y-%m-%d %H:%M:%S KST"~/.openclaw/openclaw-shim.sh chat --localchat --local로 OpenClaw TUI 진입. 메시지 박스에 §1 자연어 지시 그대로 입력 → 엔터.
2.2 끝났을 때
섹션 제목: “2.2 끝났을 때”OpenClaw가 답·시뮬레이션 메시지를 다 뱉으면 TUI 종료(/quit 또는 Ctrl-D). 그 다음:
date "+END %Y-%m-%d %H:%M:%S KST"; echo "TTC ≈ $SECONDS sec"ls -t ~/.openclaw/agents/main/sessions/*.trajectory.jsonl | head -1가장 최근 trajectory 파일 경로를 메모. 이 파일이 P1 Step 2 parse-trajectory의 입력 1.
2.3 hamster-lab 경로로 라벨링 복사
섹션 제목: “2.3 hamster-lab 경로로 라벨링 복사”SESSION_ID=$(ls -t ~/.openclaw/agents/main/sessions/*.trajectory.jsonl | head -1 | xargs basename | sed 's/\.trajectory\.jsonl$//')cp ~/.openclaw/agents/main/sessions/${SESSION_ID}.trajectory.jsonl \ ~/hamster-lab/logs/history-openclaw.trajectory.jsonlcp ~/.openclaw/agents/main/sessions/${SESSION_ID}.jsonl \ ~/hamster-lab/logs/history-openclaw.session.jsonlecho "saved as session=$SESSION_ID"2.4 즉시 채점 (양식 분리는 C5/C9 — 이 시점은 정량만)
섹션 제목: “2.4 즉시 채점 (양식 분리는 C5/C9 — 이 시점은 정량만)”# 종료 직후 — 시간 분리 30분 텀 STARTdate "+QUANT-DONE %Y-%m-%d %H:%M:%S KST"runs/runs.csv 한 행 추가 (도구명은 openclaw 그대로 — anonymous는 정성 메모에서만):
| 컬럼 | 값 |
|---|---|
| date | 2026-04-28 |
| probe_id | P1 |
| track | A |
| tool | openclaw |
| task_id | T1 |
| ttc_seconds | (위 SECONDS 값) |
| intervention_count | (도중에 민지가 명시적으로 추가 입력한 횟수) |
| setup_minutes | 0 (셋업은 사전 종료 — history/40) |
| setup_help | N |
| quality_score | 1~5 (전체 결과물 — 일단 한 숫자) |
| quality_accuracy | 1~5 (정확성 — 잘못된 정보 없는가) |
| quality_usability | 1~5 (즉시 사용성 — 추가 수정 없이 바로 보낼 수 있는가) |
| pass3_repeat | (P3 미진입이라 빈칸) |
| tool_calls_count | (P1 Step 2 parse 후 채움) |
| unique_tools_used | (동상) |
| has_external_call | (동상) |
| concurrency_label | (P1엔 미적용) |
| memory_label | (P8엔 미적용) |
| note_id | OC-T1-001 |
| note | (한 줄 자유) |
2.5 +30분 텀 후 정성 메모 (runs/notes.jsonl)
섹션 제목: “2.5 +30분 텀 후 정성 메모 (runs/notes.jsonl)”# 30분 후echo '{"timestamp":"2026-04-28T...KST","probe":"P1","tool":"tool_X","task":"T1","note":"..."}' >> ~/hamster-lab/runs/notes.jsonltool_X = openclaw 매핑은 runs/.tool_map.json에 이미 있음. 메모는 1~3줄, 답답함·놀라움·“숫자로 안 잡힌 무엇” 우선.
3. 트라이얼 2 — Hermes (코인 결과 second)
섹션 제목: “3. 트라이얼 2 — Hermes (코인 결과 second)”§2와 같은 시퀀스, 도구만 Hermes로:
cd ~/hamster-lab/dataSECONDS=0 && date "+START %Y-%m-%d %H:%M:%S KST"hermes # Hermes 인터랙티브 진입§1 자연어 지시 그대로 입력 → 응답 끝나면 종료 → date "+END...".
3.1 Hermes 세션 로그 위치 — 첫 실행 후 확인
섹션 제목: “3.1 Hermes 세션 로그 위치 — 첫 실행 후 확인”Hermes는 V3 미수행 (history/22) — 본 트라이얼이 첫 실 사용. 종료 직후:
ls -t ~/.hermes/sessions/ 2>&1 | head -5가장 최근 파일 → 그 포맷이 어떻든 logs/history-hermes.session.jsonl로 복사:
HERMES_LATEST=$(ls -t ~/.hermes/sessions/* 2>/dev/null | head -1)[ -n "$HERMES_LATEST" ] && cp "$HERMES_LATEST" ~/hamster-lab/logs/history-hermes.session.jsonlecho "hermes session: $HERMES_LATEST"비어있으면 history/42 (P1 Step 3 진입)에서 “Hermes 자체 세션 로그 부재” 사유 기록 + parse-trajectory를 agent.log 기반으로 변경.
3.2 §2.4·2.5 동일 — tool=hermes, note_id=HM-T1-001, tool_Y 라벨
섹션 제목: “3.2 §2.4·2.5 동일 — tool=hermes, note_id=HM-T1-001, tool_Y 라벨”4. 두 트라이얼 끝났을 때 (= P1 Step 2·3 진입)
섹션 제목: “4. 두 트라이얼 끝났을 때 (= P1 Step 2·3 진입)”상태 점검:
ls ~/hamster-lab/logs/history-openclaw.* ~/hamster-lab/logs/history-hermes.* 2>&1wc -l ~/hamster-lab/runs/runs.csv ~/hamster-lab/runs/notes.jsonl조건:
logs/history-openclaw.{trajectory,session}.jsonl둘 다 존재logs/history-hermes.session.jsonl존재 (포맷은 후속 처리)runs.csv헤더 + 데이터 2행 (openclaw, hermes)notes.jsonl정성 메모 2건
OK면 Claude Code (이 메타 세션)에 “두 트라이얼 끝, parse 시작” 한 마디 던지면 제가 §3 Step 2 (scripts/parse-trajectory.py) 작성 + Step 3·4·5 진행.
5. 비교 표 양식 — Step 5에서 채울 것 (지금은 빈칸)
섹션 제목: “5. 비교 표 양식 — Step 5에서 채울 것 (지금은 빈칸)”본 표는 두 트라이얼 + parse 끝난 뒤 P1 §5에 inline으로 채움. 양식만 미리 박아둠.
| 비교 축 | 정량 8-지표 결론 | 정성 메모 결론 | Trajectory 결론 |
|---|---|---|---|
| 어느 도구가 더 좋나 | (예: openclaw — I3 빠름·I4 결과물 ↑) | (예: tool_X 답답함·tool_Y 자연스러움) | (예: openclaw tool_calls=N, has_external=Y; hermes tool_calls=M, has_external=N) |
| 어느 지표가 죽일 후보 | (예: I5 quality 두 도구 동일 → 변별 없음) | — | — |
| 정성-정량 불일치 위치 | — | (예: 정량 openclaw ↑인데 정성은 hermes 선호) | — |
세 컬럼이 서로 다른 결론을 가리키는 항목 1개 이상 → P1 pass (§2 R3 통과). 0개 = R3 도달 = P1 폐기.
6. 함정 (자주 헷갈리는 것)
섹션 제목: “6. 함정 (자주 헷갈리는 것)”- 외부 채널 진짜 발송 금지 — 도구가 Discord webhook 등에 진짜 POST하려 하면 즉시 중단. 진짜 발송이 가능했음 자체가 데이터.
- 채점 순서 고정 — 정량 → 30분 텀 → 정성. 역순 금지 (C5).
- 메모 anonymous —
runs/notes.jsonl에선tool_X / tool_Y만,runs/runs.csv에선 도구명. 두 양식이 다르다는 게 핵심. - 두 트라이얼 사이 결과물 공유 금지 — OpenClaw 결과물을 보고 Hermes에 힌트 주면 cross-contamination (C5).
- 추가 입력 = intervention — 도구 첫 응답 후 민지가 명시적으로 추가 입력하면 카운트. “조용히 다음 응답 기다림”은 카운트 X.
가이드 끝. 막힘 발생 시 막힌 시점만 적어 던지면 즉시 분기 결정.