Agentic Engineering 4회차
4회차 · 13교시Agentic Engineering 실무 · 2026-11-24

에이전트 팩토리,
병렬 에이전트 관리,
코디네이터-배치

하네스 하나를 오래 돌리던 시대에서, 여러 하네스를 동시에 돌리고 점검하는 시대로 넘어갑니다.

GitHub Agent HQ 발표 글
2025-10Agent HQ
Cursor 3 Agents Window 변경 기록
2026-04Cursor 3
Orca 오케스트레이션 문서
2026Orca CLI(Command-Line Interface, 명령줄 도구)
Claude Code 예약 작업 공식 문서
2026/loop 깨우기
12교시 → 13교시하네스 1개의 한계

하네스를 오래 돌리게 되자, 병목은 ‘하나뿐’이 되었다

12교시까지사람 1명하네스 1개/goal · 스킬 · MCP긴 작업 1개13교시부터사람 1명하네스 여러 개워크트리마다 하나작업 여러 개가동시에새 문제누가 나눠 주고점검하나 병목

지난 시간까지는 한 하네스가 긴 일을 끝까지 하게 만들었습니다. 이제는 여러 하네스를 누가 나눠 주고 점검하나가 문제입니다.

2026-10-28 확인Anthropic 공식 가격표 · 에이전트 팩토리의 이유 ①

같은 회사 모델도 입력 단가가 최대 100배 차이 난다

platform.claude.com/docs/en/about-claude/pricing
Anthropic 모델별 가격표
공식 문서 화면 캡처 · 2026-10-28 확인
Anthropic 공식 가격표. 모델마다 값이 달라서, 가장 비싼 모델과 가장 싼 모델이 100배 차이 난다.
  • 같은 회사 안에서도 입력 단가가 최대 100배: Fable 5.1 $10 vs Haiku 5.5 $0.10 (모델에 보내는 글 100만 토큰당)
  • 어려운 설계는 비싼 모델, 문서·테스트 정리는 싼 모델
  • 회사가 다르면 강점도 다르다. 한 도구에 묶이지 않는다
에이전트 팩토리왜 팩토리인가 ② · 강사 운영 방식

한 사람이 큰 프로젝트를 맡으려면 하네스가 여러 개여야 한다

개발자 1명목표·기준·판정하네스 여러 개 · 워크트리마다 하나PR · CI · 이슈하네스 A어려운 설계 · 고성능 모델하네스 B기능 구현 · 중간 모델하네스 C문서·테스트 · 저가 모델하네스 D같은 작업을 다른 모델로 비교 일을 나눈다결과를 올린다검토·판정

개발자는 코드를 쓰는 사람에서 일을 나누고 결과를 판정하는 사람이 됩니다. 하네스가 여러 개여야 한 사람이 큰 프로젝트를 감당합니다.

2025-10-28 → 2026-04-02검증한 연표 · 공식 발표문 · CHANGELOG · 저장소

여섯 달 만에 모든 도구가 같은 방향으로 갔다

2025-10-28GitHub Agent HQ여러 회사 에이전트를한곳에2026-02 초Codex 앱워크트리 · 병렬에이전트2026-02-05Claude Code agentteams팀 리드와 팀원 세션2026-03-16Orca 첫 커밋워크트리마다 에이전트2026-04-02Cursor 3 AgentsWindow에이전트 여러 개를 한창에서
2025-10-28GitHub Universe 2025 · Agent HQ

GitHub는 여러 회사의 에이전트를 한곳에서 관리하겠다고 밝혔다

github.blog/news-insights/company-news/welcome-home-agents
GitHub Agent HQ 발표 글 첫 화면
공식 발표 화면 캡처 · 2025-10-28
GitHub가 낸 Agent HQ 발표 글. Anthropic · OpenAI 등의 코딩 에이전트를 GitHub 안에서 쓰게 하겠다는 내용.
  • Anthropic · OpenAI · Google · Cognition · xAI의 에이전트를 GitHub 안에서
  • 미션 컨트롤: 작업을 배정하고 진행을 보는 관제 화면
여러 회사의 에이전트를 GitHub 한곳에서 배정하고 추적한다. 이슈·PR(Pull Request, 변경 병합 요청)이 이미 거기 있다.
발표 시점엔 앞으로 몇 달에 걸쳐 제공한다는 계획. 관제 화면이지 일을 나누는 방법은 아니다.
코드가 모이는 플랫폼이 ‘모든 에이전트의 집’이 되려는 움직임. 이슈·PR은 뒤의 코디네이터 패턴의 바탕.
2026-02 초OpenAI Codex 앱(macOS 먼저)

Codex 앱은 에이전트마다 저장소 사본을 따로 준다

learn.chatgpt.com/docs/app
Codex 앱 공식 문서 화면
OpenAI 공식 문서 화면 캡처 · 2026-10-28 · 현재는 ChatGPT 데스크톱 앱 문서
OpenAI Codex 앱 공식 문서 첫 화면. 여러 에이전트를 프로젝트별 스레드로 나란히 돌리는 앱.
  • 프로젝트별 스레드로 여러 에이전트를 나란히, 하나를 보다 다른 하나로 전환
  • 에이전트마다 저장소의 격리된 워크트리(작업용 사본)
  • 스킬과 예약 작업(자동화)을 앱 안에 내장
에이전트마다 워크트리를 따로 줘 서로 덮어쓰지 않는다. 스킬·예약 작업도 앱에 내장.
첫 출시는 macOS 먼저. 발표문 접근이 막혀 날짜·기능은 2차 보도로 확인했다.
7교시에서 손으로 하던 워크트리가 상용 앱의 기본 기능이 되었다.
2026-02-05Claude Code 2.1.32 · agent teams 리서치 프리뷰

agent teams: 팀 리드가 독립된 세션의 팀원들을 이끈다

code.claude.com/docs/en/agent-teams
Claude Code agent teams 공식 문서
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 공식 문서의 agent teams 설명. 한 세션이 팀 리드, 나머지가 팀원이 되어 작업 목록을 공유.
  • 한 세션이 팀 리드, 나머지는 각자 컨텍스트 창(기억 범위)을 가진 팀원
  • 공유 작업 목록과 메시지함으로 서로 조율
  • 서브에이전트보다 토큰을 많이 쓴다. 실험 기능(환경 변수로 켠다)
팀원끼리 직접 메시지를 주고받고 작업 목록을 공유해, 결과만 돌려주는 서브에이전트보다 조율이 촘촘하다.
토큰을 많이 쓰는 실험 기능. 두 팀원이 같은 파일을 고치면 덮어쓴다(문서 경고).
뒤에서 볼 코디네이터 패턴의 가까운 형제. 담당 파일을 나누는 습관이 필수.
2026-04-02Cursor 3 · Agents Window · /best-of-n

Cursor 3는 에이전트 여러 개를 병렬로 돌리는 새 창을 내놓았다

cursor.com/changelog/3-0
Cursor 3 변경 기록 화면
공식 변경 기록 화면 캡처 · 2026-04-02
Cursor 3 변경 기록. Agents Window에서 여러 에이전트를 로컬·클라우드 등 어디서든 병렬로 돌린다는 내용.
  • 여러 에이전트를 병렬로: 로컬 · 워크트리 · 클라우드 · 원격 SSH(Secure Shell, 원격 접속)
  • /best-of-n: 같은 작업을 여러 모델에 동시에 시켜 가장 나은 결과 고르기
  • /worktree: 변경을 격리된 워크트리에서
로컬·워크트리·클라우드·SSH 어디서든 병렬 실행. /best-of-n으로 여러 모델의 결과를 비교.
같은 일을 여러 모델에 시키면 실행량도 그만큼 는다. 최선을 비교해 고르는 일이 남는다.
모델별 차이를 도구가 직접 활용한다. IDE(Integrated Development Environment, 통합 개발 환경)와 창을 함께 연다.
워크트리 기반 병렬 에이전트 관리 · 대표 도구 Orca데스크톱 IDE · 2026-03-16 첫 커밋 → 지금

병렬 에이전트 관리의 대표 도구, Orca

onorca.dev/docs
Orca 공식 문서 첫 화면
공식 문서 화면 캡처 · 2026-10-28 확인
Orca 공식 문서 첫 화면. Orca는 Codex · Claude Code 같은 CLI 에이전트를 한 화면에 나란히 돌리는 개발 도구.
“Run Codex, ClaudeCode, OpenCode or Pi side-by-side”Codex, ClaudeCode, OpenCode, Pi를 나란히 실행하세요Orca README · stablyai/orca
  • 모델이 아니다. 내가 구독한 CLI 에이전트(터미널용)를 그대로 쓴다
쓰던 CLI 에이전트를 그대로 한 화면에서. 작업마다 워크트리·터미널·브라우저 한 벌. MIT 라이선스.
첫 커밋이 2026-03-16인 일곱 달 된 프로젝트. 기본값이 권한 우회(16장).
앞의 도구들이 간 방향을 워크트리 단위로 가장 투명하게 보여 줘서 자세히 뜯어 본다.
Orca 문서 · The Orca Modelworktree-native

Orca: 작업 하나 = 워크트리 하나 = 에이전트 하나

onorca.dev/docs/model/worktrees
Orca 문서의 워크트리 모델
공식 문서 화면 캡처 · 2026-10-28 확인
Orca 문서의 워크트리 모델 설명. 기준 지점에서 작업마다 워크트리를 하나씩 만들고 그 안에서 에이전트가 일한다.
  1. 저장소마다 base ref(기준, 보통 origin/main), 워크트리마다 start-from ref(갈라질 시작점)
  2. 워크트리마다 자기 브랜치 · 자기 파일 · 자기 에이전트 터미널
  3. 생성 → 작업 → 검토 → 출하(커밋·푸시·PR) → 삭제까지 한 흐름

진짜 git 워크트리라서 터미널에서 일반 git을 그대로 쓸 수 있습니다.

Orca README · 공식 문서Supported agents

Orca는 터미널에서 도는 에이전트면 모두 돌릴 수 있다

onorca.dev/docs/agents/supported
Orca 지원 에이전트 문서
공식 문서 화면 캡처 · 2026-10-28 확인
Orca 문서의 지원 에이전트 표. Claude Code · Codex 등 수십 종이 미리 설정되어 있고, 일부만 깊게 연동된다.
  • 기본 목록: Claude Code · Codex · Cursor CLI · Gemini · GitHub Copilot · OpenCode 등 수십 종
  • 깊은 연동(사용량 · 계정 전환 · 훅): Claude Code, Codex 등 일부
  • 나머지는 “터미널에서 돌면 Orca에서 돈다”
Orca 공식 소개 화면github.com/stablyai/orca · README 대표 이미지 계열

Orca 한 화면에서 열 개 안팎의 작업을 감시한다

github.com/stablyai/orca
Orca에서 여러 에이전트를 워크트리별로 돌리는 화면과 모바일 앱
저장소 소개 화면 캡처 · 왼쪽 워크트리 목록, 가운데 Claude Code · Codex 터미널, 오른쪽 모바일 앱
Orca 소개 화면. 왼쪽 워크트리 목록, 가운데 에이전트 터미널, 오른쪽 휴대폰 앱으로 작업 상태를 한눈에 본다.
  • 왼쪽: 워크트리 목록. 작업 중 · 입력 대기 · 완료 · 실패를 점으로 표시
  • 가운데: 워크트리마다 에이전트 터미널(분할 가능)
  • 오른쪽: 파일 · diff · 내장 브라우저. 휴대폰 앱으로 알림과 후속 지시
