클로드 코드의 오픈소스 대안 등장: 오픈코드
OpenCode, 새로운 오픈소스 AI 코딩 에이전트가 등장해 개발자들에게 호평을 받고 있습니다. 이 도구는 Anthropic의 유료 Claude Code와 비슷한 기능을 제공하지만 무료이고 오픈소스라는 장점이 있습니다. Claude Code는 Anthropic의 Sonnet 3.7 모델과 함께 출시된 터미널 기반 코딩 도우미로, 코드 작성, 편집, 및 탐색에 유용합니다. 그러나 유료 프로 계획이 필수였습니다. OpenCode는 이러한 제약을 없애고 개발자들이 비용 없이 AI 도움을 받을 수 있도록 설계되었습니다. Claude Code의 작동 원리를 분석하기 위해 저는 mitmproxy를 사용하여 프롬프트를 캡처했습니다. Claude Code는 사용자의 입력이 이전 대화의 연속인지 새로운 주제인지 판단한 후, 시스템 프롬프트를 통해 답변을 생성합니다. 예를 들어, "이 프로젝트에 무엇이 있는지 설명해주세요"라는 입력은 다음과 같이 처리됩니다: 사용자의 메시지가 새로운 주제인지 판단. 새로운 주제라면 2-3단어로 제목을 추출. 프로젝트 구조와 파일들을 분석하여 간결한 요약을 제공. 이 과정에서 Claude Code는 여러 도구를 활용합니다. 예를 들어, 파일 구조를 살펴보기 위해 LS, GlobTool, View 등의 도구를 사용합니다. 이후, 이러한 정보를 바탕으로 프로젝트 요약을 생성합니다. 예를 들어, Kir Shatrov의 개인 블로그는 Next.js, React, Tailwind CSS로 구축되어 있으며, 다양한 기술 주제의 포스트, 사진 갤러리, 여행 맵/역사, 강연 기록, 제작 프로젝트(목공/제작) 등을 포함하고 있다는 요약을 생성했습니다. 다음으로, Claude Code가 bash 스크립트 작성에 어떻게 접근하는지 살펴봤습니다. "Hacker News 최상위 뉴스를 표시하는 bash 스크립트를 작성해주세요"라는 요청을 받았을 때, Claude Code는 Hacker News API를 사용하려 했습니다. 그러나 보안 제한으로 인해 외부 URL에 접근할 수 없었습니다. 이로 인해 다음과 같은 간략한 스크립트를 제공했습니다: ```bash !/bin/bash HN_API_URL="https://hacker-news.firebaseio.com/v0" TOP_STORIES=$(curl -s "${HN_API_URL}/topstories.json" | jq '.[0]') STORY_DETAILS=$(curl -s "${HN_API_URL}/item/${TOP_STORIES}.json") echo "Title: $(echo ${STORY_DETAILS} | jq -r '.title')" echo "Link: $(echo ${STORY_DETAILS} | jq -r '.url')" echo "Points: $(echo ${STORY_DETAILS} | jq -r '.score')" ``` 스크립트 저장 및 실행을 위해 사용자는 명령어를 입력해야 합니다. 예를 들어, "save that and execute"라는 입력은 새로운 주제로 판단되어 다음과 같이 처리됩니다: json {"isNewTopic": true, "title": "스크립트 실행"} 보안을 위해 모든 Bash 도구 사용 전에 명령어 접두사를 추출하는 프롬프트가 실행됩니다. 예를 들어, chmod +x hn_top.sh라는 명령어는 chmod라는 접두사를 추출합니다. 이 명령어는 다음과 같이 파일 경로를 수정합니다: xml <filepaths> hn_top.sh </filepaths> Claude Code는 /init 명령어를 통해 CLAUDE.md 파일을 생성합니다. 이 파일은 프로젝트의 빌드/lint/테스트 명령어, 코드 스타일 가이드라인 등을 포함합니다. 예를 들어, 다음 프롬프트를 통해 CLAUDE.md 파일을 생성합니다: 1. 단일 테스트 실행을 위한 빌드/lint/테스트 명령어 2. 임포트, 포맷팅, 타입, 네이밍 컨벤션, 에러 처리 등의 코드 스타일 가이드라인 Claude Code는 이러한 프롬프트를 기반으로 BatchTool을 사용하여 필요한 파일들을 수집합니다. 예를 들어, GlobTool을 사용하여 package*.json, *.md, .cursor/rules/**, .cursorrules/**, .github/copilot-instructions.md 등의 파일을 찾습니다. 전체적으로, Claude Code는 더 일반적이고 안전하지만, 추가 시간과 비용이 발생한다는 단점이 있습니다. 이는 특히 사용자의 프롬프트를 처리할 때 더 많은 토큰을 사용하기 때문입니다. 예를 들어, 복잡한 작업에는 claude-3-7-sonnet 모델을, 간단한 작업에는 claude-3-5-haiku 모델을 사용합니다. 그러나 claude-3-5-haiku 모델도 간단한 작업에는 과도하게 비싸다는 지적이 있습니다. GPT-3.5-turbo를 사용하면 동일한 작업을 훨씬 저렴하게 수행할 수 있습니다. UX 측면에서는 Claude Code가 우수한 성능을 보여줍니다. Aider는 비슷한 기능을 제공하지만, 설치 과정이 복잡하고 Docker 이미지를 다운로드해야 하는 등의 문제점이 있습니다. OpenCode는 Claude Code와 비슷한 기능을 무료로 제공하며, 터미널에서 실행되는 에이전틱 도구로서 신뢰성과 UX 면에서 뛰어납니다.