Articlehuggingface.co·2026년 9월 3일·0

Give Your Coding Agents a Memory You Own

Quick Summary

funes는 코딩 에이전트의 세션 원문을 로컬에서 검색 가능한 기억으로 바꾸고, 사용자가 소유한 Hugging Face 데이터셋을 통해 여러 에이전트와 머신에서 재사용하게 하는 오픈소스 도구다.

Give Your Coding Agents a Memory You Own 관련 대표 이미지

🖼️ 인포그래픽

Give Your Coding Agents a Memory You Own 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Give Your Coding Agents a Memory You Own의 핵심 내용을 4단계로 요약한 인포그래픽
Give Your Coding Agents a Memory You Own 핵심 내용을 4단계로 압축한 4컷 인포그래픽

💡 한 줄 요약

funes는 코딩 에이전트의 세션 원문을 로컬에서 검색 가능한 기억으로 바꾸고, 사용자가 소유한 Hugging Face 데이터셋을 통해 여러 에이전트와 머신에서 재사용하게 하는 오픈소스 도구다.

📌 핵심 요약

  • funes는 Claude Code, Codex, pi, Hermes의 세션을 공통 형식으로 색인하며, 임베딩과 재순위화를 로컬에서 수행하고 검색 결과에 원문과 정확한 출처를 제공한다.
  • funes add는 최초 색인, recall·get 도구 연결, 완료된 턴의 자동 색인을 설정하며, 이후에는 전체 기록을 다시 임베딩하지 않고 새 턴을 증분 추가한다.
  • 공유 기억은 사용자가 소유하는 Hugging Face 데이터셋이며 기본값은 비공개다. 색인 단계에서 자격 증명을 가리고 게시 전에 비밀정보를 다시 검사하며, 다른 머신에서는 데이터셋 파일을 로컬에 캐시한다.
  • funes ask는 영구 설정을 바꾸지 않는 읽기 전용 단일 질문 기능이다. 검색한 구절을 코딩 에이전트에 전달해 출처가 있는 답변을 만들며, 근거가 부족하면 이를 밝힌다.
  • 세션의 사전 지식이 필요한 두 과제에서 recall은 문맥 압축과 서면 인계보다 모두 저렴했고, 서면 인계 대비 비용은 각각 8분의 1과 4분의 1이었다. 문맥 압축은 한 과제에서 성공하고 다른 과제에서는 실패했다.

🧩 주요 포인트

  1. 원문과 정확한 출처 보존 → 과거 판단의 이유를 검색하고 전체 턴의 맥락으로 검증할 수 있다.
  2. 공통 세션 형식과 사용자 소유 Hugging Face 데이터셋 → Claude Code, Codex, pi, Hermes 및 여러 머신 사이에서 작업 이력을 이어갈 수 있다.
  3. 로컬 처리·증분 색인과 두 과제의 비용 비교 → 기록을 다시 활용하는 운영 방식과 장기 세션의 비용 절감 가능성을 보여주지만, 성능 근거는 제시된 두 과제에 한정된다.

🧠 상세 정리

1. 세션 기록을 실제 기억으로 바꾸는 문제

저자는 여러 머신을 오가며 작업에 따라 코딩 에이전트를 바꾸지만, 새로운 세션의 에이전트는 이전 판단을 모른 채 프로젝트를 처음부터 접한다고 설명한다. 에이전트가 코드를 탐색하고 접근법을 시험하며 오류를 겪고 문서를 읽는 과정에는 변경 내용뿐 아니라 그 변경을 선택한 이유도 남는다. 그러나 이런 세션 로그를 보관하는 것만으로는 작업 중에 사용할 수 있는 기억이 되지 않으며, 수많은 대화에서 스트리밍 파서를 포기한 이유 같은 질문에 답하기도 어렵다. 원문은 기록을 활용하려면 색인, 검색, 순위화, 정확한 출처가 필요하다고 주장하며 funes를 그 기능을 제공하는 계층으로 소개한다. funes는 머신에 이미 존재하는 세션을 바탕으로 지속되는 기억을 만들고, 필요할 때 사용자가 소유한 데이터셋으로 옮길 수 있도록 한다.

2. 설치와 자동 증분 색인