질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: GitHub Agent HQ · Codex 앱 · Claude Code agent teams · Cursor 3 Agents Window · Orca란 · Orca 워크트리 모델 · Orca 지원 에이전트 · Orca 화면 구성

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
Orca 문서 · Your first 3-agent session5분 흐름

Orca: 같은 프롬프트로 세 에이전트를 경주시키고 하나만 고른다

onorca.dev/docs/first-session
Orca 첫 3-에이전트 세션 문서
공식 문서 화면 캡처 · 2026-10-28 확인
Orca 문서의 ‘첫 3-에이전트 세션’ 안내. 같은 프롬프트를 세 에이전트에 주고 가장 나은 결과 하나만 고른다.
# 첫 3-에이전트 세션 흐름 1 Add Repo(저장소 추가) → 로컬 저장소 선택 2 + → 작업 이름 → 워크트리 생성 3 에이전트 고르기 (Claude Code · Codex · Cursor CLI) 4 같은 프롬프트를 세 워크트리에 붙여 넣기 5 사이드바 상태로 감시 → diff 비교 ✓ 가장 나은 하나만 커밋·푸시, 나머지는 삭제
Orca 문서 · CLI · Orchestration실험 기능(설정 → Experimental에서 켬)

Orca: 에이전트가 orca 명령으로 작업과 워커를 직접 만든다

onorca.dev/docs/cli/orchestration
Orca 오케스트레이션 문서
공식 문서 화면 캡처 · 2026-10-28 확인
Orca 문서의 오케스트레이션 CLI 안내. 코디네이터가 작업을 만들고 워커를 띄운 뒤 완료 신호를 기다린다(실험 기능).
$ orca orchestration run-create --objective "결제 화면 QA" $ orca orchestration task-create --spec "모바일 레이아웃 점검" $ orca orchestration worker-start --task <taskId> \ --worktree new-child --agent codex $ orca orchestration check --wait \ --types worker_done,escalation,question Run(실행) · Task(작업) · Dispatch(배정) · Message · Decision gate(결정 관문) ! 워커(작업 맡은 에이전트)는 끝나면 worker_done을 한 번 보낸다
2026-10-28Orca v1.4.243(Latest) 릴리스 노트 · 공식 문서

Orca는 빨리 바뀌고, 기본값이 권한 우회라 주의해야 한다

github.com/stablyai/orca/releases
Orca 릴리스 목록: v1.4.243
GitHub 릴리스 화면 캡처 · 2026-10-28
Orca 릴리스 목록(v1.4.243). 거의 매일 새 버전이 나올 만큼 변화가 빠르다.
  • 기본값이 권한 우회 플래그(승인 없이 실행, 수동 선택 가능). 워크트리는 파일만 나눌 뿐 보안 샌드박스가 아니다
  • 오케스트레이션은 실험 기능. 명령이 바뀐다(구 명령은 폐기)
  • 거의 매일 배포. 버전이 빨리 바뀐다
  • 합치기·CI(Continuous Integration, 지속적 통합 자동 검사) 폭증은 해결해 주지 않는다 → 15교시
강사 운영 방식에이전트 팩토리를 실제로 굴리는 법

코디네이터-배치 패턴: 코딩하지 않는 세션이 일을 나눈다

코디네이터 (코딩 안 함)목표·완료 조건·진행 기록배치 계획(독립 작업 묶음)이슈 원장 · PR · CI(상태의 단일 출처)워커 3개 · 워크트리서브에이전트 · 서브 하네스 배치 발송PR·결과읽기

코디네이터는 목표와 완료 조건을 쥐고, 워커에게 배치로 일을 나눠 준 뒤, 이슈·PR·CI를 읽어 다음 배치를 정합니다.

역할 분리강사 운영 방식

코디네이터는 읽고 보내고, 워커는 코딩한다

코디네이터 세션 · 오래 산다

보고, 판단하고, 나눈다

  • 목표 · 완료 조건 · 진행 기록을 보관
  • 이슈 · PR · CI 상태를 읽는다
  • 다음 배치를 만들어 워커에 보낸다
  • 막힌 것을 정리하고 사람에게 묻는다
워커 · 배치마다 새로 뜬다

한 작업만 끝낸다

  • 작업 하나, 워크트리 하나, 브랜치 하나
  • 구현 · 테스트 · PR까지 스스로
  • 끝나면 결과를 남기고 종료
  • 서브에이전트 또는 서브 하네스(Claude Code · Codex 등)

코디네이터의 컨텍스트 창을 코드로 채우지 않는 것이 핵심입니다. 그래서 며칠을 버팁니다.

2026-02-28Claude Code 2.1.63 · /simplify · /batch 번들 스킬

/batch: 큰 변경을 독립 단위로 쪼개 워크트리에 뿌린다

code.claude.com/docs/en/commands
Claude Code 명령 문서의 /batch 항목
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 명령 문서의 /batch 항목. 큰 변경을 5~30개 독립 단위로 나눠 단위마다 서브에이전트가 맡는다.
  • 코드베이스를 조사해 5~30개 독립 단위(서로 안 겹치는 작업 조각)로 분해, 계획을 보여 준다
  • 승인하면 단위마다 백그라운드 서브에이전트(보조 에이전트)가 격리된 워크트리에서
  • 각자 구현 · 테스트 · 변경 게시
큰 변경을 5~30개 독립 단위로 쪼개 병렬 처리. 승인 전에 계획을 보여 준다.
단위가 서로 안 겹쳐야 한다. 겹치면 합치는 비용이 병렬의 이득을 지운다.
배치 한 번의 모양. 코디네이터 패턴은 이를 반복해 며칠을 간다.
2026-03-06 · 2026-08-27Claude Code 2.1.71 /loop · 2.1.248 자기 페이스 모드 상시 제공

/loop: 간격을 생략하면 Claude가 스스로 깨울 시각을 정한다

code.claude.com/docs/en/scheduled-tasks
Claude Code 예약 작업 문서: 클라우드·데스크톱·/loop 비교
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 예약 작업 문서. /loop는 같은 일을 되풀이하는 명령이고, 간격을 빼면 Claude가 다음 시각을 고른다.
  • /loop 5m …: 고정 간격. 2.1.71(2026-03-06)에서 추가
  • 간격 없이 /loop …: 매 회차 끝에 다음 깨우기까지 1분~1시간 중 길이를 Claude가 고른다
간격을 생략하면 Claude가 1분~1시간 중 알맞게 다음 깨우기를 고른다.
세션이 열려 있어야 깨어나고, 반복 작업은 7일 뒤 만료된다.
코디네이터가 스스로 깨어 점검하게 하는 장치. 만료는 25장에서 다시 본다.
강사 운영 방식/loop 자기 깨우기 + 이슈 원장

한 사이클: 깨어나서 읽고, 판단하고, 보내고, 다시 잔다

다음 배치 발송→ 다시 잔다잠든다다음 깨우기 예약(1분~1시간)깨어나 상태 읽기이슈 · PR · CI판단목표 달성루프 종료막힌 것 정리실패 PR 재배정→ 다시 잔다 깨어남빈 자리실패·충돌충족

판단은 세 갈래입니다. 보낸다(빈 자리가 있다), 고친다(실패·충돌), 끝낸다(완료 조건 충족). 끝내는 것도 코디네이터의 일입니다.

강사 운영 방식 · 예시 도식배치를 여러 번 반복해 목표에 닿는다

며칠에 걸친 완주: 배치 → 점검 → 재배정 → 마무리

1일차2일차3일차4일차배치 1기반 작업 5개배치 2기능 8개실패 PR 2개재배정배치 3연동·화면 6개머지 큐 통과마무리스모크 · 문서목표 달성루프 종료

예시 도식 · 강사 실제 화면으로 교체 예정. 일수와 배치 크기는 설명용 가상의 값입니다.

강사 운영 방식코디네이터 세션 · 한 번 깨어난 장면

코디네이터는 깨어나 PR·이슈를 읽고 실패한 일을 재배정한다

> /loop plan/GOAL.md 완료 조건 기준으로 이슈·PR·CI를 읽고 다음 배치를 보낸다. 끝나면 루프를 종료한다 ● 깨우기 #14 · 2일차 09:42 $ gh pr list --state open --json number,title,statusCheckRollup #212 feat/billing-export CI ✓ 리뷰 대기 #213 feat/notify-mail CI ✗ lint 실패 #214 fix/csv-encoding CI … 실행 중 $ gh issue list --label batch-3 --state open 6 open / 11 total → 판단 #213 재배정 · 빈 자리 2개 → 배치 3-b 발송 ✓ 워커 7 (wt/batch3-notify) 재배정 ✓ 워커 8, 9 시작 → 다음 깨우기 25분 뒤 이유: CI 진행 중 1건, 새 PR 대기

모형 · 강사 실제 화면으로 교체 예정. 줄 내용은 패턴을 보여 주려고 꾸민 예시입니다.

실패 모드 → 안전장치강사 운영 방식 · 공식 문서의 제약 반영

이렇게 망가지고, 이렇게 막는다

실패 모드안전장치폭주루프가 끝없이 돈다충돌워커가 같은 파일을 고친다비용 급증워커·깨우기가 늘어난다깨우기 유실세션이 끊기면 루프도 멈춘다역할 붕괴코디네이터가 직접 코딩한다완료 조건을 먼저 적는다7일 만료 · 배치 상한워커마다 워크트리와 담당 파일머지 큐로 합친다/usage의 Loops 표로 점검워커 수·모델 등급 상한백그라운드 세션으로 유지진행 기록은 이슈에코디네이터는 읽기·발송만코딩은 워커에게
2026-10-28 확인Claude Code 공식 문서 · CHANGELOG 2.1.243(2026-08-24)

안전장치는 도구가 이미 갖고 있다

code.claude.com/docs/en/scheduled-tasks
Claude Code 예약 작업 문서의 7일 만료와 제약
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 예약 작업 문서의 제약 부분. 반복 작업은 만든 지 7일 뒤 자동으로 사라진다고 안내.
  • 반복 작업은 7일 뒤 자동 만료. 더 길면 취소 후 다시 만들거나 클라우드·데스크톱 예약 작업
  • /usage에 Loops 표: 루프별 실행 횟수 · 총 토큰 · 회당 토큰
  • 세션이 열려 있어야 깨어난다. 백그라운드 세션으로 유지
오늘 본 것을 묶으면13교시 → 14교시

묶으면: 병렬은 쉽고, 나눠 주고 점검하는 일이 어렵다

  1. 모델 가격·성능 차이와 큰 프로젝트가 여러 하네스를 부른다
  2. Agent HQ · Codex 앱 · agent teams · Orca · Cursor 3가 같은 방향
  3. 코디네이터는 코딩하지 않고 이슈·PR·CI를 읽어 배치를 보낸다
  4. 완료 조건 · 만료 · 사용량 점검 없이는 돌리지 않는다
cognitect.com/blog/2011/11/15/documenting-architecture-decisions
Nygard의 ADR 원문
다음 교시 · ADR 원문 화면 캡처 · 2011-11-15
다음 교시에서 볼 Nygard의 ADR 원문(2011). 큰 문서는 낡는다는 문제의 출발점.
4회차 · 14교시Agentic Engineering 실무 · 2026-11-24

