Files
HaBraid/docs/architecture.md
Contributor 5d5336757d feat: HaBraid v0.1.0 — host-following memory visualization engine for Obsidian
- Hybrid BM25 + HNSW vector search with context enrichment
- Knowledge graph with entities, relations, and community detection
- Host-following LLM route with fallback backends
- 3-tier lint system (static + HNSW dup + contradiction detection)
- Q&A Synthesis (Karpathy LLM Wiki pattern)
- 16 MCP tools for agent-driven workflows
- Incremental wiki generation with checkpointing
- SQLite-backed item store with FTS5 + vector indexes
2026-04-18 15:46:42 +09:00

90 lines
2.4 KiB
Markdown

# 아키텍처 설계
## 핵심 철학
HaBraid는 memory backend 자체가 아니라 **기억 시각화 계층**이다.
- source of truth: MemPalace / mem0 / future memory backends
- expression layer: HaBraid wiki
- consumer: 사람 + AI
즉 HaBraid는 장기 기억을 사람이 읽기 좋고 AI가 다시 활용하기 좋은 위키 표현층으로 재구성한다.
## 데이터 흐름
```text
memory backend (MemPalace / mem0 / future backends)
▼ read-only / adapters
┌──────────┐
│ ingest │ source → raw/ + DB items
└────┬─────┘
┌──────────┐
│ wiki │ items/raw → wiki/ (host-following LLM)
└────┬─────┘
┌──────────┐
│ sync │ index/log/state + optional git sync
└──────────┘
```
## LLM 실행 계층
```text
prompt builder
LLM gateway
├─ host mode (default)
│ └─ host가 실제 모델/정책 선택
└─ standalone / fallback
└─ openai | zai | ollama 직접 호출
```
원칙:
- HaBraid는 모델 선택보다 **prompt orchestration**에 집중한다.
- 가능하면 host가 실제 inference를 담당한다.
- host unavailable이면 configured fallback을 사용한다.
## 모듈 의존성
```text
cli/commands.ts
├── sync/pipeline.ts
│ ├── sync/git.ts
│ ├── mempalace/ingest.ts
│ │ └── mempalace/reader.ts
│ └── wiki/generator.ts
│ ├── wiki/llm.ts
│ └── wiki/prompts.ts
├── vault/init.ts
├── vault/render.ts
├── vault/index.ts
└── config.ts → types.ts
```
## 에러 처리
모든 모듈은 `WikiEngineError` 기반 커스텀 에러 사용.
대표 코드:
- `VAULT_INIT_FAILED`
- `DB_READ_FAILED`
- `LLM_CALL_FAILED`
- `GIT_SYNC_FAILED`
- `LINT_FAILED`
- `CONFIG_LOAD_FAILED`
## 동시성
- ingest: 순차 처리
- wiki generation: 순차 처리 (배치 단위)
- git sync: 순차 처리
## 현재 알려진 분리 이슈
- direct MemPalace ingest는 아직 Chroma schema mismatch 문제가 남아 있다.
- host-following LLM 전환은 이 ingest 버그와 별도 change set으로 유지한다.