Claude 없이 코딩 에이전트 (Coding agent)를 부트스트래핑(bootstrapping)하며 정말 즐거운 시간을 보냈습니다.
코딩 에이전트는 개념적으로 매우 단순하며, Claude Code는 관찰 가능성 (observability) 측면에서 뛰어나지 않습니다. 그러니 직접 만들어보는 건 어떨까요?
저는 전통적인 방식을 따랐습니다. 문서를 읽고 코드를 천천히 수동으로 작성했습니다. 무언가를 비약적으로 발전시키기 위해 필요한 코드 라인 수는 놀라울 정도로 적었습니다. 단 100줄이면 충분했습니다.
저는 TUI (Text User Interface)에 능숙하지 않고, TUI를 배우고 싶지도 않습니다. 그래서 저의 초기 목표는 단순히 API를 가지고 놀면서 claude -p를 재구현하는 것이었습니다. 작업은 빠르게 진행되었습니다.
그리고 상황은 조금 거칠게 흘러갔습니다.
물론 다음 단계는 프로그램을 대화형으로 만들기 위해 REPL (Read-Eval-Print Loop) 모드를 갖추는 것이었습니다. 저는 readline을 다루는 데 전혀 소질이 없습니다. 그래서 그냥 bun start -p 'implement repl for this project'를 실행했고... 마침내 작은 > 프롬프트가 작동하게 되었습니다!
그 후에도 계속 진행했습니다... 현재 널리 쓰이는 1M 컨텍스트 윈도우 (context window) 덕분에, 계속 작동시키기 위해 제대로 된 압축 (compaction) 구현조차 필요하지 않았습니다. 제가 만든 작은 커스텀 코딩 에이전트에게 세 번의 프롬프트를 입력하자, 에이전트는 곧 다음과 같이 스스로를 재작성했습니다.
이것은 정말 놀랍습니다. 세상의 모든 소프트웨어를 잃어버린다면 우리 스스로를 부트스트래핑하는 데 큰 어려움을 겪을 것이라는 옛 격언이 기억납니다. 만약 그 시점에 마법처럼 LLM (Large Language Model)을 계속 실행할 수 있다면, 그것은 더 이상 사실이 아닐지도 모릅니다. 코딩 에이전트 자체를 부트스트래핑하는 데 아주 적은 노력만 들었으니까요.
https://github.com/yujqiao/100cc
추신: 모든 참신한 아이디어들이 그렇듯, 이것도 완전히 새로운 아이디어는 아닙니다. 이 작업을 마친 후 검색해 보니 https://www.mihaileric.com/The-Emperor-Has-No-Clothes/를 발견했습니다.