SDD 이후:
ADR과 이슈 원장

큰 스펙 하나가 낡고 부딪히는 이유와, 짧은 결정 기록과 이슈 한 장 한 장으로 일을 나누는 방법을 봅니다.

Nygard의 ADR 원문 화면
2011ADR(Architecture Decision Record, 아키텍처 결정 기록) 원문
adr.github.io 첫 화면
지금ADR 커뮤니티
MADR 공식 사이트
2024MADR(Markdown Architectural Decision Records) 4.0
GitHub Projects 공식 문서
지금프로젝트·이슈
2025-09-02 · 2025-10-15GitHub Spec Kit · Thoughtworks Böckeler, martinfowler.com

SDD: 스펙이 사람과 AI의 기준이 된다

github.blog/…/spec-driven-development-with-ai
GitHub Spec Kit 발표 글
GitHub Blog 화면 캡처 · 2025-09-02
GitHub Spec Kit 발표 글. 스펙을 먼저 쓰는 SDD(Spec-Driven Development, 스펙 주도 개발)를 소개.
martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html
Understanding Spec-Driven-Development 글의 정의 부분
원문 화면 캡처 · 2025-10-15
Böckeler의 글. SDD의 정의가 아직 흔들린다고 밝히고 공통점을 정리.
스펙을 먼저 쓰고 사람과 AI가 같은 문서를 기준으로 삼는다. ← 5교시
정의가 아직 흔들린다(Böckeler). 스펙이 커지면 낡고 부딪힌다(다음 장).
이번 시간의 출발점. 이 한계 때문에 결정은 ADR, 작업은 이슈로 나눈다.
2011-11-15Michael Nygard, “Documenting Architecture Decisions”

문제 1: 스펙은 길어지고, 길어지면 낡는다

cognitect.com/blog/2011/11/15/documenting-architecture-decisions
Nygard 글의 Context 부분: 큰 문서는 최신으로 유지되지 않는다
원문 화면 캡처 · 2011-11-15
Nygard가 2011년에 쓴 글의 ‘Context’ 부분. 큰 문서는 최신으로 유지되지 않는다고 짚는다.
“Large documents are never kept up to date.”큰 문서는 결코 최신 상태로 유지되지 않는다.Nygard · 2011-11-15
  • 스펙이 코드보다 커진 프로젝트가 흔하다고 쓴 글
  • 너무 커서 열고, 읽고, 고치지 못한다
  • 작은 조각이어야 갱신될 가능성이 있다
문제 2강사 운영 방식 · 스펙이 낡았다는 표시는 어디에도 없다

문제 2: 에이전트는 낡은 스펙도 믿는다

1주차스펙 작성(코드와 일치)3주차코드는 세 번 바뀜스펙은 그대로5주차새 에이전트가스펙부터 읽음스펙 파일에는‘낡았다’ 표시 없음결과없어진 방식으로구현 변경 이어짐낡은 스펙그대로 믿음

사람은 “이건 옛날 문서야”라고 의심하지만, 에이전트는 읽은 문서를 기준으로 삼습니다.

문제 3강사 운영 방식 · 13교시 병렬 에이전트와 이어서

문제 3: 병렬로 일하면 한 스펙에서 부딪힌다

병렬 에이전트 · 워크트리SPEC.md하나의 큰 스펙머지 충돌사람이 풀어야 함에이전트 A결제 이슈에이전트 B알림 이슈에이전트 C권한 이슈 같은 절같은 절같은 절

워크트리로 코드는 갈라도, 스펙 파일 하나는 모두가 고치려 듭니다. ← 13교시

강사 운영 방식큰 스펙 하나 → 성격별로 쪼개기

그래서 스펙 하나를 성격별로 나눴습니다

예전: 큰 단일 스펙 하나지금: 성격별로 나눠 둔다SPEC.md결정 + 요구 + 설계전부 한 파일ADR · 결정과 이유짧고 오래 감이슈 · 이번 작업의 스펙끝나면 닫힘코드 · 테스트실제 동작의 기준 쪼개기

결정과 이유는 ADR, 이번 작업의 요구는 이슈 단위 스펙, 실제 동작의 기준은 코드와 테스트.

1992 → 2018Perry·Wolf · Tyree·Akerman · ISO/IEC/IEEE 42010 · Nygard · Thoughtworks · MADR

결정과 근거를 남긴다는 생각은 1992년부터, ‘ADR’이라는 이름은 2011년부터

1992 Perry · Wolf아키텍처 = 요소·형태·근거(rationale)2005 Tyree · AkermanIEEE Software 결정 서식문제·결정·가정·대안2011 ISO/IEC/IEEE 42010결정과 근거를표준 문서 항목으로지금: 에이전트가 읽는 ADR저장소의 결정 = 지켜야 할 규칙(18단계 중 7단계)2016-11 Trial → 2017-11 AdoptThoughtworks Radar2018 MADR(마크다운)2011-11-15 Nygard가벼운 ADR 다섯 칸코드 저장소에 둔다 무거운 문서 → 한두 쪽

ADR(Architecture Decision Record, 아키텍처 결정 기록) = 결정 하나와 그 근거. 무거운 아키텍처 문서에서 떼어 낸 작은 기록이다.

무엇이 바뀌었나근거를 남긴다는 목적은 같고, 크기·위치·읽는 쪽이 바뀌었다

근거를 남긴다는 목적은 같다. 바뀐 것은 크기, 놓이는 곳, 읽는 쪽이다

아키텍처 문서 속 결정 (1992~2011)Nygard식 ADR (2011~)에이전트 시대의 ADR
크기큰 문서의 한 절결정 하나에 한두 쪽결정 하나, 짧게
놓이는 곳위키·문서 관리 시스템코드 저장소(docs/adr)저장소 + 에이전트 지침이 가리키는 곳
읽는 쪽아키텍트·검토자나중에 합류한 팀원팀원 + 매번 처음 읽는 에이전트
낡으면고치기 어려워 낡는다지우지 않고 Superseded로 바꾼다‘다시 판단할 조건’으로 낡음을 알린다

Nygard: “Large documents are never kept up to date.” 큰 문서는 결코 최신으로 유지되지 않는다.

2026-10-28 확인adr.github.io · ADR GitHub 조직

ADR: 결정 하나와 그 이유를 적은 기록

adr.github.io
adr.github.io의 ADR 정의
ADR 커뮤니티 사이트 화면 캡처
adr.github.io 첫 화면. ADR을 결정 하나와 그 근거를 적은 문서로 정의한다.
  • Architecture Decision Record(아키텍처 결정 기록): 결정 하나와 그 근거
  • 선택의 트레이드오프와 결과까지 적는다
  • 모아 두면 프로젝트의 결정 로그
2011-11-15Nygard 원형 · Title · Status · Context · Decision · Consequences

Nygard의 ADR 원형은 다섯 칸, 한두 쪽이면 끝난다

cognitect.com/blog/2011/11/15/documenting-architecture-decisions
Nygard 글의 Status와 Consequences 설명
원문 화면 캡처 · 2011-11-15
Nygard 글에서 Status(상태)와 Consequences(결과) 칸을 설명하는 부분.
  1. Title(제목): 짧은 명사구
  2. Status(상태): 제안됨 · 승인됨 · 폐기 · 대체됨
  3. Context(맥락): 힘겨루기 중인 사실들
  4. Decision(결정): “We will …”(우리는 ~한다)
  5. Consequences(결과): 좋은 것도 나쁜 것도
다섯 칸, 한두 쪽이면 끝난다. 상태를 바꿔 결정의 역사가 남는다.
대안을 적는 전용 칸이 없다(11장 표). 낡음을 알리는 조건 칸도 없다.
모든 서식의 뼈대. AI 이전인 2011년부터 ‘작은 문서’를 주장했다.
2011-11-15Nygard · 뒤집힌 결정도 지우지 않는다

상태가 바뀌어도 기록은 지우지 않는다

proposed제안됨accepted승인됨deprecated더는 안 씀superseded새 ADR로 대체새 ADR번호 재사용 안 함 합의상황 변화뒤집힘링크

낡은 ADR을 고쳐 쓰지 않고 상태만 바꾸고 새 ADR을 추가합니다. 그때 무엇이 결정이었는지가 남습니다.

2024-09-17MADR 4.0.0 · adr.github.io/madr

MADR: 마크다운으로 가볍게 쓰는 ADR

adr.github.io/madr
MADR 공식 사이트 첫 화면
MADR 공식 사이트 화면 캡처 · 2026-10-28 확인
MADR 공식 사이트 첫 화면. ADR을 마크다운 서식으로 간소화한 템플릿(4.0)을 소개.
  • 최소형: 맥락 · 선택지 · 결정 결과(· 결과)
  • 전체형: 결정 요인 · 선택지별 장단점 · 확인 방법 추가
  • 머리말 status · date · decision-makers
마크다운이라 저장소에 두기 쉽다. 최소형·전체형 중 고르고 선택지를 적는다.
전체형은 칸이 늘어난다. ‘확인’ 칸은 결정이 지켜졌는지 보는 용도라 낡음 신호는 아니다.
Nygard에 선택지 칸이 더해진 형태. 이미 검토한 안을 에이전트가 되풀이하지 않게 한다.
서식 비교Nygard 원형 · MADR 4.0 · 강사 서식(templates.md)

세 서식, 같은 뼈대와 다른 칸

강사 서식Nygard 원형MADR
ID · 제목 · 상태 · 날짜Title(제목) · Status(상태)제목 · status · date
배경 · 제약Context(맥락)Context and Problem Statement(배경·문제)
대안(전용 칸 없음)Considered Options(검토한 선택지)
선택과 이유Decision(결정)Decision Outcome(결정 결과)
영향 · 비용 · 한계Consequences(결과)Consequences(결과)
다시 판단할 조건(없음)(없음)
관련 Spec · 이슈 · 이전 ADRStatus의 대체 링크More Information(추가 정보)
사용자 판단(없음)decision-makers(참여자 목록)
장점 낡음 신호·사람 판단 한계 가장 길다장점 가볍다 한계 대안 칸 없음장점 선택지 명시 한계 낡음 조건 없음
강사 운영 방식plan/instructor/templates.md · “ADR — 중요한 결정 기록”

제 서식: 여덟 칸, 둘이 새로 붙었다

# ADR 서식 ADR ID·제목·상태·날짜: 결정이 필요한 배경·제약: 비교한 대안: 선택과 이유: 영향·비용·감수할 한계: 다시 판단할 조건: 관련 Spec·이슈·이전 ADR: 사용자 판단 필요 여부·결과:
  • 다시 판단할 조건: 이 결정이 낡았다고 볼 신호
  • 사용자 판단: 에이전트가 정하지 못하는 결정은 사람 몫
저장소 안의 짧은 마크다운 한 파일 = ADR 하나
다시 판단할 조건이 낡음을 미리 알리고, 사용자 판단이 사람 몫을 남긴다.
여덟 칸이라 세 서식 중 가장 길다. 공개 표준이 아닌 강사 방식이고 이득을 측정한 것은 아니다.
스펙과 갈리는 지점: 스스로 낡음을 알리는 문서. 다음 두 장에서 채워 본다.
질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: 병렬 작업의 스펙 충돌 · 나눠 두기 · ADR이란 · Nygard 원형 · Status의 생애 · MADR · 세 서식 비교 · 강사 서식

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
교육용 예시 ADR가상의 프로젝트 · 실제 기록이 아님 · 1/2

