페이지 목차
이 페이지에서 검색
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 정의
역할 정의 — [에이전트 지시]인데, [ 책임 · 맥락 · 권한 · 완료 조건 네 축을 파일로 고정해 다음 세션에도 똑같이 적용된다 ]는 점에서 대화 중에 그때그때 쓰는 즉흥 지시와 구별된다.
역할은 이름보다 경계로 나눕니다
‘개발 담당’이라고만 부르지 않고 입력·책임·출력·검증을 정합니다.
요구사항·API 약속·디자인 규칙 전달
단계를 누르면 해당 설명에서 멈춥니다.
같은 맥락을 공유해도 책임과 변경 범위가 나뉘어야 서로 덮어쓰지 않습니다.
(수업에서 쓰는 명칭은 다를 수 있습니다. 개념이 같으면 됩니다.)
| 축 | 질문 | 적는 내용 | 빠지면 생기는 증상 |
|---|---|---|---|
| ① 책임 | 무엇을 하고, 무엇을 하지 않나? | 담당 업무 + 금지 업무 | 과잉 구현, 남의 일 침범 |
| ② 맥락 | 무엇을 보고 판단하나? | 참고 문서, 기준 파일, 우선순위 | 평균적 결과, 근거 없는 가정 |
| ③ 권한 | 무엇을 쓸 수 있나? | 허용 도구, 수정 가능한 폴더 | 엉뚱한 파일 수정 |
| ④ 완료 조건 | 언제, 무엇을 내고 끝나나? | 산출물, 확인 방법, 증거 , 보고 형식 | 확인 없는 "완료" |
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