{"id":49921488,"url":"https://github.com/kimsanguine/llm-brain","last_synced_at":"2026-06-28T01:01:39.778Z","repository":{"id":358305246,"uuid":"1240078728","full_name":"kimsanguine/llm-brain","owner":"kimsanguine","description":"LLM을 컴파일러로 쓰는 개인 지식 관리 시스템 (Second Brain Compiler)","archived":false,"fork":false,"pushed_at":"2026-06-23T23:45:58.000Z","size":1345,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-24T01:22:27.971Z","etag":null,"topics":["claude-code","fastapi","knowledge-management","llm-wiki","obsidian","second-brain"],"latest_commit_sha":null,"homepage":"https://habix.ai/products/llm-brain","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kimsanguine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-15T18:40:39.000Z","updated_at":"2026-06-23T23:46:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kimsanguine/llm-brain","commit_stats":null,"previous_names":["kimsanguine/llm-brain"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kimsanguine/llm-brain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimsanguine%2Fllm-brain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimsanguine%2Fllm-brain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimsanguine%2Fllm-brain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimsanguine%2Fllm-brain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kimsanguine","download_url":"https://codeload.github.com/kimsanguine/llm-brain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimsanguine%2Fllm-brain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34873663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","fastapi","knowledge-management","llm-wiki","obsidian","second-brain"],"created_at":"2026-05-16T20:11:25.677Z","updated_at":"2026-06-28T01:01:39.768Z","avatar_url":"https://github.com/kimsanguine.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![llm-brain AI-native second brain OS banner](./assets/banner.svg)\n\n# llm-brain — 당신의 두 번째 뇌를 만드세요\n\n\u003e **메모·노트를 넣으면 AI가 정리된 지식 위키로 만들고, 필요할 때 글로 꺼내 쓰는 '두 번째 뇌' 도구.**\n\u003e LLM을 컴파일러(메모를 자동으로 정리해 주는 AI)처럼 써서, 흩어진 raw 메모를 구조화된 위키로 바꾼다.\n\u003e *Build your Second Brain with LLM as the compiler.*\n\n**📌 매일 메모는 쌓이는데 한 달 뒤엔 어디 있는지 모르겠다면 — 그 메모를 AI가 정리·연결·검색·재활용해 주는 도구입니다. 코딩 지식이 없어도 됩니다.**\n\n![Python](https://img.shields.io/badge/Python-3.11+-3776AB?logo=python\u0026logoColor=white)\n![License](https://img.shields.io/badge/License-MIT-green)\n![Claude Code](https://img.shields.io/badge/Claude_Code-CLI-orange)\n![Obsidian](https://img.shields.io/badge/Obsidian-Graph_View-7C3AED)\n![Version](https://img.shields.io/badge/version-0.2.0-blue)\n\n\u003e 🎉 **v0.2** — Agent Memory OS 5층 기억(작업·에피소드·의미·절차·메타) + 설치 점검 `/llm-brain:doctor` · 웹 UI `/llm-brain:wikiweb` 커맨드 추가.\n\n---\n\n## 왜 만들었나 *Why this exists*\n\n매일 TIL(Today I Learned, 오늘 배운 것 메모)을 쓰고, 회의록을 남기고, 논문을 클리핑한다.\n그런데 한 달 뒤, 그 지식은 어디 있는가?\n\n*You write notes every day — but where does that knowledge go after a month?*\n\n흩어진 메모는 쌓이기만 할 뿐 다시 꺼내 쓰기 어렵다. llm-brain은 이 메모들을 **AI가 자동으로 정리·연결**해 검색 가능한 위키로 만들고, 필요할 때 **글로 다시 꺼내 쓰게** 한다.\n\n---\n\n## 미리보기 *Preview*\n\n로컬 HTML 검색·페이지뷰 (브라우저에서 위키를 둘러보는 화면, `uv run python -m wiki_app`):\n\n| 검색 + 페이지 뷰 | 본문 grep 자동 확장 |\n|---|---|\n| ![검색](docs/screenshots/dod-3-korean-search.png) | ![확장](docs/screenshots/dod-4-resnet-expansion.png) |\n\n| 결과 0개 → AI CTA | AI 답변 모달 (live) |\n|---|---|\n| ![empty](docs/screenshots/dod-5-zero-results.png) | ![ai](docs/screenshots/dod-9-ai-modal.png) |\n\n\u003e 한국어/영문 검색 · 결과 \u003c 3개일 때 본문 grep(본문 전체 텍스트 검색) 자동 확장 · 페이지 뷰 + wikilink SPA 네비게이션(새로고침 없이 이동) · AI 답변 옵션 토글\n\n---\n\n## 준비물 *Prerequisites*\n\n비전공자도 따라 할 수 있게, 필요한 **세 가지**를 하나씩 풀어 둔다.\n\n**1. Claude Code** — 터미널에서 대화로 코드를 다뤄 주는 AI 도구. 이 위키의 'AI 컴파일러' 역할을 한다.\n설치·안내(공식): \u003chttps://docs.claude.com/claude-code\u003e\n\n**2. uv** — 파이썬을 알아서 설치·실행해 주는 도구(복잡한 파이썬 환경 설정을 대행). 터미널에 아래 한 줄을 입력하면 설치된다:\n\n```bash\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n**3. git** — 인터넷의 코드 저장소를 내 컴퓨터로 내려받는 도구. macOS·Linux는 보통 기본 설치돼 있다(macOS에 없으면 `xcode-select --install`).\n\n용어 풀이:\n- **레포(repository)** = 코드가 모여 있는 온라인 저장소. 이 프로젝트가 사는 '집'.\n- **클론(clone)** = 그 레포를 통째로 내 컴퓨터에 복제하는 것. 명령은 `git clone \u003c주소\u003e`.\n\n### 명령을 어디에 입력하나 *Where to type*\n\n이 문서에는 두 종류의 명령이 섞여 나온다 — **입력하는 곳이 다르다.**\n\n- `/llm-brain:...` 처럼 **슬래시로 시작**하는 명령 → **Claude Code 입력창**(대화창)에 입력\n- `uv run ...` · `git clone ...` · `cp ...` 같은 명령 → **터미널**(명령줄, 곧 CLI)에 입력\n  - 💡 터미널 여는 법: macOS는 `⌘+Space` → `Terminal` 검색 → 실행. (Windows는 `PowerShell`.)\n\n\u003e 아래 모든 코드 블록 옆에 ▶ 표시로 \"어디에 입력하는지\"를 적어 둔다.\n\n---\n\n## 설치 *Install*\n\n▶ **Claude Code 입력창**에 입력 — 플러그인으로 설치한다:\n\n```\n/plugin marketplace add kimsanguine/llm-brain\n/plugin install llm-brain@llm-brain\n```\n\n설치하면 컴파일러 커맨드가 추가된다 — `/llm-brain:ingest`·`/llm-brain:curate`·`/llm-brain:express`·`/llm-brain:query`·`/llm-brain:okf` · 설치 점검 `/llm-brain:doctor` · 웹 UI `/llm-brain:wikiweb`.\n\n\u003e 자기 지식 데이터를 다루려면 레포를 클론해 `raw/` 소스를 등록한다(아래 [빠른 시작](#빠른-시작-quick-start)). 플러그인은 *컴파일러 커맨드*를, 클론은 *자기 데이터*를 제공한다.\n\n---\n\n## 빠른 시작 *Quick Start*\n\n[설치](#설치-install)로 커맨드를 받은 뒤, 레포를 클론한다:\n\n▶ **터미널**에 입력:\n\n```bash\ngit clone https://github.com/kimsanguine/llm-brain.git \u0026\u0026 cd llm-brain\n```\n\n### 1) 먼저 1분 체험 — 데모 위키 둘러보기 (추천)\n\n설정 없이 동작을 먼저 본다. 예시 위키를 복사해 로컬 화면으로 바로 둘러보기:\n\n▶ **터미널**에 입력:\n\n```bash\ncp -r examples/seed-wiki/wiki ./wiki            # 데모 wiki 복사\ncp examples/seed-wiki/index.md ./index.md       # 데모 목차(index.md) 생성\nuv run python -m wiki_app                        # 로컬 HTML UI → http://localhost:8000\n```\n\n(Obsidian으로 열려면 이 폴더를 \"Open folder as vault\".)\n\n### 2) 내 메모로 운영하기\n\n핵심 흐름은 **넣기 → 물어보기 → 꺼내쓰기** 3단계다.\n\n**먼저, 내 메모가 어디 있는지 알려준다.** `schema/sources.yaml`(소스 등록 설정 파일)을 열어 내 메모 폴더 경로를 적는다. 파일 편집이 막막하면 **Claude Code 입력창에 자연어로** \"내 옵시디언 폴더를 `schema/sources.yaml`에 등록해줘\"라고 부탁해도 된다. (`raw/` = 아직 정리 안 된 원본 메모가 모이는 폴더.)\n\n그다음 ▶ **Claude Code 입력창**에 입력:\n\n```\n/llm-brain:ingest               # ① 넣기: raw → wiki 자동 정리\n/llm-brain:query \"...\"          # ② 물어보기: wiki 기반 답변\n/llm-brain:express blog \"...\"   # ③ 꺼내쓰기: 글 초안 생성\n```\n\n---\n\n## 핵심 기능 *Core Features*\n\n쉬운 말로 6가지: **넣기(ingest) · 정리(curate) · 꺼내쓰기(express) · 물어보기(query) · 웹으로 보기(wiki-web) · 내보내기(okf)**.\n\n### 📥 ingest — 넣기: 메모·파일·URL 모으기 *Capture · 4 Input Channels*\n\n**한 줄로: 지식을 시스템에 '넣기'.** 메모·문서·웹페이지를 raw/(원본 보관함)에 모은다.\n\n▶ `cp`는 **터미널**, `/llm-brain:ingest`는 **Claude Code 입력창**에 입력:\n\n```bash\n# 채널 1: 수동 투입 (MD · TXT · PDF · DOCX · PPTX) — 터미널\ncp paper.pdf raw/docs/\n\n# 채널 2: /llm-brain:ingest 슬래시 명령 (Claude Code 입력창)\n/llm-brain:ingest https://example.com --resonance high\n/llm-brain:ingest ~/Downloads/paper.pdf\n/llm-brain:ingest \"오늘 배운 것: ...\"\n\n# 채널 3 [고급·선택]: Obsidian vault 자동 미러링 (schema/sources.yaml = 소스 등록 설정 파일)\n# 채널 4 [고급·선택]: Claude Code Routines 크론(예약 자동 실행) 등록\n```\n\n`--resonance high/medium/low`(중요도 태그)로 자료 중요도를 표시하고, index.md(전체 목차) 기반 중복 검사로 위키에 불필요한 중복이 쌓이는 것을 막는다.\n\n---\n\n### 🔁 curate — 정리: 압축·수명 관리 *Curate · Progressive Summarization*\n\n**한 줄로: 쌓인 지식을 '정리'하기.** 자주 보는 페이지일수록 더 짧게 압축(distill, 압축 정리)하고, 오래 안 본 페이지는 archive(보관) 후보로 내린다.\n\n▶ **Claude Code 입력창**에 입력:\n\n```\n/llm-brain:curate --distill     # 자주 본 페이지를 한 단계 더 압축\n/llm-brain:curate --lifecycle   # 보관 기한(TTL) 지난 페이지를 archive 후보로\n/llm-brain:curate --all         # 전체 실행 (점검 + 압축 + 수명 관리)\n```\n\n각 페이지는 frontmatter(페이지 머리말 정보)에 `distill_level`(압축 단계: 0=원문 → 3=한 줄)과 `access_count`(열어본 횟수)를 기록한다. 자주 열어본 페이지일수록 자동으로 먼저 정리된다.\n\n\u003e 압축 단계·접근 집계의 동작 방식, wikilink 그래프(`wiki/graph.json`) 분석, Agent Memory OS의 선택 필드(`memory_type` 등)는 모두 자동 처리된다. 상세: `SPEC.md`.\n\n---\n\n### 📤 express — 꺼내쓰기: wiki → 창작물 *Express · Wiki to Output*\n\n**한 줄로: 정리된 지식을 글로 '꺼내 쓰기'.** Second Brain의 존재 이유 — 블로그·강의안·요약·리포트 초안을 자동 생성한다.\n\n▶ **Claude Code 입력창**에 입력:\n\n```\n/llm-brain:express blog \"AI 에이전트 설계 패턴\"\n/llm-brain:express lecture \"context-first-orchestration\" --slides 5\n/llm-brain:express summary --week\n/llm-brain:express report \"경쟁사 현황\"\n```\n\nblog 출력은 `raw/blog/`에도 자동 복사 → 다음 ingest 사이클에 wiki로 피드백.\n\n```\nwiki/ → express/blog/ → raw/blog/ → wiki/   ← 피드백 루프\n```\n\n---\n\n### 🔍 query — 물어보기: wiki 기반 답변 *Query · Wiki-grounded Answers*\n\n**한 줄로: 내 지식에 '물어보기'.** wiki에 있는 내용만 근거로 답한다 — 없으면 솔직히 \"없다\"고 한다(지어내지 않는다).\n\n▶ **Claude Code 입력창**에서 자연어로 물어본다:\n\n```\n사용자: \"RAG 구현할 때 뭐가 중요했지?\"\nClaude: wiki/ 내용 기반으로만 답변\n        (wiki에 없으면 \"raw 데이터가 필요합니다\")\n```\n\n물어본 페이지는 열어본 횟수(`access_count`)가 올라가, 다음 `curate --distill`에서 자동으로 먼저 정리된다.\n\n### 🌐 wiki-web — 웹으로 보기: HTML 검색·페이지뷰 *Local HTML Search UI*\n\n**한 줄로: 위 query를 브라우저에서.** 검색창·페이지 보기·wikilink 클릭으로 위키를 둘러본다.\n\n▶ **터미널**에 입력:\n\n```bash\nuv run python -m wiki_app\n# → http://localhost:8000\n```\n\n- **검색**: 제목 + description + tags + page_title 점수 매칭, 결과 \u003c 3개일 때 본문 grep(본문 전체 텍스트 검색) 자동 확장\n- **페이지뷰**: 마크다운 렌더링 + `[[wikilink]]` 클릭 SPA 네비게이션(페이지 새로고침 없이 이동), 좌측 결과 리스트 유지\n- **AI 답변 토글**: 결과 부족도에 비례해 CTA 강조 차등 (작은 버튼 / 노란 박스 / 큰 검정 버튼)\n- **URL hash**: `#q=...\u0026page=...` 형태로 검색·페이지 상태 보존, 새로고침 시 복원\n\n스크린샷: `docs/screenshots/dod-*.png`\n\n\u003e AI 답변은 `claude -p` CLI(명령줄 도구)로 라이브 동작하며 SSE 스트리밍(실시간 출력)을 지원한다. Claude Code 미설치 시 `status: unavailable`로 graceful 처리(없으면 조용히 비활성).\n\n---\n\n### 📦 okf — 내보내기: wiki → OKF 호환 번들 *Export · Wiki to OKF Bundle*\n\n**한 줄로: 위키를 표준 포맷으로 '내보내기'.** 동료나 다른 AI 도구가 그대로 읽을 수 있는 OKF(Google Open Knowledge Format, 공개 지식 표준) 번들 `okf/`로 변환한다. 내부 포맷은 그대로 두고 경계에서만 바꾼다.\n\n▶ **Claude Code 입력창**에 입력:\n\n```\n/llm-brain:okf                  # 먼저 dry-run 검토 후 okf/ 번들 생성\n/llm-brain:okf --dry-run        # 내보낼·제외할 목록과 통계만 미리보기 (파일 미작성)\n/llm-brain:okf --strip-internal # 외부 공유본 (내부 전용 필드 제거)\n```\n\n\u003e 🔴 **보안 (한 줄):** `okf/`를 public으로 커밋하면 history가 영구로 남는다. 커밋 전 반드시 `--dry-run`으로 민감 항목이 빠졌는지(`sensitive_hits=0`) 사람이 직접 확인한다. 제외·민감 설정과 보안 게이트 동작 상세: `SPEC.md`.\n\n---\n\n### 🧠 Agent Memory OS — 5층 기억 *5-Layer Memory*\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/agent-memory-5layers.jpg\" alt=\"AI 에이전트 메모리 5층 구조\" width=\"440\"\u003e\n\u003c/p\u003e\n\n사람의 기억이 여러 종류로 나뉘듯, AI 에이전트도 여러 층의 기억이 필요하다. 지금까지의 `wiki/`는 그중 **의미 기억(semantic, '무엇을 아는가')** 하나였다. 여기에 4개 층을 더해, 한 번의 실행이 다음 실행을 더 똑똑하게 만드는 되먹임 루프를 완성한다 — **5개 층 모두 구현 완료(✅)**.\n\n| 층 (Layer) | 쉬운 비유 | 무엇을 하는가 | 구현 |\n|---|---|---|---|\n| 🧩 작업기억 (working) | 일하기 직전 책상에 펴 놓는 자료 | 작업 시작 직전, 관련 메모·이력·절차를 한 묶음으로 모아 준다 (`brain_context`) | ✅ |\n| 📒 에피소드 (episodic) | 작업 일지 | \"언제 무엇을 했는지\" 실행 이력을 자동 기록한다 (`episodes/`, 기록이 실패해도 본 작업은 안 멈춤·비공개) | ✅ |\n| 📚 의미 (semantic) | 정리된 백과사전 | \"무엇을 아는가\" — 정리된 위키 본체 (`wiki/`) | ✅ |\n| 🔁 절차 (procedural) | 업무 매뉴얼 | \"어떻게 하는가\" 재사용 워크플로우 (`procedures/`) | ✅ |\n| 🩺 메타 (meta) | 정리·관리를 맡은 사서 | 기억의 건강을 진단하고 정리한다 (`memory_health`·`curate`) | ✅ |\n\n\u003e 메타 층의 4가지 정리 동작 — **보관(archive)·중복제거(merge)·폐기(purge)·감쇠(decay)** — 도 전부 구현되어 있다.\n\n바로 써보기 *Try it* — ▶ **터미널**에 입력:\n\n```bash\n# 작업 직전 \"작업기억 팩\" 생성 (관련 페이지 + 최근 이력 + 절차 + 제약)\nuv run python scripts/brain_context.py --task \"RAG 블로그 초안\" --topic \"rag retrieval\" --type express\n\n# 읽기전용 메모리 건강 리포트 → wiki/memory_health_report.md\nuv run python scripts/memory_health.py --report\n```\n\n\u003e 전부 **optional 레이어**다 — 이 명령들을 한 번도 안 써도 `ingest`·`curate`·`express`·`query`는 그대로 동작한다. 상세 스펙: `SPEC.md`의 \"Agent Memory OS\" 절.\n\n---\n\n## 작동 원리 *How it works (배경 이론)*\n\n\u003e 💡 **바로 쓰는 데는 안 읽어도 됩니다.** 이 도구가 *왜* 이렇게 설계됐는지 관심 있다면 읽어 보세요.\n\nllm-brain은 검증된 두 아이디어를 합친 것이다 — **Karpathy의 LLM Wiki**와 **Forte의 Second Brain**.\n\n### ① LLM Wiki — \"LLM을 컴파일러처럼\" (AI 연구자 Andrej Karpathy)\n\n\u003e **\"LLM을 컴파일러처럼 써라. raw 메모를 넣으면 구조화된 위키가 나온다.\"**\n\n```\nraw/   →   [LLM 컴파일러]   →   wiki/\n원본                              정제된 지식\n```\n\n| | 장점 |\n|---|---|\n| ✅ | **LLM이 구조화를 담당** — 사람이 직접 편집할 필요 없음 |\n| ✅ | **raw / wiki 분리** — 원본은 보존, 정제본은 별도 관리 |\n| ✅ | **wikilink(페이지끼리 잇는 링크) 연결** — 지식이 그래프로 이어짐 |\n| ✅ | **오염 방지** — raw 출처 없이 wiki 수정 금지 → 할루시네이션(AI가 없는 사실을 지어내는 것) 차단 |\n\n하지만 이 아이디어만으로는 실제로 운영해 보면 **4가지 벽**에 부딪힌다.\n\n| 빠진 것 | 쉬운 말 | 증상 |\n|---|---|---|\n| ❌ **Express 없음** | 꺼내 쓰기 없음 | 지식이 wiki에 쌓이기만 하고, 꺼내 쓸 방법이 없다 |\n| ❌ **Capture 필터 없음** | 받아들이기 필터 없음 | 뭐든 넣으면 노이즈가 차오른다 |\n| ❌ **단발성 압축** | 한 번만 압축 | 자주 쓰는 지식이 더 깊이 정제되지 않는다 |\n| ❌ **그래프 맹목** | 연결 구조 못 봄 | 페이지 간 연결 구조를 정리(curate)에 활용하지 않는다 |\n\n### ② Second Brain — \"뇌는 저장소가 아니다\" (생산성 전문가 Tiago Forte)\n\n\u003e **\"뇌는 아이디어를 떠올리는 곳이지, 저장하는 곳이 아니다.\"**\n\u003e *\"Your brain is for having ideas, not storing them.\"*\n\nForte의 **CODE 프레임워크**는 지식의 전체 생애주기를 다룬다.\n\n```\nC apture  →  O rganize  →  D istill  →  E xpress\n  수집           정리           정제          출력\n```\n\n핵심은 **Distill(정제)과 Express(출력)** — 자주 꺼내볼수록 더 압축되고, 결국 창작물로 나와야 한다. 그런데 이 두 단계는 늘 **사람이 직접** 해야 했다. 가장 시간이 많이 드는 곳이다.\n\n### ①+② = llm-brain\n\n```\n         LLM Wiki          +        Second Brain\n    ─────────────────────────────────────────────\n    raw → wiki 컴파일       +    CODE 전체 생애주기\n    할루시네이션 방지         +    Distill → LLM 대행\n    wikilink 그래프          +    Express → 창작물 출력\n                             +    lifecycle → TTL(보관 기한) 관리\n```\n\n**Distill은 LLM이 대행한다. 당신은 Express에만 집중하라.**\n\n*LLM handles Distill. You focus only on Express.*\n\n---\n\n## LLM 엔진 선택 *LLM Engine*\n\n엔진 = 위키를 정리·생성하는 AI를 어디서 부를지 고르는 설정이다.\n\n```yaml\n# schema/config.yaml\nllm:\n  engine: cli   # Claude Code CLI 재사용 — API 키 불필요\n  # engine: api # Anthropic API 직접 호출\n```\n\n| 모드 | 비용 | 조건 |\n|---|---|---|\n| `cli` (기본) | 토큰 비용 없음 | Claude Code 설치 필요 |\n| `api` | API 과금 | `ANTHROPIC_API_KEY` 필요 |\n\n---\n\n## Obsidian 연동 *Obsidian Integration*\n\n`.obsidian/`(기본 설정)이 프로젝트 루트에 있어 이 폴더를 Obsidian vault로 바로 열 수 있다. `raw/`·`wiki/`가 vault에 포함되어 Graph View로 탐색 가능하다. *(개인 graph 레이아웃·플러그인 상태는 gitignore라 클론 환경에서 동일하게 재현되진 않는다.)*\n\n```\nllm-brain/\n├── .obsidian/   ← vault root\n├── raw/         ← Graph View 표시\n└── wiki/        ← Graph View 표시\n```\n\n---\n\n## 디렉토리 구조 *Directory Structure*\n\n```\nllm-brain/\n├── .claude-plugin/            # 플러그인 manifest (marketplace.json + plugin.json)\n├── commands/                  # 슬래시 커맨드 (/llm-brain:ingest·curate·express·query·okf)\n├── CLAUDE.md                  # Claude Code 운영 가이드\n├── SPEC.md                    # 기술 명세서\n├── README.md\n├── pyproject.toml\n├── schema/\n│   ├── sources.example.yaml   # 소스 설정 템플릿\n│   ├── config.yaml            # LLM 엔진 선택\n│   ├── ingest.md              # ingest 규칙\n│   ├── curate.md              # curate 규칙\n│   ├── okf.md                 # OKF ↔ llm-brain 매핑 규칙\n│   └── okf_export.yaml        # /llm-brain:okf 제외 설정 (exclude_paths)\n├── scripts/\n│   ├── setup.sh               # 초기 설정\n│   ├── sync_raw.py            # 소스 미러링\n│   ├── ingest.py              # 파일 파싱 + 상태 관리\n│   ├── curate.py              # 감사·압축·lifecycle (--health, --suggest-bridges)\n│   ├── export_graph.py        # wikilink 그래프 export → wiki/graph.json\n│   ├── okf_export.py          # wiki → OKF v0.1 호환 번들 okf/ export\n│   ├── express.py             # wiki → 창작물 출력\n│   ├── episode.py             # 🧠 append-only 에피소드 원장 (episodes/YYYY-MM.jsonl)\n│   ├── brain_context.py       # 🧠 작업기억 팩 조립 (semantic+episode+procedure+제약)\n│   ├── procedures.py          # 🧠 재사용 절차 메모리 로더\n│   └── memory_health.py       # 🧠 읽기전용 메모리 건강 리포트\n├── wiki_app/                  # 🌐 HTML 검색·페이지뷰 (FastAPI)\n│   ├── api.py                 # 6 endpoints\n│   ├── search.py              # 검색 인덱스 + B/C 알고리즘\n│   ├── pages.py               # 페이지 로더\n│   ├── render.py              # markdown + wikilink 변환\n│   ├── access.py              # access_count wrapper\n│   └── static/                # vanilla JS + CSS + HTML\n├── tools/\n│   └── intro-video/           # Remotion 소개 영상\n├── raw/                       # 원본 소스 (.gitignore)\n├── wiki/                      # LLM 정제 결과 (.gitignore)\n├── express/                   # 창작물 출력 (.gitignore)\n├── episodes/                  # 🧠 에피소드 원장 YYYY-MM.jsonl (.gitignore · 사적)\n├── procedures/                # 🧠 재사용 절차 메모리 (Git 커밋 대상)\n└── okf/                       # OKF v0.1 호환 번들 (okf_export.py 생성, Git 커밋 대상)\n```\n\n---\n\n## 패키지명 참고 *Package Name Note*\n\n\u003e 이름이 두 개로 보일 수 있다 — **배포 패키지명만 `llm-wiki`**(`pyproject.toml`의 name 필드), **나머지(제품·저장소·문서)는 전부 `llm-brain`**. `uv sync`·`pip install` 시에만 `llm-wiki`로 읽으면 된다.\n\n---\n\n## 의존성 *Dependencies*\n\n```toml\npymupdf          # PDF 텍스트 추출\npython-docx      # Word 문서 추출\npython-pptx      # PowerPoint 추출\nmarkdownify      # HTML → Markdown\nhttpx            # URL 스크랩\npyyaml           # 설정 파일 파싱\npython-frontmatter  # MD frontmatter\nanthropic        # API 모드 (선택)\n```\n\n---\n\n## 라이선스 *License*\n\nMIT © [kimsanguine](https://github.com/kimsanguine)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkimsanguine%2Fllm-brain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkimsanguine%2Fllm-brain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkimsanguine%2Fllm-brain/lists"}