페이지 목차
이 페이지에서 검색
AI 드리븐
이 페이지에 묻기
AI 드리븐 · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.
생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.
AI · DEVELOPMENT
AI 드리븐
생성 수정
요구사항과 역할 정의부터 구현·검증·배포·운영까지, AI와 함께 개발하며 사람이 판단할 기준을 정리합니다.
26개 문서 · 1일차 · 6 / 26
5차시 · AI 역할 정의의 원리
지도 위치 : 1일차 · 팀 구성 · 모든 역할에 쓰는 공통 틀 | 이전: 4차시 범위 결정과 서비스 설계 | 다음: 6차시 디자인 ① 화면 설계 역할 키워드 : 'AI가 만든 티'의 원인과 처방, 역할을 정의하는 네 가지 축, 팀 편성
이 차시를 다 읽으면
- 'AI가 만든 티' 의 증상 여섯 가지를 말하고, 코드를 읽지 않고도 알아챌 수 있는 신호를 댈 수 있다.
- 증상의 원인 네 가지를 역할 정의의 네 축(책임 · 맥락 · 권한 · 완료 조건) 과 짝지을 수 있다.
- 네 축을 하위 에이전트 정의 파일에 옮기고, 완료 조건에 증거 제출 을 넣을 수 있다.
- 정의 파일의 "이 폴더만 수정한다"(부탁)와
tools:줄(강제)의 차이를 말할 수 있다. - 역할을 언제 나누고 언제 나누지 않을지 하나 ↔ 여럿 축으로 판단할 수 있다.
0. 이 차시의 판별 축
| # | 축 | 왼쪽 (0) | 오른쪽 (1) | 이 축으로 갈리는 것 | 큰 축 (README 5장) |
|---|---|---|---|---|---|
| 1 | ⭐ 하나 ↔ 여럿 | 에이전트 하나가 다 함 (단순, 대신 맥락이 섞임) | 역할을 나눈 팀 (독립, 대신 넘겨주는 비용) | 역할을 나눌 이유가 있는가 | ⑤ |
| 2 | 추상 ↔ 구상 | 역할 정의 (무엇을 하기로 했나) | 실제 수행 (무엇을 했나) | 정의와 결과가 어긋나면 무엇을 고치나 | ② |
| 3 | 속성 ↔ 기능 | 정의 파일의 설명 글 (description, 책임) | tools: (실제로 할 수 있는 동작) | 글로 적은 역할 ↔ 도구로 허락된 동작 | ③ |
| 4 | 증거 ↔ 주장 | 완료 조건에 증거 제출 | "구현했습니다"로 끝 | 역할의 결과를 믿을 수 있는가 | ⑧의 파생 |
이 차시가 답하는 질문은 "모든 역할에 공통으로 쓰는 정의 틀은 무엇인가" 입니다. 앞에서 기획 역할(3차시 5.1)을 정의했고, 6차시부터 디자이너 · 검증자 · 백엔드 · 프론트엔드가 나옵니다. 역할마다 즉흥적으로 지시를 쓰면 품질이 들쭉날쭉합니다. 앞에서 배운 하위 에이전트(2차시 3.1)가 그릇이라면, 이 차시는 그릇에 무엇을 채우는가 입니다.
1. 'AI가 만든 티' — 증상
1.1 정의
'AI가 만든 티' — [결과물의 품질 문제]인데, [ 이 프로젝트가 아니라 세상의 평균값에 맞춰진 흔적 ]이라는 점에서 특정 줄이 틀린 단순 버그와 구별된다.
| 증상 | 예 |
|---|---|
| 평균적이고 무난함 | 어디서 본 듯한 보라색 그라데이션 첫 화면 |
| 과잉 구현 | 요청하지 않은 설정 옵션, 미래 대비 코드 |
| 일관성 없음 | 파일마다 다른 에러 처리 방식, 이름 짓는 규칙 |
| 군더더기 | 코드를 그대로 다시 말하는 주석, 과한 로그 |
| 근거 없는 가정 | 존재하지 않는 라이브러리 함수, 프로젝트에 없는 폴더 구조 |
| 확인 없는 "완료" | 실행해 보지 않고 "구현했습니다" |
1.2 코드를 읽지 않아도 보이는 신호 ⭐
'AI가 만든 티'는 코드를 몰라도 보입니다.
| 신호 | 의심할 증상 |
|---|---|
| 요청하지 않은 기능이 생겼다 | 과잉 구현 |
| 바뀐 파일 수가 예상보다 훨씬 많다 | 과잉 구현, 범위 이탈 |
| 보고가 길기만 하고 실행 결과가 없다 | 확인 없는 "완료" |
| 화면마다 버튼 모양 · 문구 말투가 다르다 | 일관성 없음 |
| 처음 듣는 패키지를 설치하겠다고 한다 | 근거 없는 가정 (14차시) |
이런 신호를 보면 2절 표에서 원인 축 을 찾습니다. 결과를 대화로 고치는 대신 원인 축을 고칩니다.
2. 원인과 처방
| 원인 | 무슨 일이 생기나 | 처방 | 역할 정의의 축 |
|---|---|---|---|
| 맥락 부족 — 이 프로젝트가 무엇인지 모름 | 세상의 평균값을 낸다 | 참고할 문서 · 기존 코드 · 예시를 지정 | ② 맥락 |
| 역할 경계 없음 — 어디까지 해야 하는지 모름 | 과잉 구현 | 책임 범위와 "하지 않는 일" 명시 | ① 책임 |
| 권한 과다 — 모든 걸 할 수 있음 | 엉뚱한 곳까지 손댄다 | 도구 · 파일 접근 제한 | ③ 권한 |
| 완료 조건 없음 — 언제 멈출지 모름 | 확인 없이 종료 | 산출물과 확인 방법 · 증거 명시 | ④ 완료 조건 |
⭐ 네 원인이 곧 네 축입니다. 증상을 보고 → 원인 축을 찾고 → 그 축을 정의 파일에서 고칩니다.
3. ⭐ 역할을 정의하는 네 가지 축
3.1 정의
역할 정의 — [에이전트 지시]인데, [ 책임 · 맥락 · 권한 · 완료 조건 네 축을 파일로 고정해 다음 세션에도 똑같이 적용된다 ]는 점에서 대화 중에 그때그때 쓰는 즉흥 지시와 구별된다.
(수업에서 쓰는 명칭은 다를 수 있습니다. 개념이 같으면 됩니다.)
| 축 | 질문 | 적는 내용 | 빠지면 생기는 증상 |
|---|---|---|---|
| ① 책임 | 무엇을 하고, 무엇을 하지 않나? | 담당 업무 + 금지 업무 | 과잉 구현, 남의 일 침범 |
| ② 맥락 | 무엇을 보고 판단하나? | 참고 문서, 기준 파일, 우선순위 | 평균적 결과, 근거 없는 가정 |
| ③ 권한 | 무엇을 쓸 수 있나? | 허용 도구, 수정 가능한 폴더 | 엉뚱한 파일 수정 |
| ④ 완료 조건 | 언제, 무엇을 내고 끝나나? | 산출물, 확인 방법, 증거 , 보고 형식 | 확인 없는 "완료" |
3.2 네 축을 정의 파일로
# .claude/agents/backend.md
---
name: backend
description: docs/api.md 명세에 따라 서버 API를 구현한다. 명세가 확정된 기능을 구현할 때 사용.
tools: Read, Write, Edit, Bash, Glob, Grep
---
## 책임
- docs/api.md 명세대로 서버 코드를 구현한다
- 하지 않는 일: 화면 코드 수정, 명세 변경, DB 구조 변경(데이터 역할 담당)
## 맥락
- 기준: docs/api.md, docs/requirements.md의 인수 기준, docs/adr/
- 기존 코드 스타일을 먼저 읽고 따른다
## 권한
- apps/api/ 아래만 수정한다
## 완료 조건
- 해당 API의 테스트를 작성하고 통과시킨다
- 실제로 요청을 보내 응답을 확인한다
- 증거: 실행한 확인 명령과 출력 원문을 첨부한다. "통과했다"는 요약만으로는 완료가 아니다.
- 사용자(나)가 직접 확인할 수 있는 방법을 한 가지 이상 적는다.
- 위험 영역(돈 · 개인정보 · 삭제 · 권한 · 새 패키지)을 건드렸으면 [위험]으로 표시한다.
- 보고: 바꾼 파일 목록, 명세와 다르게 판단한 부분
🔍 읽는 포인트 : 세 곳만 보면 됩니다. tools: 줄(무엇을 할 수 있나), ## 책임의 "하지 않는 일", ## 완료 조건의 "증거" 줄.
⭐ 네 축 중 "완료 조건"을 가장 두껍게 씁니다. 코드를 읽는 사람은 결과물을 직접 읽어 완료를 판단하지만, 코드를 읽지 않으면 AI가 낸 증거로만 판단할 수 있습니다(0절 축 4). 그래서 모든 역할의 완료 조건에 증거 제출과 "내가 직접 확인할 방법"을 넣습니다.
3.3 description은 누가 읽나
description은 사람보다 메인 에이전트 가 읽습니다. 메인 에이전트는 이 설명을 보고 언제 이 역할에게 일을 넘길지 판단합니다. "서버 코드 담당"보다 "명세가 확정된 기능을 구현할 때 사용"처럼 언제 부를지 를 쓰면 엉뚱한 때 불리지 않습니다.
3.4 ⚠️ 권한 축의 두 자리 — 부탁과 강제
같은 "권한" 축이 정의 파일 안에 두 번 나옵니다. 성격이 다릅니다(앞에서 배운 부탁 ↔ 강제, 2차시 4.2).
| 자리 | 성격 | 어기면 |
|---|---|---|
## 권한 아래 "apps/api/ 아래만 수정한다" | 부탁 (글로 적은 것) | 대체로 지키지만 가끔 넘는다 |
tools: 줄에서 Write, Edit을 빼는 것 | 강제 (도구 자체를 주지 않음) | 고치는 동작을 아예 못 한다 |
그래서 "절대 고치면 안 되는 역할"(검증자, 7차시)은 글로 부탁하지 않고 tools:에서 수정 도구를 뺍니다. 폴더 단위로 강제로 막는 것은 권한 설정 · 훅의 몫입니다(12, 14차시).
3.5 반례 — 이건 역할 정의가 아닙니다
| 대상 | 왜 아닌가 |
|---|---|
| "너는 10년차 시니어 개발자다" | 직함은 맥락이 아니다. 어떤 문서를 보고 무엇을 내는지가 없다 |
| "잘 구현해줘" | 완료 조건이 없다 |
| 모든 역할에 모든 도구를 준 정의 | 권한 축이 비어 있다 |
| 결과가 마음에 안 들어 대화로만 고친 것 | 다음 세션에 사라진다. 정의 파일 을 고쳐야 남는다 (24차시 회고) |
4. 팀 편성 — 하나 ↔ 여럿
사람(팀장): 목표, 승인, 최종 판단
│
메인 에이전트(조율): 일을 나누고 넘기고 모음
┌──────┬──────┬──────┼──────┬──────┬──────┐
기획 디자인 디자인검증 백엔드 프론트 데이터 리뷰/QA ...
🔍 읽는 포인트 : 맨 위 줄입니다. 사람은 코드를 쓰는 자리가 아니라 목표 · 승인 · 최종 판단 의 자리입니다(README 7장).
| 편성 원칙 | 이유 |
|---|---|
| 역할은 산출물 단위로 나눈다 | 산출물이 다르면(요구사항 문서 ↔ 서버 코드) 기준 문서도 달라 나눌 이유가 있다 |
| 만드는 역할과 검증하는 역할은 반드시 나눈다 | 자기 결과를 관대하게 본다 (7, 13차시) |
| 너무 잘게 나누지 않는다 | 역할이 늘면 넘겨주는 비용(맥락 전달) 이 커진다. 처음에는 4~6개 |
⚠️ 0절 축 1의 어느 쪽도 "발전된 형태"가 아닙니다. 기준은 산출물이 다른가, 독립된 판단이 필요한가 입니다. 둘 다 아니면 나누지 않습니다.
💡 비유는 마지막에 — 역할 정의는 회사의 직무 기술서 입니다. "유능한 사람"이라고 쓰지 않고, 담당 업무 · 참고 자료 · 결재 권한 · 성과물을 씁니다.
앞으로 다시 만납니다 — 6차시(디자이너), 7차시(디자인 검증자), 8차시(아키텍트)가 이 네 축으로 정의됩니다. 9차시에서 2일차 역할들이 한꺼번에 추가됩니다.
5. 역할 정의가 작동하는지 확인하기와 클래스온
5.1 같은 작업을 두 번 시켜 보기
정의 파일을 읽고 판단하기보다 같은 작업을 두 번 시켜 보세요.
| 결과 | 뜻 |
|---|---|
| 두 결과가 거의 같다 | 맥락과 완료 조건이 결과를 충분히 묶고 있다 |
| 두 결과가 크게 다르다 | 맥락이나 완료 조건이 비어 있다 . 어느 축인지 2절 표로 찾는다 |
이 시험은 코드를 몰라도 할 수 있습니다. 바뀐 파일 목록, 보고 모양, 화면만 비교하면 됩니다.
5.2 클래스온에 적용하면
1일차가 끝날 때 .claude/agents/에 최소한 이 정도가 있으면 좋습니다.
| 파일 | 역할 | 차시 | tools:에 수정 도구 |
|---|---|---|---|
planner.md | 요구사항, 인수 기준 | 3 | 문서만 씀 (Write) |
designer.md | 디자인 규칙, 시안 | 6 | 있음 |
design-reviewer.md | 읽기 전용 검증 | 7 | 없음 |
architect.md | 결정 기록(ADR) 작성 | 8 | 문서만 씀 |
2일차에 backend.md, frontend.md, data.md, code-reviewer.md, security-reviewer.md가 추가됩니다.
6. 실습 — 맡기고 검수하기
지시
.claude/agents/에 있는 역할 정의 파일(planner.md 등)을 모두 읽고 네 축으로 점검해줘.
[파일 | 책임(하지 않는 일 포함) | 맥락(참고 문서) | 권한(tools 목록) | 완료 조건(증거 요구 여부) | 빠진 축] 표로.
빠진 축이 있으면 이 노트 3.2절의 완료 조건 형식(증거 · 내가 확인할 방법 · [위험] 표시)으로 보완안을 보여줘.
파일을 고치기 전에 바꿀 내용을 먼저 보여주고 내 승인을 받을 것.
받을 증거
- 점검표와 각 파일의
tools:줄 원문 - 보완안(바꾸기 전 · 후)
내가 직접 확인할 것
| 볼 것 | 이걸로 아는 것 / 왜 내가 보는가 |
|---|---|
각 정의 파일의 tools: 줄에 Write · Edit이 있는지 | 고칠 수 있는 역할인지. 검증 역할에 있으면 즉시 빼야 함 (3.4) |
| 모든 완료 조건에 "출력 원문" 또는 "증거" 라는 말이 있는지 | 증거 ↔ 주장 축의 왼쪽에 서 있는지 |
| planner에게 같은 기능의 인수 기준을 두 번 따로 시켜 비교 | 맥락 · 완료 조건이 결과를 묶고 있는지 (5.1) |
| 그 결과 보고에 "내가 직접 확인할 방법" 이 실제로 들어 있는지 | 정의 파일에 쓴 것이 실제 수행 에서도 지켜지는지 (축 2) |
부록 A. 스스로 확인하기
| # | 질문 | 답이 있는 곳 |
|---|---|---|
| 1 | 'AI가 만든 티'를 유와 종차로 정의하면? | 1.1 |
| 2 | 코드를 읽지 않고도 보이는 'AI가 만든 티'의 신호 세 가지는? | 1.2 |
| 3 | 증상 하나를 골라 원인과 처방을 연결하면? | 2 |
| 4 | 역할 정의의 네 축과 각각 빠지면 생기는 증상은? | 3.1 |
| 5 | 네 축 중 완료 조건을 가장 두껍게 쓰는 이유는? | 3.2 |
| 6 | 하위 에이전트의 description은 누가, 언제 읽나? | 3.3 |
| 7 | "apps/api/ 아래만 수정한다"와 tools:에서 Edit을 빼는 것의 차이는? | 3.4 |
| 8 | "너는 10년차 시니어 개발자다"가 역할 정의가 아닌 이유는? | 3.5 |
| 9 | 역할을 너무 잘게 나누면 왜 손해인가? | 4 |
| 10 | 역할 정의가 잘 작동하는지 코드 없이 확인하는 방법은? | 5.1 |
부록 B. 자주 하는 실수
| 실수 | 바로잡기 |
|---|---|
| 직함만 쓰고 끝낸다 | ❌ 직함은 맥락이 아닙니다. 참고 문서와 산출물을 (3.5) |
| 모든 역할에 모든 도구를 준다 | ❌ 권한 축이 빈 것입니다 (3.4) |
| 완료 조건 없이 "잘 구현해줘"로 끝낸다 | ❌ 증거 제출을 완료 조건에 (3.2) |
| 결과가 마음에 안 들 때 대화로만 고친다 | ⭕ 정의 파일을 고쳐야 다음에도 반영됩니다 (3.5) |
| "고치지 마"를 글로만 적는다 | ⚠️ 부탁입니다. tools:에서 수정 도구를 뺍니다 (3.4) |
| 역할을 처음부터 열 개 넘게 만든다 | ⚠️ 4~6개로 시작합니다 (4) |
부록 C. NotebookLM 복습 프롬프트
이 5차시 노트만 근거로 6문제를 내줘. 코드를 모르는 사람 기준으로.
"AI가 만든 티의 원인 네 가지", "역할 정의 네 축", "완료 조건에 증거 넣기", "권한 축의 부탁과 강제"는 반드시 포함해줘.
증상 하나를 주고 어느 축을 고쳐야 하는지 내가 맞히는 문제도 1개 넣어줘.
답은 내가 답한 다음에 채점하고, 틀린 이유를 노트의 절 번호를 근거로 설명해줘.
LangTailor