Claude Code를 200줄의 코드로 구현하는 방법

1 month ago 6

  • AI 코딩 어시스턴트의 핵심 구조는 복잡한 마법이 아니라 약 200줄의 단순한 Python 코드로 구성됨
  • 시스템은 LLM과의 대화 루프를 기반으로 하며, LLM이 도구 호출을 요청하면 로컬 코드가 이를 실행하고 결과를 다시 전달함
  • 필요한 기본 도구는 파일 읽기(read) , 파일 목록(list) , 파일 편집(edit) 의 세 가지로, 이를 통해 프로젝트 탐색과 코드 수정이 가능함
  • LLM은 도구의 시그니처와 설명(docstring) 을 기반으로 어떤 도구를 언제 호출할지 스스로 결정함
  • 이 구조는 Claude Code 같은 상용 제품의 핵심과 동일하며, 단순한 구조로도 강력한 코딩 에이전트 구현이 가능함

코딩 에이전트의 기본 개념

  • 코딩 에이전트는 LLM과의 대화 기반 시스템으로, 사용자의 명령을 받아 도구 호출을 통해 실제 파일 작업을 수행
    • 사용자는 “hello world 함수를 포함한 새 파일 생성”과 같은 요청을 입력
    • LLM은 필요한 도구 호출을 JSON 형식으로 응답
    • 프로그램이 해당 도구를 실행하고 결과를 다시 LLM에 전달
  • LLM은 파일 시스템에 직접 접근하지 않고, 요청만 수행하며 실제 작업은 로컬 코드가 처리

필요한 세 가지 도구

  • read_file: 지정된 파일의 전체 내용을 읽어 반환
  • list_files: 디렉터리 내 파일과 폴더 목록을 반환
  • edit_file: 기존 문자열을 새 문자열로 교체하거나, old_str이 비어 있으면 새 파일을 생성
    • 교체할 문자열이 없을 경우 “old_str not found”를 반환
  • 이 세 가지 도구만으로도 파일 생성, 수정, 탐색이 가능

도구 등록 및 LLM 통합

  • 모든 도구는 TOOL_REGISTRY에 이름과 함수로 등록되어 LLM이 호출 가능
  • 각 도구의 docstring과 시그니처를 추출해 LLM에게 전달
  • 시스템 프롬프트는 LLM에게 “사용 가능한 도구 목록”과 “호출 형식”을 명확히 알려줌
    • 도구 호출은 'tool: TOOL_NAME({JSON_ARGS})' 형식으로 제한
    • 도구 실행 결과는 tool_result(...) 형태로 LLM에 전달

도구 호출 파싱 및 LLM 응답 처리

  • LLM의 응답에서 tool:로 시작하는 줄을 찾아 도구 이름과 인자(JSON) 를 추출
  • 각 도구를 실행한 후 결과를 JSON으로 직렬화해 대화 기록에 추가
  • execute_llm_call 함수는 LLM API를 호출하고 응답 텍스트를 반환
  • run_coding_agent_loop는 사용자 입력을 받아 LLM과의 대화 루프를 유지
    • 내부 루프는 LLM이 더 이상 도구 호출을 요청하지 않을 때까지 반복

실행 예시와 확장 가능성

  • 예시 대화:
    • “hello.py 파일을 만들고 hello world를 구현해줘” → edit_file 호출로 새 파일 생성
    • “hello.py에 두 수를 곱하는 함수 추가” → read_file 후 edit_file 호출
  • 200줄의 코드로 완전한 코딩 어시스턴트 구현 가능
  • 상용 제품은 여기에 에러 처리, 스트리밍 응답, 컨텍스트 관리, 추가 도구, 승인 절차 등을 더함
  • 핵심 구조는 동일하며, LLM이 결정하고 코드가 실행하는 단순한 루프로 구성됨

실습 및 확장

  • 전체 소스는 약 200줄이며, 다른 LLM 제공자 교체나 도구 추가로 확장 가능
  • 간단한 구조로도 강력한 AI 코딩 에이전트 프로토타입을 직접 구현 가능

Read Entire Article