LLM 기반 코딩 에이전트, 새로운 시대의 개발 패러다임을 열다
Andrej Karpathy는 소프트웨어의 진화를 3단계로 구분하며, LLM 기반의 Software 3.0 시대를 전망
Harness 개념을 통해 LLM의 한계를 보완하고 실제 업무에 연결하는 도구와 환경의 중요성을 강조
Claude Code는 LLM 엔진을 위한 Harness의 예시로, 레이어드 아키텍처와 유사한 구조를 가짐
토큰 관리, Skill 분리, Setup & Config 패턴 등 실전 적용을 위한 구체적인 팁 제시
Software 3.0 시대에도 기존의 아키텍처 원칙(레이어 분리, SRP)의 중요성을 강조하며, 사고방식의 전환을 촉구
소프트웨어 3.0 시대의 도래: 프롬프트가 곧 코드
본문에 따르면 Andrej Karpathy는 소프트웨어의 진화를 Software 1.0(명시적 로직), Software 2.0(딥러닝), Software 3.0(LLM 기반)으로 구분했다. Software 3.0 시대는 LLM에게 자연어로 무엇을 원하는지 지시하는 시대로, 프롬프트(Prompt)가 프로그램의 역할을 한다.
Software 1.0: Python, Java, C++ 등 명시적인 코드로 로직을 구현
Software 2.0: 딥러닝 모델 학습을 통해 규칙을 학습
Software 3.0: LLM을 활용하여 자연어 기반으로 원하는 기능 구현
이러한 변화는 개발 방식의 근본적인 변화를 의미하며, 개발 생산성(Development Productivity) 향상을 기대할 수 있다.
Harness: LLM의 힘을 현실로, 제어 가능한 환경 구축
글에서는 LLM의 한계를 보완하고 실제 업무에 활용하기 위한 도구와 환경, 즉 Harness의 중요성을 강조한다. LLM은 자체적으로 파일 접근, API 호출, 데이터베이스 연결이 불가능하므로, Harness를 통해 이러한 기능을 제공해야 한다.
Claude Code: Anthropic에서 개발한 CLI 기반 코딩 에이전트
MCP(Model Context Protocol): 외부 시스템과의 연결 담당
Skills: 단일 책임 원칙(SRP)을 따르는 기능 단위
Harness는 LLM을 실제 업무에 적용(Real-world Application)하기 위한 핵심 요소이며, 안정적인 운영(Stable Operation)을 보장하는 데 기여한다.
레이어드 아키텍처의 재해석: LLM 에이전트의 구조
본문은 Claude Code의 구조를 레이어드 아키텍처에 비유하며, 익숙한 설계 원칙의 중요성을 강조한다. Slash Command, Sub-agent, Skills, MCP는 각각 Controller, Service Layer, Domain Component, Infrastructure/Adapter에 해당한다.
Slash Command: 사용자 요청의 진입점, @RestController, router.get() 역할
Sub-agent: 여러 Skill 조합, Service 계층과 유사
Skills: 단일 책임 원칙(SRP) 준수, 코드 재사용성(Code Reusability) 확보
MCP: 외부 시스템과의 연결, Adapter Pattern 적용
이러한 구조는 코드의 가독성(Code Readability) 및 유지보수성(Maintainability)을 높이는 데 기여하며, 확장성(Scalability)을 확보하는 데 유리하다.
토큰 관리와 Skill 분리의 딜레마: 실전에서 주의할 점
글에서는 LLM 기반 에이전트 설계 시 고려해야 할 실질적인 문제점들을 제시한다. 특히, 토큰 사용량 관리와 Skill 분리의 딜레마에 대한 해결책을 제시한다.
토큰 관리: Context Window(작업 메모리)를 고려하여 토큰 폭발(Token Explosion) 방지
Skill 분리: Skill 폭발(Skill Explosion) 방지를 위해 Progressive Disclosure 구조 적용
Setup & Config 패턴: 사용자 설정을 최소화하고, 필요한 순간에만 질문
토큰 최적화(Token Optimization)는 비용 절감과 성능 향상에 기여하며, Skill 설계(Skill Design)**는 코드의 복잡성을 줄이고 유지보수성을 높이는 데 중요하다.
질문하는 애플리케이션: HITL과 자동화의 균형
본문은 Human-in-the-Loop(HITL)와 자동화의 균형을 맞추는 전략을 제시한다. 모든 작업을 HITL로 처리하는 것은 비효율적이므로, 적절한 상황에서 질문하고 자동화하는 것이 중요하다.
질문해야 할 때: 되돌리기 어려운 작업, 여러 선택지 존재, 비용/리스크가 큰 결정
자동화해야 할 때: 안전하고 반복 가능한 작업, 합의된 컨벤션 존재, 되돌리기 쉬운 작업
Setup & Config 패턴: 자동 감지 및 질문을 통해 사용자 경험 개선
HITL(Human-in-the-Loop) 전략은 에이전트의 유연성을 높이고, 자동화(Automation)는 효율성을 극대화**한다. 이 두 가지를 적절히 조합하는 것이 핵심이다.