Files
aio-01d4-stu/Last3Mon/77/VIBE-A-TLOG.md
T

6.2 KiB
Raw Blame History

7교시 바이브 코딩 · tlog 정답본

강사용 정답본 · 학생 저장소에는 수업 뒤에 올립니다. 학생용: VIBE-REQ-TLOG.md → VIBE-Q-TLOG.md. 강사가 직접 만든 본: tlog/ (테스트 23개, uv tool install --editable .). 아래 숫자는 2026-10-31 강사 Mac에서 77일차 데이터 API와 n8n my-log-report(Lab 03 예제 2 정답)에 실제로 돌린 값입니다. 68일차부터 바이브 코딩은 CLI 에이전트로 다시 만들어 재지 않습니다 (요청문은 예시).

1. TODO 예 (요청의 말 → 할 일)

# 요청의 말 할 일 (내 말) 꼭 · 나중
① 파일 · API, 기간 · 태그, 끝날 포함 --file · --url, --from · --to(포함) · --tag · --source 꼭
② n8n과 똑같은 숫자 AGENTS.md 3절 정의 그대로, 반올림까지 JavaScript와 같게, 0건이면 0 꼭
③ 원인으로 묶기 · 넘긴 주제 · 다시 묻는 주제 problems: failures · unanswered_topics · repeat_topics 꼭
④ 평소보다 나빴던 시간 5건 · 3배 · 1건 이상, 시간순 꼭
⑤ JSON, 같은 칸 이름 --json = my-log-report 응답과 같은 칸 꼭
⑥ 단계 · 비용 steps(값 > 0만) · cost_usd · cost_per_run · llm_calls 나중
⑦ SLO · 종료 코드 slo, 기준 바꾸기, 위반이면 4 꼭
⑧ 지난주와 나란히 compare 나중
⑨ tretry 기록 시도 줄 → 실행 한 줄 나중
⑩ 주간 보고 마크다운 weekly (LLM 없음) 나중
⑪ 화면 ui: 요약 · 묶음 · 그 실행들 · [t] 꼭
⑫ 종료 코드 0 · 1 · 2 · 4 꼭
끝 n8n 없이 시험 · 같은 숫자 확인 두 주 사본 · 가짜 데이터 API 꼭

2. 요청문 (처음 한 번 + 다음 단계 한 줄)

단계마다 긴 요청문을 쓰지 않습니다. 할 일은 이미 Doc/SPEC.md · Doc/IMP-PLAN.md에 있으니, 에이전트가 그 파일을 읽게 하면 됩니다.

처음 한 번

Doc/SPEC.md 와 Doc/IMP-PLAN.md 를 읽고 체크 안 된 첫 단계만 만들어 줘. uv 프로젝트, 명령 이름 tlog, 코드와 화면 글자는 영어.
끝나면 IMP-PLAN 체크를 표시하고 확인 명령을 알려 줘. 다음 단계는 내가 말할 때까지 하지 마.

그다음 단계마다 (같은 한 줄)

확인했고 commit 했어. 다음 단계.
  • 그냥 "계속"만 치면 단계 두세 개를 한꺼번에 하거나 체크 · 확인 명령을 빼먹기 쉽습니다. 이 한 줄은 처음 요청의 약속(한 단계만 · 체크 · 확인 명령 · 멈춤)을 이어 가게 합니다.
  • 대화가 길어지면 새 세션에서 처음 요청을 다시 보냅니다. "체크 안 된 첫 단계"부터 이어집니다.
  • 에이전트가 단계 내용을 잘못 알았다면, 요청문을 길게 쓰기보다 SPEC · IMP-PLAN을 고치고 다시 시킵니다.

틀렸을 때만 · 고쳐 달라는 요청문 예

무엇이 틀렸나(보인 것) · SPEC의 어느 요구인가 · 어디만 고치나 · 무엇으로 확인하나, 넷을 적습니다.

tlog summary 가 두 주(10/19~10/30)를 602 runs 라고 해. n8n my-log-report 는 666 이야. SPEC R1 대로 끝날도 넣어야 해 (from <= started_at[:10] <= to).
load.py 의 날짜 거르기만 고치고, 10/30 하루만 물으면 64 runs, 두 주 666 인 테스트를 넣어 줘. 다른 파일은 건드리지 마.

3. 확인 기준과 강사 실측 (10/31, 77일차 데이터 API)

요구 기준 실측
R1 파일 · API, 날짜 포함 API 10/26 하루 → 70 · 16, --source live → 오늘 기록만 (가짜 서버 테스트)
R2 두 주 666 runs · errors 21 (3.15%) · p50 1205ms · p95 2537ms, 갈래 591 · 34 · 20 · 21
R2 빈 기간 11/02~11/06 0 · 0 · 0 (n8n과 같음)
R3 · R4 tlog problems 두 주 16 Search FAQ timeout · 5 Answer 429 · 와이파이 34 · 09시 16/16 · 15시 5/7 · 프린터 9.88% (8/81)
R5 같은 기간 my-log-report와 칸 비교 두 주 · 둘째 주 · 10/26 · 빈 기간 네 번 모두 18칸 중 다른 칸 0개
R6 단계 · 비용 FAQ p95 39 (646) · 답 p95 2509 (596) · 0.07836달러 · 0.000118 · 596
R7 tlog slo 둘째 주 SLO breach: error_rate, unanswered_rate · 종료 코드 4, 첫 주 --unanswered 0.06 → SLO ok · 0
R8 tlog compare 첫 주 → 둘째 주 total 309 → 357 (+48), error_rate 0 → 0.0588, p50 1252 → 1171 (−81), p95 2525 → 2598 (+73)
R9 tretry 기록 (scratch 파일, 시도 7줄) 3 runs · errors 1 (33.33%), 갈래 오류 1 · 성공 1 · 대체 1, 실패 묶음 command · exit 1
R10 tlog weekly 숫자 표가 n8n my-weekly와 같음 (| 요청 | 309 | 357 | · 0% → 5.88% · SLO 못 지킴 둘)
R11 run_test 요약 줄 666 runs · errors 21, 묶음 2줄(16 · 5), 오른쪽 16 → 5줄, t → 2026-10-26T09
R12 인자 없음 · 출처 없음 · 없는 파일 2 · 2 · 1
R13 uv run pytest -q 23 passed in 1.7s
R14 /tmp에서 tlog --help usage: tlog [-h] {summary,problems,slo,compare,weekly,ui} ..., tlog summary --url … 0.08초
  • 수업 준비 때 찾은 실수 둘 (학생도 겪기 쉬움): ① Python round는 짝수 쪽으로 반올림해 n8n(JavaScript Math.round)과 반에 걸린 값이 달라질 수 있어 js_round로 맞춤. ② $TLOG_URL을 정해 둔 채 --file을 주면 API를 읽던 것 → 파일이 먼저.

4. 7교시에 볼 것

볼 것 막혔을 때 한마디
숫자가 n8n과 다름 "어느 칸이 · 얼마로 다른지 붙여 주고, AGENTS.md 3절 정의 그대로"
빈 기간에 오류 "0건이면 0"
파일 · API의 숫자가 다름 "거르기 규칙을 데이터 API와 같게 (끝날 포함)"
테스트가 진짜 API를 부름 "가짜 서버로, 진짜는 확인 단계에서만"
세는 코드가 여기저기 "metrics.py 한 곳"
slo가 늘 0 "크면 위반, 위반이면 4"
tretry 시도를 실행으로 셈 "final 줄까지 묶기"