funes는 단일 바이너리로 제공되며, 기본 추론 백엔드는 별도의 머신러닝 런타임 의존성을 요구하지 않고 임베딩과 재순위화를 사용자 머신에서 처리한다. 설치 후 funes add로 Claude Code, Codex, pi, Hermes 중 사용하는 에이전트에 연결하면 최초 색인을 만들고 recall과 get 도구를 제공한다. 같은 명령은 완료된 각 턴을 색인하는 자동화도 설치하므로, 이후에는 사용자가 평소처럼 작업하는 과정에서 기록이 추가된다. 색인은 증분 방식이어서 실행할 때마다 전체 이력을 다시 임베딩하지 않고 새 턴을 추가하며, 오래되고 깊은 기록은 범위를 제한한 단계로 보충할 수 있다. 작업이 과거의 결정이나 발견과 관련되면 에이전트가 직접 recall을 사용할 수 있으므로, 사용자가 예전 세션을 찾아 새 대화에 붙여 넣을 필요가 줄어든다.

3. 검색 파이프라인과 원문 근거 보존

funes의 결정론적 파이프라인은 지원하는 에이전트의 기록을 동일한 턴과 블록 구조로 변환하고, 청크로 나눈 뒤 고정된 로컬 모델로 임베딩해 로컬 Lance 데이터셋에 저장한다. 질의할 때는 벡터 검색과 BM25 검색을 결합하고 순위를 통합한 다음, 교차 인코더로 후보를 재순위화하고 최신성에 따른 가중치와 인접 청크를 더한다. recall은 요약문 대신 원래 텍스트를 반환하며, 각 결과에 에이전트, 시각, 세션, 턴을 표시하고 전체 턴과 주변 맥락을 여는 get 명령도 포함한다. 저장 시점에 내용을 별도의 사실로 추려 바꾸지 않으므로, 검색 결과에서 해당 판단이 만들어진 원래 대화로 돌아갈 수 있다. 서로 다른 에이전트의 이력이 같은 구조로 검색되고 결과마다 작성 에이전트가 명시되며, 기본 로컬 검색에는 계정이나 Hub 저장소가 필요하지 않다.

4. 사용자가 소유하는 공유 데이터셋

기억을 다른 머신에서도 사용하려면 funes add에 Hugging Face 데이터셋 식별자를 함께 지정하며, 이 연결 과정에서 현재 기억이 해당 데이터셋에 게시된다. 이후 각 턴은 로컬에서 색인되고 세션 경계에서 게시되며, 다른 머신에서도 같은 명령을 실행하면 공유된 기억을 이어서 사용할 수 있다. 로컬 기억은 Lance 데이터셋이고 공유 기억은 사용자가 소유하는 Hugging Face 데이터셋이며, 공유 데이터셋은 기본적으로 비공개로 설정된다. 자격 증명은 색인 중에 가려지고 게시 시 모든 청크를 다시 검사해 비밀정보로 보이는 내용을 보류하며, 검사 범위와 한계는 SECURITY.md에 문서화되어 있다. 원격 기억을 읽을 때는 데이터셋 파일을 로컬에 캐시하고, Hub가 소유권, 접근 제어, 버전 관리, 배포를 담당하므로 별도의 기억 서비스 계정이나 기억을 다시 빌려 쓰는 API가 필요하지 않다.

5. 영구 연결 전 단일 질문으로 확인

recall이 에이전트의 작업 흐름에 맞춘 도구라면, funes ask는 사용자가 기억에 직접 질문하기 위한 읽기 전용 기능이며 기본적으로 로컬 기억을 읽는다. 사용자는 스트리밍 파서에 대해 무엇을 결정했는지 묻거나, 공유 기억을 지정해 그 데이터셋에 담긴 개발 이유와 판단을 조회할 수 있다. 원문은 공개된 funes 개발 기억을 예로 들며, 자신의 기억을 먼저 만들지 않아도 funes가 추가 전용 구조를 사용하는 이유를 질문할 수 있다고 설명한다. ask는 관련 구절을 검색해 코딩 에이전트에 전달하고 출처를 밝히는 답변을 반환하지만, 통합 기능을 설치하거나 에이전트의 영구 설정을 바꾸지는 않는다. 검색된 구절이 답변을 뒷받침하지 못하면 그 부족함을 명시하며, 사용자는 질문을 바꾸거나 funes를 연결해 평소 작업 중 반복적으로 기억을 검색하도록 할 수 있다.

6. 에이전트 전환과 팀·공개 프로젝트 활용

