Files

14 KiB

74일차 수강 안내 · 수업 준비부터 마칠 때까지

  • 일자: 2026-10-28 (수) · 74일차
  • 주제: 모델·Prompt·Workflow 버전 관리와 운영 체계 (바뀐 것 남기기 · 게이트 · 카나리 · 되돌리기)
  • 실습 폴더: Last3Mon/74 · 강의 자료: Lecture/74
  • 환경: 65일차 n8n 2.42.6 + OpenAI API 키만(gpt-4.1-mini, gpt-5.4-nano) + 74일차 판 데이터 API(지시문 저장소 · 릴리스 · 점검 기록 · 배포 정책) + CLI 코딩 에이전트 하나. Ollama는 쓰지 않습니다.
  • 이 문서: 오늘 하루 내가 할 일을 수업 준비부터 마칠 때까지 순서대로 모은 수강 안내입니다. 수업 중에도 띄워 두고 어디까지 왔는지 확인하세요.
flowchart LR
  P["전날<br/>준비 · v1 · v2 게시"] --> M["아침<br/>켜기 · doctor"] --> L1["1교시 강의 · 2교시<br/>Lab 01 실습 5개<br/>diff · version · 흔들림 · 저장소"] --> L2["3교시 강의 · 4교시<br/>Lab 02 실습 5개<br/>릴리스 · 게이트 · 기준선 · 망가진 릴리스"] --> L3["5교시 강의 · 6교시<br/>Lab 03 실습 5개<br/>배포 · 카나리 · 점검 · 정책"] --> V["7~8교시<br/>tver"] --> E["마친 뒤<br/>reset · 75 준비"]

0. 하루 한눈에