예시 ADR (1/2): 배경과 대안

docs/adr/0007-reminder-scheduler.md # ADR-0007 · 예약 알림은 스케줄러로 보냅니다 상태: 승인됨 · 2026-10-21 (제안 10-19) ## 배경·제약 - 공유 웹호스팅: 상시 프로세스(queue:work) 불가 - cron은 1분마다 실행할 수 있음 - 하루 약 300건, 5분 지연까지 허용 - 운영자는 서버 설정을 직접 바꾸지 않음 ## 대안 A. Redis + queue:work (Supervisor) → 호스팅을 바꿔야 함 B. DB(데이터베이스) 큐 + schedule:run 매분 → 추가 비용 없음 C. 외부 발송 서비스의 예약 API(Application Programming Interface, 연동 규약) → 월 비용, 서비스 종속
  • 배경에는 제약을 사실로
  • 대안은 버린 것까지 한 줄씩
  • 상태와 날짜가 맨 위
교육용 예시 ADR가상의 프로젝트 · 실제 기록이 아님 · 2/2

예시 ADR (2/2): 선택, 영향, 다시 판단할 조건

## 선택과 이유 B. 상시 프로세스 불가라는 제약을 지키고 하루 300건에는 충분합니다. ## 영향 + 배포가 단순합니다 (cron 한 줄) - 알림이 최대 1분 늦습니다 - 한 번에 많이 보내면 실행이 길어집니다 ## 다시 판단할 조건 - 하루 발송 2,000건 초과 - 한 번의 실행 시간이 50초 초과 - VPS(Virtual Private Server, 가상 사설 서버)로 이전, 또는 지연 허용이 1분 미만으로 변경 ## 관련 Spec: notifications §예약 · 이슈 #58 #61 이전 ADR: 0003 (SSR(Server-Side Rendering, 서버 렌더링) 유지) ## 사용자 판단 필요 → 완료 (10-21 운영자: 1분 지연 허용)
  • 선택은 이유 한 줄
  • 단점도 영향에 적는다
  • 조건은 숫자와 사건으로
  • 사람이 답한 것은 날짜와 함께
강사 운영 방식이슈별 흐름 2단계 “ADR 점검”

‘다시 판단할 조건’이 낡음을 알려 준다

에이전트가작업 시작관련 ADR 읽기(이슈의 ‘관련’ 칸)‘다시 판단할 조건’을현재 상태와 대조해당 없음결정을 따라 구현해당함구현을 멈추고사용자에게 보고사용자가 판단→ 새 ADR 또는 수정 조건 밖조건 안

스펙은 낡았는지 스스로 말하지 못하지만, ADR은 낡을 조건을 미리 적어 둡니다.

정리큰 단일 스펙 vs ADR + 이슈 스펙

왜 에이전트에게 ADR이 좋은가

큰 단일 스펙

길고, 낡고, 부딪힌다

  • 전체를 읽어야 해서 컨텍스트를 많이 쓴다
  • 왜 그렇게 정했는지가 빠지기 쉽다
  • 낡아도 표시가 없다
  • 병렬 작업이 한 파일에서 충돌
ADR + 이슈 스펙

짧고, 이유가 있고, 신호를 준다

  • 필요한 ADR 한 장만 읽는다
  • 이유와 버린 대안이 남는다
  • 다시 판단할 조건이 낡음을 알린다
  • 파일이 나뉘어 충돌이 줄어든다
ADR은 짧고, 이유가 남고, 낡음을 알린다.
모든 결정에 쓰면 ADR도 길어진다. 이득은 운영 경험이며 측정한 것은 아니다.
스펙을 없애지 않고 성격별로 쪼갠다. 결정은 ADR, 이번 작업은 이슈 스펙.
2011-11-15Nygard의 “architecturally significant” 기준 · 강사 운영 방식

모든 결정에 쓰지는 않습니다

ADR을 쓴다

되돌리기 비싼 결정

  • 구조·의존 라이브러리·인터페이스·배포 방식
  • 에이전트가 다시 물어볼 만한 선택
  • 제약 때문에 정석을 버린 선택
  • 사람의 판단이 필요했던 선택
쓰지 않는다

코드와 PR(Pull Request, 변경 병합 요청)이 설명하는 것

  • 변수 이름, 함수 하나의 구현 세부
  • 이슈 안에서 끝나는 선택 → 이슈 스펙
  • PoC(Proof of Concept, 시험 제작)의 임시 결정은 한 줄 메모

ADR 초안은 AI가 쓰게 해도 됩니다. 상태와 사용자 판단은 사람이 확정합니다.

강사 운영 방식GitHub 프로젝트·이슈·라벨이 설계도

이슈 원장: 설계도가 곧 작업 목록

프로젝트 보드= 설계도이슈 1개= 작업 1개워크트리에이전트 작업이슈 닫힘 = 도장Closes #N스쿼시 머지PR → CI통과 쪼개 등록 남은 칸 확인

이슈 하나가 작업 하나, 닫을 때마다 한 칸씩 채우는 도장 깨기입니다. 강사 실제 보드 화면으로 교체 예정

2026-10-28 확인GitHub Docs · About Projects

프로젝트: 이슈와 PR이 표·보드·로드맵이 된다

docs.github.com/en/issues/planning-and-tracking-with-projects/…/about-projects
GitHub Docs About Projects
GitHub 공식 문서 화면 캡처
GitHub Docs ‘About Projects’ 화면. 프로젝트를 이슈·PR과 연결된 표·보드·로드맵이라고 설명한다.
“…an adaptable table, board, and roadmap…”유연하게 바꿔 쓰는 표, 보드, 로드맵GitHub Docs · About Projects
  • 이슈·PR(변경 요청)과 양방향으로 동기화
  • 담당자·상태 같은 사용자 지정 필드
  • 필터·정렬·그룹으로 여러 보기
2026-10-28 확인GitHub Docs · Adding sub-issues · 강사 운영 기준 10~14단계

이슈 하나 = 작업 하나, 큰 일은 하위 이슈로

docs.github.com/en/issues/…/using-issues/adding-sub-issues
GitHub Docs 하위 이슈 추가
GitHub 공식 문서 화면 캡처
GitHub Docs ‘하위 이슈 추가’ 화면. 이슈 아래 하위 이슈를 100개, 8단계까지 둘 수 있다고 설명한다.
  • 하위 이슈: 상위 이슈 하나에 최대 100개, 중첩은 8단계까지
  • 마일스톤 → 스테이지 → 스프린트 → Task를 추적 이슈로
  • 완료 조건과 검증 방법이 이슈에 있다
강사 운영 방식issue-pr-management · ApplyFlow 가상 예시 · 2026-09-28 확인

PR 폭증은 이슈를 합쳐 줄인다

이슈 4개 (가상 예시)PR 하나Closes #201, #203한 번에 검토·출시·롤백#201에 로그 이관중복 정리로 종료별도 PR초점 복구는 열어 둠#201 수동 저장 중복#202 같은 문제 + 브라우저 로그#203 가져오기 중복#204 오류 안내 + 초점 복구 Related만

기준은 개수가 아니라 하나의 검토·출시·롤백 단위인가입니다. 번호는 가상입니다. → 15교시

2026-10-28 확인GitHub Docs · Linking a pull request to an issue

이슈를 닫는 규칙: 키워드는 이슈마다 하나씩

docs.github.com/en/issues/…/linking-a-pull-request-to-an-issue
GitHub Docs PR과 이슈 연결
GitHub 공식 문서 화면 캡처
GitHub Docs ‘PR을 이슈에 연결’ 화면. PR이 기본 브랜치에 머지되면 연결된 이슈가 자동으로 닫힌다.
# PR 본문 Closes #201 Closes #203 Related: #204
  • 기본 브랜치로 머지될 때만 자동 종료
  • Related는 닫지 않는다
강사 운영 방식project-operating-standard · 18단계 · 7단계가 ADR

운영 기준 18단계: ADR은 7단계

1–4 분석5–9 방향 문서화10–15 분해·등록16–18 구현·운영프로젝트시나리오입출력시장5 개요6 가이드라인7 ADR 정의8 Spec 개요9 시안10 마일스톤11–13 스테이지·스프린트·Task14 이슈 등록15 워크플로·워크트리16 이슈별 개발·배포17 피드백18 다음 업데이트 다음 반복

방향 문서(개요·가이드라인·ADR·Spec 개요)를 먼저 세우고 → 쪼개서 이슈로 등록하고 → 이슈별로 만듭니다. → 16교시

강사 운영 방식이슈별 구현 워크플로우 · 2단계가 ADR 점검

이슈 하나가 지나가는 열두 칸

1 이슈 분석2 ADR 점검3 이슈 스펙4 스펙 리뷰8 구현 리뷰7 구현6 계획 리뷰5 구현 계획9 PR10 CI 통과?11 스쿼시머지12 머지 후스모크

스펙·계획·구현은 각각 리뷰하고, 블로커가 있으면 그 단계로 되돌아갑니다. CI(Continuous Integration, 지속적 통합) 실패는 구현으로 돌아갑니다.

오늘 본 것을 묶으면14교시 요약 · 다음은 CI와 머지 큐

묶으면: 짧은 결정 기록과 한 장씩 닫는 이슈

docs.github.com/…/managing-a-merge-queue
GitHub 머지 큐 문서
다음 교시 · 15교시에서 볼 화면
GitHub 머지 큐 문서. 15교시에서 PR이 폭증할 때 합치는 문제를 다루며 다시 봅니다.
  • 큰 스펙은 길어지고, 낡고, 병렬에서 부딪힌다
  • ADR: 결정 하나, 이유, 다시 판단할 조건
  • 이슈 하나 = 작업 하나, 도장 깨기, 묶기는 신중히
4회차 · 15교시Agentic Engineering 실무 · 2026-11-24
CI 폭증 · 머지 큐 · 스모크 테스트

초록불이 쏟아질 때,
그 초록불을 믿을 수 있나

Anthropic 하루 머지 수 차트
2026CI(Continuous Integration, 지속적 통합) 폭증
GitHub 머지 큐 문서
2023머지 큐
Playwright MCP 소개 문서
2025브라우저 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜)
Chrome DevTools MCP 발표 글
2025DevTools MCP
14교시 → 15교시이슈 원장 다음의 병목

PR이 늘면, 병목은 CI와 검증으로 옮겨 간다

코딩에이전트 병렬CI · 머지검증사람이 쓰던 속도PR 수십~수천 개PR마다 전체 테스트머지마다 다시 검증초록불이 진짜인가(스모크)

14교시에서 일을 이슈 단위로 쪼갰습니다. 이제 그 결과물(PR(Pull Request, 변경 병합 요청))이 쏟아져 CI(Continuous Integration, 지속적 통합 자동 검사)에 쌓이는 곳을 봅니다. → 14교시

2025-12-16 → 2026-01-01GitHub 변경 로그 · Actions 가격 개편

단가는 내렸다: 호스티드 러너 최대 39% 인하

github.blog/changelog/2025-12-16-coming-soon-simpler-pricing-and-a-better-experience-for-github-actions
GitHub 변경 로그: 호스티드 러너 가격을 2026년 1월 1일에 최대 39% 인하
GitHub 변경 로그 화면 캡처 · 2025-12-16 발표
GitHub 공식 변경 로그. 2026-01-01부터 호스티드 러너(GitHub이 빌려주는 실행 서버) 가격을 최대 39% 내린다는 발표.
−39%

