왜 위키를 만드는가
"RAG는 매번 검색해서 답을 만든다. LLM Wiki는 지식이 쌓여서 답이 더 좋아진다." — Andrej Karpathy, 2026.
옵시디언 마크다운 폴더 + AI 스킬 한 개만 있으면 시작 가능. 데이터베이스·서버 X.
30분 시작 경로 — 필수 4단계만
13계층 구조 (Karpathy 표준)
raw — 불변 원자료 (웹 클리핑, 대화 기록, 메모) wiki — AI가 만든 마크다운 (요약 · 엔티티 · 상호 링크) schema — 운영 규칙 (CLAUDE.md, lint 정책)
23가지 핵심 작업
- ingest — 새 raw → wiki 페이지 생성
- query — 위키만 읽고 답변 합성
- lint — 끊긴 링크 · 중복 정리
이 3가지가 LLM Wiki의 최소 단위. 모든 도구·플러그인이 같은 패턴.
웹 클리퍼로 raw 수집
왜? raw 폴더가 없으면 ingest할 자료가 없습니다. 첫 단계는 자료를 모으는 입구를 만드는 것.
옵시디언 공식 Chrome/Firefox 확장. 웹 페이지를 깔끔한 마크다운으로 옵시디언 볼트에 직접 저장. 무료, 1분 설치.
1설치
- 옵시디언 앱이 없으면 먼저 obsidian.md에서 설치
- obsidian.md/clipper에서 브라우저 확장 설치 (Chrome · Firefox · Edge)
- 옵시디언 앱에서 raw 폴더 지정 (예:
raw/articles/) - 템플릿 선택 — 기본 "Default"면 충분
2사용
- 저장하고 싶은 웹 페이지에서 확장 아이콘 클릭
- 제목·태그·요약 자동 추출 → 볼트에
.md파일 생성 - raw 폴더에 즉시 반영
wiki 스킬로 raw → wiki 변환
왜? raw만 쌓아두면 쓰레기통. 요약·엔티티·링크를 만들어야 검색·활용 가능한 자산이 됩니다.
오픈소스 wiki 스킬은 9개 표준 operation을 제공합니다. Claude Code · Codex · Antigravity 어디서나 동일한 자연어로 호출.
19개 operation (전부 외울 필요 X)
2자연어 호출 — 이름 외울 필요 X
상황을 말하면 AI가 적합한 operation을 자동 선택. 처음엔 ingest · query 2개만으로 충분.
| 이런 상황에서 | 이렇게 말하면 | 실행되는 operation |
|---|---|---|
| 새 raw 처리하고 싶을 때 | "오늘 클리퍼로 모은 글 5개 ingest" | ingest |
| 이전 작업 찾고 싶을 때 | "이전에 인증 관련 작업 있었나?" | query |
| 구조 점검 | "끊긴 링크 · 중복 페이지 점검" | lint |
| 간단 메모 | "이 결정 위키에 페이지로 추가" | add |
| 위키 둘러보기 | "위키에 어떤 페이지 있나" | list |
3생성되는 페이지 구조
--- title: Auth Architecture category: architecture tags: [auth, jwt, security] created: 2026-05-13 --- # Auth Architecture ## Decision - JWT + refresh token 패턴 ## Related - [[token-refresh-flow]] - [[security-audit-2026-04]]
위키링크 [[page-name]] 문법으로 페이지 간 상호 참조. 옵시디언 GUI에서도 클릭 가능.
각 환경 폴더로 cd → git clone
왜? 마켓플레이스 자연어 설치는 도구 의존적. git clone은 어디서나 동일하게 작동합니다.
각 도구마다 고유 스킬 폴더가 있습니다. 그 폴더로 이동 → git clone 한 줄. 끝.
1방법 A — git clone (모든 환경 표준 · 추천)
mkdir -p ~/.claude/skills cd ~/.claude/skills git clone https://github.com/<owner>/<wiki-skill-repo> wiki # 검증 ls ~/.claude/skills/wiki/SKILL.md
# Windows 네이티브 설치 winget install --id OpenAI.Codex -e codex --version mkdir -p ~/.copilot/skills cd ~/.copilot/skills git clone https://github.com/<owner>/<wiki-skill-repo> wiki
# Antigravity 설치 # https://codelabs.developers.google.com/getting-started-google-antigravity cd /path/to/your-project mkdir -p .github/skills cd .github/skills git clone https://github.com/<owner>/<wiki-skill-repo> wiki # AGENTS.md를 프로젝트 루트에 함께 배치
2방법 B — 자연어 설치 (Claude Code 한정)
Claude Code에는 플러그인 마켓플레이스가 있어 자연어로도 설치 가능합니다. 다만 다른 환경(Codex · Antigravity)은 마켓 X — 방법 A 사용.
# Claude Code 채팅에 입력 "https://github.com/<owner>/<wiki-skill-repo> 이 플러그인 설치해줘"
3호출 (3환경 동일 자연어)
"raw 폴더 새 파일 5개 ingest해줘" "인증 관련 이전 작업 있나?" "위키 끊긴 링크 점검"
• 표준 — 모든 OS·도구·환경에서 동일 명령
• 버전 관리 —
git pull로 업데이트• 오프라인 OK — 회사망 마켓 접근 제한되어도 git만 되면 동작
QMD — 사내 마크다운 1초 검색
왜? 위키 페이지가 100개 넘어가면 키워드 검색만으로 부족. 의미 검색으로 "관련 페이지" 즉시 회상.
옵시디언 볼트 전체를 로컬 임베딩으로 인덱싱하는 CLI 도구. 외부 API 호출 0, 토큰비 0.
1설치 (Python pip)
pip install qmd-cli qmd --version
2볼트 등록 (1회만)
qmd init /path/to/your-vault qmd config set embed_model bge-m3 qmd update && qmd embed
3활용 명령
| 명령 | 역할 |
|---|---|
qmd search "쿼리" | 키워드 검색 (BM25) |
qmd query "쿼리" | 의미 검색 (벡터) |
qmd update | 새 파일 인덱싱 |
qmd embed | 임베딩 재계산 |
qmd update를 직접 호출해야 인덱스 갱신. 매일 한 번씩 수동 호출이 가장 단순. 자주 갱신하고 싶으면 §7 cron으로 자동화.
AI 세션을 자동 메모리로
왜? wiki는 외부 자료 수집·컴파일. agentmemory는 AI 대화·결정 자체를 4-tier 메모리로 저장. 별도 트랙으로 운영하면 강력.
wiki(외부 raw)와 다른 입력원 — AI 세션 자체. 수동 호출 위주로 시작 → 자동 캡처(hooks)는 익숙해진 후 선택.
1설치
npx @agentmemory/agentmemory # 자동 등록되는 것: # - 4-tier 메모리 SQLite (외부 의존성 0) # - 51 MCP tools (memory_recall, memory_save, memory_smart_search 등) # - 12 hooks (선택 — 기본 비활성, 별도 설정으로 활성)
24-tier 메모리
| Tier | 의미 | 예시 |
|---|---|---|
| ① Working | 현재 작업 (raw observations) | "방금 X 파일 수정 중" |
| ② Episodic | 세션 일화 (compressed summaries) | "어제 인증 모듈 작업" |
| ③ Semantic | 의미적 사실·패턴 | "우리 팀은 JWT 사용" |
| ④ Procedural | 워크플로우·결정 패턴 | "디버깅 4단계 절차" |
3수동 호출 (권장 — 처음엔 이것만)
# 자연어로 호출 — MCP tool이 자동 활성화 "이전에 OAuth 관련 작업 메모리에서 찾아줘" → memory_smart_search 자동 호출 "오늘 결정 사항 메모리에 저장해줘 — JWT refresh 패턴 채택" → memory_save 자동 호출 "지난 주 디버깅 절차 회상해줘" → memory_recall + episodic tier 검색
~/.claude/settings.json에서 hooks 활성화 (선택).
• wiki 스킬 — 옵시디언 raw → wiki 마크다운 컴파일 (외부 자료)
• agentmemory — AI 세션 결정·실수·맥락 (내부 컨텍스트)
• 두 시스템은 독립 — 겹치지 않게 별도 트랙으로 운영
QMD 갱신 · wiki ingest 자동 실행
왜? 매번 수동 호출이 번거로우면 시스템 스케줄러로 자동화. 기본은 수동, 익숙해진 후 추가.
QMD 인덱싱 + raw 폴더 ingest를 시스템 스케줄러로 자동화. 백그라운드에서 위키가 스스로 자랍니다.
1QMD 30분 주기 인덱싱
schtasks /create /tn "QMD Update" ^ /tr "wsl bash -c 'qmd update && qmd embed'" ^ /sc MINUTE /mo 30 /ru "%USERNAME%" # 확인 schtasks /query /tn "QMD Update" # 삭제 (필요시) schtasks /delete /tn "QMD Update" /f
또는 GUI: 작업 스케줄러 → 작업 만들기 → 트리거 "30분마다 반복" → 동작 "wsl bash -c '...'"
# crontab -e 편집 후 한 줄 추가 */30 * * * * /usr/local/bin/qmd update && /usr/local/bin/qmd embed # 확인 crontab -l
2매일 아침 9시 — raw → wiki ingest
# Claude Code 환경 schtasks /create /tn "Wiki Ingest Morning" ^ /tr "wsl bash -c 'claude --print \"raw 폴더 새 파일 ingest해줘\"'" ^ /sc DAILY /st 09:00 /ru "%USERNAME%"
0 9 * * * /usr/local/bin/claude --print "raw 폴더 새 파일 ingest해줘"
3cron 주기 표 (참고)
| cron 표현 | 의미 | 용도 |
|---|---|---|
*/30 * * * * | 30분마다 | QMD 인덱싱 |
0 * * * * | 매시 정각 | 가벼운 갱신 |
0 9 * * * | 매일 9시 | wiki ingest |
0 9 * * 1-5 | 평일 9시 | 출근일만 |