본문 바로가기

개발/Claude Code

[Claude Code] 첫 세션과 승인 루프 (1)

이번 스텝의 목표: Claude가 제안하면 내가 검토한 후 수락/거절/재지시로 이어지는 루프를 손에 익히는 것. 코드 품질은 아직 X

Step 1. 실습 저장소 만들기

실습 저장소에 해당하는 실습 폴더를 만들고

mkdir cc-lab && cd cc-lab

 

실습 폴더를 git 로컬 저장소로 선언한다.

git init

 

그 다음 실습 파일로서 다음과 같이 파이썬 코드를 작성한다.

# cart.py — 장바구니 결제 금액 계산
SHIPPING_FEE = 3000
FREE_SHIPPING_THRESHOLD = 50000

def subtotal(items):
    """items: [{"name": str, "price": int, "qty": int}, ...]"""
    total = 0
    for item in items:
        total += item["price"] * item["qty"]
    return total

def checkout(items, coupon_rate=0.0):
    amount = subtotal(items)
    if amount > FREE_SHIPPING_THRESHOLD:
        shipping = 0
    else:
        shipping = SHIPPING_FEE
    amount = amount - amount * coupon_rate
    return int(amount + shipping)

if __name__ == "__main__":
    cart = [
        {"name": "머그컵", "price": 12000, "qty": 2},
        {"name": "노트", "price": 3000, "qty": 2},
    ]
    print(checkout(cart, coupon_rate=0.1))

 

그 다음 첫 커밋을 진행한다.

git add .
git commit -m "feat: 첫 번째 커밋"

 

그리고 다음 명령어를 통해 vscode를 연다.

code .

 

그리고 우측 상단의 Claude Code 아이콘을 클릭하여 패널을 연다.

브라우저에서 로그인을 진행한다.

 

학습 단계이므로 Manual 모드를 사용한다.

배우는 단계이므로 일부러 Manual로 두고 매번 승인 화면을 읽는다.

 

 

이제 프롬프트를 보내기 전에 생각해봐야할 부분이 있다. (예측안)

Claude가 답하기까지 파일을 몇 번 읽을까? 파일 읽기 말고 다른 도구도 쓸까? 승인 요청이 뜰까, 안 뜰까?

 

프롬프트 A — 읽기 전용

@cart.py 이 파일이 무슨 일을 하는지 3문장으로 설명해 줘.
그리고 금액 계산에서 경계값 때문에 논란이 될 만한 지점 2곳을 짚어줘.
아직 코드는 절대 수정하지 마.

@를 치면 파일 자동완성이 뜬다. 퍼지 매칭(Fuzzy Matching)을 지원해서 이름 일부만 쳐도 찾아준다.

 

프롬프트 A에 대한 예측안에 대답 결과는

 

Claude가 답하기까지 파일을 몇 번 읽을까?

@cart.py 와 같이 파일을 클로드에게 짚어줬기 때문에 Read와 같은 읽기는 0번 일어났다.

 

파일 읽기 말고 다른 도구도 쓸까? 

Bash를 통해 경계값을 계산 도구로 활용했다.

 

승인 요청이 뜰까, 안 뜰까?

Bash 실행에 대한 승인 요청은 있었고 편집에 대한 승인 요청은 없었다.

 

 

프롬프트 B — 첫 수정, 그리고 일부러 거절해보기

무료배송 기준을 "50,000원 초과"가 아니라 "50,000원 이상"으로 바꿔줘.

 

이번엔 diff가 뜨고 편집 승인을 요청할 겁니다. 

여기서 일부러 거절(No)하고, 대신 이렇게 답한다.

 

아니, 비교 연산자만 바꾸지 말고 FREE_SHIPPING_THRESHOLD 옆에
"이상(>=) 기준"이라는 주석도 같이 넣어줘.

거절 → 재지시 → 새 제안을 받는 이 왕복이 Claude Code 사용의 실제 리듬이다. 이를 겪어야 나중에 "마음에 안 드는 결과를 그냥 받아들이는" 습관이 안 생긴다.

 

수락한 뒤 터미널에서 git diff HEAD 로 실제로 뭐가 바뀌었는지 확인해보자.

 

Manual 모드와 Edit automatically 모드의 차이를 한 문장으로.

: Manual은 편집 전 허락을 구하고, Edit automatically는 묻지 않고 편집한다.

diff 화면에서 Claude가 제안한 내용을 내가 직접 손대고 수락하면, Claude는 그 사실을 아는가 모르는가?

: 안다. diff 뷰에서 제안 내용을 직접 고친 뒤 수락하면, 파일이 원래 제안과 같다고 가정하지 않도록 Claude에게 사용자가 수정했다는 사실이 전달된다.

 

 

이번 스텝 정리

  • 승인 기준은 읽기/쓰기가 아니라 도구 종류. Read·Grep·Glob은 무승인, Bash는 명령 단위, Edit는 diff 단위
  • @파일은 이름 자동완성이 아니라 내용을 메시지에 실어 보내는 것. 그래서 Read가 생략됨
  • "수정하지 마" ≠ "실행하지 마". Claude는 추론 대신 측정하러 감
  • 거절은 중단이고, 방향은 내가 준다