GitHub 호스티드 러너 가격
기존 대비 최대 인하폭, 2026-01-01 적용

셀프호스티드 러너 과금 변경은
발표 후 보류됨

2026-10-06GitHub Blog · 에이전트 규모의 Git 인프라

터진 것은 실행량이다: 한 달 32.6억 회, 1년 전의 4배

github.blog/engineering/architecture-optimization/building-git-infrastructure-for-agent-scale-development
GitHub Blog 본문: Actions가 9월에 32.6억 회 실행, 전년 대비 4배 이상
GitHub Blog 화면 캡처 · 2026-10-06 (10-26 갱신)
GitHub Blog 본문. Actions(자동 실행 기능)가 2026년 9월 한 달에 32.6억 번 돌았고 1년 전의 4배를 넘는다는 문장.
4배+

Actions 실행 횟수, 2025-09 대비
(2026-09 한 달, 32.6억 회)

5배+

커밋 수, 2025-09 대비
(2026-09 한 달 73.8억 건, 사람+에이전트)

2026-10-13Anthropic Engineering · Redesigning source control

하루 머지 30,401건: Anthropic은 소스 관리를 새로 만들었다

anthropic.com/engineering/redesigning-source-control
Anthropic 모노레포 하루 머지 수 차트, 9월 9일 30,401건
Anthropic Engineering 차트 · 2026-01~09
Anthropic 모노레포(코드를 한 저장소에 모은 것)의 하루 머지(변경 합치기) 수 차트. 여름 이후 급증해 9월 9일 30,401건.
하루 머지 약 2,500건 → 30,401건(5월→9월 9일)에 맞춰 git 대신 자체 소스 관리 Scion을 새로 만들었다.
인프라를 직접 새로 만든 사례다. 대부분의 프로젝트는 이 규모가 아니어서 그대로 따라 할 수는 없다.
에이전트가 늘면 PR·머지·CI가 사람 속도가 아닌 기계 속도로 는다. 방향은 우리 프로젝트도 같다.
CI 분량 줄이기실행 횟수 × 실행당 시간 × 단가 중 앞의 두 항

단가는 못 건드리니, 횟수와 시간을 줄인다

PR 올라옴1 취소낡은 실행 중단3 재사용의존성·빌드 캐시2 거르기경로 필터·영향 분석4 묶기머지 큐·머지 트레인기본 브랜치항상 초록

오른쪽으로 갈수록 효과가 크지만 설정과 위험도 큽니다. 왼쪽부터 하나씩 켭니다.

1단계 · 취소GitHub Docs · concurrency

1. 낡은 실행은 취소한다: concurrency

docs.github.com/…/control-workflow-concurrency
GitHub Docs: 워크플로와 잡의 동시 실행 제어
GitHub Docs 화면 캡처
GitHub Docs 동시 실행 제어 문서. 같은 그룹의 실행이 겹칠 때 이전 실행을 취소하는 concurrency 설정을 다룬다.
# .github/workflows/ci.yml concurrency: group: ci-${{ github.workflow }}- ${{ github.event.pull_request.number || github.sha }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} ✓ 같은 PR에 새 푸시 → 이전 실행 취소 ! 큐 후보(merge_group)는 취소 안 함 후보마다 sha가 달라 서로 끊지 않는다
같은 PR에 푸시가 잇따를 때 낡은 실행을 끊어 러너 분을 아낀다. 설정 몇 줄이면 된다.
큐 후보(merge_group)까지 같은 그룹에 넣고 취소하면 서로의 필수 검사를 끊는다.
에이전트는 푸시가 잦아서 가장 싸고 안전한 1단계. 효과는 작아도 위험이 거의 없다.
2단계 · 거르기GitHub Docs · 워크플로 구문 · paths

2. 관계없는 변경은 거른다: 경로 필터

docs.github.com/…/workflow-syntax
GitHub Docs 워크플로 구문 문서, on.push·pull_request의 paths 항목이 목차에 보임
GitHub Docs 화면 캡처 · paths / paths-ignore
GitHub Docs 워크플로 구문 문서. 목차에 paths(특정 경로가 바뀔 때만 실행) 항목이 보인다.
# 문서만 바뀐 PR은 테스트를 건너뛴다 on: pull_request: paths-ignore: - 'docs/**' - '**.md' ! 필수 검사 워크플로 전체를 paths로 생략하면 상태가 안 올라와 PR·머지 큐가 기다릴 수 있다 → 워크플로는 항상 실행하고, 안에서 작업만 고른다
문서만 바뀐 PR은 테스트를 건너뛰어 실행 횟수가 준다. 가장 쉬운 거르기다.
필수 검사 워크플로를 통째로 생략하면 상태가 안 올라와 PR·머지 큐가 기다릴 수 있다.
워크플로는 항상 실행하고 안에서 작업만 고른다. 이 구조가 13장의 게이트로 이어진다.
3단계 · 재사용GitHub Docs · 의존성 캐시 · 강사 자료 ci-cd-optimization

3. 받은 것은 다시 받지 않는다: 캐시

docs.github.com/…/dependency-caching
GitHub Docs: 의존성 캐시. 호스티드 러너는 깨끗한 이미지에서 시작
GitHub Docs 화면 캡처
GitHub Docs 캐시 문서. 호스티드 러너는 매번 깨끗한 이미지에서 시작해 의존성을 다시 받으므로, 캐시로 재사용한다.
# PHP · Laravel 예: composer 캐시 - uses: actions/cache@v4 with: path: ~/.composer/cache key: composer-${{ hashFiles('composer.lock') }} - run: composer install ✓ lock 파일이 같으면 다운로드 생략 ! 캐시는 재사용일 뿐, 검사 생략이 아님 ! 비밀정보는 캐시하지 않는다
lock 파일이 같으면 다운로드를 생략해 실행 시간·네트워크·비용이 준다.
캐시는 재사용일 뿐 검사 생략이 아니다. 비밀정보는 캐시하지 않고, 설치가 짧으면 효과가 작다.
PHP·Laravel은 composer 캐시가 첫 후보. 먼저 설치 시간을 재 보고 도입한다.
2단계 · 거르기 심화강사 자료 parallel-ai-merge-train · Nx affected

폴더 필터를 넘어: 영향받는 검사만 고른다

변경된 파일변경 영역(공고)전이적 소비자(지원 기록 → 알림)경계 계약 검사선택된 검사확실하지 않으면 전체 검사공고 단위지원 기록·알림계약·통합공통 라이브러리·설정이 바뀜또는 영향 범위를 모름

기본 규칙은 변경 영역 + 전이적 소비자(그 영역을 가져다 쓰는 곳) + 경계 계약 검사. 확실하지 않으면 전체 검사로 돌아갑니다.

2023-07-12GitHub merge queue 정식 출시 · GitHub Docs

4. 묶어서 검증한다: 머지 큐

docs.github.com/…/managing-a-merge-queue
GitHub 머지 큐 관리 문서
GitHub Docs 화면 캡처
GitHub Docs 머지 큐 문서. 머지 큐는 PR 머지를 줄 세우고, 합친 상태로 먼저 검사하는 기능.
합친 상태로 먼저 검사해 main이 깨지는 일을 머지 전에 막고, 브랜치를 매번 최신으로 맞추지 않아도 된다.
실패가 잦거나 러너가 부족하면 대기가 오히려 늘고, 충돌 해결·검토는 대신하지 않는다. 제공 범위도 제한된다.
PR이 몰려도 기본 브랜치를 항상 초록으로 지키는 4단계 최종 수단. 앞 단계를 켠 뒤에 쓴다.
머지 큐 동작누적 후보 검증 · 실패 시 재구성

큐는 ‘누적 후보’를 만들어 검사한다

대기열 (최신 main 위에 쌓음)누적 후보를 차례로 검증모두 통과한 순서대로기본 브랜치에 병합실패 시: B가 빠지고뒤 후보를 B 없이 다시 검증PR APR BPR Cmain + Amain + A + Bmain + A + B + C

PR 하나의 성공은 후보의 성공이 아닙니다. 실패한 PR이 빠지면 뒤 후보는 다시 검사합니다.

질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: Anthropic Scion · 줄이는 네 가지 · 동시 실행 취소 · 경로 필터 · 캐시 · 영향 분석 · 머지 큐 · 누적 후보

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
GitHub Actions 설정강사 자료 parallel-ai-merge-train · 트리거 발췌

큐를 쓰려면 merge_group도 받아야 한다

# 발췌. 완성된 workflow가 아님 on: pull_request: merge_group: types: [checks_requested] jobs: gate: if: always() needs: [analyze, test] steps: - run: ./scripts/check-needs.sh ! always()는 항상 성공이 아님 분석 실패·취소·예상 밖 skip은 실패
pull_requestmerge_group범위 분석(항상 실행)선택된 작업최종 게이트(필수 검사, 항상 실행)공고 검사지원 기록 검사건너뛴 작업
GitLabGitLab Docs · Merge trains (Premium · Ultimate)

GitLab에서는 머지 큐를 ‘머지 트레인’이라 부른다

docs.gitlab.com/ci/pipelines/merge_trains
GitLab Docs 머지 트레인 문서
GitLab Docs 화면 캡처
GitLab Docs 문서. MR(Merge Request, 머지 요청)을 줄 세워 앞선 MR과 합친 상태로 검사한다는 설명.
앞선 MR을 모두 합친 상태로 검사해, 같은 시간에 머지되는 MR끼리의 충돌을 대상 브랜치 전에 잡는다.
Premium·Ultimate 등급 기능이다. 머지 결과 파이프라인은 다른 MR을 고려하지 못한다.
이름만 다르고 핵심은 같은 누적 후보. GitHub이든 GitLab이든 같은 설계로 생각하면 된다.
교육용 가정강사 자료 parallel-ai-merge-train · 제품 실측 아님

병렬화는 기다림을, 범위 축소는 러너·분을 줄인다

방식 (후보 A·B·C)마지막 후보까지총 러너 사용량
전체 검사 12분씩 · 러너 1개36분36 러너·분
전체 검사 12분씩 · 러너 3개12분36 러너·분
영향 검사 5·7·9분 · 러너 1개21분21 러너·분
영향 검사 5·7·9분 · 러너 3개9분21 러너·분

가정: 후보 A·B·C 모두 성공, 대기 없음. 러너·분 = 검사 서버를 쓴 시간의 합(청구 단위). B가 실패하면 C를 다시 검사하는 시간이 더해집니다.

2부 · 스모크 테스트강사 운영 방식 · 단계 19

테스트가 틀리면, 통과는 아무것도 증명하지 못한다

스펙에이전트가 쓴 테스트에이전트가 쓴 구현CI 초록불실제 화면: 초록불 ≠ 동작기대값이 틀렸다또는 아무것도 검증 안 함테스트에 맞춘 코드버튼이 안 눌린다콘솔에 오류

에이전트가 테스트와 구현을 둘 다 쓰면, 서로 맞춘 채 틀릴 수 있습니다. 결국 직접 눌러 봐야 확정되는데, 이것이 스모크 테스트(앱이 켜지고 핵심 기능이 도는지 훑는 검사)입니다. → 6교시 · TDD(Test-Driven Development, 테스트 주도 개발)

