SELECT 1
Entry 0152026.10.25 일
One launch a day. Picked, run, explained.

2026.10.25 일

Enzyme: 미리 만든 질문으로 노트 검색

오늘의 픽: Enzyme

Enzyme 은 Markdown 노트 폴더로 로컬 검색 색인과 질문 목록을 만들고, Claude Code 같은 코딩 에이전트가 그 색인으로 노트를 찾게 하는 프로덕트다.

오늘의 픽으로 선정한 이유는 몇 달 치 노트에서 무엇이 바뀌었는지 묻는 질문에도 에이전트가 답을 찾을 수 있게 하기 때문이다.

exit 0실행함작동한다. 기본 설정으로 색인을 만들고, 네트워크 없이 검색했다.
출처
Show HN
만든 방식
Rust, SQLite

무엇이 문제인가

코딩 에이전트가 몇 달 치 Markdown 노트를 참고하려면, 질문과 관련된 노트를 직접 찾아야 한다. Anthropic 의 Claude Code 문서에 따르면 Claude Code 는 패턴으로 파일을 찾고 정규식으로 내용을 검색한다. Enzyme 의 제작자 Joshua Pham 은 README 에서, 이름이나 정확한 문구를 찾을 때는 이런 검색이 빠르지만 프로젝트에서 무엇이 바뀌었는지처럼 시간의 흐름을 따라가야 하는 질문에는 Enzyme 이 도움이 된다고 했다.

어떻게 해결했나

Enzyme 은 2026년 10월 24일 Hacker News 에 Show HN개발자 커뮤니티 Hacker News 에서 자신이 만든 프로덕트를 소개하는 글. 제목이 "Show HN:"으로 시작한다. 글로 올라왔다. Enzyme 은 노트 폴더 안에 로컬 색인을 만든다. Enzyme 의 설정 파일은 확장자가 .enzyme 이고, 색인과 달리 노트 폴더 밖의 Enzyme 홈 디렉토리에 저장된다. 이 파일에 읽을 폴더와 태그를 지정하면, enzyme init 이 두 가지를 실행한다.

첫째, 폴더와 태그마다 시기별로 발췌를 골라 LLM대규모 언어 모델. 많은 글로 학습해 글을 이해하고 생성하는 AI 모델이다. 에 질문을 만들게 한다. Enzyme 에서는 이 질문을 catalyst 라고 부른다. 둘째, 모든 노트를 단어와 의미로 검색할 수 있게 색인한다. README 에 따르면 에이전트가 enzyme catalyze 로 질의하면, 결과마다 질의에 가장 알맞은 catalyst 가 함께 반환된다.

무엇이 다른가

첫째, 노트를 찾는 방식이 다르다. 정규식 검색은 패턴과 일치하는 파일을 모두 찾지만, Enzyme 은 결과를 질의와 관련성이 높은 순서로 정렬하고 결과마다 미리 만든 질문을 함께 반환한다. 에이전트는 관련 있는 노트부터 읽고, 그 질문으로 결과가 나온 이유를 알 수 있다. 다만 오늘은 결과 대부분에 같은 질문이 연결돼, 질문만으로는 결과가 왜 나왔는지 알기 어려웠다.

둘째, 정규식 검색과 달리 Enzyme 은 enzyme init 을 실행할 때 LLM 이 필요하다. 기본 설정에서는 Enzyme 의 호스팅 모델이 질문을 만들므로, 사용자가 API 키를 준비하지 않아도 된다. 트레이드오프는 노트 발췌문이 그 모델로 전송된다는 점이다.

무엇이 편해지나

  • 몇 달 치 회의록과 결정 기록을 Markdown 으로 쌓아 둔 팀의 개발자. 오늘은 결정이 바뀐 이유를 질의했다. 질의에 넣은 Postgres 와 billing 이 여러 노트에 있었는데도, 바뀐 뒤의 결정 문서가 첫 결과로 나왔다.
  • Obsidian 으로 노트를 관리하는 사용자. README 에 따르면 Enzyme 은 노트를 옮기거나 정리하지 않고 그대로 색인한다. 오늘 Enzyme 은 노트 파일을 바꾸지 않았다. 색인은 노트 폴더 안의 .enzyme 디렉토리에 만들어졌다.

어떻게 만들었나

  • 커밋 713개는 2026년 3월 1일부터 10월 24일까지 작성됐다(작성자 시간대 기준). 이 가운데 276개에는 Claude 와 함께 작성했다는 Co-authored-by 트레일러가 있다.
  • 저장소의 crates 디렉토리에 있는 Rust 코드는 88,321줄이다.
  • 제작자는 2026년 10월 24일 Hacker News 댓글에서 Enzyme 을 Obsidian 플러그인으로 시작해 Obsidian 용 MCPModel Context Protocol. AI 모델을 외부 도구와 데이터에 연결하는 방식을 정의한 규격이다. 서버를 거쳐, 그 주에 오픈소스로 공개했다고 밝혔다.

실행해 보니

