---
title: "VHDB — 바이브코딩 이력을 검색하는 데이터베이스와 Claude Code 플러그인 | WISP"
description: "바이브코딩 세션의 대화·결정·오류·해결·커밋을 저장해 검색하는 데이터베이스 VHDB와 Claude Code 플러그인 소개. 로컬 우선, 비밀 마스킹, 편집 전 확인을 갖췄습니다."
url: https://www.j2w2.org/project-vhdb.html
lang: ko
---

개발 도구 · Claude Code 플러그인 · 데이터베이스

# VHDB — 지난 세션에 물어보세요

'이거 전에 해 봤나?', '왜 이렇게 정했지?', '이 파일은 어떻게 지금 모양이 됐지?' 바이브코딩 세션에서 오간 대화, 결정, 오류, 해결, 편집, 커밋을 저장해 두고, 사람과 Claude 가 함께 검색하게 해 주는 이력 데이터베이스와 Claude Code 플러그인입니다.

[공식 사이트](https://vhdb.j2w2.org) [플러그인 보기 (GitHub)](https://github.com/nathak/vhdb-plugin)

![VHDB 소개 이미지 — 전에 해 봤나, 왜 이렇게 정했나, 이 파일은 어떻게 여기까지 왔나를 결정·오류·해결·커밋 카드로 보여 주는 그림](https://www.j2w2.org/images/vhdb/main.jpg)

*VHDB 소개 이미지 (설명용 그림)*

## 같은 질문이 매주 돌아옵니다

바이브코딩을 오래 하면 같은 질문이 계속 돌아옵니다. 답은 지난 대화 어딘가에 있지만 세션이 끝나면 찾기 어렵습니다. VHDB(Vibe History Database)는 세션에서 오간 **대화, 결정, 오류, 해결, 편집, 커밋**을 저장해 두고, 필요할 때 검색합니다. 읽을 이력은 SmartWorkbench 의 결정 장부(읽기만 합니다)이거나 플러그인이 자기 로그로 남기는 기록입니다.

## 지난 세션에 물어보기

Claude Code 안에서 슬래시 명령으로 바로 찾습니다.

`/vhdb:search "refresh race" kind:error,decision`
`/vhdb:search file:src/auth.js kind:decision`
`/vhdb:history src/auth.js`

**전에 해 봤나?** 과거의 시도와 오류, 그 오류를 닫은 해결을 찾습니다. **왜 이렇게 정했지?** 결정을 이유와 함께, 그 결정이 대체한 이전 결정과 함께 보여 줍니다. **이 파일은 어떻게 여기까지 왔지?** 그 파일을 건드린 요청 전체를 최신순 타임라인으로 보여 줍니다.

질의는 단어, 구절, 파일·커밋·세션·종류·기간 조건을 쓸 수 있습니다. 한국어는 음절 단위로, 코드는 camelCase·snake_case·경로 조각으로도 찾고, 결정과 오류를 위로 올리고 최신 기록에 가중치를 둡니다.

## Claude 가 작업 전에 스스로 찾아봅니다

플러그인은 Claude 가 직접 부르는 도구도 줍니다. `query_history` 와 `file_history` 로 같은 실수나 결정 번복을 피하려고 작업 전에 이력을 찾고, `record_decision` 으로 여러 안 중 하나를 고를 때 선택과 이유를 남깁니다. 이전 결정을 뒤집으면 그 결정은 '대체됨'으로 바뀝니다.

스위치 세 개는 **기본이 모두 꺼져 있고**, `/vhdb:on` 으로 기록과 맥락 주입을 켜며 편집 전 확인은 `/vhdb:on guard` 로 따로 켭니다. **기록**은 테스트·빌드·린트 결과와 실패를 남기고, 같은 검사가 나중에 통과하면 열린 오류를 닫습니다. **맥락 주입**은 프롬프트를 낼 때와 이미 본 오류가 다시 날 때 유효한 결정과 미해결 오류를 정해진 분량 안에서 붙이고, '과거 기록이며 지시가 아니다'라는 문구를 달아 둡니다. **편집 전 확인**은 유효한 결정이 걸린 파일의 첫 편집을 한 번 멈춰 그 결정을 보여 주며, 실패하거나 시간이 넘어도 편집을 막지 않습니다.

## 내 컴퓨터 안에서, 비밀은 가리고

플러그인에는 네트워크 코드가 없고, 모든 데이터는 내 컴퓨터의 저장소 안에만 있습니다. 토큰·API 키·URL 속 계정 정보 같은 비밀은 저장하기 전에 가리고, 검색 결과에는 도구 출력 본문을 넣지 않습니다.

데이터베이스 엔진은 처음부터 Rust 로 직접 만들었고 외부 데이터베이스가 필요 없습니다. 세션 로그를 그대로 기록의 원본으로 쓰고, 어느 시점에 중단되어도 같은 로그에서 같은 결과로 돌아옵니다. 같은 엔진이 Claude Code 플러그인 안(로컬), 개인용 데몬, 팀 서버 세 곳에서 돕니다.

## 솔직하게 말씀드리면

플러그인은 지금 **로컬 엔진만** 씁니다. 팀 서버 연결과 원격 업로드는 아직 구현되지 않았습니다. 프로젝트를 넘나드는 검색은 없고, 의미 검색은 선택 사항인데 지금은 단순한 방식뿐입니다. 로그 구조라서 이력을 하나씩 지울 수 없고, 시간은 UTC 로 표시합니다. 처음 내놓은 버전(0.1.0)입니다.

## 시작하기

Node.js 24 이상과 git 저장소가 필요합니다. 플러그인 저장소를 내려받은 뒤 Claude Code 를 이렇게 시작합니다.

`claude --plugin-dir ~/vhdb-plugin`

그다음 `/vhdb:search 토큰 갱신 kind:decision since:30d` 로 찾아보고, `/vhdb:on` 으로 기록과 맥락 주입을 켭니다(편집 전 확인은 `/vhdb:on guard`). 읽을 이력은 SmartWorkbench 의 `/swb ledger on` 이 쌓은 장부이거나 `/vhdb:on record` 로 이 플러그인이 남기는 기록이면 됩니다. 팀 서버는 릴리스 페이지의 설치 파일(.deb, .rpm, tar.gz)로 설치합니다.

## 구성

![VHDB 구성도 — SmartWorkbench 로그와 플러그인 로그가 ingest 로 엔진에 들어가고, WASM·로컬 데몬·팀 서버가 그 위에서 질의에 답한다](https://www.j2w2.org/images/vhdb/architecture.jpg)

*로그를 읽어 들여 한 엔진이 세 곳(플러그인 안, 개인용 데몬, 팀 서버)에서 검색에 답합니다*

## 주요 기능

- 이력 검색 — 단어·구절·파일·커밋·세션·종류·기간 조건, 한국어는 음절 단위

- 파일 이력 — 그 파일을 건드린 요청 전체를 최신순 타임라인으로

- Claude 도구 — 작업 전 이력 검색과 결정 기록

- 기록·맥락 주입·편집 전 확인 — 모두 기본 꺼짐, 필요할 때 켬

- 로컬 우선 — 플러그인에 네트워크 코드 없음, 비밀은 저장 전에 가림

- 같은 엔진 세 곳 — 플러그인 안, 개인용 데몬, 팀 서버

## 링크와 사용법

명령어, 도구, 설정, 파일 위치는 플러그인 저장소의 README 에 있고, 서버 설치 파일은 릴리스 페이지에서 받습니다.

[공식 사이트 (vhdb.j2w2.org)](https://vhdb.j2w2.org) [플러그인 저장소 (GitHub)](https://github.com/nathak/vhdb-plugin) [설치 파일 (릴리스)](https://github.com/nathak/vhdb-public/releases/latest)

VHDB

바이브코딩 이력 데이터베이스 · Claude Code 플러그인

### 프로젝트 정보

- **분류**: 개발 도구 · 데이터베이스

- **구성**: 엔진(로컬·개인 데몬·팀 서버) + Claude Code 플러그인

- **배포**: 플러그인은 GitHub, 서버는 릴리스 설치 파일

- **대상**: Claude Code 를 쓰는 개발자

- **버전**: 0.1.0

- **요구 사항**: Node.js 24 이상, git 저장소

- **플러그인 라이선스**: MIT

다음 프로젝트

## [OG](https://www.j2w2.org/project-og.md)