교시 시간 할 일 문서 끝났다는 표시
전날 약 10분 자료 받기 · n8n · 74일차 데이터 API · v1 · v2 게시 · doctor PREP ready
1 09:00~09:50 개요 · 1단계 강의 (무엇이 바뀌나) 개요 1~14장, 1단계
2 10:00~10:50 Lab 01 실습 5개 (예제 13 · 과제 12) Lab 01 lab01-challenge · lab01-challenge2 통과
3 11:00~11:50 2단계 강의 (릴리스와 배포 전 게이트) 개요 15~21장, 2단계
4 12:00~12:50 Lab 02 실습 5개 Lab 02 my-golden으로 1.2.0 FAIL, lab02-challenge2 통과
- 13:00~14:00 점심
5 14:00~14:50 3단계 강의 (배포 · 되돌리기 · 카나리) 개요 22~28장, 3단계
6 15:00~15:50 Lab 03 실습 5개 Lab 03 lab03-challenge · lab03-challenge2 통과, --reset
7 16:00~16:50 바이브 코딩 tver: 요청서 → TODO → SPEC → IMP-PLAN → 만들기 → 설치 VIBE-REQ-TVER → VIBE-Q-TVER Doc/*.md · R1~R6 · R8 · R14 · pytest
8 17:00~17:50 바이브 코딩 발표 · 4단계 정리 (오늘의 의미 · 효과 · 회사에서 쓰는 법) · 75일차 예고 4단계 정리, 진행 최종 프로젝트 체크리스트

1. 전날 준비 (약 10분)

1.1 자료 받기

cd ~/aio-01d4-stu && git pull

1.2 n8n과 74일차 데이터 API 켜기 (Ollama는 끔)

sudo systemctl disable --now ollama 2>/dev/null   # WSL에 설치한 Ollama가 있으면 끄고 자동 시작도 끔
cd ~/aio-01d4-stu/Last3Mon/65/n8n
docker compose rm -sf ollama                      # Ollama 컨테이너가 있으면 지움 (없으면 그냥 지나감)
docker compose start
cd ~/aio-01d4-stu/Last3Mon/74/data-api
docker compose up -d --force-recreate             # 73일차 판을 74일차 판(+ 지시문 저장소 · 릴리스 · 점검 기록)으로 바꿈
sleep 3                                           # 데이터 API가 뜰 때까지
curl -s localhost:8800/releases/helpdesk | head -c 80
  • 73일차 판별 LLM 멈춤 연습을 되돌리지 않았다면: cd ~/aio-01d4-stu/Last3Mon/73 && uv run tools/flow.py llm up.

1.3 v1 · v2 게시 · 준비 확인

cd ~/aio-01d4-stu/Last3Mon/74
uv run tools/flow.py push reference/helpdesk-v1.json reference/helpdesk-v2.json
uv run tools/flow.py call rel-v1 requests/faq-vpn.json -v
uv run tools/flow.py doctor        # 마지막 줄 ready

1.4 미리 읽기 (선택, 5분)

PREP 3절: 어제와 오늘 답이 다르면 무엇부터 확인할까? 그리고 7교시 요청서.

준비물

노트북과 충전기, WSL의 Docker, WSL 창 두 개, 브라우저, 68일차 ~/vibe/tflow · 73일차 ~/vibe/tscan (없어도 됨).

2. 수업 당일 아침 (09:00 전)

  1. 노트북을 껐다 켰다면 1.2를 다시 합니다 (릴리스 · 점검 기록은 처음으로 돌아갑니다 — 괜찮음).
  2. 터미널 두 개, 둘 다 cd ~/aio-01d4-stu/Last3Mon/74. ① 에이전트(codex/claude/agy), ② 확인(diff·push·test·gate·release).
  3. 터미널 ②에서 uv run tools/flow.py doctor → ready, uv run tools/flow.py release helpdesk.
  4. cp templates/CHANGELOG-TEMPLATE.md my-work/CHANGELOG.md, cp templates/RELEASE-CHECKLIST-TEMPLATE.md my-work/RELEASE.md, my-work/PROMPTS.md.

3. 실습할 때마다 같은 순서 (오늘은 "바뀐 것 → 버전 → 게이트")

flowchart LR
  A["① 무엇이 바뀌나<br/>diff · call"] --> B["② 요청문을<br/>메모장에"] --> C["③ 에이전트에게"] --> D["④ 에이전트가<br/>my-work · check"] --> E["⑤ 내가<br/>push · test · gate"]
  E -->|✘| F["⑥ 실패 줄 · 보고서 경로<br/>그대로 붙여 주기"] --> C
  E -->|✔| G["⑦ CHANGELOG 한 줄"]
  • 배포 · 카나리 · 되돌리기 · 정책은 내가 flow.py release로 합니다. 끝나면 uv run tools/flow.py release helpdesk --reset.
  • 후보는 --set release=...로 고정해 시험합니다.
  • fault prompts error(Lab 01 과제 2)는 끝나면 반드시 되돌립니다 (fault prompts ok).

4. 1~2교시 · 1단계 · 무엇이 바뀌나

1교시는 강의, 2교시는 Lab 01 (50분, 실습 5개).

순서 할 일 파일 · 웹훅 확인 (터미널 ②)
예제 1 (10분, 에이전트 없이) v1 → v2의 바뀐 것 7개 읽기 reference/helpdesk-v1.json · v2.json diff reference/helpdesk-v1.json reference/helpdesk-v2.json [--full], call rel-v1 -v · call rel-v2 -v → CHANGELOG.md 1절
예제 2 (12분) 모델을 한 곳(릴리스 정보)에서, 답마다 version cp reference/helpdesk-v1.json my-work/helpdesk.json → 웹훅 my-helpdesk로 push my-work/helpdesk.json → test cases/lab01.json -v
예제 3 (8분, 에이전트 없이) 같은 테스트를 v1 · v2에 3번씩, 시간 (그대로) test cases/lab01-compare.json --webhook rel-v1 --repeat 3 · rel-v2, bench rel-v1 · rel-v2 requests/faq-vpn.json -n 5
과제 1 (10분) 지시문을 저장소(/prompts/helpdesk/p1)에서 my-work/helpdesk.json 고치기 test cases/lab01-challenge.json -v, test cases/lab01.json -v
과제 2 (10분) 먼저 겪기: fault prompts error → call → fault prompts ok. 그다음 저장소가 멈추면 기본 지시문(fallback) my-work/helpdesk.json 고치기 test cases/lab01-challenge2.json -v (자동으로 고장 켜고 끔), lab01-challenge, doctor

(명령 앞에는 모두 uv run tools/flow.py가 붙습니다.)

5. 3~4교시 · 2단계 · 릴리스와 게이트

3교시는 강의, 4교시는 Lab 02 (50분, 실습 5개).

순서 할 일 확인
예제 1 (12분) 운영 중인 릴리스를 /releases/helpdesk에서, 본문 release면 고정, 없는 릴리스 400 push → test cases/lab02.json -v, test cases/lab01-challenge.json, test cases/lab01-challenge2.json
예제 2 (8분, 에이전트 없이) 네 릴리스를 약한 golden.json으로 게이트, 1.2.0 답 읽기 gate cases/golden.json --set release=1.0.0 --max-p95 3 (1.1.0 · 1.2.0 · 2.0.0도), call my-helpdesk '{... "release": "1.2.0"}' -v → RELEASE.md 1절
예제 3 (7분, 에이전트 없이) 기준선: 1.0.0 · 2.0.0 시간, golden 3번 반복 bench my-helpdesk requests/faq-vpn.json -n 5 --set release=1.0.0 (2.0.0도), gate cases/golden.json --set release=1.0.0 --repeat 3 --max-p95 3
과제 1 (13분) 1.2.0을 막는 cases/my-golden.json (1.0.0 · 1.1.0은 PASS), 2.0.0 판단 gate cases/my-golden.json --set release=... 네 번, RELEASE.md 1절
과제 2 (10분) 망가진 릴리스 2.1.0(p9): 404는 400 release broken, 장애(500 · 시간 초과)만 기본 지시문 test cases/lab02-challenge2.json -v, gate cases/my-golden.json --set release=2.1.0 (고치기 전 PASS → 뒤 FAIL), lab02

6. 5~6교시 · 3단계 · 배포 · 되돌리기 · 카나리

5교시는 강의, 6교시는 Lab 03 (50분, 실습 5개).

순서 할 일 확인
예제 1 (8분, 에이전트 없이) release helpdesk 1.1.0 → 확인 → release helpdesk 1.0.0 call my-helpdesk requests/faq-vpn.json -v, test cases/lab03.json -v, RELEASE.md 3절
예제 2 (12분) 카나리: 이름 글자 코드 합 % 100 < percent, 같은 사람은 같은 쪽, 고정이 먼저 push → test cases/lab03-canary.json -v, test cases/lab02.json, release helpdesk --reset
예제 3 (7분, 에이전트 없이) 나쁜 카나리(1.2.0 50%)를 보고 끄기 test cases/lab03-watch.json -v → release helpdesk --no-canary → test cases/lab03-watch.json --no-before -v → --reset
과제 1 (13분) 릴리스 점검 my-release-check: 질문 6개를 고정해 묻고 promote · rollback push my-work/release-check.json → test cases/lab03-challenge.json -v, call my-release-check '{"release": "2.0.0"}' -v
과제 2 (10분) 점검 결과를 /gates/helpdesk에 남기고, 정책(--require-gate on)으로 지난 것만 배포 test cases/lab03-challenge2.json -v, release helpdesk, --reset
  • 기록: RELEASE.md 2 · 3절, CHANGELOG.md 2절.

7. 7~8교시 · 바이브 코딩 tver

VIBE-REQ-TVER(요청서)를 먼저 읽고 VIBE-Q-TVER의 순서대로 갑니다: Doc/TODO.md → Doc/SPEC.md → Doc/IMP-PLAN.md(엔진 · TUI 단계) → 단계별 구현 → 확인 → uv tool install → 다른 폴더에서 사용. 요구는 14개(R1~R14)이고 50분 안에는 엔진 1 · 2단계 · TUI 1단계 · 설치까지, 나머지는 Doc/IMP-PLAN.md의 다음 단계로 집에서 이어 갑니다. 만드는 것은 n8n 워크플로우를 git에 버전으로 저장하고 두 버전을 노드 단위로 비교해 모델 · 지시문 · 흐름으로 나눠 보여 주는 TUI. 정답본 VIBE-A-TVER.md는 수업이 끝나면 git pull로 받습니다.

mkdir -p ~/vibe/tver/Doc && cd ~/vibe/tver
git init
# 에이전트는 Doc/TODO.md를 쓴 뒤에 켭니다: codex (또는 claude, agy)
시간 단계 확인
16:00~16:09 0 준비 · 1 요청서 → Doc/TODO.md (에이전트 없이) 할 일 ①~⑫ · 꼭 / 나중
16:09~16:15 2 Doc/SPEC.md → VIBE-Q 요구 표(R1~R14)와 비교 · commit 요구마다 확인 방법
16:15~16:20 3 Doc/IMP-PLAN.md (엔진 1~4단계 · TUI 1단계 · 설치) · commit 단계마다 체크리스트
16:20~16:44 4 구현: 엔진 1단계(R1~R4) → 엔진 2단계(R5 · R6) → TUI 1단계(R8), 막히면 5 문제 해결 팁 단계마다 pytest · 직접 실행 · commit
16:44~16:50 6 확인 · 7 uv tool install --editable . · 8 다른 폴더에서 tver cd ~/aio-01d4-stu/Last3Mon/74 && tver diff reference/helpdesk-v1.json reference/helpdesk-v2.json
  • 8교시: 1~2명 발표 (10분) → 4단계 정리 (35분: 오늘 한 일의 의미 · 효과 · 산업에서의 응용 · 면접 질문 · 최종 프로젝트 체크리스트) → 75일차 예고.

8. 마친 뒤

할 일 이유
uv run tools/flow.py release helpdesk --reset, fault prompts ok, doctor → ready 내일 처음 상태로 (정책 · 카나리 꺼짐)
PROMPTS.md, CHANGELOG.md, RELEASE.md 정리 최종 프로젝트 재료 (운영 체계)
my-work/*.json, cases/my-golden.json, ~/vibe/tver, ~/.tver/store 지우지 않기 75일차 비용 비교 · 79일차 tops
75일차 준비: 00-DAY75-PREP 사용량 · 비용

9. 막혔을 때 (오늘 공통)

증상 할 일
doctor의 releases · gates ✘ 데이터 API가 예전 판. 1.2의 74일차 --force-recreate
doctor에 release state is not the start state uv run tools/flow.py release helpdesk --reset
doctor에 fault switch is on uv run tools/flow.py fault all ok
늘 같은 릴리스 본문 release · --set을 붙였는지, 워크플로우가 /releases를 읽는지
카나리 · 정책 뒤 다른 테스트가 이상함 release helpdesk --reset
배포가 409 not gated 정책이 켜져 있음. 점검(또는 gate --set release=...)을 먼저, 끝나면 --reset
call my-helpdesk가 404 복사한 파일의 웹훅 경로를 바꿨는지, push했는지
같은 곳을 3번 고쳐도 실패 요청을 더 작게, 또는 reference/로 이어 가기

확인

  • 전날 74일차 데이터 API, v1 · v2 게시, doctor → ready
  • Lab 01: CHANGELOG.md 1절, lab01 3/3, v1 · v2 흔들림 비교, lab01-challenge 3/3, lab01-challenge2 4/4
  • Lab 02: lab02 5/5, 네 릴리스 게이트, 기준선, my-golden으로 1.2.0 FAIL, lab02-challenge2 5/5 · 2.1.0 FAIL
  • Lab 03: lab03 2/2, lab03-canary 6/6, 나쁜 카나리 4/6 → 6/6, lab03-challenge 3/3, lab03-challenge2 5/5, RELEASE.md
  • tver: Doc/TODO.md · SPEC.md · IMP-PLAN.md 먼저, 엔진 1 · 2단계 · TUI 1단계, pytest, 단계마다 commit, uv tool install
  • --reset · fault prompts ok, 75일차 준비