Harness for End Users — 일반인을 위한 Harness
핵심 전환
개발자 Harness에서 인간이 하는 일 = 파일 직접 편집 일반인은 이게 불가능 → "파일 편집"을 UI로 추상화
레이어별 추상화
개발자 레이어 일반인 레이어
────────────────────────────────────
feature_list.json → "내가 원하는 것" 입력창
AGENTS.md / docs/ → "내 설정" 화면
tool calls → 자동 실행 (사용자 안 봄)
init.sh → 자동 세팅 (사용자 안 봄)
claude-progress → "진행 현황" 피드
Harness 요소 → 일반인 UI
Feature list → "내가 원하는 것"
자연어 입력 → LLM이 feature_list.json으로 변환
[내가 원하는 것]
회의 전에 관련 자료를 자동으로 준비해줘
첨부파일은 내 Obsidian에 저장해줘
ADR / Skill → "내 설정"
폼이 ADR과 Skill 정의를 대신함
저장 위치: [경로 입력]
검색 DB: [Google Scholar ▼]
저장 형식: ☑ Markdown ☐ PDF 원본
→ 내부적으로 user_config.json 생성
claude-progress → "진행 현황"
progress.txt를 읽기 좋은 피드로 렌더링
✓ 14:30 — 논문 3개 검색 완료
✓ 14:31 — PDF 다운로드 완료
✓ 14:32 — Obsidian에 저장 완료
Harness 원칙의 서비스 적용
AC test → 설정 검증
def validate_user_config(config):
errors = []
if not os.path.exists(config["save_path"]):
errors.append("저장 경로가 존재하지 않습니다")
if config["trigger_minutes"] < 5:
errors.append("트리거는 최소 5분 전이어야 합니다")
return errors
저장 전 자동 검증 → 사용자가 잘못된 설정 저장 방지
GC agent → 상태 모니터링
⚠ "회의 전 준비" Skill이 3회 연속 실패했습니다
원인: Google Scholar 로그인 만료
해결: [재로그인]
drift를 사용자가 이해할 수 있는 언어로 번역해서 알림
전체 아키텍처
사용자 인터페이스
├── "원하는 것" 입력 → feature_list.json
├── "설정" 화면 → user_config.json
└── "진행 현황" → progress 렌더링
Harness 레이어 (숨겨짐)
├── AGENTS.md 자동 생성
├── Skill 자동 매핑
├── Tool 실행
└── progress 업데이트
검증/모니터링
├── 설정 검증 (AC test 역할)
└── 실패 감지 + 알림 (GC agent 역할)
가장 어려운 부분
"사용자가 원하는 것 ↔ 시스템이 할 수 있는 것" 간극 관리
방법 1: 온보딩에서 명확히 설정
"어떤 종류의 회의를 주로 하세요?"
→ Skill 템플릿 자동 추천
방법 2: 실패에서 학습
첫 실행 실패 → 사용자 확인
→ 다음번에 더 정확하게
관련 개념
- user-customization-ux — 사용자 설정 UX 패턴
- trigger-system — 트리거 설계
- research/harness-engineering/overview — Harness Engineering 기반