8개월 동안 883번의 커밋을 거쳐 LLM 에이전트 하네스를 만들었지만, 과도한 엔지니어링 끝에 결국 포기했습니다 - 하하.
I spent 883 commits and 8 months building an LLM agent harness, overengineered it, and abandoned it - lol.
핵심 요약
LLM 에이전트 개발에 8개월을 쏟았으나 과도한 기능 추가로 인해 결국 프로젝트를 중단하고 오픈소스로 공개한 개발자의 회고입니다.
- 프로젝트 실패 — 과도한 기능 추가와 복잡성으로 인해 실용성을 잃고 개발 중단됨
- 기술적 교훈 — 모델의 판단을 맹신하지 않고 검증과 상태 관리를 외부화하는 구조의 중요성 확인
- 오픈소스 공개 — 실패한 프로젝트지만 에이전트 아키텍처 연구에 유용한 코드와 실험 기록 공유
- 개발 철학 — 제약 조건이 없는 무한한 가능성은 오히려 프로젝트의 방향성을 흐리게 함
내가 만든 거 MIT 라이선스로 오픈소스 풀게. 링크는 댓글에 달아놨어. 맞음, 8개월 동안 거의 Claude 20x 계정 1개, 가끔은 2개 돌리면서 작업했고, 사실상 전부 Claude 모델이랑 Claude code harness로 만든 거야. 아, 그리고 내 agents.md나 claude.md 같은 건 쓰지 마. 다 옛날 거고 지금 내가 쓰는 것도 아닐뿐더러, 남한테 추천할 만한 수준도 아니니까.
그래서, 커밋 883개, 8개월, 토큰 수십억 개를 쏟아부어서 이걸 만들었는데 결국엔 갖다 버렸어.
처음엔 LLM을 모든 걸 다 맡기는 주체가 아니라, 그냥 갈아 끼울 수 있는 일꾼 정도로 취급하는, 더 나은 코딩 에이전트 하네스를 만들어 보려고 시작했지.
이 하네스가 실제 계획, 상태, 권한, 컨텍스트, 검증, 증거, 오케스트레이션 같은 걸 다 쥐고 있어야 한다고 생각했어. 모델이 "작업 끝냈음"이라고 말해도, 시스템이 그냥 믿는 게 아니라 실제로 뭐가 어떻게 됐는지 직접 확인하게 만드는 거지.
근데 만들다 보니 이것저것 계속 처넣게 되더라고.
코드 그래프, RAG, 결정론적 오케스트레이션, 격리된 워커, 크래시 복구, 모델 라우팅, 로컬 모델, 재실행 가능한 런, 검증 게이트, 자기 개선 실험, 대시보드, 컴퓨터 사용, 개인 자동화, 그 외에도 수백만 가지 아이디어들까지.
결국엔 말도 안 되게 과하게 설계된 쓰레기 덩어리가 돼버렸어. 정작 일을 하려고 이걸 쓰는 시간보다, 연구하고 계획하고 시스템 추가하는 데 쓴 시간이 더 많았지. 다른 하네스들은 이미 훨씬 쓰기 편해지고 있는데, 내 건 여전히 거대한 헤드리스 실험체에 불과했거든.
그래서 그냥 죽여버렸어.
이걸 무슨 완성된 제품이라고 올리는 거 아니니까, Claude Code의 세련된 대안을 기대하고 다운로드하진 마. 미완성인 부분도 많고, 서로 연결도 안 되고, 구식인 데다, 아예 구현도 안 된 계획들뿐이야.
그래도 그 안에는 엄청난 양의 연구, 아키텍처, 실험, 실패한 아이디어, 그리고 코드가 들어있어. 에이전트 하네스 만드는 사람들한테는 몇몇 부분들이 도움 될 수도 있을 거야. 특히 이런 것들:
- 상태 관리와 검증을 모델 외부에서 처리하는 법
- 결정론적/재실행 가능한 에이전트 런
- 코드베이스 검색 및 의존성 그래프
- 오케스트레이터/워커 분리
- 컨텍스트 예산 관리 및 세션 핸드오프
- 샌드박싱 및 권한 게이트
- 에이전트가 직접 생성하지 않은 증거로 에이전트의 주장을 검증하는 법
아카이브에는 원래 실험했던 Rust/Python/Tauri 코드랑, 수천 개의 계획 및 연구 문서, 그리고 정리된 커밋 히스토리가 다 들어있어.
한마디로 제품으로서는 실패했지만, 누군가 이 시체에서 건질 만한 좋은 아이디어를 훔쳐 갈 수도 있겠지.
다들 이 중에서 진짜 건질 만한 게 뭔지, 아니면 애초에 내가 범위를 계속 넓히기 시작했을 때부터 이 아키텍처는 망할 운명이었는지 궁금하네.
언젠가 완성할지도 모르겠지만, 그게 필요할지 누가 알겠어. 모든 걸 다 해결하려고 하다가 결국 아무것도 해결 못 했거든. 그래도 이게 너희한테 어떤 식으로든 도움이 돼서, 최소한 교훈이라도 얻거나 "이런 짓은 하지 말아야지"라는 확인이라도 할 수 있다면 완전히 헛짓거리는 아니겠지.