2024-10-22Anthropic · computer use 공개 베타

AI가 사람처럼 화면을 보고 눌러 볼 수 있게 됐다: computer use

anthropic.com/news/3-5-models-and-computer-use
Anthropic 발표문: 사람처럼 화면을 보고 커서를 움직이고 클릭하는 computer use
Anthropic 발표문 화면 캡처 · 2024-10-22
Anthropic의 2024-10-22 발표문. Claude가 화면을 보고 커서로 클릭·입력하는 computer use를 공개 베타로 낸다는 내용.
“…by looking at a screen, moving a cursor, clicking buttons, and typing text.”화면을 보고, 커서를 움직이고, 버튼을 누르고, 글자를 입력해서.Anthropic · 2024-10-22
웹뿐 아니라 어떤 화면이든(데스크톱 앱 포함) 사람처럼 보고 누를 수 있다.
공개 때 “실험적이고 오류가 잦다”고 밝혔다. 화면 이미지로 판단해 웹 앱에는 덜 정확하고 무겁다.
브라우저 밖 앱을 확인할 때의 선택지. 웹 앱은 뒤의 브라우저 전용 도구가 낫다.
브라우저 자동화 · 대표 도구 Playwright MCP2025-03-13 · Microsoft

브라우저 자동화(접근성 스냅샷)의 대표 도구, Playwright MCP

playwright.dev/mcp/introduction
Playwright MCP 소개 문서: 접근성 스냅샷으로 브라우저 조작, 비전 모델 불필요
Playwright 공식 문서 화면 캡처
Playwright MCP 소개 문서. 브라우저를 접근성 스냅샷(화면 요소 목록)으로 조작해 비전 모델이 필요 없다는 설명.
화면 이미지 대신 요소 목록을 읽어 결과가 안정적이고 토큰이 적다. 비전 모델이 필요 없다.
브라우저 안의 웹 앱만 대상이다. 콘솔 오류·네트워크 증거는 DevTools MCP를 더한다.
웹 앱 스모크의 기본 도구: 로그인·입력·이동 같은 흐름 확인에 쓴다.
브라우저 디버깅 정보 읽기 · 대표 도구 DevTools MCP2025-09-23 · Chrome for Developers 공개 프리뷰

콘솔과 네트워크를 직접 읽게 하는 도구, Chrome DevTools MCP

developer.chrome.com/blog/chrome-devtools-mcp
Chrome DevTools MCP 발표 글
Chrome for Developers 화면 캡처 · 2025-09-23
Chrome 팀의 DevTools MCP 발표 글. 에이전트가 콘솔 오류·네트워크·성능을 직접 보게 하는 도구의 공개 프리뷰 소개.
“…effectively programming with a blindfold on.”사실상 눈을 가리고 프로그래밍하는 셈이다.Chrome for Developers · 2025-09-23
콘솔 오류·네트워크 요청·성능을 직접 읽어, 화면이 멀쩡해도 숨은 실패를 잡는다.
화면 흐름을 조작하는 도구라기보다 디버깅 도구다. 2025-09 공개 프리뷰로 시작했다.
스모크에서의 가치는 증거. Playwright로 흐름을 돌리고 DevTools로 증거를 모은다.
로그인된 내 브라우저 조작 · 대표 도구 Claude in Chrome2025-12-18 확대 · Claude Code 공식 문서

내 로그인 상태 그대로 눌러 보는 확장, Claude in Chrome

code.claude.com/docs/en/chrome
Claude Code 문서: Claude in Chrome 확장으로 웹 앱 테스트, 콘솔 로그 디버깅
Claude Code 공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 문서의 Chrome 연동 페이지. 확장으로 웹 앱을 테스트하고 콘솔 로그로 디버깅하며 로그인 상태를 공유한다.
내 로그인 상태 그대로 눌러 봐서, 관리자 화면처럼 로그인이 필요한 곳도 확인한다.
로그인 공유는 편리한 만큼 위험하다. 로그인·CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart, 사람 확인 퀴즈)를 만나면 멈추고 사람에게 넘긴다.
스모크에는 테스트 계정과 개발 환경만 쓴다. 내 실제 계정으로는 돌리지 않는다.
고르는 기준어떤 도구로 눌러 볼까

무엇을 확인하느냐로 도구를 고른다

무엇을 확인하나웹 앱이면브라우저 밖(데스크톱 앱)이면Playwright MCP접근성 스냅샷으로 조작Chrome DevTools MCP콘솔·네트워크·성능Claude in Chrome내 로그인 상태의 Chromecomputer use스크린샷 + 마우스·키보드

정답은 하나가 아닙니다. 웹 앱이면 Playwright MCP로 흐름, DevTools MCP로 증거가 무난한 조합입니다.

스모크 시나리오 쓰는 법강사 운영 방식

시나리오 한 개는 다섯 칸이면 된다

스모크 시나리오 1개결과1 목적: 어떤 약속을 확인하나2 전제: 주소 · 계정 · 데이터3 단계: 사용자가 하는 행동 순서4 판정: 화면에 보여야 할 것5 증거: 스크린샷 · 콘솔 · 네트워크PASS + 증거 파일FAIL + 어느 단계에서 왜

핵심 흐름 3~5개만. 로그인, 핵심 기능 한 번, 저장 후 다시 열기 정도가 적당합니다.

예시 파일smoke/login.md · Playwright MCP로 실행

시나리오는 저장소 안의 마크다운 파일이다

playwright.dev/mcp/introduction
Playwright MCP 문서: 시작 방법과 주요 기능
Playwright 공식 문서 화면 캡처 · 실행 방법
Playwright MCP 문서의 시작 방법 화면. 오른쪽 시나리오 파일을 이 도구로 실행한다.
# smoke/login.md 목적: 로그인하면 대시보드에 닿는다 전제: http://localhost:8000 계정 [email protected] (시드) 단계 1. /login 을 연다 2. 이메일·비밀번호 입력, [로그인] 3. 대시보드 제목을 확인 판정 - 주소가 /dashboard - "내 현황" 제목이 보인다 - 콘솔 error 0건 - 실패한 요청(4xx·5xx) 0건 증거: 단계마다 스크린샷
스크린샷 · 콘솔 로그통과했다는 말이 아니라 통과한 증거

“통과했습니다”가 아니라 증거 파일을 남긴다

에이전트가 앱을 띄워 시나리오 실행증거 폴더smoke/runs/날짜/PR 또는 이슈 댓글보고서 + 핵심 이미지머지 큐 앞 게이트사람이 증거를 보고 판정단계별 스크린샷 .png콘솔 로그 .txt실패한 네트워크 요청report.md (PASS/FAIL)

규칙: 증거 없는 PASS는 FAIL. 에이전트에게 파일 이름 규칙까지 시키고, PR에 보고서를 붙입니다.

오늘 본 것을 묶으면15교시 → 16교시

CI는 줄이고, 초록불은 직접 확인한다

PR 올라옴1 취소낡은 실행 중단3 재사용의존성·빌드 캐시2 거르기경로 필터·영향 분석4 묶기머지 큐·머지 트레인기본 브랜치항상 초록
  • 단가는 내렸고, 실행량이 4배가 됐다
  • 취소 → 거르기 → 캐시 → 큐 순서로 줄인다
  • 테스트가 틀리면 AI가 직접 눌러 보고 증거를 남긴다
4회차 · 16교시Agentic Engineering 실무 · 2026-11-24
4회차 · 16교시

페르소나 평가,
REA, 마지막 실습

Chrome DevTools MCP 발표 글
스모크동작하는가
UXAgent 논문 초록 화면
2025-02UXAgent
TinyTroupe 논문 arXiv 화면
2025-07TinyTroupe
REA 공식 사이트 첫 화면
최근 동향REA(Reverse Engineer Anything, 무엇이든 역공학)
2024-10-22 → 2025-09-2315교시 복습 · computer use · Chrome DevTools MCP(Model Context Protocol, 모델 컨텍스트 프로토콜)

스모크가 통과해도 남는 질문: 쓸 만한가

developer.chrome.com/blog/chrome-devtools-mcp
Chrome DevTools MCP 발표 글
Chrome for Developers 화면 캡처 · 15교시에서 본 화면
15교시에서 본 Chrome DevTools MCP 발표 글. 에이전트가 브라우저에서 콘솔 오류·요청 실패를 직접 읽는 스모크용 도구.
  • 스모크는 동작하는지를 본다: 열리고, 눌리고, 오류가 없는가
  • 버튼이 있어도 그 사람이 찾을 수 있는지는 모른다
  • 다음 장치: 특정 고객이 되어 눌러보게 한다
페르소나 평가강사 운영 방식 · 단계 20

페르소나 평가: 고객이 되어 눌러보고, 고친다

1. 페르소나 주입고객 한 명을 적은 파일2. 그 사람처럼 클릭브라우저로 앱 사용4. 고치고 재평가같은 페르소나로3. 피드백을 이슈로막힌 곳·증거·재현 개선 루프

사람 대신 에이전트가 고객 한 명(페르소나: 고객을 글로 적은 프로필)을 연기하며 앱을 씁니다. 막힌 곳은 이슈가 되고, 고친 뒤 같은 사람으로 다시 평가합니다.

LLM(Large Language Model, 대규모 언어 모델) 가상 사용자 시뮬레이션 · 대표 연구 UXAgent2025-02-18 · arXiv 2502.12561 · 2025-04-05 v3

LLM 가상 사용자 시뮬레이션의 연구 사례, UXAgent: 사용성 시험을 미리 돌려 본다

arxiv.org/abs/2502.12561
UXAgent 논문 초록 화면
arXiv 화면 캡처 · 논문 초록
UXAgent 논문 초록. LLM 에이전트가 수천 명의 가상 사용자처럼 웹사이트를 쓰게 해 사용성 시험을 돕는다는 내용.
참가자를 모으기 전에 수천 명의 가상 사용자로 시험해 연구 설계를 점검한다. 생각·행동·영상이 남는다.
가상 사용자일 뿐이라 실제 사람 실험을 대신하지 못한다. 논문도 사람 연구 이전 단계로 제안한다.
우리 과정에서는 페르소나 평가의 근거 ①: 사람에게 가기 전 막힌 곳을 싸게 찾는다.
LLM 페르소나 시뮬레이션 · 대표 도구 TinyTroupe2025-07-13 · 2026-03-28 · arXiv 2507.09788 · microsoft/TinyTroupe 0.7.0

LLM 페르소나 시뮬레이션 라이브러리, TinyTroupe: 성격과 목표를 준 가상 인물

arxiv.org/abs/2507.09788
TinyTroupe 논문 arXiv 화면
arXiv 화면 캡처 · 2025-07-13 제출 · 2026-06-09 v3
TinyTroupe 논문의 arXiv 화면. Microsoft의 가상 인물 시뮬레이션 Python 라이브러리를 다룬 논문.
성격·관심사·목표를 가진 가상 인물을 만들어 대화·행동시킨다. 광고 평가·포커스 그룹 등에 쓴다.
Microsoft의 실험적 라이브러리다. README는 결과를 “통찰용”으로만 쓰고 직접 의사결정에는 쓰지 말라고 한다.
그대로 쓰지 않아도, 페르소나를 상세히 정의해 주입한다는 발상을 가져온다. ②번 근거.
한계UXAgent 초록 · TinyTroupe README 경고문

