▲ 285 · 239 comments on source · Hacker News · jahooma · 1 year ago
Launch HN: Codebuff (YC F24) – 코드를 대신 작성해 주는 CLI 도구
HN 여러분! 저희는 Codebuff( https://codebuff.com )를 만드는 James와 Brandon입니다. Codebuff는 Cursor Composer 같은 도구지만 터미널에서 동작합니다. 자연어로 요청하면 그에 따라 파일을 수정해 줍니다. `npm i -g codebuff`로 설치하고 바로 무료로 사용할 수 있습니다. 로그인 게이트가 없고, 모든 계정에 최대 $20 상당의 크레딧을 제공합니다. Codebuff가 다른 점은 입력을 한 단계로 단순화했다는 것입니다. 터미널에 원하는 작업을 입력하고 엔터를 누르면 됩니다. 그러면 Codebuff가 전체 코드베이스를 살펴보고 기존 소스 파일이든 새 파일이든 원하는 대로 수정합니다. 또한 요청을 수행하기 위해 테스트, 타입 체커를 실행하거나 패키지를 설치할 수도 있습니다. 데모 영상: https://www.youtube.com/watch?v=dQ0NOMsu0dA 모든 것은 해커톤에서 시작되었습니다. 저는 막 나온 Sonnet 3.5를 시험해 보면서 코드를 작성하는 데 쓸 수 있을지 알아보고 있었습니다. 그날 급조한 스크립트는 한 단계에서 코드베이스 컨텍스트를 가져오고, 두 번째 단계에서 그 컨텍스트를 사용해 변경 사항을 반영하여 파일을 다시 작성했습니다. 이 2단계 프로세스는 오늘날까지도 남아 있습니다. 덧붙이자면, 제 해커톤 스크립트는 꽤 형편없이 동작했고 데모는 유용한 코드를 전혀 만들어내지 못했습니다. 하지만 그 주말에 저는 그것이 저지른 실수들을 곰골해 보았고, 코드베이스에 대한 더 많은 컨텍스트가 있었다면 변경을 제대로 해낼 수 있었을지도 모른다는 생각이 들었습니다. 예를 들어, (제 이전 스타트업의) 서버에 엔드포인트를 만들려고 했지만, 그러려면 특정 파일 3개를 수정해야 한다는 것을 몰랐습니다(네... 저희 백엔드는 그렇게 깔끔하지 않았습니다). 그래서 저는 신입 사원에게 지시하듯 코드베이스에 대한 가이드를 직접 작성했습니다. 마크다운 파일에 넣고 Sonnet 3.5의 시스템 프롬프트에 전달했습니다. 그리고 정말 놀랍게도 훨씬 더 좋은 코드를 만들어내기 시작했습니다. 그래서 저는 흥분하기 시작했습니다. 실제로 이 코드 가이드 아이디어는 오늘날 Codebuff에 knowledge.md 파일로 존재하며, 모든 요청마다 자동으로 읽힙니다. 처음에는 이 프로젝트를 스타트업 아이디어라고 생각하지 않았습니다. 누구나 작성할 수 있는 단순한 스크립트라고 생각했습니다. 하지만 일주일이 더 지나자 해결해야 할 문제가 더 많고 이것이 제품이 되어야 한다는 것을 알 수 있었습니다. YC에 지원하고 인터뷰를 보기까지의 그 일주일 동안, 저는 Codebuff가 파일을 일관되게 수정하도록 만들 수 없었습니다. 원본 파일의 문자열을 교체하게 하기 위해 여러 프롬프팅 전략을 시도했지만 아무것도 안정적으로 동작하지 않았습니다. 이런 기본적인 것조차 해내지 못하는데 어떻게 면접관을 마주할 수 있겠습니까? 면접 전날, 마지막 승부수로 저는 GPT-4o를 파인튜닝하여 Claude가 그린 변경 스케치를 git patch로 바꾸게 했고, 그러면 patch가 줄을 추가하고 제거하여 수정을 수행하게 했습니다. 학습 데이터 생성을 늦은 밤에야 마쳤고, 파인튜닝 작업은 제가 잠든 사이에 돌아갔습니다. 그리고 세상에, 다음 날 아침 그것이 동작했습니다! 저는 Dalton과의 YC 인터뷰에 맞춰 그것을 프로덕션에 배포했습니다. 얼마 후 Brandon이 합류했고 저희는 본격적으로 달리기 시작했습니다. 그렇다면 Codebuff는 정확히 어떻게 동작할까요? 터미널에서 호출하면, 해당 디렉터리와 하위 디렉터리의 소스 파일들을 훑고 모든 함수와 클래스 이름(또는 11개 언어에서 그에 상응하는 것들)을 파싱하는 것으로 시작합니다. 이를 위해 tree-sitter 라이브러리를 사용합니다. 이 심볼들과 파일 트리를 포함하는 코드베이스 맵을 구축합니다. 그런 다음 Claude Haiku 3.5에 요청을 보내 이 코드베이스 컨텍스트를 캐시하여 사용자 입력에 더 낮은 지연으로 응답할 수 있게 합니다. (프롬프트 캐싱은 최고입니다!) 저희는 Anthropic이나 OpenAI로 메시지를 전달하는 상태 비저장 서버를 운영합니다. 클라이언트와 데이터를 주고받기 위해 websockets를 사용합니다. 처음 세 달 동안은 인증도, 데이터베이스조차 없었습니다. Codebuff는 무료로 설치할 수 있었고 모든 요청에 저희 API 키를 사용했습니다. 다행히도 아무도 저희를 악용해 무료 Claude 사용량을 너무 많이 가져가지는 않았습니다 하하. 이 상황을 데이터베이스(Postgres + Drizzle), 서버(Bun, Render에 호스팅, 인증(무료 Auth.js 사용), 웹사이트(Render에 호스팅되는 NextJS), 결제(Stripe), 로깅(BetterStack), 대시보드(Retool)를 구축하여 구해준 Brandon에게 큰 감사를 전합니다.
원문 게시글에서 발췌한 번역본입니다. 전문과 원문 댓글은 아래 링크에서 확인하세요.
Discussion on runchr
Loading comments…
to comment.