TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 29 READS

맥에서 '의미 기반' 로컬 인덱싱으로 코딩 에이전트의 토큰 낭비 줄이기

맥에서 '의미 기반' 로컬 인덱싱으로 코딩 에이전트의 토큰 낭비 줄이기
SOURCE IMAGE · HACKER NEWS

코딩 에이전트를 실무에 붙여 쓰다 보면 비용 구조에서 의외의 병목이 드러난다. 에이전트는 질문에 답하기 위해 저장소를 grep으로 훑고, 관련 있어 보이는 파일을 통째로 열어 읽는다. 읽는 파일 하나하나가 토큰이고, 결국 '정답 코드'를 찾기까지의 탐색 과정 전체가 비용으로 쌓인다. 테드 헤일리가 공개한 Pensieve는 이 지점을 겨냥한 맥(macOS)용 로컬 인덱싱 도구다. 파일과 폴더, 깃 저장소, 그리고 코딩 에이전트와 나눈 대화 세션을 모두 기기 안에서 색인해 두고, 단어가 아니라 의미로 검색할 수 있게 한다. MIT 라이선스의 무료 오픈소스이며 코드는 깃허브에 있다.

의미 검색과 에이전트 컨텍스트

Pensieve의 검색은 세 가지 방식을 섞는다. 평범한 자연어로 검색하면 해당 단어가 파일에 직접 등장하지 않아도 의도에 맞는 결과를 찾고, 따옴표로 묶으면 구절을 정확히 일치시키며, 두 방식을 섞으면 정확히 일치한 결과를 의미 순으로 다시 정렬한다. 마이너스 기호로 특정 단어나 구절을 제외하고, in:으로 파일·코드·세션이나 특정 폴더·저장소로 범위를 좁힐 수도 있다. 사용자는 Control+Shift로 문서 위에 뜨는 패널에서 이를 쓰고, 키보드만으로 결과를 골라 후속 작업을 이어갈 수 있다.

핵심은 에이전트 연동이다. MCP로 연결하면 코딩 에이전트는 저장소를 광범위하게 grep하는 대신 Pensieve에 한 번 질문하고, 파일명과 줄 번호가 붙은 핵심 구절 몇 개만 돌려받는다. 즉 처음부터 올바른 코드 위치에서, 더 적은 도구 호출로 작업을 시작한다. 저장소 안에서 실행된 에이전트는 기본적으로 그 저장소와 워크트리, 관련 세션을 보며, 범위를 지정하면 여러 저장소와 스펙 폴더까지 확장할 수 있다. Claude Code, Codex, Cursor, Gemini CLI, Windsurf, VS Code 등 MCP 클라이언트를 pensieve integrate 명령으로 연결하고, 지시 파일에 '검색 먼저, grep은 나중에' 블록과 검색 스킬·훅을 추가하는 방식이다.

벤치마크가 말하는 것, 말하지 않는 것

개발사는 Claude Sonnet을 Claude Code에서 헤드리스로 돌려 성능을 측정했다. 504개부터 3만4,847개 파일까지 규모가 다른 실제 저장소 네 곳에서, 코드로부터 생성한 72개의 검증용(held-out) 과제를 각각 두 번씩 돌려 총 144회를 수행했다. 결과를 보면 Pensieve를 붙였을 때 올바른 파일을 찾은 횟수는 144회 중 131회로 grep 단독의 123회보다 많았고, 도구 호출은 43% 적었다. 조회당 비용은 전체적으로 18% 낮았고 저장소별로는 6~28% 절감됐으며, 토큰 사용량은 16% 줄고 조회 속도는 21% 빨랐다. 평균 도구 호출은 2.0회(grep은 3.4회)였고, 단 한 번의 호출로 답을 낸 경우가 82회였다. 검색 자체는 건당 0.1~0.2초다.

다만 이 수치는 조건을 함께 읽어야 한다. 비용은 측정 시점의 프롬프트 캐시 상태에 좌우되며, 과제는 코드에서 자동 생성해 찾은 파일로 채점한 것이다. 흥미롭게도 정확한 에러 메시지 검색에서는 단순 grep이 '첫 결과로 정답' 비율에서 앞섰고, 그 외 유형에서 Pensieve가 우세했다. 즉 의미 검색이 모든 상황의 상위 호환은 아니며, 식별자나 에러 문자열처럼 정확 일치가 유리한 질의도 여전히 존재한다. 벤치마크 스크립트는 bench/에 공개돼 있어 각자 자기 저장소로 재현해 볼 수 있다.

코드 소유권과 지식 공백

Pensieve는 검색을 넘어 저장소를 '지도'로 본다. 각 줄의 git blame과 최근 커밋 이력을 읽어, 특정 주제에 대해 가장 많은 코드를 쓴 사람, 지금도 남아 있는 코드 기준으로 어느 영역을 누가 작성했는지, 팀원이 최근 90일간 무엇을 작업했는지를 보여준다. 파일이 아니라 주제로 물어 담당자를 찾을 수 있다는 점이 특징이다. 특히 어떤 영역을 작성한 사람들이 더 이상 그곳에서 활동하지 않으면 그 지식이 위험에 처한 것으로 보고, 해당 영역과 '아직 아는 사람이 몇 명인지', '지금 가장 잘 아는 사람이 누구인지'를 표시한다. 장애가 터지기 전에 지식 공백을 찾아, 에이전트에게 누락된 문서를 작성하게 할 수도 있다. 소개 자료의 이름과 수치는 가상 예시임을 밝히고 있다.

로컬 우선이라는 설계

실무에서 이런 도구를 도입할 때 가장 먼저 걸리는 것은 코드 유출 우려다. Pensieve는 색인과 검색을 모두 기기 안에서 수행한다. 온디바이스 임베딩 모델과 ~/.pensieve의 로컬 인덱스를 쓰고, 서버는 네트워크가 아니라 해당 맥에만 응답하며 계정도 클라우드 서비스도 없다. 외부 통신은 모델 다운로드와 깃허브 업데이트 확인뿐이고 후자는 끌 수 있다. 커밋되지 않은 수정분과 브랜치별 워크트리까지 추적해 에이전트가 낡은 컨텍스트로 작업하지 않도록 하며, 비밀번호 관리자 내보내기 파일, 키, .env, 자격 증명은 색인하지 않는다. 에이전트·폴더·저장소·앱마다 스위치가 있어 끄면 색인한 내용이 제거된다. AI 요약·인사이트는 전적으로 선택 사항으로, 내장 모델이나 LM Studio로 로컬을 유지하거나 아예 끌 수 있고, Claude Code·Codex를 고르면 그 부분만 '클라우드'로 표시된다.

현실적 제약도 분명하다. 검색 패널의 완전한 경험은 애플 실리콘 맥을 전제로 하며, 리눅스와 인텔 맥에서는 백엔드와 브라우저 시각화 도구만 설치된다(인텔 맥은 Xcode 커맨드라인 도구가 있으면 검색 패널도 가능). 앱은 아직 공증(notarize)되지 않아 macOS가 실행을 막으면 설정에서 한 번 수동으로 열어줘야 한다. 결국 Pensieve의 제안은 '에이전트에게 더 나은 컨텍스트를 한 번에 주면 탐색 비용이 줄어든다'는 가설을 로컬·오픈소스 방식으로 구현한 것이다. 에이전트 비용과 보안을 동시에 신경 써야 하는 팀이라면, 공개된 벤치마크를 자사 저장소에 직접 돌려 효과와 한계를 가늠해 보는 것이 합리적인 출발점이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://tedhaley.ca/pensieve/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...