English | ํ๊ตญ์ด
ํฉ์ด์ง ์ผ์์ ์์ ์ ์ค์ค๋ก ์๋ผ๋ ์ง์ ์ํค๋ก. GmailยทSlackยทJiraยท์บ๋ฆฐ๋ยทRSSยท๋ฉ๋ชจ๋ฅผ ๋งค์ผ ๋ชจ์ ์ค๋ณต์ ์์ ๊ณ , ๊ฐ๋ ์ ์ถ์ถํ๊ณ , Obsidian ๋งํฌ๋ค์ด์ผ๋ก ์ ๋ฆฌํฉ๋๋ค. LLM์ด ์ ๋ฆฌยท์ฐ๊ฒฐยท๊ฐฑ์ (๋ถ๊ธฐ) ์ ๋์ ํ๋ ์ง์์ ๋ฐฉ์น๋์ง ์๊ณ ๋ณต๋ฆฌ๋ก ์์ ๋๋ค.
๋ฉ๋ชจยท์ํค๊ฐ ์คํจํ๋ ์ง์ง ์ด์ ๋ ์ฝ๊ธฐยท์๊ฐํ๊ธฐ๊ฐ ์๋๋ผ ๋ถ๊ธฐ(bookkeeping) โ ๊ต์ฐจ์ฐธ์กฐ ๊ฐฑ์ , ์ค๋ณต ์ ๋ฆฌ, ๋ถ๋ฅ, ๋ชจ์ ์ ๊ฒ โ ์ ๋ถ๋ด์ ๋๋ค. ์ฌ๋์ด ์ด๊ฑธ ๋ชป ๋ฒํ จ์ ์ํค๋ฅผ ๋ฐฉ์นํ์ฃ . Lorekeeper๋ ๊ทธ ๋ถ๊ธฐ๋ฅผ LLM์๊ฒ ๋งก๊น๋๋ค.
๐ ์ฒ์ ๋ณด๋ ์ฉ์ด๋ค โ vault: ๋งํฌ๋ค์ด ํ์ผ์ด ๋ชจ์ธ ํด๋(๊ณง ๋น์ ์ ์ง์ ์ ์ฅ์) ยท ๊ฐ๋ (concept): ํ ์ฃผ์ ๋น ํ ํ์ด์ง ยท ๋งํฌ: ํ์ด์ง๋ฅผ ์๋
[ํ์ ์ด๋ฆ](์๋/๊ฒฝ๋ก.md)๋งํฌ๋ค์ด ๋งํฌ(ObsidianยทGitHubยทOKF ์ด๋์๋ ํด์) ยท ๋ถ๊ธฐ: ๋งํฌยท์ค๋ณตยท๋ถ๋ฅ๋ฅผ ์์ผ๋ก ๊ฐฑ์ ํ๋ ๊ทธ ์ก์ผ.
| ๐ฅ ์ค์ ํ ๋ฒ โ ๋งค์ผ ์๋ | ๋ฉ์ผยท๋ฉ์ ์ ยท์ด์ยท์ผ์ ยทํผ๋ยท๋ฉ๋ชจ์์ ์ด์ ์ ํ๋ยท์ง์์ ์์ง |
| ๐งน ๋ ธ์ด์ฆ ์ ๊ฑฐ | ์ค๋ณต ์ฐจ๋จ, ๊ด๋ จ ์๋ ํญ๋ชฉ ํํฐ, ๋ด ์ผ์ work-log๋ก ์๋ ๋ถ๋ฆฌ |
| ๐งฉ ๊ฐ๋ ์์ฐํ | ๊ฐ์ ๊ฐ๋
์ ํ ํ์ด์ง๋ก ์๋ ด(Vector DB = vector-database), ์นดํ
๊ณ ๋ฆฌยท์ฐ๊ด๊ด๊ณ ์ ๋ฆฌ |
| ๐ ์ฐ๊ฒฐ๋๋ ์ง์ ๊ทธ๋ํ | ๋งํฌ๋ค์ด ๋งํฌยท์ญ๋งํฌยทํด๋ฌ์คํฐ๋ก ๊ฐ๋ ์ด ์๋ก ์ด์ด์ง |
| โ ํ ์ผ โ ๊ธฐ๋ก | ์๋ฃํ ํ ์ผ๊ณผ ๋ฉ๋ชจ๋ฅผ ๋ณด์กดํ๊ณ , ์ค์ ๋ tasks ์์ค์ ์์งยท์๋ฏธ ์ฒ๋ฆฌ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ผ๋ฆฌยท๊ฐ๋ ยท์ฑ๊ณผ ๋ฆฌ๋ทฐ์ ํ์ฉ |
| ๐ ๋ณต๋ฆฌ | ์ฃผ๊ฐยท์๊ฐยท๋ถ๊ธฐยท์ฐ๊ฐ ํฉ์ฑ์ผ๋ก ์๊ฐ์ด ๊ฐ์๋ก ๊ฐ์นโ |
| ๐ CLI ๋ก๊ทธ์ธ ์ฌ์ฌ์ฉ | Claude CodeยทCodex์ ๊ธฐ์กด ์ธ์ฆ ์ฌ์ฉ; Lore์ ๋ณ๋ LLM API ํด๋ผ์ด์ธํธ ๋ถํ์ |
๐ก ์๊ฐ: Andrej Karpathy์ "LLM์ด ๊ด๋ฆฌํ๋ ์ํค" โ ์ถ์ฒ์ ์์ฑ๋ ์ง์์ ๊ตฌ๋ถ, ์ํค๋ LLM์ด ์์ฑยท์ ์ง, ์คํค๋ง(config)๊ฐ ์ํฌํ๋ก๋ฅผ ์ ์. ์ฌ๋์ ์์ค๋ฅผ ๊ณ ๋ฅด๊ณ ์ง๋ฌธํ๊ณ , LLM์ ๋ถ๊ธฐ๋ฅผ ํ๋ค.
flowchart LR
subgraph SRC["๐ก ๋ฐ์ดํฐ ์์ค"]
direction TB
G["Gmail"]
S["Slack"]
J["Jira"]
C["Calendar"]
R["RSS"]
M["๋ฉ๋ชจ inbox"]
end
SRC --> L["โ๏ธ lore (Rust CLI)"]
L --> P["์์ง ยท ์ ๊ทํ ยท ์ค๋ณต์ ๊ฑฐ<br/>๋ถ๋ฅ ยท ๋ ๋ ยท ๊ทธ๋ํ"]
P --> V[("๐๏ธ Obsidian Vault<br/>daily ยท concepts ยท documents")]
L -. "LLM ์์
ํ" .-> CC["๐ค Claude Code ยท Codex<br/>๊ณตํต lore-process ์คํฌ"]
CC -. "ํ์
์ด ์๋ ์๋ฏธ ๊ฒฐ๊ณผ" .-> L
lore๊ฐ ์์งยท์คํ ์์ยท๊ฒ์ ๊ฒ์ฆ์ ๋งก๊ณ , ๊ณตํต lore-process ์คํฌ์ ์คํํ๋ Claude Code ๋๋ Codex๊ฐ ์์ฝยท๊ฐ๋
ยท๊ด๊ณ๋ฅผ ํ๋จํฉ๋๋ค. Markdown์ด ์ง์ ์๋ณธ์ด๋ฉฐ SQLite๋ ๋ค์ ๋ง๋ค ์ ์๋ ๊ฒ์ยทํ์ ์ธ๋ฑ์ค์
๋๋ค.
์์ํ๊ธฐ ์ ์ ์ค๋น๋ฌผ โ ์ด๋ ต์ง ์์ต๋๋ค:
- ๐ป macOS ๋๋ Linux (Windows๋ PowerShell ์ค์น ์คํฌ๋ฆฝํธ ์ ๊ณต)
- ๐ค Claude Code ๋๋ Codex โ ๊ธฐ์กด CLI ๋ก๊ทธ์ธ์ผ๋ก ์์ฝยท๊ฐ๋ ยท๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
- ๐ ์ฐ๋ ค๋ ์์ค์ ์๊ฒฉ์ฆ๋ช ๋ง โ ์: Gmail/Drive/Calendar๋ Google ๋ก๊ทธ์ธ, Slack์ ํ ํฐ
- ๐๏ธ (์ ํ) Obsidian โ ๊ทธ๋ํ๋ฅผ ์์๊ฒ ํ์์ฉ. ์์ด๋ ๊ฒฐ๊ณผ๋ฌผ์ ํ๋ฒํ ๋งํฌ๋ค์ด์ ๋๋ค
๐ก ๊ธฐ๋ณธ ์์ ์ค์ ์ ์ธ์ฆ์ด ํ์ ์๋ ๋ฉ๋ชจ inbox ํ๋์ ๋๋ค. RSSยท์ ๋ฌด ์์คยท๊ฐ์ธ ํ๋ ์ถ์ ์ ํ์ํ ๋ ์ถ๊ฐํฉ๋๋ค. ์์ฝยท๊ฐ๋ ์์ฑ์๋ ์ ํํ CLI์ ๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค. ๋ณต์ฌํ
config.yaml์execution.profiles.primary.engine์claude-code๋๋codex๋ก ์ค์ ํ์ธ์.
# 1) ์ค์น โ ๋ฐ์ด๋๋ฆฌ + ํ
ํ๋ฆฟ + ๋ ํธ์คํธ์ ์คํฌ์ ํ ๋ฒ์
curl -fsSL https://raw.githubusercontent.com/junyeong-ai/lorekeeper/main/scripts/install.sh | bash
# 2) ์ฒ์ ์ค์ โ ๊ธฐ์กด config.yaml์ด ์์ผ๋ฉด ๋ณด์กดํ๊ณ ํธ์ง
LORE_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/lorekeeper"
cp -n "$LORE_CONFIG_DIR/config.starter.yaml" "$LORE_CONFIG_DIR/config.yaml"
${EDITOR:-vi} "$LORE_CONFIG_DIR/config.yaml" # vault.root, timezone, locale, identity ํ์ธ
# 3) ๋ก์ปฌ ๊ฒ์ฆ๊ณผ ์ง์ ์์ฑ ๊ท์ฝ ์์ฑ
lore validate
lore schema
mkdir -p "$(lore config vault-root)/inbox"vault์ inbox/์ ๋ฉ๋ชจ ํ์ผ ํ๋๋ฅผ ๋ฃ์ ๋ค ์์งํฉ๋๋ค. inbox_dir: inbox๋ ๋ณ๊ฒฝํ
vault.root๋ฅผ ๋ฐ๋ผ๊ฐ๋๋ค. ๊ธฐ๋ณธ ์ค์ ์๋ ๊ณต๊ธ์ ์ธ์ฆ ๋ง๋ฒ์ฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
DOCXยทXLSXยทPDF๋ฅผ ๋ฃ์ผ๋ ค๋ฉด lore input install DIRECTORY๋ก ์ ํ์ ๋ณํ ํ๊ฒฝ์ ์ค์นํ๊ณ
์ถ๋ ฅ๋ ์ค์ ์ ๋ณํฉํฉ๋๋ค. lore input check๋ก ์์กด์ฑ์, lore input inspect FILE.pdf๋ก
์๋ณธ์ ์ฎ๊ธฐ์ง ์๊ณ ๋ณํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค. ์ด๋ฏธ์ง๋ ๋ณ๋ OCR ์ธ์ด ๋ฐ์ดํฐ๊ฐ ํ์ํฉ๋๋ค.
์ ์ฒ๋ฆฌ ์ค์ ๊ณผ ์ง์ ๋ฒ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
# 4) ์
๋ ฅ ์ ๊ทผ์ ํ์ธํ ๋ค ์ค์ ์์ง
lore ingest --dry-run
lore run dailylore run daily๋ ์์ง ํ ์ ํํ ์คํ๊ธฐ๋ก ์์ฝยท๊ฐ๋
ยท๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฒ์๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
์์ง๋ง ๋๋ ์ํ๋ ์ง์ํ ์๋ฃ๊ฐ ์๋๋๋ค. ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ๋ค์์ ํ์ธํฉ๋๋ค.
lore queue check
lore wiki reviews --check
lore wiki search "๋ฉ๋ชจ์ ์ฃผ์ " --json
# 5) ์๋ํ๊ฐ ํ์ํ๋ฉด ์์ฝ ์ ์ ์์ฑ ํ OS์ ๋ฑ๋ก
lore schedule > lorekeeper.cron
# ๊ธฐ์กด ์์ฝ์ ๋ณด์กดํ๋ฉฐ ๋ณํฉํ๊ณ ์ค์ ์คํ ํ์ธ. macOS๋ ์๋ ์ค์ผ์ค๋ง ์ ์ฐธ๊ณ config.example.yaml์ ์ ์ฒด ์ต์
์นดํ๋ก๊ทธ์ด๋ฉฐ ๋ชจ๋ ์์ค๊ฐ ๋นํ์ฑ ์ํ์
๋๋ค.
ํ์ํ ๋ธ๋ก๋ง ์ค์ config.yaml์ ์ถ๊ฐํ๊ณ ๋ฒ์ยท๊ณ์ ๊ฐ์ ์ฑ์ด ๋ค ํ์ฑํํ์ธ์.
/lore-setup์ ์ด ์ ํ๊ณผ ID ํ์์ ๋์ต๋๋ค. ์ธ์ฆ์ด ํ์ํ ์์ค๋ฅผ ์ถ๊ฐํ๋ฉด
lore init credentials โ ํด๋น ์์ค์ lore ingest --dry-run <source-id> ์์๋ก ํ์ธํฉ๋๋ค.
์์ฝ ์ ์ ์์ฑยทOS ๋ฑ๋กยท์ค์ ์คํ์ ๊ฐ๊ฐ ๋ณ๋ ๋จ๊ณ์
๋๋ค. ์ค์ผ์ค๋ง์ ๋ฐ๋ฅด์ธ์.
Obsidian์ด ์์ด๋ ๋ฉ๋๋ค โ ๊ฒฐ๊ณผ๋ฌผ์ ํ๋ฒํ ๋งํฌ๋ค์ด + ํด๋๋ผ ๊ทธ๋ฅ ํ ์คํธ๋ก ์ฝํ๋๋ค. Obsidian์ ๊ทธ๋ํ ํ์์ ์์๊ฒ ๋ณด์ฌ์ค ๋ฟ.
๊ฐ์์ ์๋๋ฆฌ์ค๋ก ๋ฐ๋ผ๊ฐ ๋ด
๋๋ค. AI ์์ง๋์ด ์๋ฏผ์ด RAG ํธ๋ฌ๋ธ์ํ
์ ์ ๋ฆฌํ ๋ฉ๋ชจ๋ฅผ vault์ inbox/์ ๋จ์ด๋จ๋ฆฝ๋๋ค.
์๋ ํ์ด์ง ์์๋ ํต์ฌ ํ๋๋ง ๋ฐ์ทํ์ต๋๋ค โ ์ค์ ํ์ผ์๋
updated๊ฐ์ ๊ด๋ฆฌ์ฉ frontmatter๋ ํจ๊ป ๋ค์ด๊ฐ๋๋ค.
# RAG ํ์ดํ๋ผ์ธ: ๋ฎ์ recall ๊ฒ์ ๊ณ ์น๊ธฐ
๋ฌธ์ : ์ง์์ 30%๊ฐ ๋ฌด๊ดํ ์ฒญํฌ๋ฅผ ๊ฒ์ํด ์์ฑ๊ธฐ๊ฐ ํ๊ฐ์ ์ผ์ผ์ผฐ๋ค.
์์ธ: (1) ์ฒญํฌ๊ฐ 2000ํ ํฐ์ผ๋ก ๋๋ฌด ์ปค์ ์๋ฒ ๋ฉ์ด ์ฌ๋ฌ ์ฃผ์ ์ ํ๊ท ์ด ๋จ.
(2) ๋ํํ ์ง๋ฌธ("๊ทธ ๋ค๋ฅธ ๊ฑฐ๋?")์ ๊ทธ๋๋ก ์๋ฒ ๋ฉ.
ํด๊ฒฐ: ์ฒญํฌ๋ฅผ ~400ํ ํฐ์ผ๋ก ์ค์ด๊ณ , ์ง๋ฌธ์ standalone ์ฟผ๋ฆฌ๋ก rewriteํ๊ณ ,
์ ์ฌ๋๋ฅผ L2โcosine์ผ๋ก ๋ณ๊ฒฝ. Recall@5: 0.62 โ 0.91.$ lore ingest
โธ notes (manual)
extracted: 1 items
โ wrote: wiki/documents/rag-ํ์ดํ๋ผ์ธ-๋ฎ์-recall-๊ฒ์-๊ณ ์น๊ธฐ.md (document)
Done. 1 pages written, 0 personal items tracked.์ด ์์ ์ ํ์ด์ง๋ ๋ง๋ค์ด์ก์ง๋ง ## ์์ฝยท## ๊ด๋ จ ๊ฐ๋
์ ๋น์ด ์์ต๋๋ค โ lore ingest๊ฐ LLM ์์
์ ํ์ ๋ฃ์๊ธฐ ๋๋ฌธ์
๋๋ค:
$ lore queue status
[current] sum-โฆ (summarize) โ wiki/documents/rag-ํ์ดํ๋ผ์ธ-โฆ
[current] ext-โฆ (extract-concepts) โ wiki/documents/rag-ํ์ดํ๋ผ์ธ-โฆ
queue: 2 current, 0 done, 0 stale, 0 missing-target, 0 unreadable across 2 task(s)์ด์ **lore run process**๋ฅผ ์คํํฉ๋๋ค. ์ค์ ๋ Claude CodeยทCodex ์คํ๊ธฐ๊ฐ ๊ณตํต ์คํฌ๋ก ํ๋ฅผ ์ฒ๋ฆฌํ๊ณ , Rust๊ฐ ์ถ์ฒ์ ํ๋ณธ์ ๊ฒ์ฌํด ๊ฒ์ํฉ๋๋ค. ๋๋๋ฉด lore queue status๋ 0 current๊ฐ ๋๊ณ ํ์ด์ง๊ฐ ์ฑ์์ง๋๋ค:
---
id: rag-ํ์ดํ๋ผ์ธ-๋ฎ์-recall-๊ฒ์-๊ณ ์น๊ธฐ
type: document
title: "RAG ํ์ดํ๋ผ์ธ: ๋ฎ์ recall ๊ฒ์ ๊ณ ์น๊ธฐ"
created: 2026-06-13
tags: ["document"]
---
## ์์ฝ
์ฒญํฌ๋ฅผ 2000โ400 ํ ํฐ์ผ๋ก ์ค์ด๊ณ , ๋ํํ ์ง๋ฌธ์ standalone ์ฟผ๋ฆฌ๋ก ์ฌ์์ฑํ๊ณ ,
์ ์ฌ๋๋ฅผ L2โcosine์ผ๋ก ๋ฐ๊ฟ ์ด ๋ฉ๋ชจ์ Recall@5๊ฐ 0.62 โ 0.91๋ก ๊ฐ์ ๋์๋ค. ์ธ ๋ณ๊ฒฝ์ ํจ๊ป ์ ์ฉํ
๊ด์ฐฐ์ด๋ฏ๋ก ๊ฐ ๋ณ๊ฒฝ์ ๊ฐ๋ณ ํจ๊ณผ๋ ๋ค๋ฅธ ํ๊ฒฝ์์์ ์ฐ์ด์ ํ์ธ๋์ง ์์๋ค.
## ๋ด์ฉ
โฆ (์๋ณธ์ ์ ๊ทํํด ๋ณด์กด) โฆ
## ๊ด๋ จ ๊ฐ๋
- [Retrieval-Augmented Generation](../../wiki/concepts/retrieval-augmented-generation.md)
- [๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค](../../wiki/concepts/vector-database.md)
- [์ฒญํน](../../wiki/concepts/์ฒญํน.md)
- [์ง์ ์ฌ์์ฑ](../../wiki/concepts/์ง์-์ฌ์์ฑ.md)๋ฉฐ์น ๋ค ์๋ฏผ์ด "ํ๋ก๋์ ๋ฒกํฐ DB ์ ํ" ๋ฉ๋ชจ๋ฅผ ๋ ๋๋กญํฉ๋๋ค. "๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค"๋ ๋ ๋ฉ๋ชจ ๋ชจ๋์ ๋ฑ์ฅํ์ง๋ง โ ์ ํ์ด์ง๋ฅผ ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด ๊ฐ๋ ์ ํฉ๋ฅํฉ๋๋ค:
---
id: vector-database
type: concept
title: "๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค"
aliases: ["๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค", "Vector DB"]
category: ai-ml
source_count: 2 # โ ๋ ๋ฌธ์๊ฐ ์ด ํ ๊ฐ๋
์ ์ธ์ฉ
---
## ํต์ฌ
๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ณ ์ฐจ์ ์๋ฒ ๋ฉ์ ์ ์ฅํ๊ณ ๊ทผ์ฌ ์ต๊ทผ์ ํ์(ANN)์ ์ ๊ณตํ๋ค.
๋ ๋ฒ์งธ ๋ฉ๋ชจ์ ๊ธฐ์กด PostgreSQL ํ๊ฒฝ์์๋ ๋ณ๋ ์์คํ
์ ์ด์ ๋ถ๋ด์ ์ค์ด๊ธฐ ์ํด
pgvector๋ฅผ ์ ํํ๋ค. ์ด ๊ฒฐ์ ์ ์กฐ๊ฑด๊ณผ ์ฒซ ๋ฉ๋ชจ์ ๊ฒ์ ํ์ง ๊ด์ฐฐ์ ๋ณ๋๋ก ์ ์งํ๋ค.
## ์ถ์ฒ
<!-- lorekeeper:concept-sources:v1 -->
์ ์ฒด ์ถ์ฒ๋ `lore wiki prepare`๋ก ์ค๋
์ท ID๋ฅผ ๋ฐ์ ๋ค์ `lore wiki citations EXACT_CONCEPT_PATH --snapshot ID`๋ก ์กฐํํฉ๋๋ค.
Vector DB๋ผ๊ณ ์ฐ๋๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ์ฐ๋ ํ ํ์ด์ง๋ก ๋ชจ์ ๋๋ค(alias๋ก ๋ฑ๋ก). ๊ฐ์ ์ง์์ด ํฉ์ด์ง์ง ์๋ ๊ฒ โ ์ด๊ฒ "๋ณต๋ฆฌ๋ก ์์ธ๋ค"์ ํต์ฌ์ ๋๋ค.
์์ค๋ณ concept_policy๋ก ๊ฐ๋
์ฆ๊ฐ๋ฅผ ์ ์ดํฉ๋๋ค. disabled๋ ์๋ฌธยท์์ฝ๋ง ์์งํ๊ณ ,
existing-only๋ ๊ธฐ์กด ๊ฐ๋
์๋ง ์ฐ๊ฒฐํ๋ฉฐ, supported-new๋ ๊ทผ๊ฑฐ๊ฐ ์๋ ์ ๊ฐ๋
๋ ํ์ฉํฉ๋๋ค.
์๋ตํ๋ฉด disabled์
๋๋ค. focus๋ ๊ด์ฌ ๋ฒ์๋ฅผ ๋ณ๋๋ก ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ๋ณต ์๋ฆผ์
existing-only, ์ฌ์ฌ์ฉํ ์ค๊ณ ์ง์์ด ์๋ ๋ฌธ์๋ supported-new๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ด ์ ์ฑ
์ ์์
ํด์์ ํฌํจ๋๊ณ Rust ์ ์ฉ ๋จ๊ณ์์๋ ๊ฒ์ฌํฉ๋๋ค.
lore wiki snapshot # ์ ์ฅ๋ ๊ฒ์ ํ๋ณธยท๋ง์ง๋ง ๊ฒ์ฆ ์๊ฐ ์กฐํ
lore wiki prepare # ํ์ฌ ์๋ณธ์ ๊ฒ์ฆํ๊ณ ๊ฒ์ ํ๋ณธ ์์ฑ
lore wiki search "Vector DB" --snapshot <id> --limit 10 --json
lore wiki context wiki/concepts/vector-db.md --snapshot <id> --limit 10 # ๊ด๊ณ๋ณ ๊ทผ๊ฑฐ๋ฅผ ๋๋์ด ํ์
lore wiki browse --type concept --category ai-ml --limit 20 --json
lore wiki search "API ํ ํฐ" --phrase --snapshot <id> --json
lore wiki search "์ธ์ฆ์ ๋ณด" --spacing --snapshot <id> --json
lore wiki browse --tag security --tag ์ธ์ฆ์ ๋ณด --snapshot <id> --json
lore wiki read wiki/concepts/vector-database.md # ๋ชฉ์ฐจ์ revision ํ์ธ โ ํ์ํ section ์ ํ
lore wiki links wiki/concepts/vector-database.md --limit 20
lore wiki citations wiki/concepts/vector-database.md --snapshot <id> --limit 20
lore wiki reviews # ํ์ฌ ๋ฏธํด๊ฒฐ ํ๋จ์ ๋ณ๋๋ก ํ์ธMarkdown์ด ์ง์์ ์ ๋ณธ์ด๊ณ .lorekeeper/search.sqlite๋ ์ฌ์์ฑ ๊ฐ๋ฅํ ํ์ ๊ณ์ธต์
๋๋ค.
์ฒ์์๋ ์ด๋ฆยท๋ณ์นญยท์งง์ ๋ณธ๋ฌธยท์ถ์ฒ ์๋ณ ์ ๋ณด๋ก ํ๋ณด๋ฅผ ์ขํ๊ณ , ์ ํํ ํ์ด์ง์ ์ ยท๊ด๊ณยท๊ทผ๊ฑฐยท๋ณด์กด ์๋ณธ์ ์ฐจ๋ก๋ก ์ฝ์ต๋๋ค.
๋ณธ๋ฌธ์ ์ ํํ ๋ฌธ์์ด๊ณผ ์ ๊ท์์ wiki search --body์ --regex๋ก ์ฐพ์ต๋๋ค.
๋ฑ๋ก๋ ์ด๋ฆ์ ๋์ด์ฐ๊ธฐ ์ฐจ์ด๋ name-variant ํ๋ณด๋ก ์ฐพ์ผ๋ฉฐ ์ ํํ ์ด๋ฆ ์์ ๊ถ์ ๋ฐ๊พธ์ง ์์ต๋๋ค.
--phrase๋ ์ฐ์ ๊ตฌ์ ์, --spacing์ ๊ฐ์ ๋ณธ๋ฌธ ๋ธ๋ก ์์ ๋์ด์ฐ๊ธฐ ์ฐจ์ด๋ฅผ ๊ฒ์ํฉ๋๋ค. ๋ณ๋ ๋ฌธ๋จยท๋ชฉ๋ก ํญ๋ชฉยทํ ์
์ ์ด์ด ๋ถ์ด์ง ์์ต๋๋ค.
HTML ํ๋ ์
์์์ ๋น ์
์ ๋ณด์กดํ๋ฉฐ, ๋ณํฉ ์
ยท์ค์ฒฉ ํ๋ HTML ๊ตฌ์กฐ๋ก ์ ์งํฉ๋๋ค. ์ด ํ์ ํ
์คํธ๋ ๊ฐ์ ๊ฒฝ๊ณ๋ก ๊ฒ์ํ๊ณ , ํ๊ทธยท๋งํฌ ์ฃผ์ยท์คํฌ๋ฆฝํธยท์คํ์ผ์ ๊ฒ์ ๋ณธ๋ฌธ์์ ์ ์ธํฉ๋๋ค.
ํ๊ทธ๋ ์ฃผ์ ๋ณ AND ํํฐ์ด๋ฉฐ ๋ณด์กด๋ ์๋ ์๋ฌธ์ ํ๊ทธ๋ ํฌํจํฉ๋๋ค. ๋ณ์นญ์ ๊ฐ์ ๋์์ ์ด๋ฆ์ด๊ณ ํ๊ทธ๋ ๋ถ๋ฅ์ด๋ฏ๋ก ์๋ก ๋์ ํ์ง ์์ต๋๋ค.
๊ฒ์ ์์๋ ์ถ์ฒ ์๋ ์ฌ์ค์ ์ ๋ขฐ๋ ์ ์๊ฐ ์๋๋๋ค.
wiki citations๋ ๊ทธ๋ํ๊ฐ ๋์ถํ ์ ํํ ๊ฐ๋
๊ทผ๊ฑฐ๋ฅผ SQLite์์ ์กฐํํฉ๋๋ค. ์ผ๋ฐ ๋งํฌ ๋ชฉ๋ก๊ณผ
๊ตฌ๋ถ๋๋ฉฐ, RSS๋ ์ ํํ ๊ธฐ์ฌ์ ์๋ณธ ํ๋ณธ์ ๋ณด์กดํฉ๋๋ค. total์ ๊ทผ๊ฑฐ ํญ๋ชฉ ์์ด๊ณ
source_count๋ ์ถ์ฒ ํ์ด์ง ์์
๋๋ค. ๊ฐ์ snapshot๊ณผ next_offset์ผ๋ก ์ ์ฒด๋ฅผ ์ด์ด์ ์ฝ์ต๋๋ค.
ํ์ฌ ์๋ฌธ์ ๋ค์ ์ฝ์ง๋ ์์ผ๋ฏ๋ก, ํ๋ณธ์ด ๋ฐ๋์์ผ๋ฉด ๋ค์ ์ค๋นํ๊ณ ์ ํํ ์๋ฌธ์ ๊ฒ์ฆํ์ธ์.
๊ฐ๋
์ ์ถ์ฒ ์ ์๋ ๊ณ ์ ๋ ์กฐํ ์๋ด๋ง ๋์ด ์๋ฌธ ์๊ฐ ๋์ด๋ ๋ณธ๋ฌธ์ด ์ปค์ง์ง ์์ต๋๋ค.
์๋ด์ EXACT_CONCEPT_PATH๋ฅผ ํ์ฌ ๊ฐ๋
์ฃผ์๋ก ๋ฐ๊ฟ ์กฐํํฉ๋๋ค. ๊ธฐ์กด์ ์ ํํ ์์ฑ ๋ชฉ๋ก๋ง
์ด ์๋ด๋ก ์ ํํ๋ฉฐ, ๋ณ๋๋ก ์์ฑํ ์ถ์ฒ ์ค๋ช
์ ๋ณด์กดํ๊ณ ๋ณด๊ณ ํฉ๋๋ค. ์ ํ์ผ๋ก ์ค์ ๋ณธ๋ฌธ
ํ๋ณธ์ด ๋ฐ๋ ๊ธฐ์กด ๊ฒํ ๋ ๋ค์ ํ์ธํ ๋์์ผ๋ก ๋จ์ต๋๋ค. ์ดํ ์ถ์ฒ ์ฆ๊ฐ๋ ์๋ด ๋ณธ๋ฌธ์ ๋ฐ๊พธ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ ๊ฒ์์ ํ์ฑ ์ง์๋ง ๋ณด์ฌ ์ค๋๋ค. --knowledge-status retired|all๋ก ๋นํ์ฑ ํญ๋ชฉ์ ์กฐํํ ์ ์์ผ๋ฉฐ,
์ฃผ์ยท๋ณธ๋ฌธยท์ธ์ฉยทํ๋จ ์ด๋ ฅ์ ๋ณด์กด๋ฉ๋๋ค. ์ถ์ฒ ํ๋๋ ์ค๋๋ ๋ ์ง๋ง์ผ๋ก ๋นํ์ฑํํ์ง ์์ต๋๋ค.
๊ฒฐ๊ณผ์ reviews๋ ํด๋น ์ง์์ ํ๊ฐํ๋ ๊ฒํ ์ ๊ทธ ๊ทผ๊ฑฐ ํ๋ณธ์ ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ๋ณด์ฌ ์ค๋๋ค.
๊ฒํ ์ฃผ์ ๋ฅผ ์ง์ ํ๋ review.subjects๋ ์ธ์ฉ์ด๋ ๋
๋ฆฝ ์ฆ๊ฑฐ ์๋ฅผ ๋๋ฆฌ์ง ์์ต๋๋ค.
--snapshot์ ์ค๋น ์์ ์ ๋ด์ฉ์ ์กฐํํฉ๋๋ค. ๋ณ๊ฒฝ ํ ๋ค์ ์ค๋นํ๊ณ , ๊ทผ๊ฑฐ๋ฅผ ์ฝ์ ๋๋ ๋ฐํ๋ revision์ผ๋ก ํ์ธํฉ๋๋ค.
ํ์ด์ง/๋งํฌ ๋ชฉ๋ก์ next_offset์ผ๋ก ์ด์ด์ ์ฝ์ต๋๋ค. ์ค๋
์ท ๋งํฌ ์กฐํ์๋ ๊ฐ์ snapshot์ ์ฌ์ฉํ๋ฉฐ ์ค์๊ฐ --revision์ ํจ๊ป ์ง์ ํ์ง ์์ต๋๋ค.
index.md๋ ์์ ์ง์
์๋ด์ด๋ฉฐ, ๋ชฉ๋กยท์์ฑ์ผ์ ํ์ยท๋งํฌ์ ์ญ๋งํฌ๋ SQLite ๊ฒ์ ์ค๋
์ท์ผ๋ก ์กฐํํฉ๋๋ค.
--snapshot์ ์๋ตํ ๊ฒ์ยท๋ชฉ๋ก ์กฐํ๋ ํ์ฌ Markdown์ ์ฝ์ต๋๋ค. ์์ฑ์ผ์ ์กฐํ์ created๋ ์์ง์ผ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
Obsidian์์๋ ์๋ ์ง์ ํ์ด์ง์ ๋งํฌ์ ๊ฒ์์ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
์ถฉ๋์ ๊ฐ์ ์กฐ๊ฑด์์ ์๋ก ์๋ฆฝํ ์ ์๋ ์ฃผ์ฅ์ธ์ง ๊ทผ๊ฑฐ๋ฅผ ์ฝ๊ณ ํ๋จํฉ๋๋ค. ๋ ์ง๊ฐ ์ต์ ์ด๊ฑฐ๋ ์ถ์ฒ๊ฐ ๋ง๋ค๋ ์ด์ ๋ก ์๋ ํด๊ฒฐํ์ง ์์ต๋๋ค.
wiki reviews๋ก ํ์ฌ ์ด๋ฆฐ ๊ฒํ ๋ฅผ ์ฐพ๊ณ , ์ฆ๊ฑฐ๊ฐ ๋ฐ๋ ํด๊ฒฐ ๊ธฐ๋ก์ ๊ณผ๊ฑฐ ํ๋จ์ ๋ณด์กดํ ์ฑ ์ฌ๊ฒํ ํฉ๋๋ค.
์์ฝ ํ์ดํ๋ผ์ธ์ queue check์ wiki reviews --check๋ ๋ฏธ์๋ฃ ์์
ยท์ฆ๊ฑฐ ๋ณ๊ฒฝ์ ๊ฒ์ฌํ์ง๋ง, ์๋ฏธ์ ์ง์ค ์ ์ฒด๋ฅผ ์ฆ๋ช
ํ์ง๋ ์์ต๋๋ค.
์ค์ ์ฌ๊ฒํ ์ ์๋ lore wiki evidence --archive <๊ฒํ ๊ฒฝ๋ก>๋ก ์ด์ ํ๋จ์ ๋ณด์กดํฉ๋๋ค.
์ ๊ทผ๊ฑฐ๋ฅผ ์ฝ๊ณ ๋ณด๊ดํ ๋ค์ review.evidence๋ฅผ ๋ช
์์ ์ผ๋ก ๊ต์ฒดํ๊ณ , ๋ ์งยทํ๋จยท์ด์ ๋ณด๊ด๋ณธ ๊ฒฝ๋ก๋ฅผ ๋ณธ๋ฌธ์ ๊ธฐ๋กํฉ๋๋ค.
ํ๋จ์ ์ฌ๊ฒํ ํ์ง ์์ ์ฑ revision๋ง ์ ๊ฐ์ผ๋ก ๋ฐ๊พธ์ง ์์ต๋๋ค.
lore graph cluster๋ ๊ตฐ์ง์ ๋ง๋ค๊ณ , suggest-links๋ ๊ณต๋์ธ์ฉ์ ์ฐจ์๋ก ์ ๊ทํํ Adamic-Adar ์ ์๋ก ์ฐ๊ฒฐ ํ๋ณด๋ฅผ ์ ์ํฉ๋๋ค. ์๋ฏธ ๊ด๊ณ๋ ์๋ฌธ ๊ทผ๊ฑฐ๋ฅผ ๊ฒํ ํด ํ์ ํฉ๋๋ค:
graph TD
RAG["RAG"]:::ai
VDB["๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค"]:::ai
EMB["์๋ฒ ๋ฉ"]:::ai
CHK["์ฒญํน"]:::ai
QR["์ง์ ์ฌ์์ฑ"]:::ai
COS["์ฝ์ฌ์ธ ์ ์ฌ๋"]:::ai
PG["pgvector"]:::infra
HN["HNSW"]:::infra
RAG --- VDB
RAG --- CHK
RAG --- QR
VDB --- EMB
VDB --- PG
VDB --- HN
EMB --- COS
CHK --- EMB
classDef ai fill:#eef2ff,stroke:#6366f1,color:#1e1b4b
classDef infra fill:#ecfeff,stroke:#06b6d4,color:#083344
flowchart LR
D["๋งค์ผ<br/>์ผ์ผ ์์ง + ๊ฐ๋
์ถ์ "] --> W["์ฃผ๊ฐ<br/>ํ
๋ง ํฉ์ฑ ยท ์ฑ๊ณผ ๋ฆฌ๋ทฐ"]
W --> Mo["์๊ฐ<br/>๋ฆฌ๋ทฐ"]
Mo --> Q["๋ถ๊ธฐ<br/>๋ฆฌ๋ทฐ"]
Q --> Y["์ฐ๊ฐ<br/>๋ฆฌ๋ทฐ"]
style D fill:#f0fdf4,stroke:#22c55e
style Y fill:#fef2f2,stroke:#ef4444
๋งค์ผ์ ์์ง์ด ๊ฐ๋ ๊ทธ๋ํ๋ฅผ ํค์ฐ๊ณ , ํฉ์ฑ์ด ๊ทธ๊ฒ์ ์ ์ ๋์ ๊ณ ๋์์ ์์ฝํฉ๋๋ค. ์ผ์ผ โ ์ฃผ๊ฐ โ ๋ถ๊ธฐ โ ์ฐ๊ฐ์ผ๋ก ๊ฐ์๋ก ์ด๋ฏธ ์์ธ ๊ฒ์ ๋ค์ ์ฐ์ง ์๊ณ ๊ทธ ์์ ๋์ ๋ฉ๋๋ค.
| ํ์ | ์ฉ๋ | ์ธ์ฆ |
|---|---|---|
gmail |
๋ฉ์ผ ๋ค์ด์ ์คํธ (๋ผ๋ฒจ/๋ฐ์ ์๋ก ํํฐ) | Google OAuth |
slack-channel |
์ฑ๋ ์ ์ฒด = ํ ํ๋ (์ค๋ ๋ยท๋ดํํฐยทwatch_users) | Slack ํ ํฐ |
slack-search |
ํค์๋ ํธ๋ ๋ ๊ฒ์ | Slack user ํ ํฐ |
jira |
๊ทธ๋ ์์ ํ ์ด์ ์ค๋ ์ท (ADFโMarkdown) | Jira API |
confluence |
CQL๋ก ๊ณ ๋ฅธ ์คํ์ด์คยทํ์ด์ง (์คํ ๋ฆฌ์ง ํฌ๋งทโMarkdown) | Atlassian OAuth ๋๋ API ํ ํฐ |
google-calendar |
์ผ์ + ํ์๋ก(Drive ๋งํฌ ์๋ ์ถ์ถ) | Google OAuth |
google-drive |
Drive ํด๋์ ํ๋ ์ด์ ๋ฌธ์ | Google OAuth |
rss |
๋ฒค๋ ๋ธ๋ก๊ทธยท๋ด์ค โ ๊ฐ๋ (์ธ์ฆ ๋ถํ์, ๋ค์ค ํผ๋) | ์์ |
nodex |
ํ๋ก์ ํธ ์ ์ฅ์๊ฐ ์ง์ ์ด ๊ฒฐ์ ยทํ์ต ๊ธฐ๋ก โ ๊ฐ๋
(nodex.toml๊ณผ nodex >=0.60,<0.61 ํ์; ์คํ ํ์ผยท๊ทผ๊ฑฐ ๋ฒ์ ์ค์ ) |
์์ |
manual |
inbox/์ Markdownยทํ
์คํธยทHTML, ์ ํ์ DOCXยทXLSXยทPDFยท์ด๋ฏธ์ง OCR |
์์ค ์ธ์ฆ ์์; ๋ฐ์ด๋๋ฆฌ ๋ณํ์ ๋ณ๋ ๋ฐํ์ |
tasks |
๋ด๊ฐ ๋๋ธ ์์
โ lore task๋ก ๋ซ์ ํญ๋ชฉ์ด ๊ทธ๋ ์ ํ์ด์ง๊ฐ ๋จ |
์์ |
์์ค ํค = vault์ ํ์ ํด๋ ์ด๋ฆ. ๊ฐ์ ํ์
์ ์ฌ๋ฌ ๊ฐ ์ ์ํ ์ ์์ต๋๋ค(์: team-slack, ai-news). ์ ์ฒด ์์๋ config.example.yaml.
์ธ๋ถ ์ง์์ ์ถ๊ฐํ๋ ค๋ฉด ์นดํ๋ก๊ทธ์ ai-news ๋๋ tech-news ๋ธ๋ก์ ์ค์ ์ค์ ์ ๋ณต์ฌํด ํ์ฑํํ์ธ์. ๊ณต์ ๋ฐํยท๋ชจ๋ธ ๊ธฐ๋ฒยทAI ๊ตฌํยท์ ํ ํ๊ฐ์ ๊ตญ๋ด ๊ฐ๋ฐ ์ฌ๋ก๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋๊ณ , ์ถ๊ฐ ์ฐ๊ตฌ์ยท๋ด์ค๋ ํฐยท์ง๊ณ ํผ๋๋ ์ ํํ๋๋ก ๋๋ด์ต๋๋ค. fetch_full_text๋ ์งง์ ํผ๋์ ๋ณธ๋ฌธ์ ๊ฐ์ ธ์ค์ง๋ง ์ ๊ทผ ์คํจ ์ ํผ๋ ํ
์คํธ๋ง ๋จ์ต๋๋ค. focus๋ ์์ฝยท๊ฐ๋
์ถ์ถ์ ๋ฒ์์ด๋ฉฐ ์๋ณธ ์์ง์ ์ฐจ๋จํ์ง ์์ต๋๋ค. ํผ๋์ ํ์ฌ ๋ชฉ๋ก๊ณผ ์กฐํ ํ๋๋ ์ ์ฒด ๊ณผ๊ฑฐ ์ด๋ ฅ์ด๋ ์ฌ์ค์ ์ ํ์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
- ๊ฒฐ๊ณผ๋ฌผ์ ํ๋ฒํ ๋งํฌ๋ค์ด โ
daily/{์์ค}/(์๋ณธ ํ์๋ผ์ธ),wiki/concepts/(๊ฐ๋ ),wiki/documents/(๋ฌธ์),me/(work-logยท์ฑ๊ณผ๋ฆฌ๋ทฐ),synthesis/(์ฃผ๊ฐ ํ ๋ง). - ์๋ฃํ๋ ๋ทฐ(materialized view) โ ํ์ด์ง๋ ๋ ์ธต. ๊ตฌ์กฐ ์ธต(frontmatterยท์๋ณธยทํค๋ฉ)์ ๋งค ์์ง๋ง๋ค ์ฌ์์ฑ, ์๋ฏธ ์ธต(์์ฝยท๊ฐ๋ ยทํฉ์ฑ)์ LLM ์์ ์ด๋ฉฐ ์ฌ๋ ๋์๋ ๋ณด์กด๋ฉ๋๋ค. ์ ๋ ฅ์ด ์ ๋ฐ๋๋ฉด LLM ์์ 0๊ฑด(BLAKE3 ํด์๋ก ํ์ ).
- ์ ๋ ฅ๊ณผ ์ฌ์ฒ๋ฆฌ โ ์ ๋ ฅ ํด์๊ฐ ๊ฐ์ผ๋ฉด ์๋ฃ๋ LLM ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ฌ์์ง์ ์๊ฒฉ ์์ ยท์ญ์ ์ ์กฐํ ๋ฒ์์ ์ํฅ์ ๋ฐ์ต๋๋ค. RSS ์ด๋ฒคํธ ๋ก๊ทธ๋ ํผ๋์์ ๋ฐ๋ ค๋ ์์ง ํญ๋ชฉ์ ๋ณด์กดํ๋ฉฐ, ๊ณผ๊ฑฐ ์ ๋ ฅ ๊ทธ๋๋ก์ ์ฌํฉ์ฑ์ ๋ณด๊ด๋ ํ ์ ๋ ฅ์ด ์์ ๋๋ง ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ฌ๋ง ์ค์ฒดํ โ ๋ฏธ๋ ๋ ์ง๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ง ์์(forecast๋ ์ง์์ด ์๋). ๋ ์ง๊ฐ ์ค๋ฉด ์ง์์ด ๋ฉ๋๋ค.
- vault์ ์ธ์ด๋ ์ค์ ์ด ์ ํ๋ค โ
vault.locale(ko | en)์ ๋ผ๋ฒจ๋ง ๋ฐ๊พธ๋ ์ค์์น๊ฐ ์๋๋ผ Lorekeeper๊ฐ ๋ง๋ถ์ด๋ ๋ชจ๋ ๋ฌธ์ฅ์ ์ธ์ด์ ๋๋ค. ์์ฝยท์ฃผ๊ฐ ํ ๋งยท๊ฐ๋ ์ ์ยทํ๊ตฌ ํ์ด์ง๊ฐ ๊ทธ ์ธ์ด๋ก ์ฐ์ด๊ณ , ๊ฐ๋ ์ ์ด๋ฆ์ ๊ทธ ๊ฐ๋ ์ ์ด ์ถ์ฒ๊ฐ ์ ์ ํํ๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ฆ ๋๋ค โ ๋ฒ์ญํ์ง ์์ผ๋ฏ๋ก, ์ถ์ฒ๊ฐ ๋ค๋ฅธ ์ธ์ด๋ก ์ ์ ์ฉ์ด๋ ๊ทธ ์ฒ ์๋ฅผ ์ ์งํฉ๋๋ค. ์๋ฌธ๋ ๋ฒ์ญํ์ง ์์ต๋๋ค. - ๊ทธ๋ํ๊ฐ ๋ถ๊ธฐ๋ฅผ ํ๋ค โ
backlinks-sync(๊ฐ๋ ์ ์ธ์ฉยท์นด์ดํธยท์์ฝ ์ ๋ ฅ ์ฌ๋์ถ, ๊ทผ๊ฑฐ๊ฐ ๋ฐ๋ ์์ฝ์ ํ๋ก),lint(๊ณ ์ยท๊นจ์ง๋งํฌยท์ค๋ณต๊ฐ๋ ),merge(์ค๋ณต ๊ฐ๋ ํตํฉ),cluster/suggest-links(๊ตฐ์งยท์ฐ๊ฒฐ ํ๋ณด ์ ์).
lore validate # config ์ ๊ฒ (๋คํธ์ํฌ ์์)
lore ingest [์์ค] # ์์ง (์ ์ฒด ๋๋ ๋จ์ผ ์์ค)
lore ingest --dry-run # vault ๋ณ๊ฒฝ ์์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ
lore ingest --date 2026-06-01 # ํน์ ๋ ์ง ์ฌ์ค์ฒดํ(๋ฐฑํ/๋ณต๊ตฌ)
lore synthesis weekly # ์ฃผ๊ฐ ํฉ์ฑ + ๊ฐ์ธ ๋ฆฌ๋ทฐ (monthly/quarterly/annual)
lore status # ํ์์์คํ
๋ณ ํ ์ค ์์ฝ (์์ค๋ณ ์๊ฐ์ lore health)
lore health # ์์ง์ด ๋ฐ๋ฆฐ ์์ค ๊ฒฝ๊ณ (ingest.schedule ๊ธฐ์ค)
lore health --json # ๊ฐ์ ํ์ ์ ๊ณ์ฝ์ผ๋ก โ ์คํฌ์ด ์ฝ๋ ํํ
lore schedule # ์์ฝ ์ ์ ์ถ๋ ฅ โ OS ๋ฑ๋ก์ ๋ณ๋
lore brief --date yesterday # ๊ทธ๋ ์ ์ง์ โ ์๋ก ์ ๊ฒ(ํ ์ค์ฉ)๊ณผ ๋ค์ ๋ณธ ๊ฒ(์ด๋ฆ๋ง)
lore fetch <url> # ๋งํฌ ํ๋๋ฅผ ์ฝ์ด inbox์ ์ ์ฅ(์ถ์ฒ ์ฃผ์๋ฅผ ๋ฌ์์)
lore wiki search <์ง์> # ์ง์๊ฐ ๋ฟ๋ ํ์ด์ง โ ์ด๋ฆ์ผ๋ก ๋ง์๋์ง ๋ณธ๋ฌธ์์ ๋ง์๋์ง๊น์ง
# ๋ฑ๋ก๋ alias๋ก ์ฐ์ธ ๋ณธ๋ฌธ๊น์ง ๊ฒ์ (`์ง์๊ทธ๋ํ`โ`์ง์ ๊ทธ๋ํ`)
lore wiki browse --category ai-ml --type concept --limit 20 --json # ๋ถ๋ฅ๋ณ ํ์; next_offset์ผ๋ก ๋ค์ ํ์ด์ง
lore graph --json neighbors wiki/concepts/example.md # ์ถ์ฒ๋ฅผ ํฌํจํ ์๋ฐฉํฅ ๋งํฌ ํ์
lore graph --json neighbors wiki/concepts/example.md --type concept # ๊ด๋ จ ๊ฐ๋
๋ง ํ์; --type document๋ก ์๋ฌธ ์กฐํ
lore wiki snapshot # ์๋ณธ ์ฌํ์ ์์ด ์ ์ฅ๋ ํ๋ณธ ์กฐํ
lore wiki prepare # ํ์ฌ ์๋ณธ ์ ์ฒด ๊ฒ์ฆ; ๋ฐ๋ณต ๊ฒ์์ --snapshot <id> ์ฌ์ฉ
lore wiki search "์ ํํ ๋ฌธ์์ด" --body --json # ์๋ฌธ ํยท๋ฌธ๋งฅยทํ๋ณธ; ์ ๊ท์์ --regex
lore wiki search "์ ํํ ๋ฌธ์์ด" --body --snapshot <id> --json # ์ค๋นํ ํ๋ณธ์์ ๋ฐ๋ณต ๊ฒ์
lore wiki document-identity plan --source ID --manifest /tmp/identity.json # ๊ธฐ์กด ์ฌ๋ณธ์ ์๋ณ์ ์ด๊ด ๊ฒ์ฆ
lore wiki read wiki/concepts/example.md # ๋ชฉ์ฐจ โ --section ID; ํ์ ์ฝ๊ธฐ์ --revision ์ฌ์ฉ
lore wiki original wiki/documents/example.md # ๋ณด์กด๋ ์๋ ์๋ณธยท์ฒจ๋ถ ๋ชฉ๋ก; --member๋ก ์ ํ ์กฐํ
lore wiki original daily/tech-news/2026-10-18.md # RSS ์์ง ์๋ฌธ ๋ชฉ๋กยทauthorityยทrevision
lore wiki original daily/tech-news/2026-10-18.md --revision REV --event EVENT_ID --text-offset 0 --text-limit 4096
lore wiki links wiki/concepts/example.md --limit 20 # ์ฐ๊ฒฐ๋ ์๋ฌธ ํยท์ค๋ช
ยท๋ฆฌ๋น์ ์กฐํ
lore wiki citations wiki/concepts/example.md --snapshot <id> --limit 20 # ์ ํํ ์ ์ฒด ๊ทผ๊ฑฐ๋ฅผ ํ์ด์ง ๋จ์๋ก ์กฐํ
lore wiki provenance wiki/documents/example.md --snapshot <id> # ์ ํํ ๋ฌธ์ ID๋ก ์ ์ธ ๊ด๊ณยทํ์ ๋ฌธ์ ์กฐํ
lore wiki curate --file plan.json --dry-run # ๊ทผ๊ฑฐ ํ๋ณธยท์ด๋ฆยท๋ถ๋ฅยทํ๊ทธยท๊ฒํ ๊ธฐ๋ก ๊ฒ์ฆ; ์ต์
์ ๋นผ๋ฉด ์์์ ์ผ๋ก ๋ฐ์
lore wiki concepts # ๊ฐ๋
๋ชฉ๋ก
lore resolve <name> # ์ด๋ค ๊ฐ๋
ํ์ด์ง๊ฐ ๊ทธ ์ด๋ฆ์ ๊ฐ๋์ง (0 ์์ / 1 ์์ / 2 ์ค๋ณต)
lore graph lint # ๊ตฌ์กฐ ๊ฑด๊ฐ๊ฒ์ง(๊ณ ์ยท๊นจ์ง๋งํฌยท์ค๋ณต๊ฐ๋
ยทโฆ)
lore graph suggest-links --limit 20 # ๊ด๊ณ ํ๋ณด; next_offset๊ณผ --revision์ผ๋ก ์ด์ด์ ์กฐํ
lore graph cluster # ํ ํฝ ์ปค๋ฎค๋ํฐ(Louvain)
lore graph backlinks-sync # ๊ฐ๋
์ ## Sourcesยท์ธ์ฉ์ยท์์ฝ ์
๋ ฅ ์ฌ๋์ถ(๋ณํ ์์ฝ์ ํ๋ก)
lore graph merge <from> <into># ์ค๋ณต ๊ฐ๋
ํตํฉ
lore graph retract-citation <์๋ฌธ.md> <๊ฐ๋
.md> --revision <file_revision> --dry-run # ๊ฒํ ํ ์ค์ธ์ฉ ์ฒ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
lore graph normalize --fix # ๋งํฌ ํ๊ธฐ ์ ๊ทํ
lore doctor # ํ์ด์ง ๊ณ์ฝ ๊ฐ์ฌ(ํ
์คํธ ์ฒญ๊ฒฐ๋ยท๋ฏธ๋ต๋ณ ์น์
ยท์๊ฒฉ์ฆ๋ช
)
lore extract status # ํ๋ก์ ํธ ์ง์ ์ถ์ถ์ด ์ ์ฅ์๋ณด๋ค ์ผ๋ง๋ ๋ค์ฒ์ก๋์ง
lore maintenance # ์ง๋ ์ด์ ์ด๋ ฅยท๊ฒ์ ์๋ฃ ์์
์บ์ ์ ๋ฆฌ; ๋ฏธ์๋ฃยท์ฐธ์กฐ ์ค ์์
๋ณด์กด
lore queue status / prune # LLM ์์
ํ ์ํ / ์ฃฝ์ ์์
์ ๋ฆฌ
lore queue apply # ๊ฒ์ฆ๋ ์์ฝยทํ
๋งยท์ ์ ยท๊ฐ๋
๊ฒฐ๊ณผ๋ฅผ ์ค์ ์ ์ฉ
lore queue check # ๋ฏธ์๋ฃ ์์
ยท๋ฏธ๊ฒ์ ๊ฒฐ๊ณผยท์ค๋จ๋ ๋ณ๊ฒฝ์ JSON์ผ๋ก ๊ฒ์ฌ
lore wiki reviews --check # ์ฆ๊ฑฐ ๋ณ๊ฒฝยท์๋ชป๋ ๊ฒํ ๊ฒ์ฌ(๋ฏธํด๊ฒฐ ๊ฒํ ๋ ํต๊ณผ)
lore queue packet --task-id ID # ๋ณ๋ ฌ ์์
์ฉ ์ถ์ฒยทrevision ๋ฌถ์ (๋ณธ๋ฌธ์ --include-content)
lore queue regenerate --task-id ID --dry-run # ๋ณด๊ด ์
๋ ฅ ์ฌํฉ์ฑ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
lore queue count # current ์์
์๋ง ์ ์๋ก ์ถ๋ ฅ(์คํฌ๋ฆฝํธ์ฉ)
lore work plan --task-id ID # ๋์ฉ๋ ๋ณด๊ด ์
๋ ฅ์ ๊ตฌ๊ฐ ์ฒ๋ฆฌ ๊ณํ (๊ฐ์ฌ๋ --path)
lore work status WORK_ID # ์๋ฃ ๊ตฌ๊ฐยท์ฌ๊ฐํ ์์
ํ์ธ
lore work read WORK_ID NODE_ID # ํด๋น ๊ตฌ๊ฐ ๋๋ ๋ ํ์ ๊ฒฐ๊ณผ๋ง ์ฝ๊ธฐ
lore work result WORK_ID # ์๋ฃ๋ ํตํฉ ๊ฒฐ๊ณผ๋ฅผ ์ต์ข
๊ฒ์์ฉ์ผ๋ก ์กฐํ
lore config vault-root # vault ์ ๋๊ฒฝ๋ก๋ง ์ถ๋ ฅ(์คํฌ๋ฆฝํธ์ฉ)
lore schema # wiki/AGENTS.md(ํ์ด์ง ํฌ๋งท ์คํค๋ง) ์์ฑlore fetch๋ HTTP Content-Type์ ๋ฐ๋ผ HTMLยทMarkdownยท์ผ๋ฐ ํ
์คํธ๋ฅผ ์ฝ์ต๋๋ค. text/plain์ผ๋ก ์ ๊ณต๋๋ .mdยท.markdown ํ์ผ๋ Markdown์ผ๋ก ๋ณด์กดํ๋ฉฐ, ๋งํฌยท์ด๋ฏธ์ง์ ์๋ ์ฃผ์๋ ์ต์ข
์๋ต URL์ ๊ธฐ์ค์ผ๋ก ๋ฐ๊ฟ๋๋ค. ํ์ ์ ์ธ์ด ์๊ฑฐ๋ ์ง์ํ์ง ์๋ ์๋ต, ์๋ชป๋ ๋ฌธ์ ์ธ์ฝ๋ฉ๊ณผ 16 MiB๋ฅผ ๋๋ ๋ณธ๋ฌธ์ ์ค๋ฅ๋ก ๋ณด๊ณ ํฉ๋๋ค. Markdown ์์ raw HTML ์ฃผ์๋ ๊ทธ๋๋ก ๋จ์ ์๋ ์๋ณธ์ ์์กด์ฑ ๊ฒ์ฌ ๋์์ด ๋ฉ๋๋ค.
lore wiki refresh๋ SQLite ํ์ ์ค๋
์ท๊ณผ ์์ index.md ์ง์
์๋ด๋ฅผ ๊ฐฑ์ ํฉ๋๋ค. ์ง์ ๋ชฉ๋กยท๋ ์ง์ ์กฐํยท๊ด๊ณ ํ์์ wiki browse/search/links๋ก ์ํํฉ๋๋ค. ์์ฑ ๋ง์ปค๊ฐ ์๋ ์ง์
ํ์ผ์ ๋ณด์กดํ๊ณ ์ถฉ๋์ ๋ณด๊ณ ํฉ๋๋ค. ํ์ ์ธ์
์ wiki snapshot์ผ๋ก ์ ์ฅ๋ ID์ ์์ฑยท๊ฒ์ฆ ์๊ฐ์ ์กฐํํ ๋ค wiki browse/search/links --snapshot ID๋ฅผ ๋ฐ๋ณตํ๊ณ (links --direction incoming|both), wiki read --revision REV๋ก ํ์ฌ ์๋ฌธ์ ํ์ธํฉ๋๋ค. ํ์ฌ ๋ฌธ์ ๋ชฉ๋ก์ด ํ์ํ๊ฑฐ๋ ํธํ๋๋ ํ๋ณธ์ด ์์ผ๋ฉด wiki prepare๋ก ์ ์ฒด ์๋ณธ์ ๊ฒ์ฆํฉ๋๋ค. ์ ์ฅ๋ ํ๋ณธ์ ์๊ฐ์ ์ธ๋ถ ํธ์ง ์ดํ์ ์ต์ ์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. refresh๋ ์ค๋นํ ID๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
ํ๋ก์ ํธ ๋ฌธ์์ source_record.attributes๋ nodex ๊ณต๊ฐ ์๋ต์ ์๋ณธ ์์ฑ์ ๋ณด์กดํฉ๋๋ค. routine์ prompt์ฒ๋ผ ๋ณธ๋ฌธ ๋ฐ์ ์๋ ์ง์๋ ์์ฝยท์ถ์ถ ์
๋ ฅ์ ํฌํจํ๋ฉฐ, ์์ฑ์ ํ์ฌ ์์
์ ์คํํ๋ผ๋ ์ง์๊ฐ ์๋ ์ถ์ฒ์ ๋ด์ฉ์ผ๋ก ์ฝ์ต๋๋ค.
์ RSS ingest๋ ๋ถ๋ฅ ์ ์์ง ํ
์คํธ๋ฅผ .lorekeeper/evidence/rss/์ ๋ถ๋ณ ํด์ ์ฃผ์๋ก ๋ณด์กดํ๊ณ daily์ source_record.rss_original๋ก ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ๊ณต๊ธ์์ HTTP/XML ์๋ณธ์ด ์๋๋ผ adapter๊ฐ ์ทจ๋ํ ๋ณธ๋ฌธ์ด๋ฉฐ, event_timestamp๋ published ๋๋ updated์์ ์จ adapter ์๊ฐ์ด๋ฉฐ ์ทจ๋ ์๊ฐ์ด ์๋๋๋ค(captured_at: null). wiki original์ ๋ชฉ๋ก์ ๋จผ์ ๋ฐํํ๊ณ , ๋ฐํ๋ revision๊ณผ ์ ํํ event_id๋ก ์ ๋ชฉยท๋น ์คยท๋ณธ๋ฌธ์ ๋ฌธ์ ๋จ์ ํ์ด์ง๋ค์ด์
ํฉ๋๋ค. ์ ์๋ฌธ์ page_bound_collection, ๊ณผ๊ฑฐ ์ด๋ฒคํธ ๋ก๊ทธ์ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ๊ฒฌ์ legacy_unbound์
๋๋ค. ํ์๋ ํด๋น daily์ ๊ณผ๊ฑฐ ์
๋ ฅ์์ ์ฆ๋ช
ํ์ง ์์ต๋๋ค. ์์ฝ์ ํด์์ด๋ฉฐ ์๋ฌธ์ ๋ถ์ฌ๋ฅผ ์ฆ๋ช
ํ์ง ์์ต๋๋ค. ๊ณต๊ธ์ URL์ ๋ค์ ์ฝ์ ๋ด์ฉ๋ ๋น์ ์์ง๋ณธ๊ณผ ๊ฐ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ์ bound RSS ์ถ์ถ์ ๊ฐ ์ปจ์
์ LLM์ด ๋ช
์์ ์ผ๋ก ์ ํํ event_id์ immutable payload revision์ concept_evidence์ ์ ์ฅํด์ผ ํฉ๋๋ค. ๊ธฐ์ฌ ์ ํ์ด ์์ผ๋ฉด ๊ฒ์๋ฅผ ๊ฑฐ๋ถํ๊ณ , ์ถ์ถ ๊ฒฐ๊ณผ๊ฐ ๋น ๋ชฉ๋ก์ด๋ฉด ์ ์ ์๋ฃํ ์ ์์ต๋๋ค. ์ด ์ ํ๋ง ๊ธฐ์ฌ ๋จ์ ํฉ์ฑ ๊ทผ๊ฑฐ๊ฐ ๋์ด ๋ฌด๊ดํ ์ผ์ผ ์์ฝ ๋ณ๊ฒฝ์ผ๋ก ์ฌํฉ์ฑ๋์ง ์์ต๋๋ค. ๊ณผ๊ฑฐ ํ์ด์ง์ ๊ท์ ์๋ ๋งํฌ๋ ๊ธฐ์กด ํ์ด์ง guard๋ฅผ ์ ์งํฉ๋๋ค. wiki original ORIGIN --evidence-concept CONCEPT๋ก ์ ํ ๋ชฉ๋ก์ ์ฝ๊ณ --event ID --revision PAYLOAD_REV๋ก ๋น์ ๊ธฐ์ฌ๋ฅผ ํ์ธํฉ๋๋ค. ์ต์ manifest์ ๋ค๋ฅธ ๊ณผ๊ฑฐ ์ ํ๋ ์ฝ์ ์ ์์ผ๋ฉฐ, ํ์ฌ ์ฌ์ค์ด๋ ๋
๋ฆฝ ๊ฒ์ฆ์ ๋ณด์ฅํ์ง๋ ์์ต๋๋ค. ์ถ์ถ์ ๋๋ฝ์ ์ฒ ํ๊ฐ ์๋๊ณ , graph retract-citation์ --event/--event-revision์ผ๋ก ๋ช
์ ์ฒ ํํฉ๋๋ค. source_count๋ ๊ณ์ ์๋ฌธ ํ์ด์ง ์์
๋๋ค. ์๋ฌธ ์ ์ฅ ์คํจ ์ ํ์ด์ง๋ ๊ทธ ์๋ฌธ์ ์ฐธ์กฐํ์ง ์์ผ๋ฉฐ dry-run์ ๋ณด๊ดํ์ง ์์ต๋๋ค.
๋ ์ง๋ณ ํ์์ lore wiki browse --snapshot ID --sort created --from 2026-01-01 --to 2026-12-31 --json์ ์ฌ์ฉํฉ๋๋ค. created๋ ์์ง์ผ์ด ์๋๋ผ ์๋ฌธ ์์ฑ์ผ์ผ ์ ์์ต๋๋ค. ๋ ์ง๊ฐ ์๊ฑฐ๋ ์ ํจํ์ง ์์ผ๋ฉด ์ํ๋ฅผ ํ์ํ๊ณ ๋ ์ง ํํฐ์์๋ ์ ์ธํฉ๋๋ค. ๋ ์ง์์ ์ต์ ๋ถํฐ์ด๋ฉฐ, ํํฐ๊ฐ ์์ผ๋ฉด ๋ ์ง ๋ฏธ์ ํญ๋ชฉ์ ๋ง์ง๋ง์ ๋ก๋๋ค.
์ผ์์ ์ผ๋ก ์ฐ๋ ๊ฒ๋ค๋ง ์ถ๋ ธ๋ค. ์ ์ฒด ๋ชฉ๋ก์ lore --help, ๊ฐ ๋ช
๋ น์ ํ๋๊ทธ๋
lore <๋ช
๋ น> --help.
์คํฌ ๋ณธ๋ฌธ๊ณผ ์ฐธ๊ณ ์๋ฃ์ ์๋ณธ์ skills/์
๋๋ค. Claude ์ ์ฉ ๋ฉํ๋ฐ์ดํฐ๋
agents/claude.json, Codex ํธ์ถ ์ ์ฑ
์ ํ์ํ ์คํฌ์ agents/openai.yaml์ ๋ก๋๋ค.
๋ฐฐํฌํ ๋ ํธ์คํธ๋ณ ์ง์
ํ์ผ์ ๋ง๋ค๋ฉฐ, ๊ณตํต ์ ์ฐจ๋ฅผ ๋ฐ๋ก ํธ์งํ์ง ์์ต๋๋ค.
| ์คํฌ | ํ๋ ์ผ |
|---|---|
lore-process |
ํ์ ์์ฝยท๊ฐ๋ ยทํฉ์ฑยท๊ฒํ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ์ ๊ฒ์ ๊ฒ์ฆ |
lore-setup |
์์คยท์ค์ ยท์ธ์ฆยท์ต์ด ์คํยท์์ฝ ๋ฑ๋ก ์๋ด |
lore-wiki |
query, add, capture, audit, curate, maintain, status |
lore-extract |
์ ์ฅ์ ์ง์ ์ถ์ถ: scan โ run โ audit |
lore-ingest |
์์งยทํฉ์ฑยท์ํยท์ค์ผ์ค CLI ์์ |
lore-day |
ํ ์ผยท๋ธ๋ฆฌํยท๋ฆฌ๋ง์ธ๋ยท๋ง๊ฐ |
Claude Code์์๋ /lore-wiki query ..., Codex์์๋ $lore-wiki๋ก ์ฌ์ฉํฉ๋๋ค.
lore self deploy --skills user --agent codex๋ Codex์๋ง ๋ํํ ์คํฌ์ ์ค์นํฉ๋๋ค.
--agent both๋ ๋ ํธ์คํธ์ ์ค์นํ๋ฉฐ, --skills project๋ ํ์ฌ ํ๋ก์ ํธ ๋ฒ์์
๋๋ค.
Claude ๊ฒฝ๋ก๋ .claude/skills, Codex ๊ฒฝ๋ก๋ .agents/skills์
๋๋ค.
๋ฌด์ธ ์คํ์ <data>/skills/<engine>/์ ๊ฒ์ฆ๋ ๋ฐฐํฌ๋ณธ์ ์ฌ์ฉํฉ๋๋ค.
๋๋ฝยท๋ณ์กฐ๋ ํ์ ํ์ผ์ ์ธ์
์์ ์ ์ ๊ฑฐ๋ถํฉ๋๋ค.
์คํ๊ธฐ ์ง์ ๋ฒ์๋ Claude Code >=2.1.303,<3, Codex CLI >=0.163.0,<1์
๋๋ค.
๋ถํ ๊ฒ์ยท์ถ์ฝ ๋จ๊ณ๋ ์ฝ์ JSON์ ํ์ค ์
๋ ฅ์ผ๋ก ๋ฐ๊ณ ๊ตฌ์กฐํ๋ ๊ด์ฐฐ๋ง ๋ฐํํฉ๋๋ค.
Rust๊ฐ ์์
ยท๋ฒ์ยทํ์ฌ ๊ทผ๊ฑฐยท์ถ๋ ฅ ํ๋๋ฅผ ๊ฒ์ฆํด ์ ์ฅํ๋ฉฐ, ๋ชจ๋ธ์ด ๊ฒ์ ์บ์๋ฅผ ์ง์ ์ฐ์ง ์์ต๋๋ค.
Claude๋ ๋๊ตฌ์ ์ฌ์ฉ์ ํ์ฅ์ ๋๊ณ , Codex๋ ์ฝ๊ธฐ ์ ์ฉ ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ํํ ํ์ยท์ต์ข
๊ฒฐ๊ณผ ์ค๋นยท์๋ฏธ ๋ณด์ ์ ํ์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ณ๋ ์ญํ ์
๋๋ค.
์คํ ์์ฐ์ด ์์๋ ํฐ ๋ฌธ์ ํ๋๊ฐ ๋งค๋ฒ ์ฒซ ์ฐจ๋ก๋ฅผ ์ฐจ์งํ์ง ์๋๋ก, ์๋ก ๋ค๋ฅธ ๋ฌธ์์
๊ฒ์ยท์ถ์ฝยท์ต์ข
ํ ๋จ๊ณ๋ฅผ ์ํ ๋ฐฐ๋ถํฉ๋๋ค. ์์ ์์ฒญ์ ๊ทผ๊ฑฐ ์
๋ ฅ ํ๋ ์์์ ๋ฌถ๋ ๊ฐ์
ํ์ด์ง์ ์์
์ ํ ๋ฒ์ ํ๋๋ง ์ ํํฉ๋๋ค. ๋ค์ ์ฐจ๋ก๋ .lorekeeper/execution-cursor.json์
์ ์ฅํ๋ฏ๋ก ์ฌ์คํ์์๋ ์ด์ด์ง๋ฉฐ, ์์๋ ์ํ๋ฅผ ์กฐ์ฉํ ์ด๊ธฐํํ์ง ์์ต๋๋ค.
ํธ์คํธ์ ๊ธฐ์กด ์ธ์ฆ๊ณผ ์ ์ฑ
์ ์ฌ์ฉํฉ๋๋ค. ๋ ์ ํ์ ๊ถํยท์๋๋ฐ์ค๋ ์๋ก ๋ค๋ฅด๋ฉฐ,
Rust์ ๊ฒ์ ๊ฒ์ฆ์ OS ์ ๊ทผ ํต์ ์ ๊ฐ์ ๋ณด์ฅ์ผ๋ก ์ทจ๊ธํ์ง ์์ต๋๋ค.
llm:
provider: queue
execution:
default_profile: primary
work:
max_input_bytes: 262144
max_result_bytes: 32768
max_calls: 64
profiles:
primary:
engine: claude-code
timeout_seconds: 3600
reviewer:
engine: codex
timeout_seconds: 3600
operations:
knowledge: reviewer์ด ์์์๋ ์ผ์ผ ์ฒ๋ฆฌยทํ ์ฒ๋ฆฌ๋ primary, ์๋ฏธ ๊ฐ์ฌ๋ reviewer๋ฅผ ์ฌ์ฉํฉ๋๋ค.
--profile ์ง์ โ ์์
๋ณ ์ค์ โ ๊ธฐ๋ณธ ํ๋กํ ์์๋ก ์ ํํ๋ฉฐ ๋ค๋ฅธ ์คํ๊ธฐ๋ก ์๋ ์ ํํ์ง ์์ต๋๋ค.
timeout_seconds๋ ์ธ์
๋ณ ์คํ ์์ฐ์
๋๋ค. ๋ฏธ์๋ฃ ์์
์ ๋ณด์กดํ๊ณ ์คํจ๋ก ๋ณด๊ณ ํฉ๋๋ค.
execution.work๋ ์์
์ ์์ฒญ JSON๊ณผ ๊ด์ฐฐ ๊ฒฐ๊ณผ JSON์ ๋ฐ์ดํธ ์, ์คํ๋น ์๋ฏธ ์ฒ๋ฆฌ ์ธ์
ํธ์ถ ์๋ฅผ ์ ํํฉ๋๋ค. ํฐ ์
๋ ฅ์ ํ๋ณธ์ด ๊ณ ์ ๋ ์กฐ๊ฐ์ผ๋ก ๋๋์ด ์ ์ธ์
์์ ์ฝ๊ณ , ๊ด์ฐฐ ๊ฒฐ๊ณผ๋
์ ์ธ์
์์ ๋จ๊ณ์ ์ผ๋ก ์ข
ํฉํฉ๋๋ค. max_calls๋ ์ผ์ผยทํ ์ฒ๋ฆฌ ์คํ๋ง๋ค, ์ง์ ๊ฐ์ฌ์์๋
๊ฐ ๋ฐฐ์น๋ง๋ค ์ ์ฉํฉ๋๋ค. ์์ฐ์ด ์์ง๋๋ฉด ๋ฏธ์๋ฃ๋ก ์ค๋จํ๊ณ ๊ฒ์ฆ๋ ์์
์ ๋ค์ ์คํ์ ๋จ๊น๋๋ค.
๋ชจ๋ธ์ ์ ์ฒด ๋ฌธ๋งฅยทํ ํฐ ์๋ ์๊ธ ํ๋๋ฅผ ๋ปํ์ง๋ ์์ต๋๋ค. ์
๋ ฅ์ ์ต์ 4096๋ฐ์ดํธ,
๊ฒฐ๊ณผ๋ ์ต์ 1024๋ฐ์ดํธ์ด๋ฉด์ ์
๋ ฅ ํ๋์ 1/4 ์ดํ์ฌ์ผ ํ๋ฉฐ ํธ์ถ ์๋ ์์์
๋๋ค.
ํ๋กํ ๋ด๋ถ์ work๋ ์ง์ ํ ํญ๋ชฉ๋ง ๊ณตํต ์์ฐ์์ ๋ฎ์ด์๋๋ค. ์๋ฅผ ๋ค์ด ์์ ๋ฌธ๋งฅ์ ๋ชจ๋ธ์๋
work: {max_input_bytes: 131072, max_result_bytes: 16384}๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
lore run ... --json์ ์ค์ ์ ์ฉํ ์์ฐ์ ์ถ๋ ฅํ๊ณ , ์์ ๋ช
๋ น์๋ ๊ฐ์ ํ๋กํ์ ์ ๋ฌํฉ๋๋ค.
์๋ ๋ถํ ๋ช
๋ น์์ ๊ฐ์ ์์ฐ์ ์ฌ์ฉํ๋ ค๋ฉด LORE_EXECUTION_PROFILE์ ํด๋น ํ๋กํ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์๋ ์ฌ๊ฐยท๋ถํ ๊ฒฐ๊ณผ ํ์์ ๋ถํ ๊ทผ๊ฑฐ ์ฒ๋ฆฌ ์ ์ฐจ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์คํ ํ์ผ์ executable, ๋ชจ๋ธ์ model๋ก ํ์ํ ํ๋กํ์๋ง ์ง์ ํฉ๋๋ค.
์๋ ์คํ ํ์ผ ๊ฒฝ๋ก์ Claude์ config_directory๋ ์ค์ ํ์ผ ๊ธฐ์ค์
๋๋ค.
Codex์ profile์ ํด๋น CLI์ ๋ช
๋ช
๋ ํ๋กํ์
๋๋ค. ๋ชจ๋ธ ๋ณ๊ฒฝ๋ง์ผ๋ก ๊ธฐ์กด ์ง์์ ๋ค์ ์ฐ์ง ์์ต๋๋ค.
llm.provider: queue๋ ํ์
์ด ์๋ ์๋ฏธ ์์
์ ๋ณด๊ดํ๋ ๋ชจ๋์ด๋ฉฐ ์คํ๊ธฐ ์ ํ๊ณผ ๋ณ๊ฐ์
๋๋ค.
noop๋ LLM ์์
์ ๋ง๋ค์ง ์๋ ๋ชจ๋์
๋๋ค. ๊ฒ์ยทํ์๊ณผ ๊ฒฐ์ ์ ์์ง์ ์์ด์ ํธ ์ค์น ์์ด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
# ์๋ผ์ธ ์ค์น (macOS / Linux) โ ๋ฐ์ด๋๋ฆฌยทํ
ํ๋ฆฟยท์คํฌ, SHA256 ๊ฒ์ฆ ํฌํจ
curl -fsSL https://raw.githubusercontent.com/junyeong-ai/lorekeeper/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/junyeong-ai/lorekeeper/main/scripts/install.ps1 | iex
# ์์ค์์ ๋น๋
cargo build --release && ./target/release/lore --help์ค์น ํ๋๊ทธ: --version, --install-dir, --data-dir, --skill {user,project,none}, --agent {claude-code,codex,both}, --from-source, --force, --yes, --dry-run (--help๋ก ์ ์ฒด ํ์ธ).
์ค์น๊ธฐ๋ ์ค์ ๋๋ ํฐ๋ฆฌ์ config.starter.yaml๊ณผ config.example.yaml์ ๋ฐฐํฌํ๋ฉฐ
์ฌ์ฉ์์ config.yaml์ ๋ณด์กดํฉ๋๋ค. ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ data-dir์ ์ค์น ๊ฒฝ๋ก๋ฅผ,
deployed-skills๋ ๋ฐฐํฌํ ์คํฌ์ ๊ธฐ๋กํฉ๋๋ค. ์
๋ฐ์ดํธยท์ ๊ฑฐ์ ์ฐ๋ ์๋ ๊ด๋ฆฌ ์ ๋ณด์ด๋ฉฐ
์ธ์ฆ์ ๋ณด๋ ํฌํจํ์ง ์์ต๋๋ค.
lore agenda # ์ค๋ ํ ์ผ โ ์ปค๋ฐ๋ ๊ฒ, ๊นจ์ด๋ ๊ฒ, ๊ธฐํ์ด ์จ ๊ฒ
lore task add "์คํ ๋ฆฌ๋ทฐ" --state today
lore task add "์ธ๋ฑ์ค ์ง๋ฌธ ํ์ " --link https://acme.slack.com/archives/C123/p1755600000 --label ์ค๋ ๋
lore task done 7k2p --note "refresh token์ ํ์ ํ ์ฌ์๋ํ๋ฉด grant๊ฐ ๋ฌดํจํ๋๋ค"
lore task sync # Obsidian์์ ์ง์ ๊ณ ์น ๊ฒ์ ๊ธฐ๋ก์ ๋ฐ์๋ณด๋๋ <personal>/tasks.md โ ์ค๋ / ์ ์ / ๋ค์ / ๋๊ธฐ / ์ธ์ ๊ฐ ์น์
์ ํ๋ฒํ ๋งํฌ๋ค์ด ์ฒดํฌ๋ฐ์ค์
๋๋ค. ํฐ์ Obsidian์์ ์ฒดํฌํ๊ฑฐ๋ ์ค์ ๋ค๋ฅธ ์น์
์ผ๋ก ๋์ด ์ฎ๊ธฐ๋ฉด ๋ค์ lore task sync๋ ๋ณด๋๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช
๋ น์์ ์ํ ๋ณ๊ฒฝ์ ๊ธฐ๋กํฉ๋๋ค. ์น์
์ ๋ชฉ์ด ๊ณง ์ํ์ด๋ฉฐ, ์ ์์ ์์ง ์๋ฝํ์ง ์์ ํญ๋ชฉ์
๋๋ค.
lore task done์ ์๋ฃ์ --note๋ฅผ ์ ํ ๋ก๊ทธ์ ์ ์ฅํฉ๋๋ค. ์ค์ ๋ tasks ์์ค๋ฅผ ์๋ฃ์ผ์ด ํฌํจ๋ ์์ง ๋ฒ์๋ก ingestํ๋ฉด ๊ทธ๋ ์ ๋ฐ์ผ๋ฆฌ ํ์ด์ง๊ฐ ์์ฑ๋๊ณ , /lore-process๊ฐ ๋๊ธฐ ์ค์ธ ์์ฝยท๊ฐ๋
์ถ์ถ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ ์ฒด ์์ค ์์ง์๋ work-log๋ ํฌํจ๋๋ฉฐ, ์์ฝ๋ ์ผ์ผ ํ์ดํ๋ผ์ธ์ ์์ง๊ณผ ์๋ฏธ ์ฒ๋ฆฌ๋ฅผ ํจ๊ป ์คํํฉ๋๋ค. ์ฝ์ ๊ฒ๋ฟ ์๋๋ผ ํ ์ผ๋ ์ง์์ ๊ทผ๊ฑฐ๋ก ๋จ์ต๋๋ค.
lore self status # ๋ฐฐํฌ๋ ์ฌ๋ณธ์ด ์ง๊ธ ๋ฐ์ด๋๋ฆฌ์ ๊ฐ์์ง (๋ค๋ฅด๋ฉด non-zero)
lore self update # ์ ๋ฆด๋ฆฌ์ค๋ก ๊ต์ฒดํ๊ณ , ๋ํํยท์คํ์ฉ ์คํฌ๊ณผ ํ
ํ๋ฆฟยทAGENTS.md ์ฌ๋ฐฐํฌ
lore self deploy # ์ฌ๋ฐฐํฌ๋ง (self status๊ฐ ๋ณด๊ณ ํ ์ฐจ์ด๋ฅผ ๊ณ ์นจ)
lore self uninstall # ์ค์นํ ๊ฒ๋ง ์ ๊ฑฐ โ vault๋ ๊ฑด๋๋ฆฌ์ง ์์๋ํํยท์คํ์ฉ ์คํฌ๊ณผ ํ
ํ๋ฆฟยท์์ ์ค์ ยท์ ์ฒด ์ต์
์์ ๋ ๋ฐ์ด๋๋ฆฌ์ ๋ด์ฅ๋์ด ์์ต๋๋ค. ๋ฐฐํฌ๋ ์ฌ๋ณธ์ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ค์ฒ์ง ์ ์์ผ๋ฉฐ lore self status๋ก ํ์ธํฉ๋๋ค. lore self deploy๊ฐ ์ฌ๋ณธ์ ์๋๋ค. lore self update๋ lore queue check์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋๊ธฐ ์์
ยทํด์ ๋ถ๊ฐ ์
๋ ฅยท๋ฏธ๋ฐ์ ๊ฒฐ๊ณผยท์ค๋จ๋ ์ ์ฅ ๊ธฐ๋ก์ด ์์ผ๋ฉด ๊ฑฐ๋ถํฉ๋๋ค. ํ์ธ ๊ฐ๋ฅํ ๋ฏธ์๋ฃ ์์
์ --force๋ก ํ์ฉํ ์ ์์ง๋ง, ์ค์ ์ด๋ ์ ์ฅ์๋ฅผ ์ฝ์ ์ ์๋ ์ค๋ฅ๋ ์๋ตํ์ง ์์ต๋๋ค. ์คํ ์ค์ธ ๋ฒ์ ๋ณด๋ค ์ค๋๋ ๋ฆด๋ฆฌ์ค๋ ๊ฑฐ๋ถํฉ๋๋ค(--version์ผ๋ก ๋ช
์ํ๋ฉด ๋๋๋ฆด ์ ์์).
ํ๊ฒฝ๋ณ์ ๋๋ <vault>/.lorekeeper/credentials.json(0600). ํ๊ฒฝ๋ณ์๊ฐ ํ์ผ๋ณด๋ค ์ฐ์ .
macOSยทLinux์์๋ ๊ทธ๋ฃนยท๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ๊ถํ์ด ์ด๋ฆฐ ์ธ์ฆ ํ์ผ๊ณผ ์ ๊ธ ํ์ผ์ ๊ฑฐ๋ถํฉ๋๋ค.
์๋ ์์ฑยท๋ณต์ํ ํ์ผ์ ์ฌ์ฉ ์ ์ chmod 600์ผ๋ก ์ ํํ์ธ์. ์ ์ฅยท๊ฐฑ์ ์ ํญ์ 0600์ผ๋ก ์ํํ๋ฉฐ,
์ธ์ฆ ์ค์ ๋ง๋ฒ์ฌ๋ ์ฝ๊ธฐยทํ์ฑ์ ์คํจํ ๊ธฐ์กด ์ ์ฅ์๋ฅผ ๋น ๊ฐ์ผ๋ก ์ด๊ธฐํํ์ง ์์ต๋๋ค.
์ฌ๋ฌ vault๊ฐ ๊ฐ์ ๊ณ์ ์ ์ฐ๋ฉด credentials.file์ ํ๋์ ๊ณต์ ์ ์ฅ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
์๋ ๊ฒฝ๋ก๋ ์ค์ ํ์ผ ๊ธฐ์ค์ด๋ฉฐ, OAuth ๊ฐฑ์ ๊ณผ ํ์ ํ ํฐ ์ ์ฅ์ ๊ฐ์ ์ ๊ธ ์์์ ์ฒ๋ฆฌํฉ๋๋ค.
ํ์ ํ๋ refresh token์ ๋ณ๋ ํ์ผ๋ก ๋ณต์ฌํ์ง ๋ง์ธ์. ๋ค๋ฅธ ์ฑ์ ๋ณ๋ OAuth ์ฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
lore init credentials # ๋ํํ ๋ง๋ฒ์ฌ โ Google ํ ํฐ์ ๋ธ๋ผ์ฐ์ OAuth๋ก ์๋ ๋ฐ๊ธ- Google:
LORE_GOOGLE_CLIENT_ID/SECRET/REFRESH_TOKENโ Gmail/Drive/Calendar ์ฝ๊ธฐ ์ ์ฉ ์ค์ฝํ. "Desktop app" OAuth ํด๋ผ์ด์ธํธ ํ์. - Slack:
LORE_SLACK_TOKEN(botxoxb-) ๋๋LORE_SLACK_USER_TOKEN(xoxp-).slack-search๋ user ํ ํฐ ํ์. - Atlassian (Jira/Confluence):
LORE_ATLASSIAN_SITE_URL+LORE_ATLASSIAN_PAT(Data Center), or+ LORE_ATLASSIAN_EMAIL+LORE_ATLASSIAN_API_TOKEN(Cloud ํด๋์ ํ ํฐ โ ์ฌ์ดํธ๋ก ์ ์ก). ์ค์ฝํ ํ ํฐ์ด๋ฉดLORE_ATLASSIAN_CLOUD_ID๋ฅผ ํจ๊ป ์ฃผ์ธ์ โ ๊ทธ ๊ฐ์ด ๊ฒ์ดํธ์จ์ด ๊ฒฝ๋ก๋ฅผ ์ ํํ๋ฉฐ, ์์ผ๋ฉด ํด๋์์ผ๋ก ์ทจ๊ธ๋์ด ์ฌ์ดํธ๋ก ๊ฐ๋๋ค. OAuth์ ๋ฆฌํ๋ ์ ํ ํฐ์ด ํ์ ํ๋ฏ๋ก ํ๊ฒฝ๋ณ์๋ก ๋ฐ์ง ์์ต๋๋ค โlore init credentials๋ก ๋ฐ๊ธํ์ธ์.
๊ธฐ๋ณธ ์ธ์ฆ ํ์ผ์ Git์์ ์ ์ธ๋ฉ๋๋ค. ๋ณ๋๋ก ์ง์ ํ ๊ณต์ ์ ์ฅ์๋ ์ปค๋ฐยท๋๊ธฐํ ๋์์ ํฌํจํ์ง ๋ง์ธ์.
lore wiki document-identity plan์ --history-ref <์ ์ฒด-์ปค๋ฐ-ID>๋ฅผ ๋ฐ๋ณต ์ง์ ํ๋ฉด
๊ณผ๊ฑฐ ์๋ฌธ ์ฌ๋ณธ๋ ๊ฒ์ฆํฉ๋๋ค. ๊ณํ์ Git blobยท์์ฑ๋ IDยท์ ํํ ํฌ์๋ ๋ณธ๋ฌธ์ ๊ณ ์ ํ๊ณ ,
check์ apply๊ฐ ๋ค์ ๊ฒ์ฆํฉ๋๋ค. apply --allow-blocked๋ ๊ฒ์ฆ๋ ๋ถ๋ถ๋ง ์ด๊ดํ๊ณ
ํด๊ฒฐ๋์ง ์์ ํ์ด์ง๋ ๊ทธ๋๋ก ๋ก๋๋ค.
ํ์ฌ ์ธ์ฉ ๊ทผ๊ฑฐ๋ก ๊ฐ๋
ํ๋๋ฅผ ๋ค์ ์์ฑํ๋ ค๋ฉด
lore graph resynthesize wiki/concepts/example.md --dry-run์ผ๋ก ํ์ธํ ๋ค
--dry-run ์์ด ์์ฒญํ๊ณ ํ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๊ณผ๊ฑฐ ์์
์ด ๋ง๋ฃ๋์ด๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ,
queue regenerate --task-id๋ ์๋ ์
๋ ฅ์ด ๋ณด๊ด๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ํฉ๋๋ค.
lore schedule > lorekeeper.cron # Linux: ๊ฒํ ํ crontab -e์ ๋ณํฉ
lore schedule --format launchd --bin "$(command -v lore)" # macOSlore schedule์ ์์ฝ ์ ์๋ฅผ ์ถ๋ ฅํ๋ฉฐ OS์ ๋ฑ๋กํ์ง ์์ต๋๋ค. Linux์์๋ ๊ธฐ์กด ์์ฝ์
๋ณด์กดํ๋ฉฐ ๋ณํฉํ์ธ์. macOS์์๋ ๊ฐ plist๋ฅผ ํ์๋ LaunchAgents ๊ฒฝ๋ก์ ์ ์ฅํ๊ณ ๋ก๊ทธ
๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ ๋ค launchctl bootstrap gui/$(id -u) <plist ์ ๋ ๊ฒฝ๋ก>๋ก ๋ฑ๋กํฉ๋๋ค.
์ค์ ๋ณ๊ฒฝ ํ์๋ ๊ธฐ์กด ์์
์ bootoutํ๊ณ ์ ์ ์๋ฅผ ๋ฑ๋กํ๋ฉฐ, ๋นํ์ฑํํ ์์
๋ ํด์ ํฉ๋๋ค.
self uninstall์ OS ์์ฝ์ ํด์ ํ์ง ์์ต๋๋ค.
macOS์ ๋ฌธ์ยท๋ฐ์คํฌํยท๋ค์ด๋ก๋ ๊ฐ์ ๋ณดํธ ํด๋์ ๋ณผํธ๊ฐ ์์ผ๋ฉด ์์ฝ ์์
์ lore์๋
ํด๋น ํด๋ ์ ๊ทผ ์น์ธ์ด ํ์ํฉ๋๋ค. ํฐ๋ฏธ๋ ์ฑ์ ์น์ธ์ด launchd ์คํ๊น์ง ๋ณด์ฅํ์ง๋ ์์ต๋๋ค.
์์
์ ์ค์ ๋ก ์์ํด ํ์๋๋ macOS ๊ถํ ์์ฒญ์ ์น์ธํ๊ณ , ๋ก๊ทธ์ ์ข
๋ฃ ์ํ๋ฅผ ํ์ธํ์ธ์.
์๋ช
์๋ณ์๊ฐ ๋ฌ๋ผ์ง๋ ๋ฐ์ด๋๋ฆฌ ์
๋ฐ์ดํธ ํ์๋ ์ฌ์น์ธ์ด ํ์ํ ์ ์์ต๋๋ค.
ํ์ผ ๊ถํ 0600์ ์ด OS ์น์ธ์ ๋์ ํ์ง ์์ต๋๋ค.
์์ธํ ๊ถํ ๋์์ Apple ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์์ฝ ์์ ์ Rust ๋ช ๋ น์ ์ง์ ์คํํฉ๋๋ค.
| ์์ฝ | ์คํ |
|---|---|
ingest.schedule |
lore run daily --wait |
graph.audit.schedule |
lore run knowledge --wait |
| ์ฃผ๊ฐยท์๊ฐยท๋ถ๊ธฐยท์ฐ๊ฐ | lore synthesis <๊ธฐ๊ฐ> --previous --defer --wait-for-vault |
| ์ ์ง๋ณด์ | lore maintenance --prune-queue --wait-for-vault |
| ๋ฆฌ๋ง์ธ๋ | lore task remind notify |
์ผ์ผ ์์
์ ์ ์ฒด ์์ค๋ฅผ ์์งํ๊ณ , ํยท์ญ๋งํฌยท๊ฒ์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฆฌํ ๋ค ๊ธฐ๋ณธ ๊ธฐ๊ฐ โ ๋ถ๊ธฐ โ
์ฐ๊ฐ ์์๋ก ์ฌ๊ฐํฉ๋๋ค. ์ผ๋ถ ์์ค ์คํจ ํ์๋ ๊ฐ๋ฅํ ์ ๋ฆฌ๋ ์งํํ๋ฉฐ ์์กด ๋จ๊ณ ์คํจ๋
๊ทธ ์ดํ ๊ธฐ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ค๋จํฉ๋๋ค. ์๋ณธ ์์ง๊ณผ ์๋ฏธ ์ฒ๋ฆฌ์ ์ฑ๊ณต์ ๊ตฌ๋ถํด ๋ณด๊ณ ํฉ๋๋ค.
--json์ ๋จ๊ณ๋ณ ๊ฒฐ๊ณผ๋ฅผ stdout์, ํ์ ๋ช
๋ น ๋ก๊ทธ๋ stderr์ ์ถ๋ ฅํฉ๋๋ค.
์์ด์ ํธ๋ ์ ํํ ๊ทผ๊ฑฐยท๊ฒํ ๋ฅผ ์ฝ๊ณ ์๋ฏธ๋ฅผ ๋ณด์ ํ๋ฉฐ, ํ์ฌ ํ๋ณธ์ ๊ฒ์ฆํด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํฉ๋๋ค.
์ต์ข
ํยท์ญ๋งํฌยท๊ฒ์ ๊ฐฑ์ ๊ณผ ๊ตฌ์กฐ ๊ฒ์ฌ๋ Rust ์คํ๊ธฐ๊ฐ ๋งก์ ์์ด์ ํธ์ ์ ์ญ ๋ชฉ๋ก ์กฐํ์
์ค๋ณต ๊ฒ์ฌ๋ฅผ ์ค์
๋๋ค. ์คํฌ์ ์๋์ผ๋ก ๋จ๋
์คํํ ๋๋ ์คํฌ์ ์ต์ข
๊ฒ์ฌ ์ ์ฐจ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
์คํ ์ค์๋ ์ ํํ ์ค์ ๊ฒฝ๋ก์ ํ์ผ ํ๋ณธ์ ์ ์งํฉ๋๋ค. ์ค์ ์ ํธ์งํ๋ฉด ๋จ์ ์์
์
๋ค๋ฅธ ๋ณผํธ๋ก ๋๊ธฐ์ง ์๊ณ ๋ฏธ์๋ฃ๋ก ์ค๋จํฉ๋๋ค. ์๋ํ ์ค์ ์ผ๋ก ์ ์์
์ ์์ํ์ธ์.
์๋ฏธ ์ฒ๋ฆฌ ๋์ Rust ์คํ๊ธฐ๊ฐ ๋ณผํธ์ Unix workflow lease๋ฅผ ์ ์งํฉ๋๋ค. ๊ธฐ๋ณธ ๊ฒฝํฉ์
์คํจํ๊ณ --wait๋ ์ทจ์ ๊ฐ๋ฅํ ๋๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ์ข
๋ฃ ์ ํธยท์๊ฐ ์ ํ ์ ์์ ํ๋ก์ธ์ค
๊ทธ๋ฃน์ ์ข
๋ฃํ๊ณ ์์
์ ๋ณด์กดํฉ๋๋ค. ์งง์ ๋ฌธ์ยทํ ์ฐ๊ธฐ ์ ๊ธ๊ณผ ์ธ๋ถ ํธ์ง๊ธฐ์ ๋ํ ๋ฆฌ๋น์
๊ฒ์ฆ์ ๋ณ๋๋ก ์ ์งํฉ๋๋ค. ์๋ ์ธ์
์ ์
๋ ฅ์ ์ฝ๊ธฐ ์ ์ lore workflow -- claude ๋๋
lore workflow -- codex๋ก ์์ํ์ธ์. descriptor๋ฅผ ๋ซ๊ฑฐ๋ ๋ถ๋ฆฌ ์คํํ ์์
์ ์๋ exec
lease์ ๋ณด์ฅ ๋ฒ์ ๋ฐ์ด๋ฉฐ, workflow์ ๋ฌด์ธ ์คํ์ Windows๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
์ค์ผ์ค๋ฌ๋ ์ค์ ยท๋ฐํ์ ์๋ฃ์ ์ ๋ ๊ฒฝ๋ก, ๊ณ ์ ๋ PATH์ ํ์ํ ๊ธฐ์กด ์ธ์ฆ ๋๋ ํฐ๋ฆฌ๋ฅผ
๋ด์ต๋๋ค. ์ ํํ ํธ์คํธ์ CLAUDE_CONFIG_DIR ๋๋ CODEX_HOME์ด ๋ช
์๋ผ ์์ผ๋ฉด
์ ํจํ ๋๋ ํฐ๋ฆฌ์ธ์ง ํ์ธํฉ๋๋ค. ํ์ค proxy ๋ณ์๋ ๋์๋ฌธ์ยท๋น ๊ฐ์ ์ ์งํ๊ณ ,
๋น๋ฐ ๊ฐ์ด๋ API ํค๋ ์์ฝ ์ ์์ ๋ณต์ฌํ์ง ์์ต๋๋ค. ํ๊ฒฝ์ ๋ฐ๊พธ๋ฉด ์ ์๋ฅผ ๋ค์ ๋ฑ๋กํ์ธ์.
์์ฝ ์๊ฐ์ ํธ์คํธ ํ์ง ์๊ฐ, ๋ฌธ์ ๋ ์ง๋ ๋ณผํธ ์๊ฐ๋์
๋๋ค. launchd๋ ์ ์๊ธฐ ์ค ๋์น
์คํ์ ๊นจ์ด๋ ๋ค ํ ๋ฒ ์ํํ์ง๋ง ๋ชจ๋ ๋ ์ง๋ฅผ backfillํ์ง ์์ต๋๋ค. cron์ ๋์น ์คํ์
๊ฑด๋๋๋๋ค. lore synthesis pending --status --json์ผ๋ก ์์ง ๋ฒ์ยท์๋ฏธ ์ฒ๋ฆฌ์ ๋ฏธ์๋ฃ ์ฌ์ ๋ฅผ ํ์ธํ์ธ์.
์ํ ํ๊ฒฝ์ --namespace org.example.lore-test --log-dir /absolute/test/logs๋ก ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
์ฃผ๊ฐ ์๋ฏธ ๊ฐ์ฌ๋ ์์งยท๊ธฐ๊ฐ ํฉ์ฑ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์ค์ ํฉ๋๋ค.
graph:
audit:
schedule: "0 7 * * 0"
batch_size: 5
max_input_bytes: 262144์ฒ์ ๋ณด๋ ๋์๊ณผ ๋ณ๊ฒฝ๋ ๋์์ ๋ฒ๊ฐ์ ๊ฒํ ํ๊ณ , ๋์ผ ์
๋ ฅ์ ๋ฐ๋ณต ๊ฒํ ํ์ง ์์ต๋๋ค.
๋์์ ์ค์ ๋ ์ํค์ ๊ฐ๋
๊ณผ ์ถ์ฒ ๋ฌธ์(type: document)์ด๋ฉฐ, ๋ฌธ์๋ง ์๋ ์ฃผ์ ๋
๊ฐ๋
์ ๋ง๋ค์ง ์๊ณ ๊ฒํ ํฉ๋๋ค.
kind๋ ๋์ ์ข
๋ฅ๋ฅผ, counts_by_kind๋ ์ข
๋ฅ๋ณ ์ ์ฒดยทํ์ฌ ๊ฒํ ยท๋๊ธฐ ๊ฑด์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
ํฉ๊ณ๋ ๋ ์ข
๋ฅ๋ฅผ ๋ชจ๋ ํฌํจํฉ๋๋ค. ๋ฌธ์์ ๋งํฌ๋ ๋ฌธ๋งฅ์ด๋ฉฐ ์๋์ผ๋ก ๋ท๋ฐ์นจ ๊ทผ๊ฑฐ๊ฐ ๋์ง ์์ต๋๋ค.
.lorekeeper/knowledge-audit.json์ ์ต์ ๊ฒํ ํ๋ณธ๊ณผ ๋๊ธฐ ์์๋ฅผ ๋ณด๊ดํ๊ณ ํ๋จยท์์ถฉ ๊ทผ๊ฑฐ๋
Markdown ๊ฒํ ๋ฌธ์์ ๋จ๊น๋๋ค. ๋จ์ผ ์ถ์ฒ๋ ์ธ์ฉ ์๋ง์ผ๋ก ๋ณํฉยท์ญ์ ํ์ง ์์ต๋๋ค.
์ด๊ธฐ ๋์ ๋ถ์ lore run knowledge --profile codex --batches 20 --json์ฒ๋ผ ๋ฑ๋ก๋ ํ๋กํ๊ณผ
์คํํ ์ต๋ ๋ฐฐ์น ์๋ฅผ ์ง์ ํด ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋กํ ์ด๋ฆ์ ์์ ์ ์ค์ ์ ๋ง์ถฅ๋๋ค.
๊ฐ ๋ฐฐ์น ๋ค์๋ ์คํ ์ ๊ธ์ ํด์ ํ๋ฉฐ, ์คํจยท์ทจ์ ์ ์ค๋จํ๊ณ ๊ฒ์ฆ๋ ๊ฒํ ๊ธฐ๋ก๋ถํฐ ์ฌ๊ฐํฉ๋๋ค.
stop_reason: batch-limit๋ ์ง์ ํ ์คํ๋์ ๋๋ฌํ๋ค๋ ๋ป์ด๊ณ , settled๋ ํ์ฌ ๊ฐ์ฌ ๋์
๊ณํ์ ๋๊ธฐ ํญ๋ชฉ์ด ์๋ค๋ ๋ป์
๋๋ค. ์ด ์ง๊ณ๊ฐ ์ธ๋ถ ์๋ณธยท์ฒจ๋ถ๊น์ง ๋ชจ๋ ์ฝ์๋ค๊ฑฐ๋ ์ ์ฒด ์ง์์
์๋ฏธ์ ์ผ๊ด์ฑ์ ๊ฒ์ฆํ๋ค๋ ๋ป์ ์๋๋๋ค.
audit-plan์ ์ ํํ ๋์ยท๊ทผ๊ฑฐยท์ง์ ๊ด๋ จ ๋ฌธ๋งฅยท๊ฒํ ๋ฌธ์์ ๊ทธ ๊ทผ๊ฑฐยท์ ํํ RSS ์๋ณธ์ ์ค๋ณต์
์ ์ธํ ์ ์ฒด ๋ฐ์ดํธ ์๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. graph.audit.max_input_bytes๋ ์ด ์ ์ฒด ์
๋ ฅ์ ํ๋๋ก,
์ด๋ฅผ ๋์ผ๋ฉด input.status: oversized๋ฅผ ๊ทธ๋๋ก ํ์ํฉ๋๋ค. ์๋ ์ ํ๋ ํฐ ๋์์ ๊ฑด๋๋ฐ์ง
์์ผ๋ฉฐ --path๋ ์ง์ ํ ๋ฒ์๋ฅผ ์ ์งํฉ๋๋ค. Rust ์คํ๊ธฐ๋ execution.work ํ๋์ ๋ง์ถฐ
๋น ์ง์์ด ๋๋์ด ์ฝ๊ณ ์ข
ํฉํ๋๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ ์ฒด ์
๋ ฅ ํ๋๋ฅผ ๋๋ ์๋ฃ ๊ธฐ๋ก์๋ ํ์ฌ ์
๋ ฅ์
๋ํ ๋ถํ ์์
ยท์ข
ํฉ ๊ฒฐ๊ณผ์ ์๋ฃ ์ฆ๋ช
์ด ํ์ํฉ๋๋ค. ๊ทผ๊ฑฐ๋ฅผ ์๋ฅด๊ฑฐ๋ ์ผ๋ถ ์ฝ๊ธฐ๋ง์ผ๋ก ์๋ฃํ์ง
์์ผ๋ฉฐ, ์ค๋จ๋ ์์
์ ๋ณด์กดํฉ๋๋ค. --profile๋ง์ผ๋ก ์ด๋ ๋ฐ์ดํธ ํ๋๋ ๋ฐ๋์ง ์์ต๋๋ค.
์ ํํ ๋์์ ๊ฒํ ๊ฐ ๋๋ฝยท๋ฌดํจยท์ฌํ๊ฐ ํ์ ์ํ์ด๋ฉด ์๋ฃ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ๋ค๋ฅธ ๋์์ ์ฌํ๊ฐ ๋๊ธฐ๋
run knowledge์ review_health ๊ฑด์์ ๋จ๊ฒจ ๋ณด๊ณ ํ๋ฉฐ ๋ค์ ๋ฐฐ์น๋ฅผ ๋ง์ง ์์ต๋๋ค. ๋ฌดํจ ๊ธฐ๋ก์ด๋
๊ฒ์ฌ ์ค๋ฅ๋ ์คํ์ ์คํจ์ํต๋๋ค. ์ ์ฒด ์ ์ฅ์ ๊ฒ์ฌ๋ wiki reviews --check๋ก ๋ณ๋ ์ํํฉ๋๋ค.
๋ฏธํด๊ฒฐ ํ๋จ์ ๋จ๊ธฐ๋ follow-up์๋ ํด๋น ๋์์ ์ ์ธํ ํ์ฌ open ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค.
๋ฆฌ๋ง์ธ๋๋ OS ์๋ฆผ ๋ช ๋ น์ด ์ฑ๊ณตํ ๋ค์๋ง ์์งํฉ๋๋ค. ์ด๋ OS์ ์ ์์ด๋ฉฐ ์ฌ๋์ด ๋ณด์๋ค๋ ํ์ธ์ ์๋๋๋ค. ์ ์ ์งํ ์ ์ฅ ์ ์ ์ค๋จ๋๋ฉด ์ฌ์ ๋ฌ๋ ์ ์์ต๋๋ค. ์คํจํ ์๋ฆผ์ ๋ค์ ์คํ์ ๋จ์ต๋๋ค.
์ฌํฉ์ฑ์ ๋ณธ๋ฌธ์ ๋์ฒดํ๊ณ ๋ณํฉ์ ํ์ด์ง๋ฅผ ์ญ์ ํ๋ฏ๋ก, ์ค์ํ ๋ณ๊ฒฝ ์ ์๋ ๋ณ๋ ๋ฐฑ์ ์ด๋ ๊ฒํ ํ Git ์ปค๋ฐ์ ๋จ๊ธฐ์ญ์์ค. ํ์ดํ๋ผ์ธ์ ์ฌ์ฉ์์ ๋์ ํธ์ง์ ๊ตฌ๋ณํ ์ ์์ด ์๋์ผ๋ก stageํ๊ฑฐ๋ commitํ์ง ์์ต๋๋ค. ๋ณต๊ตฌ journal์ ์ค๋จ๋ ๋ณ๊ฒฝ์ ์ด์ด๊ฐ๊ธฐ ์ํ ๊ธฐ๋ก์ด๋ฉฐ ๊ณผ๊ฑฐ ๋ฒ์ ๋ฐฑ์ ์ ๋์ ํ์ง ์์ต๋๋ค.
cd "$(lore config vault-root)"
git init
git config core.precomposeunicode true # macOS: ํ๊ธ ํ์ผ๋ช
์ NFC๋ก ์ ์ฅ
# ๊ธฐ์กด .gitignore์ ์๋ ํญ๋ชฉ์ ์ถ๊ฐํ๊ณ ์ค๋ณตยท์ฌ์ฉ์ ์ค์ ์ ํ์ธ
printf '.lorekeeper/\n.obsidian/\n' >> .gitignore
git status --short
git diff
# ๊ณต๊ฐํด๋ ๋๋ ํ์ผ๋ง ์ ํํด์ git addํ ๋ค commit.lorekeeper/์๋ ์ด์ ๊ธฐ๋ก๊ณผ ๋ณด๊ด๋ ์
๋ ฅ์ด ์์ผ๋ฏ๋ก ์ด๋ ฅ์์ ์ ์ธํ์ญ์์ค. ์๊ฒฉ์ฆ๋ช
ํ์ผ๋ ๋ณ๋๋ก ์ ์ธ๋์ด ์๋์ง ํ์ธํ์ญ์์ค. ์์ ์ง์
์๋ด์ธ wiki/index.md๋ ์ฌ์์ฑํ ์ ์์ผ๋ฉฐ, ๊ฒฝ๋ก๋ vault.dirs.wiki ์ค์ ์ ๋ง์ถฐ ์ ์ธํ ์ ์์ต๋๋ค. ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ด๋ค๋ฉด ์๋ฌธ ๋ฐ์ดํฐ์ ๊ณต์ ๋ฒ์๋ฅผ ๋จผ์ ํ์ธํ์ญ์์ค.
์์ค๋ณ ์ด๋ํฐ๊ฐ ์์งยท์ธ์ฆยท๊ด์ธก ๋ฒ์๋ฅผ ๋ด๋นํ๊ณ , ๊ณตํต ํ์ดํ๋ผ์ธ์ด ์ ๊ทํยท๊ฐ๋ ์ถ์ถยทํฉ์ฑยท๊ด๊ณยท๊ฒํ ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ ์์ค๋ ํ์ ยท์ค์ ๊ฒ์ฆยท๋ฌธ์ IDยท๋ถ๋ถ ์คํจ ๊ณ์ฝ์ ๋ช ์์ ์ผ๋ก ๋ฑ๋กํฉ๋๋ค. ์ค์ ์ ์ด๋ฆ๋ง ์ถ๊ฐํ๋ ํ๋ฌ๊ทธ์ธ ๋ฐฉ์์ ์๋๋๋ค.
Drive๋ folder_id์ ์ ํ์ name_prefix๋ฅผ ์ฌ์ฉํ๊ณ ์ค์ ์์ ์ผ๋ก ์กฐํํฉ๋๋ค. ํ์ผ ID๋ ์ ๋ชฉยทํด๋์ ๋ถ๋ฆฌ๋์ด ์ ์ง๋ฉ๋๋ค.
Google Docs๋ Markdown, Slides๋ ํ
์คํธ๋ก ๊ฐ์ ธ์ค๋ฉฐ ์๊ฐ ์๋ฃ์ ์ง์ํ์ง ์๋ ํ์ผ ํ์์ ์์ ํ ์์ง์ผ๋ก ๊ฐ์ฃผํ์ง ์์ต๋๋ค.
์กฐํ ์ ํ์ด๋ ์ฝ๊ธฐ ์ค ํ๋ณธ ๋ณ๊ฒฝ์ ๋ถ๋ถ ๊ด์ธก์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค. ์์ ์ผ ์กฐํ๋ ๊ณผ๊ฑฐ ์ ์ฒด ์ํ ๋ณต์์ด๋ ์๊ฒฉ ์ญ์ ํ์ง๊ฐ ์๋๋ฉฐ,
์ด๋ฒ ๊ฒฐ๊ณผ์ ์๋ ๊ธฐ์กด ๋ฌธ์๋ ๋ณด์กดํฉ๋๋ค. ์์ ๋ฐ์ดํฐ ํด์๋ ๊ณผ๊ฑฐ ์๋ณธ์ ๋ณต์ํ๋ ์ ์ฅ์๋ฅผ ๋์ ํ์ง ์์ต๋๋ค.
ํ์ฌ YouTube ์ ์ฉ ์์ง๊ธฐ๋ ์์ต๋๋ค. ํฅํ ์ถ๊ฐํ ๋ ์์ยท์๋ง ํธ๋ยท์ธ์ดยท๊ตฌ๊ฐ์ ์๋ณ๊ณผ ์ทจ๋ ๊ถํ์ ์ ์ํด์ผ ํฉ๋๋ค. ์น URL ์ ๋ ฅ๋ ์์ ์น์ฌ์ดํธ์ ์ง์ ๋๊ธฐํ๋ ๋์ ํ์ด์ง ์ ์ฒด ๋ณด์กด์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋น์คํธ๋ฆฌ๋ฐ ์ผ์ผ ์์ค๋ ๋ถ๋ถ ์์ง ๊ฒฐ๊ณผ๋ก ๊ธฐ์กด์ ์์ ํ ํ๋ฃจ๋ฅผ ๋ฎ์ด์ฐ์ง ์๊ณ ์คํจ๋ก ๋ณด๊ณ ํฉ๋๋ค. ๋ ๋ฆฝ ๋ฌธ์์ ๋์ ์คํธ๋ฆฌ๋ฐ ์์ค๋ ์ฑ๊ณตํ ํญ๋ชฉ์ ๊ฐ๊ฐ ๋ณด์กดํฉ๋๋ค.
- ์ค์ ์ ์ฒด ๋ ํผ๋ฐ์ค โ
config.example.yaml(๋ชจ๋ ์์คยท์ต์ ์ฃผ์ ํฌํจ) - ํ์ด์ง ํฌ๋งท ์คํค๋ง โ
lore schema๋ก vault์wiki/AGENTS.md์์ฑ - ์ํคํ ์ฒ ๊น์ด ๋ณด๊ธฐ โ DeepWiki
Rust 2024 edition ยท ๋น๋ 1.99.1 ยท ์ต์ ์ง์ 1.97. tokio/reqwest(๋น๋๊ธฐ ์์ค), jiff(ํ์์กด ์ ํ ๋ ์ง), serde-saphyr(YAML), minijinja(ํ
ํ๋ฆฟ), feed-rs(ํผ๋), petgraph(๋งํฌ ๊ทธ๋ํ), blake3(์ด๋ฒคํธยท์บ์ ํด์). ๋ผ์ด์ ์ค: MIT.