공유 기억은 기록을 만든 에이전트나 모델에 종속되지 않으므로, Claude Code에서 시작한 작업을 다음 주 Codex에서 이어가면서 이전 에이전트의 판단 근거를 검색할 수 있다. pi에서 로컬 모델이나 Hugging Face 라우터를 통해 제공되는 모델을 사용한 뒤 Claude로 돌아오는 전환도 원문에 제시된다. 개인은 여러 머신의 에이전트를 하나의 기억에 연결할 수 있고, 팀에서는 새 구성원의 에이전트가 첫날부터 수개월의 결정과 실패한 시도, 풀 리퀘스트에 남지 않은 이유를 조회할 수 있다. 오픈소스 유지관리자는 릴리스의 배경이 된 세션을 공개해 프로젝트가 현재 모습에 이른 과정을 검색 가능하게 만들며, 누구나 공개 기억을 지정해 읽을 수 있다. 게시된 기억에는 데이터셋 카드와 funes 태그가 붙어 Hub에서 발견할 수 있고, 원문은 이를 계속 고쳐 쓰는 설명 페이지를 넘어 판단의 이력과 출처를 담는 공개 작업 기억으로 설명한다.

7. 긴 세션의 비용과 두 과제의 비교

원문은 조사가 길어지면 문맥이 비대해져 실제 작업보다 기존 문맥을 유지하는 데 더 많은 비용이 드는 상황을 문제로 제시한다. 일반적인 대응인 문맥 압축 후 계속 작업하기와 서면 인계를 남기고 새로 시작하기에 recall을 더해, 세션의 사전 지식 없이는 답을 재구성할 수 없는 두 과제에서 비교했다. 문맥 압축은 한 과제에서는 답에 도달했지만 다른 과제에서는 실패했으며, 실패한 경우에는 요약이 중요한 발견의 차이를 지워 버렸다고 설명한다. recall은 원래 구절을 반환했고 두 과제 모두에서 가장 저렴했으며, 서면 인계에 비해 각각 8배와 4배 저렴한 것으로 보고됐다. 비용에는 첫 질문 전에 발생하는 인계나 압축의 일회성 준비 비용을 한 번 포함했고 실패한 방식에는 성공당 비용을 부여하지 않았으며, 제시된 결과의 범위는 해당 두 과제다.

8. 오픈소스 구성 요소를 작업 기억으로 연결

결론에서 저자는 에이전트가 이미 작성한 기록을 다음 에이전트가 어느 머신에서든 읽을 수 있는 기억으로 바꾸는 것이 funes의 목적이라고 강조한다. 이 구현은 로컬에서 실행할 수 있는 오픈소스 임베딩 모델, 저렴한 증분 쓰기를 지원하는 Lance의 추가 전용 데이터셋, Hub의 데이터셋 캐시와 콘텐츠 중복 제거 기능에 기반한다. 원문은 새로운 기반 기술을 많이 발명하기보다 이러한 구성 요소를 에이전트가 실제로 사용할 수 있는 기억으로 결합하는 데 작업의 핵심이 있다고 설명한다. 앞서 제시된 로컬 검색과 원문 출처 보존, 데이터셋 공유는 이런 기반 위에서 세션 기록을 다시 활용하는 흐름으로 연결된다. funes 자체도 오픈소스이며 GitHub에 공개되어 있고, 설치 문제부터 검색 누락과 추가 에이전트 지원 요청까지 이슈를 통해 제보할 수 있다고 안내한다.

🧾 핵심 주장 / 시사점

  • 기억의 유용성은 로그 보관 여부뿐 아니라 필요한 판단 근거를 검색하고 원래 맥락까지 확인할 수 있는지에 달려 있다는 관점을 제시한다.
  • 세션을 공통 형식의 사용자 소유 데이터셋으로 관리하면 에이전트와 머신을 바꾸더라도 과거 작업의 이유를 이어서 활용할 수 있다.
  • 두 과제의 비교는 요약 과정에서 중요한 발견이 사라질 수 있음을 보여주며, 원문 검색을 긴 세션의 비용과 정보 손실을 다루는 대안으로 제시한다.

✅ 액션 아이템

  • funes ask로 과거 판단을 질문하고 답변의 출처와 근거 부족 표시를 확인.
  • Claude Code, Codex, pi, Hermes 중 사용하는 에이전트에 funes add를 연결해 완료된 턴의 증분 색인을 적용.
  • 여러 머신에서 기억을 재사용할 경우 사용자 소유 Hugging Face 데이터셋을 연결하고 비공개 기본값과 게시 전 비밀정보 검사를 확인.

❓ 열린 질문

  • funes ask가 근거 부족을 표시하는 질문은 어떤 과거 판단에 관한 것인가?
  • Claude Code, Codex, pi, Hermes 중 어떤 에이전트와 머신 사이에서 작업 이력을 이어갈 필요가 있는가?
  • 서면 인계 대비 비용이 각각 8분의 1과 4분의 1이었던 두 과제의 결과가 다른 장기 세션에서도 재현되는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.