research

Harness for End Users — 일반인을 위한 Harness

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: 실패에서 학습
  첫 실행 실패 → 사용자 확인
  → 다음번에 더 정확하게

관련 개념