소스로 빌드하고, 직접 작성한 노트 10개로 시험했다. 회의록과 결정 문서는 결제 데이터베이스를 Postgres 에서 SQLite 로 바꾼 과정을 다룬다.

  1. 빌드. cargo build --release -p enzyme-cli 에 4분 46초가 걸렸다. 빌드 스크립트는 Hugging Face 에서 임베딩문장을 숫자 벡터로 바꾼 것. 뜻이 비슷한 문장은 가까운 벡터가 되어, 단어가 달라도 의미로 검색할 수 있다. 모델 파일을 내려받는다.
  2. 설정. README 에 따르면 enzyme compile 은 OpenRouter여러 회사의 AI 모델을 API 하나와 계정 하나로 사용할 수 있게 하는 서비스. 의 API 를 호출해 설정을 제안한다. 이 명령 대신 README 예시대로 설정 파일을 작성했다.
  3. 색인. 기본 설정으로 enzyme init 을 실행하자 catalyst 33개가 만들어졌다. 실행에는 14.5초가 걸렸다. 환경 변수에 OpenAI API 키와 주소를 지정했지만, 로그에 따르면 Enzyme 은 무료 설정 서버에서 설정을 받았다. 지정한 주소로는 요청이 한 건도 가지 않았다.
  4. 직접 지정한 모델. --llm env 로 OpenRouter 의 Claude Haiku 5.5 를 지정했다. Enzyme 은 요청의 출력 상한을 512 토큰으로 설정했다. 응답 9건은 모두 이 상한에 도달해 중단됐다. 응답에는 추론 내용만 있고 답은 비어 있었다. catalyst 는 하나도 만들어지지 않았다. init 은 실패했다.
  5. 질문 목록. enzyme petri 는 만들어진 질문을 시기와 함께 보여 줬다.
  6. 검색. 네트워크를 차단한 채, 기본 설정으로 만든 색인에 enzyme catalyze 로 결정이 바뀐 이유를 질의했다. 결과 수의 기본값이 10개라 노트가 모두 반환됐다. 처리 시간은 3 ms 였다. 첫 결과는 바뀐 뒤의 결정 문서였다. 결과 10개 모두 catalyst 와 함께 반환됐지만, 그중 9개는 catalyst 가 같았다.
  7. 갱신. 노트 하나를 고치고 enzyme refresh 를 실행하자 고친 노트만 다시 임베딩됐다. refresh 는 19 ms 가 걸렸고 catalyst 를 다시 만들지 않았다. README 에 따르면 refresh 에는 enzyme login 이 필요하지만, 오늘은 로그인 없이도 refresh 가 완료됐다.
  8. 비용. --llm env 의 실패한 요청 9건에 23,235 토큰, $0.00417 이 들었다.

README 에 적힌 세 가지 가운데 두 가지는 실행에서 확인됐다. 검색은 로컬에서만 실행됐다. Enzyme 은 기본 설정에서 OPENAI_* 환경 변수를 무시했다. catalyst 가 질의에 가장 알맞은지는 정답을 정해 두지 않아 확인하지 못했다.

Resolved API config from Enzyme free-config broker (model=anthropic/claude-haiku-5.5)
[catalyst] [1/3] meetings (failed: all 3 retry attempts failed: Failed to parse LLM API response as JSON)
{"processing_time":0.003,"query":"why did we move billing off Postgres and what did finance lose",...}
projects/billing-db-v2.md 0.992 | via: Why did I choose Postgres for billing when finance wanted SQL reports?

확인하지 못한 것

  • enzyme compile 의 설정 제안. README 에 따르면 compile 은 OPENAI_BASE_URL 이 OpenRouter 주소일 때 직접 지정한 키를 사용한다. 그렇게 실행해 직접 작성한 설정과 비교하자.
  • 에이전트와의 연동. enzyme install claude 로 Claude Code 에 스킬을 설치하고, Claude Code 가 노트에 관한 실제 질문에 답하는지 확인하자.
  • 로컬 모델로 만든 catalyst. enzyme model 로 모델을 설치해 호스팅 모델의 결과와 비교하자.

판정

작동한다. 기본 설정으로 색인을 만들고, 네트워크 없이 검색했다. 다만 오늘은 직접 지정한 모델이 아니라 Enzyme 의 호스팅 모델로만 catalyst 를 만들 수 있었다. 몇 달 치 Markdown 노트를 바탕으로 에이전트가 시간의 흐름을 따라가야 하는 질문에 답해야 하고, 노트 발췌문을 호스팅 모델에 보내도 되는 경우에 써 볼 만하다. 노트를 외부로 보내면 안 되는 환경이라면, 로컬 모델로 catalyst 를 만들 수 있는지 확인하기 전까지 이 프로덕트는 적합하지 않다.

얻어갈 것

  • 검색 결과마다 그 결과를 고른 이유를 함께 반환하고, 그 이유가 결과마다 다른지 확인해 보자.
  • 자신의 API 키를 지정해도 도구의 기본값이 호스팅 모델인지 확인하자. Enzyme 은 OPENAI_* 변수가 있어도 호스팅 모델을 사용했다.

시작하기

  1. cargo build --release -p enzyme-cli
  2. enzyme init && enzyme catalyze "a question about your notes"
필요한 것
Rust 1.88(소스 빌드), 또는 README 의 설치 스크립트 · Markdown 노트 폴더. 같은 컴퓨터에서 두 번째 노트 폴더를 색인하려면 enzyme login
비용
Apache-2.0, 무료. README 에 따르면 기본 설정에서는 Enzyme 의 호스팅 모델이 질문을 만든다. 첫 노트 폴더는 로그인 없이 색인할 수 있다. 두 번째 폴더를 색인하려면 enzyme login 이 필요하다.

자신의 OpenAI 호환 API 키를 사용하려면 enzyme init 에 --llm env 옵션을 지정한다. 지정하지 않으면 OPENAI_* 환경 변수는 무시된다.

실행해서 확인한 절차다.

진행

  1. 3일예정
  2. 7일예정
  3. 15일예정
  4. 30일예정
  5. 90일예정
  6. 180일예정
  7. 365일예정