가상 사용자는 사전 점검이다, 최종 판정이 아니다

스모크 테스트동작하는가?페르소나 평가쓸 만한가?실제 사용자 테스트진짜 사람이 확인 자동 클릭사람 확인

TinyTroupe README: 결과는 “insight generation”(통찰을 얻기)용이고 직접 의사결정용이 아닙니다. UXAgent도 실제 참가자 연구 이전 단계로 제안합니다.

입력 준비실제 고객 자료 → 페르소나 파일 · 강사 운영 방식

페르소나는 지어내지 않고, 실제 고객에서 뽑는다

실제 고객 자료정리페르소나 파일personas/*.md문의·불만 기록인터뷰 메모사용 로그 요약개인 식별 정보 제거공통 패턴으로 묶기 요약한 명씩 작성

문의·불만·인터뷰에서 반복되는 사람 유형을 한 명씩 적습니다. 이름·연락처 같은 식별 정보는 지웁니다.

예시 · 가상 인물personas/seoyeon.md

페르소나 파일: 목표와 포기 조건까지 적는다

# 페르소나: 서연 (가상) 누구 38세 사무직, 반려견 2마리를 키움 목표 점심시간 10분 안에 예약 변경 환경 스마트폰, 지하철, 한 손 조작 버릇 약관은 안 읽음. 용어가 낯서면 바로 전화를 검토함 포기 같은 화면에서 2번 막히거나 3분이 넘으면 그만둠 근거 최근 문의 기록 중 ‘예약 변경’ 관련 반복 불만
personas/seoyeon.md누구인가나이 · 직업 · 맥락목표이 앱으로 하려는 일능력과 환경기기 · 숙련도 · 인내심버릇과 성격읽는 방식 · 의심하는 것그만두는 조건포기하는 순간
실행페르소나 + 과업 한 줄 + 브라우저 도구 · 강사 운영 방식

실행: 과업은 한 줄, 증거는 파일로

$ claude "personas/seoyeon.md 를 읽고 그 사람이 되어 localhost:8000 에서 '예약 변경'을 해 보세요. - 브라우저 도구로 직접 클릭 - 단계마다 보이는 것과 누른 이유를 한 줄 - 포기 조건에 닿으면 멈추고 이유 기록 - 결과는 evals/2026-11-24/seoyeon.md" ✓ evals/2026-11-24/seoyeon-01.png … ✓ evals/2026-11-24/seoyeon.md
평가 에이전트페르소나·과업 한 줄브라우저 도구Playwright MCP증거 저장스크린샷·기록·요약내 앱화면·콘솔 돌려줌 클릭·입력
관찰 항목페르소나 평가 · 한 사람, 한 과업마다 채움

관찰 항목: 판정보다 증거 한 줄

항목묻는 것수월헤맴막힘
과업 완수목표를 이루었나막힘 없이 완수헤맨 뒤 완수포기
찾기필요한 버튼·메뉴를 찾았나첫 화면에서2~3군데 뒤짐못 찾음
이해문구·용어를 이해했나바로 이해추측해서 진행오해하거나 전화 검토
신뢰·오류오류·불안 요소가 있었나없음경고·지연 있음오류로 중단
수고단계 수·시간이 적절한가기대 이내1.5배 이내포기 조건 초과

항목마다 수월·헤맴·막힘 중 하나. 각 칸에는 스크린샷 번호나 기록 줄을 붙입니다. 증거 없는 판정은 이슈로 만들지 않습니다.

이슈 원장 연결14교시 이슈 원장 · 강사 운영 방식

피드백은 이슈로: 재현 경로와 증거를 붙인다

제목 [페르소나] 예약 변경 버튼이 없어 포기 페르소나 seoyeon (포기 조건: 3분 초과) 재현 홈 → 내 예약 → 카드에 ‘취소’만 있음 증거 evals/2026-11-24/seoyeon-03.png 반응 “취소하고 다시 잡아야 하나?” 기대 예약 카드에 ‘변경’ 노출 라벨 persona-eval · ux · p1
관찰 로그페르소나가 막힌 단계분류버그 · 문구 · 흐름 · 접근성이슈제목 · 재현 경로 · 증거 · 기대워커수정 PR재평가같은 페르소나
자기 개선 루프코디네이터 + 이슈 원장 + 페르소나 평가 · 강사 운영 방식

자기 개선 루프: 평가가 다음 배치를 만든다

  • 코디네이터가 평가 에이전트를 부르고, 결과를 이슈로 받는다
  • 워커가 이슈를 고치면 테스트·스모크를 거쳐 머지
  • 같은 페르소나로 재평가. 멈춤 조건은 막힘 0 또는 반복 상한
평가 에이전트페르소나 N명이슈 원장피드백 → 이슈코디네이터워커들워크트리별 수정멈춤 조건통과 또는 상한점검 통과테스트·스모크 평가배치PR판단
질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: TinyTroupe · 사람 테스트의 대체가 아니다 · 페르소나는 어디서 오나 · 페르소나 파일 예시 · 눌러보게 하기 · 관찰 항목 · 피드백을 이슈로 · 자기 개선 루프

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
강사 운영 방식페르소나 평가 실행 화면 · 교체 예정

제 서비스에서 돌리는 모습

실제 고객 페르소나(강사 자료)평가 에이전트브라우저로 클릭GitHub 이슈프로젝트 보드강사 운영 중인서비스워커 수정PR → 머지 주입눌러보기피드백배포
직접 도식 · 강사 실제 화면으로 교체 예정
역공학 MCP · 대표 도구 REA최근 동향 · 2026-10-28 README 확인 · github.com/morluto/rea · rea.tools

역공학(리버스 엔지니어링) MCP의 예, REA: 소스 없이 앱의 동작을 조사한다

github.com/morluto/rea
REA GitHub 저장소 첫 화면: Reverse engineer anything with agents
GitHub 저장소 화면 캡처 · 2026-10-29
REA GitHub 저장소 첫 화면. 제목은 “에이전트로 무엇이든 역공학”(Reverse engineer anything with agents).
“One MCP for reverse engineering across binaries, applications, and runtime behavior.”바이너리·애플리케이션·실행 중 동작을 아우르는, 역공학(완성품을 뜯어 원리 파악)용 MCP 하나.REA README
소스 없이 앱·바이너리·웹사이트가 어떻게 동작하는지 조사하고, 근거와 한계를 함께 돌려준다. 분석은 로컬에서 한다.
대상에 따라 Hopper·Ghidra·IDA 등 별도 분석 도구가 필요하다. 허가받은 소프트웨어에만 쓴다.
에이전트 도구가 내 앱 테스트를 넘어 남의 앱 조사로 넓어지는 최근 동향의 예.
2026-10-28 README 확인REA 조사 흐름

REA 쓰는 법: 에이전트에게 묻고, 근거를 받는다

github.com/morluto/rea · How REA works 그림
REA 조사 흐름: 질문, 조사와 추적, 근거 읽기, 에이전트가 활용
README 그림 화면 · 질문 → 조사·추적 → 근거 → 활용, 추가 질문으로 반복
REA README의 ‘How REA works’ 그림. 질문 → 조사·추적 → 근거 읽기 → 에이전트 활용, 추가 질문으로 반복.
# 설치는 각자. 붙인 뒤에는 평소처럼 묻는다 에이전트에게 Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project. 번역 Notes 앱의 검색이 어떻게 동작하는지 설명하고, 근거를 보여 주고, 내 프로젝트에 비슷한 기능을 만들어 줘. ! 대상에 따라 Hopper · Ghidra · IDA, Node.js, Chrome 계열 브라우저 등 필요
2026-10-28 README · 가이드 확인REA 분석 대상 · RL(Reinforcement Learning, 강화학습) 환경 만들기

REA는 앱 안을 넓게 들여다보되, 허가받은 소프트웨어에만 쓴다

github.com/morluto/rea · 네이티브 분석 예시
REA가 Hopper 안에서 분석 브리지를 실행하는 화면
README 이미지 · Hopper 안에서 네이티브 바이너리 분석
Hopper(바이너리 분석 앱) 안에서 분석을 돌리는 화면. 분석 대상은 /usr/bin/true.
rea.tools/guides/rl-environments
REA 가이드: Build RL environments
가이드 화면 캡처 · 녹화한 웹앱 세션을 에이전트용 환경으로
REA 가이드 ‘RL 환경 만들기’. 녹화한 웹앱 세션을 AI 에이전트 훈련·시험용 환경으로 바꾼다(RL: 강화학습).
네이티브 바이너리·JS/Electron·웹·.NET·APK(Android Package Kit, 안드로이드 앱 설치 파일)까지 분석 대상이 넓다. 녹화한 웹앱 세션을 에이전트용 환경으로 바꾼다.
내 소유이거나 분석 허가를 받은 소프트웨어에만 써야 한다는 README 면책이 있다.
에이전트를 같은 조건에서 재현해 평가하는 환경을 만드는 방향으로 도구가 확장되고 있다.
실습 · 약 25분18단계 중 16·17·18단계 · 이슈별 워크플로우 9–12 · 프롬프트와 스모크

이슈 하나를 PR에서 스모크까지 보내고, 결과는 코드 대신 스모크로 확인한다

9–10 PR → CI이슈 하나, PR 버전 점검11 스쿼시 머지사람 승인 뒤 한 커밋12 머지 후 스모크합쳐진 앱을 눌러 본다18 다음 루프유지 · 수정 · 추가17 피드백 이슈증거 붙여 원장에17 페르소나 평가고객이 되어 눌러 본다

저는 코드를 읽지 않습니다. 하네스에게 시키고, 돌려서 확인합니다. 사람이 보는 것은 내 답, 정리된 결정, 스모크 결과 세 가지입니다. 이것은 제 방식이고, 내 하네스에 맞게 바꿔도 됩니다.

설계 대화 체크리스트이슈별 워크플로우 9–12 · 18단계 중 17·18 · 에이전트가 묻지 않으면 내가 먼저

하네스는 PR 전에 여섯 가지를 하나씩 묻는다

단계하네스가 물을 것예시 답빠지면
9 PRPR(Pull Request, 변경 병합 요청) 하나의 범위는이슈 #7 하나, 수용 조건 첨부일이 섞여 리뷰가 어렵다
10 CI(Continuous Integration, 지속적 통합)필수 점검과 실패 시 처리는테스트 전부 통과, 실패하면 머지 불가“내 컴퓨터에선 됐다”로 머지
11 머지누가 승인하고 어떤 방식인가내가 승인, 스쿼시main이 어지러워진다
12 스모크무엇을 눌러 보고, 실패하면로그인 → 예약 변경, 후보 제외통과한 줄 알고 다음 일로
17 피드백누구로 평가하고 이슈는 어떻게서연 1명, 증거 있는 것만막연한 불만이 이슈로 쌓인다
18 다음 루프무엇을 하고 언제 멈추나이슈 3건, 최대 2바퀴사소한 개선이 끝없이 이어진다
그대로 붙여 넣어도 됩니다각자 쓰는 에이전트 · 질문 → ADR(Architecture Decision Record, 아키텍처 결정 기록) 한 건 → 사람 승인

첫 프롬프트로 질문부터 시키고, 다섯 가지를 보고 승인한다

> 12교시에서 끝낸 이슈 #7로 이어서 한다. (예약 앱, PoC(Proof of Concept, 개념 증명)) 아직 PR은 만들지 마. 9–12단계(PR → CI → 스쿼시 머지 → 머지 후 스모크)와 17(페르소나 평가 → 피드백 이슈), 18(다음 루프)에 필요한 질문을 한 번에 하나씩 해 줘. 질문마다 추천 답과 이유를 주고 8개 안에서 끝내. 끝나면 docs/adr/에 ‘전달 흐름’ ADR 한 건을 쓰고, 내가 “승인”이라고 할 때까지 기다려.
  1. 내가 한 답이 ADR에 그대로 들어 있다
  2. PR 범위·CI 필수 점검·머지 방식이 한 줄 요약으로 읽힌다
  3. 스모크 시나리오 표가 있다 (핵심 흐름 + 막혀야 할 요청)
  4. 스모크·CI 실패 시 처리가 적혀 있다
  5. 평가 반복 상한이 있고, 피드백 이슈에는 증거가 붙는다
이슈별 워크플로우 9–10단계하네스에게 시키고 요약을 받는다 · 결과 화면은 예시

PR과 CI는 만들게 시키고, 결과 요약을 보여 달라고 한다

> ADR대로 이슈 #7의 PR을 만들어 줘. 끝나면 이것만 보여 줘. - 수용 조건별 충족 여부 - 테스트·CI 결과 요약 (실패하면 어느 것) - 이 PR에서 눌러 볼 스모크 범위 - main에 ‘CI 통과 필수’ 규칙이 켜져 있는지 # 하네스가 보여 준 결과 (예시) 수용 조건 1/1 충족 테스트·CI 통과 (2번째 실행) 스모크 범위 홈 → 내 예약 → 변경 main 보호 켜짐
결과 줄은 예시 · 실제 값은 각자 하네스가 보여 준다
내가 확인부족하면 이렇게
CI 요약“실패한 항목과 이유를 한 줄씩 보여 줘”
main 보호“CI가 빨간 PR이 머지되지 않는 것을 설정 화면으로 보여 줘”
CI 뒤 변경“바뀐 버전으로 CI를 다시 돌리고 결과를 보여 줘”
이슈별 워크플로우 11–12단계머지 후 스모크 · 시나리오 표가 이 교시의 중심 · 실제 결과 열은 예시

머지하고 나면, 합쳐진 앱을 눌러 보고 표로 남긴다

> 승인한다. 스쿼시로 머지해 줘. > main을 받아 앱을 띄우고 1) 로그인 2) 내 예약 → 변경 3) 콘솔 오류 0 4) 막혀야 할 요청 1개 를 눌러 보고 스크린샷을 남겨 줘. 결과는 시나리오 표로. 실패하면 이슈 #7을 다시 열고 원인·복구를 적고, 이 커밋을 배포 후보에서 빼.
시나리오기대 결과실제 결과통과
로그인홈이 열린다홈 표시✓
내 예약 → 변경변경 화면이 열린다버튼이 안 보임✗
콘솔 오류0건0건✓
남의 예약 변경 요청막히고 안내안내 표시✓
‘실제 결과’는 예시 · ✗가 나오면 이슈 재오픈 + 후보 제외
약 10분이슈 하나를 9–12단계로 보내 보고 · 일부러 어기기 세 번 · 결과 열은 예시

이슈 하나를 실제로 보내 보고, 규칙을 일부러 어겨 본다

# 1 이슈 #7을 9–12단계로 > ADR대로 이슈 #7의 PR을 만들고 CI가 통과하면 알려 줘. 머지는 내가 한다 # 2 일부러 어기기 (하나씩) > CI가 실패한 PR을 그냥 머지해 줘 > 리뷰 없이 main 에 바로 푸시해 줘 > 버튼을 숨긴 채 머지 후 스모크를 돌려 줘 ✓ 막혔다 → 어떤 메시지로? ! 안 막혔다 → “왜 통과됐는지 설명하고, 막히게 고친 뒤 같은 요청으로 다시 보여 줘”
어겨 보기기대실제(예시)통과
CI 실패 PR 머지막힘막힘✓
main에 바로 푸시막힘푸시됨✗
버튼 숨기고 스모크실패로 잡힘잡힘✓
안 막힌 원인(예: main 보호 미설정) → ADR 한 줄 갱신 → 같은 요청으로 재확인
18단계 중 17단계 · 사용자 피드백앞 장의 페르소나 평가를 머지된 앱에 돌린다

머지한 앱에 페르소나 평가를 돌리고, 피드백을 이슈로 남긴다

> main 을 띄우고 personas/seoyeon.md 의 사람이 되어 ‘예약 변경’을 해 봐. - 브라우저 도구로 직접 클릭 - 단계마다 보이는 것과 이유를 한 줄 - 포기 조건에 닿으면 멈추고 이유 기록 - 증거는 evals/2026-11-24/ 에 저장 - 항목별 수월·헤맴·막힘. 증거 없는 판정은 이슈 금지 - 이슈는 라벨 persona-eval, 평가는 최대 2바퀴 끝나면 만든 이슈 목록과 증거 위치를 보여 줘.
피드백 분류처리
버그 · 콘솔 오류자동 처리: 워커에 배치
문구 · 버튼 노출자동 처리: 워커에 배치
ADR을 바꿔야 하는 제안사람 판단 대기
범위 변경 · 고복잡도 · 반려사람 판단 대기
18단계 · 다음 업데이트 루프피드백 이슈에서 다음 계획으로 · 결과 줄은 예시

피드백은 다음 계획이 되고, 새 이슈로 처음부터 이어진다

> 피드백 이슈를 보고 다음 계획을 유지 · 수정 · 추가 · 보류로 나눠 줘. 바뀌는 결정이 있으면 어느 ADR을 고칠지 알려 주고, 이미 내린 결정과 증거는 지우지 마. 평가 2바퀴 또는 열린 이슈 0이면 멈춰. # 하네스가 보여 준 결과 (예시) 유지 예약 목록·취소 (막힘 없음) 수정 ‘변경’ 노출 → 이슈 #14 추가 변경 알림 → ADR 갱신 필요 보류 결제 화면 → 사람 판단
피드백 이슈원장에 쌓인 것분류자동 처리 · 사람 판단다음 계획유지 · 수정 · 추가Spec · ADR 갱신바뀐 결정만 기록새 이슈 등록이슈별 워크플로우 1–12
다음 회차(5회차 12-01)까지 해 볼 것누적 실습 ‘나만의 하네스 만들기’ · 형태는 자유

내 하네스를 한 번 더 키운다: 무엇을 하는 하네스인지는 내가 정한다

  • 하네스의 기능과 스펙은 내가 정한다. 정해진 형태나 구조는 없다
  • 오늘까지 소개한 장치 가운데 내 하네스에 필요한 것을 골라 하네스에게 시킨다
  • 방법은 오늘과 같다: 하네스의 질문 → 결정 문서 → 승인 → 시키기 → 스모크로 확인
  • 오른쪽 그림은 이런 식으로도 만들 수 있다는 예시일 뿐이다
코디네이터원장을 읽고 배치워커 A·B·C이슈별 워크트리이슈 원장열린 이슈 · 기록점검테스트 · 스모크 · 페르소나 배치PR마다결과·이슈다음 배치
예시 메뉴내 하네스에 필요한 것만 골라 쓴다 · 하네스에게 물어볼 것 포함

고를 수 있는 장치 여섯 가지: 필요한 것만 골라 하네스에게 시킨다

장치하네스에게 물어볼 것이런 식으로 (예시)남기면 좋은 기록
코디네이터무엇을 읽고 언제 멈추나이슈 원장을 읽고 워커에 배치프롬프트 · 배치 기록
워커이슈마다 어떻게 격리하나이슈별 워크트리·브랜치브랜치·PR 목록
점검통과 기준은 무엇인가테스트(CI) + 머지 후 스모크 시나리오 표스모크 표 · 화면 · 로그
페르소나 평가누구로, 이슈는 어떻게페르소나 파일, 관찰 항목, 증거 있는 이슈페르소나 파일 · 이슈
멈춤·인계언제 사람에게 넘기나완료 기준 또는 반복 상한종료 사유 · 인계 기록
설계 기록왜 그렇게 정했나설계 대화 → 결정 문서 → 사람 승인대화 기록 · 개요·ADR·스펙
5회차 12-01집에서 이어서 · 있는 만큼만 나눕니다

다음 회차까지 해 볼 것과, 그때 나누면 좋은 것

해 볼 일
1 내 하네스가 할 일(기능·스펙)을 한두 문장으로 적는다
2 필요한 장치를 골라 하네스에게 시키고, 스모크로 확인한다
3 돌릴 때마다 시간·토큰·결과를 한 줄 적는다 (실패한 회차도)
5회차에 나누면 좋은 것
쓴 프롬프트 하나 (잘 먹힌 것 또는 안 먹힌 것)
스모크 표 한 장 (시나리오·기대·실제 결과)
막힌 곳 하나와 고친 방법 (못 고쳤으면 그대로)
구조도 한 장 (있다면)

코드는 읽지 않아도 됩니다. 다 못 해도, 못 쟀어도 괜찮습니다. 있는 만큼 가져와 이야기로 나눕니다.

2026-12-015회차 · 형식 자유로 나누고 이야기합니다 · 예시 값은 가상

자유롭게 나누고 이야기합니다: 돌릴 때마다 한 줄 남겨 두면 이야깃거리가 됩니다

자유롭게 나누기화면·말·데모이야기와 토론질문 카드는 선택스터디로 이어 가기원하는 사람끼리
돌린 회차시간토큰(입력/출력)처리한 이슈스모크결과실패 원인 → 고친 곳
142분1.8M / 0.2M1 / 32 / 4실패워커 둘이 같은 파일 수정 → 워크트리 분리
231분1.3M / 0.2M3 / 34 / 4성공-

토큰은 도구의 사용량 화면이나 API(Application Programming Interface, 프로그램 연동 규약) 응답의 usage에서 읽습니다. 실패한 회차도 지우지 않습니다.

증상별설치 문제가 아니라 대화 문제가 대부분 · 4회차 마무리, 다음은 5회차 2026-12-01

막힐 때: 하네스에게 이렇게 다시 말한다

증상이렇게 다시 말한다
질문 없이 바로 PR을 만든다“질문이 끝나고 내가 ADR을 승인하기 전에는 PR을 만들지 마.”
CI가 빨간데 머지하려 한다“CI가 통과하기 전에는 머지하지 마. CI 통과 필수 규칙이 켜져 있는지 보여 줘.”
스모크가 너무 쉽게 통과한다“핵심 흐름을 하나 더 눌러 보고, 스크린샷을 증거로 저장해.”
스모크에서 막혀야 할 요청이 통과됐다“방금 요청이 왜 통과됐는지 설명하고, 막히게 고친 뒤 같은 요청으로 다시 보여 줘.”
스모크 표에 실제 결과·화면이 없다“시나리오마다 실제 결과와 스크린샷 파일 위치를 표에 채워 줘.”
페르소나가 항상 성공한다“포기 조건을 더 엄하게 하고, 이 사람이 모르는 것은 모른 채 행동해.”
피드백 이슈가 막연하다“재현 경로와 증거 스크린샷이 없는 이슈는 만들지 마.”
루프가 끝나지 않는다“반복 상한과 열린 이슈 0 중 하나에 닿으면 멈추고 인계 기록을 써.”