CPN 한국어 자습서 · Claude Code in Action
1 · Claude Code란
What is a coding assistant
코딩 어시스턴트는 “코드를 써 주는 도구”입니다 — 하지만 그 뒤에서 실제로 무슨 일이 벌어질까요? 작업을 받아 컨텍스트를 모으고, 계획을 세우고, 행동하기까지, 그리고 그 모든 것을 가능하게 하는 도구 사용(tool use)을 들여다봅니다.
Stephen Grider · Anthropic 기술 스태프
이 영상에서는 코딩 어시스턴트가 무엇인지 더 깊이 이해해 봅니다. 맞습니다, 코딩 어시스턴트는 코드를 쓰는 도구입니다. 하지만 그 뒤에서 무슨 일이 벌어지는지를 더 깊이 이해하길 바랍니다. 정말로 무엇을 하는지, 어떻게 동작하는지를 알면, 팀을 보완해 줄 진짜 훌륭한 어시스턴트가 무엇인지 더 잘 가늠하게 됩니다.
코딩 어시스턴트가 하는 일을 그려 보는 한 가지 방법은 이렇습니다. 어시스턴트는 먼저 작업을 받습니다. 이 경우엔 어떤 에러 메시지를 바탕으로 버그를 고쳐야 한다고 해 봅시다. 이 작업은 내부적으로 언어 모델에 넘겨지고, 모델이 문제를 어떻게 풀지 알아내야 합니다.
모델마다 작업의 복잡도에 따라 매우 다른 방식으로 문제를 풉니다. 하지만 많은 경우 사람이 일하는 방식과 아주 비슷합니다. 먼저 에러가 무엇을 가리키는지, 코드베이스의 어느 부분이 에러를 던지는지, 어떤 파일이 관련 있는지 이해하며 컨텍스트를 모읍니다. 그 정보를 모은 뒤에는 작업을 실제로 어떻게 완수할지 계획을 세웁니다. 이 경우엔 코드를 좀 바꾸고, 문제가 정말 고쳐졌는지 확인할 테스트를 돌리거나 작성하기로 정할 수 있습니다. 마지막으로 행동을 취합니다 — 파일을 수정하고 테스트를 돌리는 식으로요.
여기서 특히 주목할 점은 첫 단계와 마지막 단계입니다. 이 둘은 어시스턴트가 실제로 무언가를 하도록 요구합니다. 다시 말해, 바깥 세계에서 정보를 모으거나(파일 읽기·문서 가져오기) 바깥 세계에 영향을 주어야(명령 실행·파일 수정) 합니다. 그런데 언어 모델이 이런 일을 실제로 하게 만드는 건 생각보다 까다롭습니다.
왜 그런지 봅시다. 어떤 코딩 어시스턴트 안이 아니라, 언어 모델과 직접 대화한다고 상상해 보세요. 그 모델에게 “main.go 파일 안에 어떤 코드가 들어 있어?”라고 묻습니다. 코딩 어시스턴트 같은 도구 바깥에서 도는 언어 모델은 파일을 읽거나 명령을 실행할 능력이 본래 없습니다. 언어 모델은 텍스트 같은 내용을 입력받아 텍스트를 돌려줍니다. 그게 전부입니다. 모든 언어 모델이 그렇습니다. 그러니 평범한 언어 모델에게 파일을 읽어 달라고 텍스트를 보내면, 십중팔구 “나는 파일을 읽을 능력이 없다”고 답할 겁니다.
그렇다면 코딩 어시스턴트(그리고 수많은 다른 도구)는 언어 모델이 어떻게 파일을 “읽게” 만들까요? 이렇게 동작합니다. 여러분이 코딩 어시스턴트에 요청을 보낼 때마다, 어시스턴트는 뒤에서 여러분의 요청에 많은 텍스트를 자동으로 덧붙입니다. 이 경우엔 이런 텍스트를 더한다고 상상할 수 있습니다 — “언어 모델 너, 파일을 읽고 싶으면 아주 정확히 형식을 맞춘 이런 메시지로 답해. 예: read_file: 그리고 읽을 파일 이름.”
그러면 모델은 우리 질문에 답하려면 그 파일을 읽어야 한다는 걸 깨닫고, 약속한 형식대로 “read_file: main.go”라고 답합니다. 이제 코딩 어시스턴트는 이 정확히 형식을 맞춘 메시지를 받아, 모델이 파일을 읽는 행동을 하고 싶어 한다는 걸 알아챕니다. 그래서 어시스턴트가 실제로 파일을 읽어 그 내용을 다시 모델에 보냅니다. 모델은 이제 그 파일의 실제 내용을 받았으니, 우리에게 돌아갈 최종 답변을 씁니다 — “이 파일을 읽었더니 이런 코드가 들어 있다…”처럼요.
언어 모델에 이런 추가 지시를 주어 아주 잘 짜인 형식으로 답하게 하는 이 전체 체계를 도구 사용(tool use)이라고 부릅니다. 도구는 모델에 추가 능력을 부여하는 데 쓰입니다. 모델은 아주 특정한 방식으로 응답할 책임을 지고, 코딩 어시스턴트 같은 것이 약속된 일을 실제로 — 파일 읽기·쓰기 등 — 해낼 책임을 집니다. 다시 말하지만, 세상의 모든 언어 모델이 이 도구 사용 개념으로 동작합니다.
여기서 가장 중요한 대목입니다. Claude 계열 모델 — Opus, Sonnet, Haiku — 은 도구가 무엇을 하는지, 언제 불리는지를 이해하고, 그것을 실제로 효과적으로 써서 작업을 끝내고, 흥미로운 조합으로 엮어 더 복잡한 작업을 해내는 데 특히 강합니다. Claude의 강력한 도구 사용은 코딩 어시스턴트로서 Claude Code의 절대적인 핵심 강점입니다.
그 이유는 셋입니다. 첫째, 더 나은 도구 사용으로 Claude는 더 복잡한 작업을 다룰 수 있습니다. 둘째, Claude Code 자체가 확장 가능해서 새 도구를 쉽게 더할 수 있고, Claude는 그 도구들을 기꺼이 활용합니다. 빠르게 변하는 개발 세계에서 계속 쓸모를 유지하는 데 특히 중요합니다 — 즉 Claude Code는 앞으로 여러 해 동안 여러분과 함께 변해 갈 어시스턴트입니다. 셋째, 향상된 도구 사용은 더 나은 보안으로 이어집니다. Claude가 인덱싱에 기대지 않고도 코드베이스를 효과적으로 검색해 관련 코드를 찾을 수 있기 때문입니다. 인덱싱은 흔히 코드베이스 전체를 외부 서버로 보내는 데 의존하죠.
정리하면 이렇습니다. 코딩 어시스턴트는 내부적으로 언어 모델을 써서 작업을 끝냅니다. 그 모델은 대다수 작업에서 도구를 쓸 줄 알아야 합니다. 도구는 파일 읽기·쓰기, 명령 실행 등 단순히 텍스트를 생성하는 일이 아닌 거의 모든 것에 쓰입니다. 모든 언어 모델이 같은 수준으로 도구를 쓰는 건 아니며, 이 차이가 코딩 어시스턴트의 전반적 효율에 큰 영향을 줍니다.
이 장에서 배우는 것What you'll learn
약 5분코딩 어시스턴트 = 작업 → 모델이 컨텍스트 수집 → 계획 → 행동
첫·마지막 단계는 바깥 세계와 상호작용(파일 읽기·명령 실행)이 필요
언어 모델은 본래 텍스트 입력 → 텍스트 출력만 가능 — 파일을 못 읽는다
도구 사용(tool use): 어시스턴트가 형식을 약속하고, 모델이 그 형식으로 응답
모델이 read_file: main.go로 답하면 어시스턴트가 실제로 읽어 되돌려준다
Claude(Opus·Sonnet·Haiku)는 도구 사용에 특히 강함 = Claude Code의 핵심 강점
코딩 어시스턴트는 “코드를 써 주는 도구”입니다. 하지만 그 뒤를 들여다보면, 많은 경우 사람이 일하는 방식과 비슷합니다 — 작업을 받아 컨텍스트를 모으고, 계획을 세우고, 행동합니다. 작업은 내부적으로 언어 모델에 넘겨져 풀립니다.
예: 에러 메시지를 보고 버그를 고쳐 달라.
에러가 가리키는 곳, 관련 파일을 읽어 이해한다.
무엇을 바꾸고, 어떤 테스트로 확인할지 정한다.
파일을 수정하고 테스트를 돌린다.
핵심: 첫 단계(수집)와 마지막 단계(행동)는 어시스턴트가 바깥 세계와 실제로 상호작용해야 합니다 — 파일을 읽고, 명령을 실행하고. 그런데 언어 모델은 본래 그걸 못 합니다. 그래서 도구 사용이 필요합니다.
컨텍스트 수집과 행동은 바깥 세계와의 상호작용이 필요합니다. 그런데 언어 모델은 본래 텍스트를 입력받아 텍스트를 출력할 뿐 — 파일을 읽거나 명령을 실행할 능력이 없습니다. 그래서 코딩 어시스턴트는 도구 사용이라는 방법을 씁니다. 아래 흐름을 단계별로 따라가 보세요.
평범한 언어 모델에 이대로 보내면 “파일을 읽을 능력이 없다”고 답할 가능성이 큽니다. 모델은 텍스트만 입출력하니까요.
요청을 보낼 때마다 어시스턴트가 뒤에서 이런 도구 안내를 붙입니다 — “이렇게 답하면 그 행동을 대신 해 주겠다”는 약속입니다.
모델은 질문에 답하려면 그 파일을 읽어야 한다는 걸 깨닫고, 약속한 형식으로 응답합니다. 아직 파일을 읽은 게 아니라, “읽어 달라”고 신호한 것입니다.
어시스턴트가 그 메시지를 알아채고, 실제로 파일을 읽어 그 내용을 다시 모델에 보냅니다. 약속된 행동을 대신 해 주는 쪽은 모델이 아니라 어시스턴트입니다.
이제 모델은 파일의 실제 내용을 받았으니 최종 답변을 작성합니다. 이 전체 체계 — 추가 지시를 주어 정해진 형식으로 답하게 하는 것 — 가 바로 도구 사용입니다.
모든 언어 모델이 이 방식으로 동작합니다. 모델은 정해진 형식으로 응답할 책임을, 어시스턴트는 약속된 일을 실제로 해낼 책임을 집니다.
여기가 가장 중요한 대목입니다. Claude 계열 모델 — Opus·Sonnet·Haiku — 은 도구가 무엇을 하는지, 언제 불리는지를 이해하고 실제로 효과적으로 쓰는 데 특히 강합니다. Claude의 강력한 도구 사용은 코딩 어시스턴트로서 Claude Code의 절대적인 핵심 강점입니다.
도구 사용이 뛰어날수록 Claude는 여러 도구를 영리하게 엮어 더 복잡한 작업을 다룹니다.
새 도구를 쉽게 더할 수 있고 Claude가 기꺼이 활용합니다. 빠르게 변하는 개발 세계에서 함께 변해 갑니다.
인덱싱(코드베이스 전체를 외부 서버로 전송) 없이도 코드를 효과적으로 검색해 관련 코드를 찾습니다.
Q1평범한 언어 모델에게 “main.go를 읽어 줘”라고 하면 기본적으로 어떻게 될까요?
언어 모델은 텍스트를 입력받아 텍스트를 돌려주기만 합니다. 파일을 읽으려면 도구 사용이 필요합니다.
Q2도구 사용에서 “read_file: main.go”라는 메시지를 받아 실제로 파일을 읽는 쪽은?
모델은 약속된 형식으로 응답할 뿐이고, 약속된 행동(파일 읽기)은 어시스턴트가 대신 해 다시 모델에 돌려줍니다.
Q3Claude Code의 핵심 강점으로 든 것이 아닌 것은?
오히려 반대입니다. Claude는 인덱싱(코드베이스 전체 전송)에 기대지 않고 검색해 보안에 유리합니다.
말은 충분히 했으니, 이제 직접 보여 드릴 차례입니다. → Claude Code 실전