1교시의 도착점
지금은 Agent를 실행하는 시간이 아닙니다. 2교시 시연과 3교시 개인 실습에서 무엇을 승인하고 무엇을 중단할지 먼저 판단할 수 있게 합니다.
- 01
Ask, Plan, Agent를 프로젝트 변경 여부와 자율성으로 구분합니다.
- 02
관찰, 기대 결과, 범위, 제약과 통과 조건으로 작은 문제를 정의합니다.
- 03
hallucination과 과잉 변경을 찾고 script-only 최소 권한을 선택합니다.
- 04
diff, Console, Play Mode, 회귀 테스트와 코드 설명으로 완료를 판정합니다.
60분의 설명 흐름
AI의 유창한 문장을 평가하는 대신 변경 전과 후에 확인할 관찰 가능한 사실을 세웁니다.
요청에서 증거까지
Lecture / professor-led
- 10주차 baseline 회수
아트를 교체한 뒤에도 시작, 수집, 성공, 실패와 재시작이 작동하는 상태가 왜 필요한지 확인합니다.
- Ask, Plan, Agent 구분
읽기, 계획과 실행을 프로젝트 변경 여부와 승인 책임으로 나눕니다.
- 문제 분해
모호한 희망을 관찰, 기대 결과, 범위, 제약과 테스트로 바꾸는 문장 구조를 봅니다.
- hallucination과 과잉 변경
존재하지 않는 API, 잘못된 버전, 숨은 의존성, 불필요한 리팩터링과 검증 없는 완료 선언을 찾습니다.
- 최소 권한과 변경 계약
Agent의 구현 코드는 두 C# 파일만 허용하고 Scene, Prefab, Package와 ProjectSettings 쓰기를 금지하는 이유를 설명합니다.
- diff와 증거
파일 목록부터 읽고 상태 문, 값의 경계, 부작용과 기존 기능 회귀를 확인합니다.
- 회수 질문
Agent 실행 전 승인할 여섯 항목과 완료 뒤 요구할 다섯 증거를 화면 없이 복원합니다.
작동하는 시작점이 있어야 변화가 보입니다
오류가 있는 프로젝트에 새 기능을 붙이면 기존 문제와 새 문제를 구분할 수 없습니다. 변경 전 상태는 비교를 위한 첫 증거입니다.
기준 동작을 먼저 기록합니다
Start, 이동, 수집, 30초 타이머, Won, Lost와 Restart를 한 번 실행하고 Console Error 0을 확인합니다.
되돌릴 지점을 만듭니다
Scene을 저장하고 프로젝트를 복제하거나 버전 관리 체크포인트를 남깁니다. Agent의 Undo는 별도 백업을 대신하지 않습니다.
필요한 만큼만 자율성을 높입니다
모드 이름보다 중요한 질문은 하나입니다. 지금 AI가 프로젝트를 실제로 바꿀 필요가 있는가입니다.
| 모드 | 하는 일 | 프로젝트 변경 | 학생이 확인할 것 | 11주차 사용 |
|---|---|---|---|---|
| Ask | 코드 흐름, API와 오류를 설명 | 없음 | 설명이 실제 파일과 일치하는가 | 항상 먼저 |
| Plan | 작업 순서, 파일, 위험과 테스트 제안 | 승인 전 없음 | 불필요한 파일과 단계가 없는가 | Agent 전에 필수 |
| Agent | 승인된 범위에서 파일을 작성·수정 | 있음 | 실제 diff가 승인 범위와 같은가 | Write scripts only |
| Full autonomy | Scene, Prefab, Asset과 Editor 작업까지 실행 | 매우 큼 | 초보자가 모든 변화를 설명할 수 있는가 | 이번 주 사용 안 함 |
- ASK현재 구조 읽기
수정 없이 데이터의 소유자와 호출 흐름을 설명합니다.
- RESTATE학생이 다시 정의
AI 설명을 자신의 프로젝트 사실과 말로 다시 씁니다.
- PLAN예상 변화 제출
파일, 함수, 위험과 테스트를 변경 전에 보여 줍니다.
- APPROVE범위 잠금
불필요한 항목을 지우고 허용 파일과 금지 대상을 정합니다.
- AGENT제한 실행
구현 코드 두 C# 파일만 만들거나 수정합니다.
- PROVE사람이 판정
diff와 실제 플레이로 완료 여부를 결정합니다.
“시간 보너스를 만들어 줘”를 검증 가능한 문제로 바꿉니다
AI는 비어 있는 조건을 스스로 채우려 합니다. 요청이 짧을수록 선택권이 넓어지고 예상하지 못한 변경도 커집니다.
- 현재 사실
- Playing에서 timeRemaining이 감소함
- 기존 흐름
- Ready, Playing, Won, Lost와 Restart가 작동함
- 현재 오류
- Console Error 0
- 사건
- Player가 TimeBonus에 처음 접촉
- 결과
- 남은 시간에 정확히 5초 추가
- 경계
- 최대 30초를 넘지 않음
- 수정
GameManager.cs- 생성
TimeBonus.cs- 금지
- 다른 파일과 설정 전체
- 상태
- Playing에서만 허용
- 횟수
- 같은 보너스는 한 번만 처리
- 회귀
- 기존 7주차 흐름 모두 유지
그럴듯함과 프로젝트의 사실을 분리합니다
hallucination은 엉뚱한 문장만 뜻하지 않습니다. 실제 프로젝트에 없는 이름, 버전과 연결을 확신하는 답도 포함합니다.
- 01존재하지 않는 이름을 전제로 함
GameManager.Instance가 없는데 singleton처럼 호출하거나 실제 변수와 다른remainingTime을 사용합니다. 먼저 현재 파일에서 정확한 이름을 확인합니다. - 02Unity 버전과 패키지를 추측함
설치되지 않은 package API나 다른 Unity 버전의 메뉴를 제안할 수 있습니다. 설치된 버전과 Package Manager를 실제로 확인합니다.
- 03숨은 의존성을 만듦
새 Script가 Tag, Layer, Collider, Inspector 참조를 요구하면서 설명하지 않을 수 있습니다. 코드 밖의 수동 연결을 Plan에 포함합니다.
- 04요청하지 않은 정리를 함께 함
함수명 변경, 파일 이동과 리팩터링이 섞이면 diff가 커지고 기존 Inspector 연결을 잃을 수 있습니다. 기능 하나와 정리 작업을 분리합니다.
- 05실행하지 않고 완료를 선언함
컴파일 가능성은 플레이 성공과 다릅니다. Agent의 “완료”는 주장이고 Console, Inspector와 Play Mode가 증거입니다.
“AI가 맞는 것 같다” 대신 “현재 파일에서 이름을 확인했다”, “diff에 두 파일만 있다”, “T01부터 T08까지 같은 조건에서 통과했다”처럼 다시 관찰할 수 있는 문장을 사용합니다.
권한은 기능보다 작거나 같아야 합니다
Agent가 작성하는 구현 코드는 두 C# 파일이면 충분합니다. Plan 문서, Unity가 만드는 메타데이터와 학생이 저장하는 Scene은 구현 코드와 구분해 기록합니다.
| 대상 | 읽기 | 쓰기 | 이유 |
|---|---|---|---|
GameManager.cs | 허용 | 허용 | 시간 규칙의 소유자에 작은 public 메서드 추가 |
TimeBonus.cs | 허용 | 새 파일 허용 | 접촉 사건을 한 번 전달하는 Component |
Assets/Plans/*.md | Plan 검토 | Plan 모드가 저장 | 승인 전 계획인 예상 지원 산출물로 분류 |
*.meta | GUID 확인 | Unity가 자동 생성 | Agent가 직접 편집하지 않고 필요한 메타데이터는 보존 |
Week11_TimeBonus.unity | 구조 확인 | 학생이 수동 저장 | Scene 연결의 작성 주체와 이유를 별도 기록 |
*.prefab | 필요한 구조만 읽기 | Agent 쓰기 금지 | 이번 미션은 Scene에서 직접 연결 |
Packages/ | 버전 확인만 | 금지 | 기능에 새 의존성이 필요하지 않음 |
ProjectSettings/ | 필요 없음 | 금지 | 입력, Tag와 물리 설정 변경이 목표 밖임 |
| 명령과 삭제 | 상태 확인만 | 금지 | 패키지 설치, 파일 삭제와 대량 이동은 승인 범위 밖임 |
Agent 전에 여섯 항목을 한 화면에 놓습니다
변경 계약은 prompt를 길게 만드는 장식이 아닙니다. 실행 중 벗어났는지 즉시 판정하는 기준선입니다.
- GOAL행동 하나
TimeBonus 접촉 한 번에 남은 시간 5초 추가.
- FILES구현 코드 2개
Agent는 GameManager 수정, TimeBonus 생성. Plan,
.meta, Scene은 별도 분류. - BOUNDARY30초 상한
Mathf.Min으로 roundDuration을 넘지 않음. - STATEPlaying만
Ready, Won, Lost에서는 사건을 거부.
- MANUALScene 연결은 사람
Component, Collider와 참조를 Inspector에서 직접 설정.
- PROOF8개 테스트
새 행동과 기존 루프를 같은 표로 검증.
코드보다 먼저 파일 목록을 읽습니다
diff는 AI가 한 일을 기억에 의존하지 않고 변경 전후로 비교하는 기록입니다. 줄 수보다 변화의 책임과 부작용을 봅니다.
- 01
변경 파일 분류
git status --short또는 changed files에서 Agent 구현 코드, Plan 문서, Unity 생성.meta, 학생이 저장한 Scene을 먼저 나눕니다.중단 세 번째 구현 파일, 예상하지 않은 Prefab, package manifest나 설정이 보입니다.
- 02
공개 표면
새 public 메서드가 필요한 호출만 열어 주는지, 기존 함수명과 serialized field를 불필요하게 바꾸지 않았는지 봅니다.
질문 이 public 메서드를 누가, 언제 호출합니까?
- 03
상태 문과 값의 경계
Playing이 아닐 때 return하는지, 5초가 양수인지, 결과가 30초 상한을 넘지 않는지 봅니다.
질문 28초에서 보너스를 얻으면 정확히 몇 초가 됩니까?
- 04
사건의 횟수
Trigger가 같은 오브젝트에 여러 번 들어와도 보너스를 한 번만 지급한 뒤 비활성화되는지 봅니다.
질문 상태 기록과 보너스 지급 중 무엇을 먼저 해야 합니까?
- 05
회귀 가능성
기존 Update, AddScore, FinishRound와 Restart의 흐름이 그대로 남았는지 확인합니다.
증거 새 기능뿐 아니라 성공, 실패와 두 번의 재시작도 실행합니다.
public GameState CurrentState { get; private set; }
+public bool TryAddTime(float seconds)
+{
+ if (CurrentState != GameState.Playing || seconds <= 0f)
+ {
+ return false;
+ }
+
+ timeRemaining = Mathf.Min(timeRemaining + seconds, roundDuration);
+ UpdateHud();
+ return true;
+}
초록색 줄도 자동 통과가 아닙니다. 상태 거부, 양수 검사, 상한, HUD 갱신과 반환값의 책임을 각각 설명해야 합니다.
“Agent가 완료했다”는 완료 조건이 아닙니다
완료는 생성된 코드가 아니라 독립적으로 다시 확인할 수 있는 다섯 종류의 증거가 함께 있을 때 성립합니다.
구현 코드 두 파일만 변경
Agent 코드와 Plan, .meta, 수동 Scene을 분류한 뒤 두 C# 파일의 줄을 직접 읽습니다.
Error 0
컴파일 오류, NullReferenceException과 Missing Reference가 없습니다.
새 행동 재현
20초에서 25초, 28초에서 30초가 되고 같은 보너스는 다시 작동하지 않습니다.
기존 루프 보존
수집, Won, Lost와 Restart가 변경 전과 같은 결과를 냅니다.
코드 구술
두 Script의 책임, 상태 문, 상한과 호출 순서를 코드 없이 말할 수 있습니다.
설명을 덮고 다섯 문장으로 회수합니다
정답을 보기 전에 소리 내어 답합니다. 답이 모호하면 해당 절로 돌아가 근거가 되는 실제 파일과 테스트를 함께 찾습니다.
Ask와 Plan은 둘 다 프로젝트를 바꾸지 않습니다. 차이는 무엇입니까?
Ask는 현재 구조와 개념을 설명하는 데 적합합니다. Plan은 목표를 여러 단계로 나누고 예상 파일, 순서, 위험과 테스트를 실행 전에 제안합니다.
시간 보너스 기능에 Full autonomy가 필요하지 않은 이유는 무엇입니까?
필요한 코드 변경은 기존 GameManager 한 파일과 새 TimeBonus 한 파일뿐입니다. Scene 연결은 학생이 Inspector에서 직접 할 수 있으므로 더 넓은 쓰기 권한은 목표보다 큽니다.
Agent가 세 번째 구현 파일을 바꾸려 하면 어떻게 합니까?
즉시 중단하고 변경을 적용하지 않습니다. 단, Plan 문서, Unity 생성 .meta, 수동 저장 Scene은 작성 주체를 확인해 예상 지원 산출물로 분류합니다.
diff에서 가장 먼저 보는 것은 무엇입니까?
코드 줄이 아니라 변경된 파일 목록과 작성 주체입니다. 구현 코드가 허용한 두 파일인지 확인한 뒤 공개 메서드, 상태 문, 경계와 부작용을 읽습니다.
완료를 증명하는 다섯 증거는 무엇입니까?
허용 범위의 diff, Console Error 0, 새 행동의 Play Mode 결과, 기존 기능 회귀 테스트와 학생의 코드 구술입니다.
“Agent를 실행하기 전에 나는 ______, ______, ______을 승인하고, 실행 뒤 ______와 ______로 완료를 판정한다.” 빈칸을 자신의 말로 채운 뒤 2교시 시연으로 넘어갑니다.
수업 중 확인할 공식 자료
Unity AI는 베타이며 기능, package version, 권한 표현과 이용 조건이 바뀔 수 있습니다. 수업 직전 설치된 버전과 공식 문서를 다시 확인합니다.
- Unity in-Editor AI Assistant 모드 설명 ↗Ask의 읽기 전용 성격, Plan 승인, Agent 권한 수준과 project context
- Unity Assistant Plan mode ↗Plan이
Assets/Plans에 Markdown 파일로 저장되는 동작 - Unity 6.6 Asset metadata ↗Asset과 함께 생성되는
.meta파일과 GUID 보존 - Unity Assistant package 문서 ↗설치된 package에서 지원하는 모드와 동작 확인
- Git diff 공식 문서 ↗working tree, index와 commit 사이의 변경 비교
- Unity 6.6 SerializeField ↗private field와 Unity serialization의 관계
- Unity AI Guiding Principles ↗AI 결과의 투명성, 데이터와 개발자 책임 원칙