자연어 요청으로 코드를 작성하는 CLI 도구 Codebuff 출시
요약
Codebuff는 터미널 환경에서 자연어 요청만으로 코드베이스를 분석하고 파일을 직접 수정할 수 있는 CLI 도구입니다. 사용자의 명령에 따라 파일 편집뿐만 아니라 테스트 실행, 타입 체크, 패키지 설치까지 수행하며, 코드베이스 컨텍스트를 효과적으로 활용하기 위해 knowledge.md와 git 패치 방식의 미세 조정을 사용합니다.
핵심 포인트
- 터미널 기반의 CLI 도구로 Cursor Composer와 유사한 사용자 경험 제공
- 전체 코드베이스를 분석하여 파일 생성 및 수정, 테스트 실행, 패키지 설치 자동 수행
- knowledge.md 파일을 통해 코드베이스에 대한 컨텍스트를 시스템 프롬프트에 전달하여 정확도 향상
- 안정적인 파일 편집을 위해 GPT-4o를 사용하여 Claude의 변경 사항을 git 패치로 변환하도록 미세 조정(fine-tuning) 적용
안녕하세요 HN! 저희는 Codebuff(https://codebuff.com)를 만들고 있는 James와 Brandon입니다. Codebuff는 Cursor Composer와 유사하지만 터미널(terminal)에서 작동합니다. 즉, 사용자의 자연어 요청(natural language requests)을 기반으로 파일을 수정합니다. npm i -g codebuff 명령어로 바로 체험해 볼 수 있으며 즉시 무료로 사용 가능합니다. 별도의 로그인 절차는 없으며, 모든 계정에 최대 20달러 상당의 크레딧을 제공합니다.
Codebuff가 차별화되는 점은 입력을 한 단계로 단순화했다는 것입니다. 터미널에 원하는 작업을 입력하고 엔터를 누르기만 하면 됩니다. 그러면 Codebuff가 전체 코드베이스(codebase)를 살펴보고 기존 소스 파일이나 새로운 파일에 필요한 편집을 수행합니다. 또한 요청을 완수하기 위해 테스트(tests)를 실행하거나, 타입 체커(type checker)를 돌리거나, 패키지(packages)를 설치할 수도 있습니다.
데모 영상: https://www.youtube.com/watch?v=dQ0NOMsu0dA
이 모든 것은 한 해커톤(hackathon)에서 시작되었습니다. 당시 저는 최근 출시된 Sonnet 3.5를 사용해 코드를 작성할 수 있는지 테스트하고 있었습니다. 그날 제가 급하게 짜 맞춘 스크립트는 한 단계에서 코드베이스 컨텍스트(codebase context)를 가져오고, 두 번째 단계에서 이를 사용하여 파일을 재작성하는 방식이었습니다. 이 2단계 프로세스는 오늘날에도 여전히 존재합니다. 참고로, 당시 제 해커톤 스크립트는 성능이 상당히 좋지 않았고 데모에서도 유용한 코드를 전혀 생성하지 못해 실패했습니다.
하지만 그 주말 동안 저는 스크립트가 범한 오류들을 생각해보았고, 코드베이스에 대한 컨텍스트(context)가 더 많았다면 변경 사항을 제대로 수행할 수 있었을지도 모른다는 점을 깨달았습니다. 예를 들어, 스크립트가 (제 이전 스타트업의) 서버에 엔드포인트(endpoint)를 생성하려고 시도했지만, 이를 위해 특정 파일 3개를 수정해야 한다는 사실을 알지 못했습니다 (네... 저희 백엔드(backend)가 그렇게 깔끔하지 않았거든요). 그래서 저는 마치 신입 사원에게 지시하듯 코드베이스에 대한 가이드를 직접 작성했습니다. 이를 마크다운(markdown) 파일로 만들어 Sonnet 3.5의 시스템 프롬프트(system prompt)에 전달했습니다. 놀랍게도 코드가 훨씬 더 잘 생성되기 시작했습니다. 그래서 저는 흥분을 느끼기 시작했습니다. 실제로 이 코드 가이드 아이디어는 오늘날 Codebuff에서 모든 요청 시 자동으로 읽히는 knowledge.md 파일이라는 형태로 존재합니다.
처음에는 이 프로젝트를 스타트업 아이디어라고 생각하지 않았습니다. 그저 누구나 작성할 수 있는 간단한 스크립트라고 생각했습니다. 하지만 일주일이 더 지나자, 해결해야 할 문제들이 더 많다는 것을 알게 되었고 이것이 하나의 제품 (product)이 되어야 한다는 것을 깨달았습니다.
YC (Y Combinator) 지원과 인터뷰 사이의 일주일 동안, 저는 Codebuff가 파일을 일관되게 편집하도록 만드는 데 어려움을 겪었습니다. 원본 파일에서 문자열을 교체하도록 만들기 위해 다양한 프롬프팅 전략 (prompting strategies)을 시도했지만, 무엇도 안정적으로 작동하지 않았습니다. 이런 기본적인 것조차 제대로 작동시키지 못한다면 어떻게 인터뷰어 (interviewer)를 마주할 수 있을까요? 인터뷰 전날, 저는 마지막 수단 (Hail Mary)으로 Claude가 스케치한 변경 사항을 git 패치 (git patch)로 변환하도록 GPT-4o를 미세 조정 (fine-tuning)했습니다. 이 패치는 줄을 추가하거나 삭제하여 편집을 수행하게 됩니다. 저는 밤늦게야 겨우 학습 데이터 (training data) 생성을 마쳤고, 제가 잠든 사이에 미세 조정 작업이 실행되었습니다.
그리고, 세상에, 다음 날 아침에 그것이 작동했습니다! 저는 Dalton과의 YC 인터뷰 시간에 맞춰 겨우 프로덕션 (production)에 배포했습니다. 그 직후 Brandon이 합류했고, 우리는 본격적으로 달려 나가기 시작했습니다.
그렇다면 Codebuff는 정확히 어떻게 작동할까요? 터미널 (terminal)에서 Codebuff를 호출하면, 해당 디렉토리와 하위 디렉토리의 소스 파일들을 훑으며 모든 함수 (function)와 클래스 (class) 이름(또는 11개 언어에서의 그에 상응하는 이름들)을 파싱 (parsing)하는 것으로 시작합니다. 저희는 이를 위해 tree-sitter 라이브러리를 사용합니다. 이는 이러한 심볼 (symbols)들과 파일 트리 (file tree)를 포함하는 코드베이스 맵 (codebase map)을 구축합니다.
그 다음, 사용자 입력에 대해 더 낮은 지연 시간 (latency)으로 응답할 수 있도록 Claude Haiku 3.5에 요청을 보내 이 코드베이스 컨텍스트 (context)를 캐싱 (cache)합니다. (프롬프트 캐싱 (Prompt caching)은 정말 강력합니다!). 저희는 메시지를 Anthropic 또는 OpenAI로 전달하는 상태 비저장 (stateless) 서버를 운영합니다. 클라이언트와 데이터를 주고받기 위해 웹소켓 (websockets)을 사용합니다. 처음 3개월 동안은 인증 (authentication)이나 데이터베이스 (database)조차 없었습니다. Codebuff는 무료로 설치할 수 있었고, 모든 요청에 저희의 API 키를 사용했습니다. 다행히 아무도 저희를 이용해 Claude를 과도하게 무료로 사용하며 악용하지 않았습니다(하하). 저희의 데이터베이스 (Postgres + Drizzle), 서버 (Bun, Render에서 호스팅), 인증 (무료 Auth.js 사용), 웹사이트 (Render에서 호스팅되는 NextJS), 결제 (Stripe), 로깅 (BetterStack), 그리고 대시보드 (Retool)를 구축하여 이 상황을 해결해 준 Brandon에게 큰 감사를 전합니다. 이것은 제가 경험해 본 최고의 기술 스택 (tech stack)입니다.
사용자가 입력 메시지를 보내면, 저희는 Claude가 관련 있는 파일들을 선택하도록 프롬프트 (prompt)를 보냅니다 (1단계). 파일을 선택한 후, 이를 컨텍스트 (context)에 로드하면 에이전트 (agent)가 응답합니다. 에이전트는 저희가 파싱 (parse)하는 XML 태그를 사용하여 도구 (tools)를 호출합니다. 특정 파일을 수정하기 위해 말 그대로 <edit_file path="src/app.ts">…</edit_file>라고 작성하며, 터미널 명령어를 실행하거나 더 많은 파일을 읽어달라고 요청하는 다른 태그들도 가지고 있습니다. Anthropic이 이미 Claude를 SWE 벤치마크 (SWE benchmark)에서 최고 수준 (state of the art)에 도달할 수 있도록 매우 유사한 도구들로 학습시켰기 때문에, 이것이 저희에게 실제로 필요한 전부입니다.
Codebuff는 무료 사용량이 제한되어 있지만, 마음에 드신다면 월 99달러를 지불하고 더 많은 크레딧 (credits)을 얻을 수 있습니다. 이것이 경쟁사들보다 훨씬 비싸다는 점을 인지하고 있지만, 이는 저희가 더 많은 컨텍스트 (context)와 함께 더 비용이 많이 드는 LLM 호출을 수행하기 때문입니다.
저희는 이미 Codebuff가 놀라운 방식으로 사용되는 것을 보고 있습니다. 한 사용자는 두 개의 Flutter 앱을 병렬로 구축하면서 500달러의 비용을 발생시켰습니다. 그는 생성된 코드를 전혀 들여다보지 않았습니다. 대신, 앱이 만족스럽게 구축될 때까지 Codebuff와 긴 대화를 나누며 진행 상황을 관리하고 오류를 수정했습니다. 많은 사용자가 팀이나 개인 용도로 주말 동안 실제 앱을 구축했습니다.
물론, 그것들이 전형적인 사용 사례(use cases)는 아닙니다. 사용자들은 또한 유닛 테스트(unit tests)를 작성하기 위해 Codebuff를 자주 사용합니다. 사용자들은 유닛 테스트와 병행하여 기능을 구축하고, 테스트를 통과할 때까지 Codebuff가 코드를 수정하는 루프(loops)를 수행하도록 합니다. 또한 OAuth 흐름(flows) 설정이나 API 스캐폴딩(scaffolding)과 같은 번거로운 작업(drudge work)을 요청하기도 합니다.
이 모든 사례에서 정말 흥며로운 점은 사람들의 창의성이 억제되지 않고 발휘되는 것을 목격하고 있다는 것입니다. 그들은 구현 세부 사항(implementation details) 대신 아키텍처(architecture)와 설계(design)를 생각하는 데 더 많은 시간을 할애하고 있습니다. 우리가 이제 막 시작 단계에 있으며, 기술은 앞으로 더욱 발전할 것이라는 점이 매우 멋집니다.
만약 여러분의 시스템 내부에서 Codebuff를 사용하고 싶다면, 여러분의 앱이 호출하여 코드 수정 사항을 받을 수 있도록 동일한 자연어 인터페이스(natural language interface)를 제공하는 알파 SDK(alpha SDK)를 준비했습니다! 다음 링크에서 얼리 액세스(early access)를 신청할 수 있습니다: https://codebuff.retool.com/form/c8b15919-52d0-4572-aca5-533....
읽어주셔서 감사합니다! 여러분이 Codebuff를 사용해 보고 의견을 들려주시기를 기대하고 있습니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기