I got tired of my coding agent re-reading the same command output, so I built Dejavu
개요
코딩 에이전트가 변경되지 않은 명령 출력을 반복적으로 다시 읽는 문제를 해결하기 위해 개발된 Dejavu는 명령 출력에 대한 메모리 계층으로, 에이전트가 실제로 필요한 변경 사항만 인지하도록 돕습니다.
주요 내용
* 문제점: 터미널 코딩 에이전트(Claude Code, Codex, Cursor's agent 등)는 동일한 명령을 반복 실행할 때 이전 실행 결과와 동일한 전체 출력을 다시 컨텍스트에 로드하여 비효율성을 야기합니다.
* Dejavu의 작동 방식: Dejavu는 PATH shim으로 작동하며, 에이전트가 명령을 실행하면 실제 명령을 실행하고, 이전 실행과 동일한 출력인 경우 "출력 변경 없음" 알림 또는 요약된 변경 사항만 에이전트에 전달합니다.
* 실행 보장: Dejavu는 항상 실제 하위 명령을 실행하고 실제 종료 코드를 유지하며, 로컬에 전체 출력을 저장하여 복구 가능하게 합니다.
* 지원 명령: 테스트 실행기, tsc/eslint, 읽기 전용 git 명령(status/diff/log/show), rg/grep, find, docker logs와 같이 안전하게 분류할 수 있는 명령만 최적화합니다. 변경을 유발하는 명령(git commit, git push, installs 등)은 Dejavu=off 환경 변수를 사용하지 않는 한 그대로 통과됩니다.
* 성능 향상: Dejavu를 사용하면 JS 유효성 검사 루프에서 56%, git 워크플로우에서 91%, rg 검색 루프에서 93% 등 다양한 시나리오에서 처리되는 토큰 수가 크게 감소하며, 특히 반복 실행 루프에서 효과가 두드러집니다.
* 사용 및 설치: npx, Homebrew 또는 cargo를 통해 설치할 수 있으며, dejavu start <agent_name> 명령으로 에이전트를 실행합니다.
시사점
Dejavu는 코딩 에이전트의 컨텍스트 처리 효율성을 크게 향상시켜 LLM 기반 개발 워크플로우의 속도와 비용 효율성을 개선할 잠재력을 가지고 있습니다.
댓글
GitHub Discussions