๐ง memory-lancedb-pro
July 21, 2026 ยท View on GitHub
๐ง memory-lancedb-pro ยท ๐ฆOpenClaw Plugin
OpenClaw ์์ด์ ํธ๋ฅผ ์ํ AI ๋ฉ๋ชจ๋ฆฌ ์ด์์คํดํธ
AI ์์ด์ ํธ์๊ฒ ์ง์ง ๊ธฐ์ตํ๋ ๋๋๋ฅผ ์ ๋ฌผํ์ธ์ โ ์ธ์ ์ ๋์ด, ์์ด์ ํธ๋ฅผ ๋์ด, ์๊ฐ์ ๋์ด.
LanceDB ๊ธฐ๋ฐ OpenClaw ๋ฉ๋ชจ๋ฆฌ ํ๋ฌ๊ทธ์ธ์ผ๋ก, ์ฌ์ฉ์ ์ ํธ๋ยท์์ฌ๊ฒฐ์ ยทํ๋ก์ ํธ ๋งฅ๋ฝ์ ์ ์ฅํ๊ณ ์ดํ ์ธ์ ์์ ์๋์ผ๋ก ๋ถ๋ฌ์ต๋๋ค.
English | ็ฎไฝไธญๆ | ็น้ซไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด | Franรงais | Espaรฑol | Deutsch | Italiano | ะ ัััะบะธะน | Portuguรชs (Brasil)
์ memory-lancedb-pro์ธ๊ฐ?
๋๋ถ๋ถ์ AI ์์ด์ ํธ๋ ๊ฑด๋ง์ฆ์ด ์์ต๋๋ค. ์ ์ฑํ ์ ์์ํ๋ ์๊ฐ ๋ชจ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฝ๋๋ค.
memory-lancedb-pro๋ OpenClaw๋ฅผ ์ํ ํ๋ก๋์ ์์ค์ ์ฅ๊ธฐ ๊ธฐ์ต ํ๋ฌ๊ทธ์ธ์ผ๋ก, ์์ด์ ํธ๋ฅผ AI ๋ฉ๋ชจ๋ฆฌ ์ด์์คํดํธ๋ก ๋ฐ๊ฟ์ค๋๋ค โ ์ค์ํ ๋ด์ฉ์ ์๋์ผ๋ก ์บก์ฒํ๊ณ , ๋ ธ์ด์ฆ๋ ์์ฐ์ค๋ฝ๊ฒ ํฌ๋ฏธํด์ง๊ฒ ํ๋ฉฐ, ์ ์์ ์ ์ ํ ๊ธฐ์ต์ ๊ฒ์ํฉ๋๋ค. ์๋ ํ๊ทธ ์ง์ ๋, ๋ณต์กํ ์ค์ ๋ ํ์ ์์ต๋๋ค.
AI ๋ฉ๋ชจ๋ฆฌ ์ด์์คํดํธ ์ค์ ์ฌ์ฉ ๋ชจ์ต
๊ธฐ์ต ์์ด โ ๋งค ์ธ์ ์ด ์ฒ์๋ถํฐ ์์:
์ฌ์ฉ์: "๋ค์ฌ์ฐ๊ธฐ์ ํญ์ ์ฌ์ฉํ๊ณ , ํญ์ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํด." (๋ค์ ์ธ์ ) ์ฌ์ฉ์: "์ด๋ฏธ ๋งํ์์ โ ์คํ์ด์ค ๋ง๊ณ ํญ์ด๋ผ๊ณ !" ๐ค (๋ค์ ์ธ์ ) ์ฌ์ฉ์: "...์ง์ง๋ก, ํญ์ด๋ผ๊ณ . ์๋ฌ ์ฒ๋ฆฌ๋. ๋."
memory-lancedb-pro์ ํจ๊ป โ ์์ด์ ํธ๊ฐ ํ์ตํ๊ณ ๊ธฐ์ตํฉ๋๋ค:
์ฌ์ฉ์: "๋ค์ฌ์ฐ๊ธฐ์ ํญ์ ์ฌ์ฉํ๊ณ , ํญ์ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํด." (๋ค์ ์ธ์ โ ์์ด์ ํธ๊ฐ ์ฌ์ฉ์ ์ ํธ๋๋ฅผ ์๋์ผ๋ก ๋ถ๋ฌ์ด) ์์ด์ ํธ: (์๋์ผ๋ก ํญ + ์๋ฌ ์ฒ๋ฆฌ ์ ์ฉ) โ ์ฌ์ฉ์: "์ง๋๋ฌ์ ์ MongoDB ๋์ PostgreSQL์ ์ ํํ์ง?" ์์ด์ ํธ: "2์ 12์ผ ๋ ผ์ ๋ด์ฉ์ ๋ฐ๋ฅด๋ฉด, ์ฃผ์ ์ด์ ๋..." โ
์ด๊ฒ์ด AI ๋ฉ๋ชจ๋ฆฌ ์ด์์คํดํธ๊ฐ ๋ง๋๋ ์ฐจ์ด์ ๋๋ค โ ์ฌ์ฉ์์ ์คํ์ผ์ ํ์ตํ๊ณ , ๊ณผ๊ฑฐ ๊ฒฐ์ ์ ๋ถ๋ฌ์ค๋ฉฐ, ๋ฐ๋ณต ์์ด ๊ฐ์ธํ๋ ์๋ต์ ์ ๊ณตํฉ๋๋ค.
๊ทธ ์ธ ๋ฌด์์ ํ ์ ์๋์?
| ์ ๊ณต ๊ธฐ๋ฅ | |
|---|---|
| Auto-Capture | ์์ด์ ํธ๊ฐ ๋ชจ๋ ๋ํ์์ ํ์ต โ ์๋ memory_store ๋ถํ์ |
| Smart Extraction | LLM ๊ธฐ๋ฐ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ฅ: profile, preferences, entities, events, cases, patterns |
| Intelligent Forgetting | Weibull ๊ฐ์ ๋ชจ๋ธ โ ์ค์ํ ๊ธฐ์ต์ ์ ์ง, ๋ ธ์ด์ฆ๋ ์์ฐ์ค๋ฝ๊ฒ ์ฌ๋ผ์ง |
| Hybrid Retrieval | ๋ฒกํฐ + BM25 ์ ๋ฌธ ๊ฒ์, Cross-Encoder ๋ฆฌ๋ญํน์ผ๋ก ์ตํฉ |
| Context Injection | ๊ด๋ จ ๊ธฐ์ต์ด ๋งค ์๋ต ์ ์ ์๋์ผ๋ก ๋ถ๋ฌ์์ง |
| Multi-Scope Isolation | ์์ด์ ํธ๋ณ, ์ฌ์ฉ์๋ณ, ํ๋ก์ ํธ๋ณ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ |
| Any Provider | OpenAI, Jina, Gemini, Ollama ๋๋ OpenAI ํธํ API ๋ชจ๋ ์ง์ |
| Full Toolkit | CLI, ๋ฐฑ์ , ๋ง์ด๊ทธ๋ ์ด์ , ์ ๊ทธ๋ ์ด๋, ๋ด๋ณด๋ด๊ธฐ/๊ฐ์ ธ์ค๊ธฐ โ ํ๋ก๋์ ํ๊ฒฝ์ ์ ํฉ |
๋น ๋ฅธ ์์
CPU ์๊ตฌ์ฌํญ: CPU๊ฐ AVX/AVX2 ๋ช ๋ น์ด ์ธํธ๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค (Intel Sandy Bridge 2011๋ ์ดํ / AMD Bulldozer 2011๋ ์ดํ). LanceDB์ ๋ค์ดํฐ๋ธ ๋ฒกํฐ ์์ง์ ํ์์ด๋ฉฐ, ๋ฏธ์ง์ CPU์์๋ ํ๋ฌ๊ทธ์ธ์ด
SIGILL(์๋ชป๋ ๋ช ๋ น์ด)๋ก ํฌ๋์๋ฉ๋๋ค. ํ์ธ ๋ฐฉ๋ฒ:grep -o 'avx[^ ]*' /proc/cpuinfo | head -1(์ถ๋ ฅ ์์ = ๋ฏธ์ง์). #419 ์ฐธ์กฐ.
์ต์ A: ์ํด๋ฆญ ์ค์น ์คํฌ๋ฆฝํธ (๊ถ์ฅ)
์ปค๋ฎค๋ํฐ์์ ๊ด๋ฆฌํ๋ **์ค์น ์คํฌ๋ฆฝํธ**๊ฐ ์ค์น, ์ ๊ทธ๋ ์ด๋, ๋ณต๊ตฌ๋ฅผ ํ๋์ ๋ช ๋ น์ด๋ก ์ฒ๋ฆฌํฉ๋๋ค:
curl -fsSL https://raw.githubusercontent.com/CortexReach/toolbox/main/memory-lancedb-pro-setup/setup-memory.sh -o setup-memory.sh
bash setup-memory.sh
์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฃจ๋ ์ ์ฒด ์๋๋ฆฌ์ค์ ๊ธฐํ ์ปค๋ฎค๋ํฐ ๋๊ตฌ ๋ชฉ๋ก์ ์๋ ์์ฝ์์คํ ์ ์ฐธ์กฐํ์ธ์.
์ต์ B: ์๋ ์ค์น
OpenClaw CLI๋ฅผ ํตํ ์ค์น (๊ถ์ฅ):
openclaw plugins install memory-lancedb-pro@beta
๋๋ npm์ ํตํ ์ค์น:
npm i memory-lancedb-pro@beta
npm์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ,
openclaw.json์plugins.load.paths์ ํ๋ฌ๊ทธ์ธ ์ค์น ๋๋ ํฐ๋ฆฌ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฅ ํํ ์ค์ ๋ฌธ์ ์ ๋๋ค.
openclaw.json์ ๋ค์์ ์ถ๊ฐํ์ธ์:
{
"plugins": {
"slots": { "memory": "memory-lancedb-pro" },
"entries": {
"memory-lancedb-pro": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai-compatible",
"apiKey": "${OPENAI_API_KEY}",
"model": "text-embedding-3-small"
},
"autoCapture": true,
"autoRecall": true,
"smartExtraction": true,
"extractMinMessages": 2,
"extractMaxChars": 8000,
"sessionMemory": { "enabled": false }
}
}
}
}
}
์ ์ด๋ฌํ ๊ธฐ๋ณธ๊ฐ์ธ๊ฐ?
autoCapture+smartExtractionโ ์์ด์ ํธ๊ฐ ๋ชจ๋ ๋ํ์์ ์๋์ผ๋ก ํ์ตautoRecallโ ๋งค ์๋ต ์ ์ ๊ด๋ จ ๊ธฐ์ต์ด ์ฃผ์ ๋จextractMinMessages: 2โ ์ผ๋ฐ์ ์ธ ๋ ํด ๋ํ์์ ์ถ์ถ์ด ์์๋จsessionMemory.enabled: falseโ ์ด๊ธฐ์ ์ธ์ ์์ฝ์ผ๋ก ๊ฒ์์ด ์ค์ผ๋๋ ๊ฒ์ ๋ฐฉ์ง
๊ฒ์ฆ ๋ฐ ์ฌ์์:
openclaw config validate
openclaw gateway restart
openclaw logs --follow --plain | grep "memory-lancedb-pro"
๋ค์์ด ํ์๋์ด์ผ ํฉ๋๋ค:
memory-lancedb-pro: smart extraction enabledmemory-lancedb-pro@...: plugin registered
์๋ฃ! ์ด์ ์์ด์ ํธ๊ฐ ์ฅ๊ธฐ ๊ธฐ์ต์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ถ๊ฐ ์ค์น ๊ฒฝ๋ก (๊ธฐ์กด ์ฌ์ฉ์, ์ ๊ทธ๋ ์ด๋)
์ด๋ฏธ OpenClaw๋ฅผ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ:
- ์ ๋ ๊ฒฝ๋ก์
plugins.load.pathsํญ๋ชฉ์ผ๋ก ํ๋ฌ๊ทธ์ธ ์ถ๊ฐ - ๋ฉ๋ชจ๋ฆฌ ์ฌ๋กฏ ๋ฐ์ธ๋ฉ:
plugins.slots.memory = "memory-lancedb-pro" - ํ์ธ:
openclaw plugins info memory-lancedb-pro && openclaw memory-pro stats
v1.1.0 ์ด์ ๋ฒ์ ์์ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒฝ์ฐ:
# 1) ๋ฐฑ์
openclaw memory-pro export --scope global --output memories-backup.json
# 2) ์๋ฎฌ๋ ์ด์
์คํ
openclaw memory-pro upgrade --dry-run
# 3) ์
๊ทธ๋ ์ด๋ ์คํ
openclaw memory-pro upgrade
# 4) ํ์ธ
openclaw memory-pro stats
๋์ ๋ณ๊ฒฝ์ฌํญ๊ณผ ์
๊ทธ๋ ์ด๋ ๊ทผ๊ฑฐ๋ CHANGELOG-v1.1.0.md๋ฅผ ์ฐธ์กฐํ์ธ์.
Telegram ๋ด ๋น ๋ฅธ ๊ฐ์ ธ์ค๊ธฐ (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)
OpenClaw์ Telegram ์ฐ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์๋์ผ๋ก ์ค์ ์ ํธ์งํ๋ ๋์ ๋ฉ์ธ ๋ด์ ๊ฐ์ ธ์ค๊ธฐ ๋ช ๋ น์ด๋ฅผ ์ง์ ๋ณด๋ด๋ ๊ฒ์ด ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค.
๋ค์ ๋ฉ์์ง๋ฅผ ์ ์กํ์ธ์ (๋ด์ ๊ทธ๋๋ก ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐํ๋ ์๋ฌธ ํ๋กฌํํธ์ ๋๋ค):
Help me connect this memory plugin with the most user-friendly configuration: https://github.com/CortexReach/memory-lancedb-pro
Requirements:
1. Set it as the only active memory plugin
2. Use Jina for embedding, and set embedding.taskQuery=retrieval.query and embedding.taskPassage=retrieval.passage
3. Use Jina for reranker
4. Use gpt-4o-mini for the smart-extraction LLM
5. Enable autoCapture, autoRecall, smartExtraction
6. extractMinMessages=2
7. sessionMemory.enabled=false
8. captureAssistant=false
9. retrieval mode=hybrid, vectorWeight=0.7, bm25Weight=0.3
10. rerank=cross-encoder, candidatePoolSize=12, minScore=0.6, hardMinScore=0.62
11. Generate the final openclaw.json config directly, not just an explanation
์์ฝ์์คํ
memory-lancedb-pro๋ ํต์ฌ ํ๋ฌ๊ทธ์ธ์ ๋๋ค. ์ปค๋ฎค๋ํฐ์์ ์ค์ ๊ณผ ์ผ์์ ์ธ ์ฌ์ฉ์ ๋์ฑ ์ํํ๊ฒ ๋ง๋๋ ๋๊ตฌ๋ค์ ๊ตฌ์ถํ์ต๋๋ค:
์ค์น ์คํฌ๋ฆฝํธ โ ์ํด๋ฆญ ์ค์น, ์ ๊ทธ๋ ์ด๋ ๋ฐ ๋ณต๊ตฌ
๋จ์ํ ์ธ์คํจ๋ฌ๊ฐ ์๋๋๋ค โ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ํ ์ค์ ์๋๋ฆฌ์ค๋ฅผ ์ง๋ฅ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค:
| ์ํฉ | ์คํฌ๋ฆฝํธ์ ๋์ |
|---|---|
| ์ค์นํ ์ ์์ | ์๋ก ๋ค์ด๋ก๋ โ ์์กด์ฑ ์ค์น โ ์ค์ ์ ํ โ openclaw.json์ ๊ธฐ๋ก โ ์ฌ์์ |
git clone์ผ๋ก ์ค์น, ์ด์ ์ปค๋ฐ์์ ๋ฉ์ถค | ์๋ git fetch + checkout์ผ๋ก ์ต์ ๋ฒ์ ์ด๋ โ ์์กด์ฑ ์ฌ์ค์น โ ํ์ธ |
| ์ค์ ์ ์ ํจํ์ง ์์ ํ๋ ์กด์ฌ | ์คํค๋ง ํํฐ๋ฅผ ํตํ ์๋ ๊ฐ์ง, ์ง์๋์ง ์๋ ํ๋ ์ ๊ฑฐ |
npm์ผ๋ก ์ค์น | git ์
๋ฐ์ดํธ ๊ฑด๋๋, npm update ์ง์ ์คํ ์๋ฆผ |
์ ํจํ์ง ์์ ์ค์ ์ผ๋ก openclaw CLI ๋์ ๋ถ๊ฐ | ๋์ฒด ๋ฐฉ๋ฒ: openclaw.json ํ์ผ์์ ์ง์ ์ํฌ์คํ์ด์ค ๊ฒฝ๋ก ์ฝ๊ธฐ |
plugins/ ๋์ extensions/ ์ฌ์ฉ | ์ค์ ๋๋ ํ์ผ์์คํ ์์ ํ๋ฌ๊ทธ์ธ ์์น ์๋ ๊ฐ์ง |
| ์ด๋ฏธ ์ต์ ์ํ | ์ํ ํ์ธ๋ง ์คํ, ๋ณ๊ฒฝ ์์ |
bash setup-memory.sh # ์ค์น ๋๋ ์
๊ทธ๋ ์ด๋
bash setup-memory.sh --dry-run # ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ง
bash setup-memory.sh --beta # ์ฌ์ ๋ฆด๋ฆฌ์ค ๋ฒ์ ํฌํจ
bash setup-memory.sh --uninstall # ์ค์ ๋ณต์ ๋ฐ ํ๋ฌ๊ทธ์ธ ์ ๊ฑฐ
๋ด์ฅ ํ๋ก๋ฐ์ด๋ ํ๋ฆฌ์
: Jina / DashScope / SiliconFlow / OpenAI / Ollama, ๋๋ ์์ฒด OpenAI ํธํ API๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. --ref, --selfcheck-only ๋ฑ ์ ์ฒด ์ฌ์ฉ๋ฒ์ ์ค์น ์คํฌ๋ฆฝํธ README๋ฅผ ์ฐธ์กฐํ์ธ์.
Claude Code / OpenClaw Skill โ AI ๊ฐ์ด๋ ์ค์
์ด Skill์ ์ค์นํ๋ฉด AI ์์ด์ ํธ(Claude Code ๋๋ OpenClaw)๊ฐ memory-lancedb-pro์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ๊น์ ์ง์์ ๊ฐ๊ฒ ๋ฉ๋๋ค. **"์ต์ ์ ์ค์ ์ ๋์์ค"**๋ผ๊ณ ๋งํ๋ฉด ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ๊ฐ์ด๋ 7๋จ๊ณ ์ค์ ์ํฌํ๋ก์ฐ์ 4๊ฐ์ง ๋ฐฐํฌ ๊ณํ:
- Full Power (Jina + OpenAI) / Budget (๋ฌด๋ฃ SiliconFlow ๋ฆฌ๋ญ์ปค) / Simple (OpenAI๋ง) / Fully Local (Ollama, API ๋น์ฉ ์ ๋ก)
- ๋ชจ๋ 9๊ฐ MCP ๋๊ตฌ์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ:
memory_recall,memory_store,memory_forget,memory_update,memory_stats,memory_list,self_improvement_log,self_improvement_extract_skill,self_improvement_review(์ ์ฒด ๋๊ตฌ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉดenableManagementTools: true๊ฐ ํ์ํฉ๋๋ค โ ๊ธฐ๋ณธ ๋น ๋ฅธ ์์ ์ค์ ์ 4๊ฐ ํต์ฌ ๋๊ตฌ๋ง ๋ ธ์ถํฉ๋๋ค) - ์ผ๋ฐ์ ์ธ ํจ์ ๋ฐฉ์ง: ์ํฌ์คํ์ด์ค ํ๋ฌ๊ทธ์ธ ํ์ฑํ,
autoRecall๊ธฐ๋ณธ๊ฐ false, jiti ์บ์, ํ๊ฒฝ ๋ณ์, ์ค์ฝํ ๊ฒฉ๋ฆฌ ๋ฑ
Claude Code์ฉ ์ค์น:
git clone https://github.com/CortexReach/memory-lancedb-pro-skill.git ~/.claude/skills/memory-lancedb-pro
OpenClaw์ฉ ์ค์น:
git clone https://github.com/CortexReach/memory-lancedb-pro-skill.git ~/.openclaw/workspace/skills/memory-lancedb-pro-skill
๋น๋์ค ํํ ๋ฆฌ์ผ
์ ์ฒด ์๋ด: ์ค์น, ์ค์ , ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ ๋ด๋ถ ๊ตฌ์กฐ.
https://www.bilibili.com/video/BV1zUf2BGEgn/
์ํคํ ์ฒ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ index.ts (์ง์
์ ) โ
โ ํ๋ฌ๊ทธ์ธ ๋ฑ๋ก ยท ์ค์ ํ์ฑ ยท ๋ผ์ดํ์ฌ์ดํด ํ
โ
โโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ โ โ โ
โโโโโโผโโโโ โโโโโโผโโโโ โโโโโผโโโโโ โโโโผโโโโโโโโโโโ
โ store โ โembedderโ โretrieverโ โ scopes โ
โ .ts โ โ .ts โ โ .ts โ โ .ts โ
โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโโโโโโ
โ โ
โโโโโโผโโโโ โโโโโโโผโโโโโโโโโโโ
โmigrate โ โnoise-filter.ts โ
โ .ts โ โadaptive- โ
โโโโโโโโโโ โretrieval.ts โ
โโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ tools.ts โ โ cli.ts โ
โ (์์ด์ ํธAPI)โ โ (CLI) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโ
์ ์ฒด ์ํคํ ์ฒ์ ๋ํ ์ฌ์ธต ๋ถ์์ docs/memory_architecture_analysis.md๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ผ ๋ ํผ๋ฐ์ค (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)
| ํ์ผ | ์ฉ๋ |
|---|---|
index.ts | ํ๋ฌ๊ทธ์ธ ์ง์ ์ . OpenClaw Plugin API์ ๋ฑ๋ก, ์ค์ ํ์ฑ, ๋ผ์ดํ์ฌ์ดํด ํ ๋ง์ดํธ |
openclaw.plugin.json | ํ๋ฌ๊ทธ์ธ ๋ฉํ๋ฐ์ดํฐ + ์ ์ฒด JSON Schema ์ค์ ์ ์ธ |
cli.ts | CLI ๋ช
๋ น์ด: memory-pro list/search/stats/delete/delete-bulk/export/import/reembed/upgrade/migrate |
src/store.ts | LanceDB ์คํ ๋ฆฌ์ง ๋ ์ด์ด. ํ ์ด๋ธ ์์ฑ / FTS ์ธ๋ฑ์ฑ / ๋ฒกํฐ ๊ฒ์ / BM25 ๊ฒ์ / CRUD |
src/embedder.ts | ์๋ฒ ๋ฉ ์ถ์ํ. OpenAI ํธํ API ํ๋ก๋ฐ์ด๋ ๋ชจ๋ ์ง์ |
src/retriever.ts | ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ ์์ง. ๋ฒกํฐ + BM25 โ ํ์ด๋ธ๋ฆฌ๋ ํจ์ โ ๋ฆฌ๋ญํฌ โ ๋ผ์ดํ์ฌ์ดํด ๊ฐ์ โ ํํฐ |
src/scopes.ts | ๋ฉํฐ ์ค์ฝํ ์ ๊ทผ ์ ์ด |
src/tools.ts | ์์ด์ ํธ ๋๊ตฌ ์ ์: memory_recall, memory_store, memory_forget, memory_update + ๊ด๋ฆฌ ๋๊ตฌ |
src/noise-filter.ts | ์์ด์ ํธ ๊ฑฐ์ , ๋ฉํ ์ง๋ฌธ, ์ธ์ฌ, ์ ํ์ง ์ฝํ ์ธ ํํฐ๋ง |
src/adaptive-retrieval.ts | ์ฟผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ฒ์์ด ํ์ํ์ง ํ๋จ |
src/migrate.ts | ๋ด์ฅ memory-lancedb์์ Pro๋ก์ ๋ง์ด๊ทธ๋ ์ด์
|
src/smart-extractor.ts | LLM ๊ธฐ๋ฐ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ ์ถ์ถ + L0/L1/L2 ๊ณ์ธต ์ ์ฅ + 2๋จ๊ณ ์ค๋ณต ์ ๊ฑฐ |
src/decay-engine.ts | Weibull ํ์ฅ ์ง์ ๊ฐ์ ๋ชจ๋ธ |
src/tier-manager.ts | 3๋จ๊ณ ์น๊ฒฉ/๊ฐ๋ฑ: Peripheral โ Working โ Core |
ํต์ฌ ๊ธฐ๋ฅ
ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์
Query โ embedQuery() โโ
โโโ Hybrid Fusion โ Rerank โ Lifecycle Decay Boost โ Length Norm โ Filter
Query โ BM25 FTS โโโโโโ
- ๋ฒกํฐ ๊ฒ์ โ LanceDB ANN์ ํตํ ์๋ฏธ์ ์ ์ฌ๋ (์ฝ์ฌ์ธ ๊ฑฐ๋ฆฌ)
- BM25 ์ ๋ฌธ ๊ฒ์ โ LanceDB FTS ์ธ๋ฑ์ค๋ฅผ ํตํ ์ ํํ ํค์๋ ๋งค์นญ
- ํ์ด๋ธ๋ฆฌ๋ ํจ์ โ ๋ฒกํฐ ์ค์ฝ์ด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก, BM25 ํํธ์ ๊ฐ์ค ๋ถ์คํธ ์ ์ฉ (ํ์ค RRF๊ฐ ์๋ โ ์ค์ ๊ฒ์ ํ์ง์ ๋ง๊ฒ ํ๋๋จ)
- ๊ฐ์ค์น ์ค์ ๊ฐ๋ฅ โ
vectorWeight,bm25Weight,minScore
Cross-Encoder ๋ฆฌ๋ญํน
- Jina, SiliconFlow, Voyage AI, Pinecone ๋ด์ฅ ์ด๋ํฐ
- Jina ํธํ ์๋ํฌ์ธํธ์ ํธํ (์: Hugging Face TEI, DashScope)
- ํ์ด๋ธ๋ฆฌ๋ ์ค์ฝ์ด๋ง: Cross-Encoder 60% + ์๋ ํจ์ ์ค์ฝ์ด 40%
- ๊ทธ๋ ์ด์คํ ๋๊ทธ๋ ์ด๋ฐ์ด์ : API ์คํจ ์ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ก ํด๋ฐฑ
๋ค๋จ๊ณ ์ค์ฝ์ด๋ง ํ์ดํ๋ผ์ธ
| ๋จ๊ณ | ํจ๊ณผ |
|---|---|
| ํ์ด๋ธ๋ฆฌ๋ ํจ์ | ์๋ฏธ์ ๊ฒ์๊ณผ ์ ํํ ๋งค์นญ ๊ฒฐํฉ |
| Cross-Encoder ๋ฆฌ๋ญํฌ | ์๋ฏธ์ ์ผ๋ก ์ ํํ ๊ฒฐ๊ณผ ์น๊ฒฉ |
| ๋ผ์ดํ์ฌ์ดํด ๊ฐ์ ๋ถ์คํธ | Weibull ์ต์ ์ฑ + ์ ๊ทผ ๋น๋ + ์ค์๋ ร ์ ๋ขฐ๋ |
| ๊ธธ์ด ์ ๊ทํ | ๊ธด ํญ๋ชฉ์ด ๊ฒฐ๊ณผ๋ฅผ ์ง๋ฐฐํ๋ ๊ฒ์ ๋ฐฉ์ง (์ต์ปค: 500์) |
| ์ต์ ์ ์ ํํ | ๊ด๋ จ ์๋ ๊ฒฐ๊ณผ ์ ๊ฑฐ (๊ธฐ๋ณธ๊ฐ: 0.35) |
| MMR ๋ค์์ฑ | ์ฝ์ฌ์ธ ์ ์ฌ๋ > 0.85 โ ๊ฐ๋ฑ |
Smart Memory Extraction (v1.1.0)
- LLM ๊ธฐ๋ฐ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ ์ถ์ถ: profile, preferences, entities, events, cases, patterns
- L0/L1/L2 ๊ณ์ธต ์ ์ฅ: L0 (ํ ์ค ์ธ๋ฑ์ค) โ L1 (๊ตฌ์กฐํ๋ ์์ฝ) โ L2 (์ ์ฒด ๋ด๋ฌํฐ๋ธ)
- 2๋จ๊ณ ์ค๋ณต ์ ๊ฑฐ: ๋ฒกํฐ ์ ์ฌ๋ ์ฌ์ ํํฐ (โฅ0.7) โ LLM ์๋ฏธ ํ๋จ (CREATE/MERGE/SKIP)
- ์นดํ
๊ณ ๋ฆฌ ์ธ์ ๋ณํฉ:
profile์ ํญ์ ๋ณํฉ,events/cases๋ ์ถ๊ฐ ์ ์ฉ
๋ฉ๋ชจ๋ฆฌ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ (v1.1.0)
- Weibull ๊ฐ์ ์์ง: ๋ณตํฉ ์ ์ = ์ต์ ์ฑ + ๋น๋ + ๋ด์ฌ์ ๊ฐ์น
- 3๋จ๊ณ ์น๊ฒฉ:
Peripheral โ Working โ Core, ์ค์ ๊ฐ๋ฅํ ์๊ณ๊ฐ - ์ ๊ทผ ๊ฐํ: ์์ฃผ ๋ถ๋ฌ์ค๋ ๊ธฐ์ต์ ๋ ๋๋ฆฌ๊ฒ ๊ฐ์ (๊ฐ๊ฒฉ ๋ฐ๋ณต ํ์ต ๋ฐฉ์)
- ์ค์๋ ์กฐ์ ๋ฐ๊ฐ๊ธฐ: ์ค์ํ ๊ธฐ์ต์ ๋ ๋๋ฆฌ๊ฒ ๊ฐ์
Multi-Scope ๊ฒฉ๋ฆฌ
- ๋ด์ฅ ์ค์ฝํ:
global,agent:<id>,custom:<name>,project:<id>,user:<id> scopes.agentAccess๋ฅผ ํตํ ์์ด์ ํธ ์์ค ์ ๊ทผ ์ ์ด- ๊ธฐ๋ณธ๊ฐ: ๊ฐ ์์ด์ ํธ๊ฐ
global+ ์์ฒดagent:<id>์ค์ฝํ์ ์ ๊ทผ
Auto-Capture ๋ฐ Auto-Recall
- Auto-Capture (
agent_end): ๋ํ์์ ์ ํธ๋/์ฌ์ค/๊ฒฐ์ /์ํฐํฐ๋ฅผ ์ถ์ถ, ์ค๋ณต ์ ๊ฑฐ, ํด๋น ์ต๋ 3๊ฐ ์ ์ฅ - Auto-Recall (
before_agent_start):<relevant-memories>์ปจํ ์คํธ ์ฃผ์ (์ต๋ 3๊ฐ ํญ๋ชฉ)
๋ ธ์ด์ฆ ํํฐ๋ง ๋ฐ ์ ์ํ ๊ฒ์
- ์ ํ์ง ์ฝํ ์ธ ํํฐ๋ง: ์์ด์ ํธ ๊ฑฐ์ , ๋ฉํ ์ง๋ฌธ, ์ธ์ฌ
- ์ธ์ฌ, ์ฌ๋์ ๋ช ๋ น์ด, ๊ฐ๋จํ ํ์ธ, ์ด๋ชจ์ง์ ๋ํด์๋ ๊ฒ์ ๊ฑด๋๋
- ๊ธฐ์ต ํค์๋์ ๋ํด์๋ ๊ฒ์ ๊ฐ์ ์คํ ("๊ธฐ์ตํด", "์ด์ ์", "์ง๋๋ฒ์")
- CJK ์ธ์ ์๊ณ๊ฐ (์ค๊ตญ์ด: 6์ vs ์์ด: 15์)
๋ด์ฅ memory-lancedb์์ ๋น๊ต (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)
| ๊ธฐ๋ฅ | ๋ด์ฅ memory-lancedb | memory-lancedb-pro |
|---|---|---|
| ๋ฒกํฐ ๊ฒ์ | ์ | ์ |
| BM25 ์ ๋ฌธ ๊ฒ์ | - | ์ |
| ํ์ด๋ธ๋ฆฌ๋ ํจ์ (๋ฒกํฐ + BM25) | - | ์ |
| Cross-Encoder ๋ฆฌ๋ญํฌ (๋ฉํฐ ํ๋ก๋ฐ์ด๋) | - | ์ |
| ์ต์ ์ฑ ๋ถ์คํธ ๋ฐ ์๊ฐ ๊ฐ์ | - | ์ |
| ๊ธธ์ด ์ ๊ทํ | - | ์ |
| MMR ๋ค์์ฑ | - | ์ |
| ๋ฉํฐ ์ค์ฝํ ๊ฒฉ๋ฆฌ | - | ์ |
| ๋ ธ์ด์ฆ ํํฐ๋ง | - | ์ |
| ์ ์ํ ๊ฒ์ | - | ์ |
| ๊ด๋ฆฌ CLI | - | ์ |
| ์ธ์ ๋ฉ๋ชจ๋ฆฌ | - | ์ |
| ํ์คํฌ ์ธ์ ์๋ฒ ๋ฉ | - | ์ |
| LLM Smart Extraction (6๊ฐ ์นดํ ๊ณ ๋ฆฌ) | - | ์ (v1.1.0) |
| Weibull ๊ฐ์ + ๋จ๊ณ ์น๊ฒฉ | - | ์ (v1.1.0) |
| OpenAI ํธํ ์๋ฒ ๋ฉ | ์ ํ์ | ์ |
์ค์
์ ์ฒด ์ค์ ์์
{
"embedding": {
"apiKey": "${JINA_API_KEY}",
"model": "jina-embeddings-v5-text-small",
"baseURL": "https://api.jina.ai/v1",
"dimensions": 1024,
"taskQuery": "retrieval.query",
"taskPassage": "retrieval.passage",
"normalized": true
},
"dbPath": "~/.openclaw/memory/lancedb-pro",
"autoCapture": true,
"autoRecall": true,
"retrieval": {
"mode": "hybrid",
"vectorWeight": 0.7,
"bm25Weight": 0.3,
"minScore": 0.3,
"rerank": "cross-encoder",
"rerankApiKey": "${JINA_API_KEY}",
"rerankModel": "jina-reranker-v3",
"rerankEndpoint": "https://api.jina.ai/v1/rerank",
"rerankProvider": "jina",
"candidatePoolSize": 20,
"recencyHalfLifeDays": 14,
"recencyWeight": 0.1,
"filterNoise": true,
"lengthNormAnchor": 500,
"hardMinScore": 0.35,
"timeDecayHalfLifeDays": 60,
"reinforcementFactor": 0.5,
"maxHalfLifeMultiplier": 3
},
"enableManagementTools": false,
"scopes": {
"default": "global",
"definitions": {
"global": { "description": "Shared knowledge" },
"agent:discord-bot": { "description": "Discord bot private" }
},
"agentAccess": {
"discord-bot": ["global", "agent:discord-bot"]
}
},
"sessionMemory": {
"enabled": false,
"messageCount": 15
},
"smartExtraction": true,
"llm": {
"apiKey": "${OPENAI_API_KEY}",
"model": "gpt-4o-mini",
"baseURL": "https://api.openai.com/v1"
},
"extractMinMessages": 2,
"extractMaxChars": 8000
}
์๋ฒ ๋ฉ ํ๋ก๋ฐ์ด๋
OpenAI ํธํ ์๋ฒ ๋ฉ API์ ๋ชจ๋ ๋์ํฉ๋๋ค:
| ํ๋ก๋ฐ์ด๋ | ๋ชจ๋ธ | Base URL | ์ฐจ์ |
|---|---|---|---|
| Jina (๊ถ์ฅ) | jina-embeddings-v5-text-small | https://api.jina.ai/v1 | 1024 |
| OpenAI | text-embedding-3-small | https://api.openai.com/v1 | 1536 |
| Voyage | voyage-4-lite / voyage-4 | https://api.voyageai.com/v1 | 1024 / 1024 |
| Google Gemini | gemini-embedding-001 | https://generativelanguage.googleapis.com/v1beta/openai/ | 3072 |
| Ollama (๋ก์ปฌ) | nomic-embed-text | http://localhost:11434/v1 | ํ๋ก๋ฐ์ด๋๋ณ ์์ด |
๋ฆฌ๋ญํฌ ํ๋ก๋ฐ์ด๋
Cross-Encoder ๋ฆฌ๋ญํน์ rerankProvider๋ฅผ ํตํด ์ฌ๋ฌ ํ๋ก๋ฐ์ด๋๋ฅผ ์ง์ํฉ๋๋ค:
| ํ๋ก๋ฐ์ด๋ | rerankProvider | ์์ ๋ชจ๋ธ |
|---|---|---|
| Jina (๊ธฐ๋ณธ๊ฐ) | jina | jina-reranker-v3 |
| SiliconFlow (๋ฌด๋ฃ ํฐ์ด ์ ๊ณต) | siliconflow | BAAI/bge-reranker-v2-m3 |
| Voyage AI | voyage | rerank-2.5 |
| Pinecone | pinecone | bge-reranker-v2-m3 |
Jina ํธํ ๋ฆฌ๋ญํฌ ์๋ํฌ์ธํธ๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค โ rerankProvider: "jina"๋ก ์ค์ ํ๊ณ rerankEndpoint๋ฅผ ํด๋น ์๋น์ค๋ก ์ง์ ํ์ธ์ (์: Hugging Face TEI, DashScope qwen3-rerank).
Smart Extraction (LLM) โ v1.1.0
smartExtraction์ด ํ์ฑํ๋๋ฉด (๊ธฐ๋ณธ๊ฐ: true), ํ๋ฌ๊ทธ์ธ์ด ์ ๊ท์ ๊ธฐ๋ฐ ํธ๋ฆฌ๊ฑฐ ๋์ LLM์ ์ฌ์ฉํ์ฌ ๊ธฐ์ต์ ์ง๋ฅ์ ์ผ๋ก ์ถ์ถํ๊ณ ๋ถ๋ฅํฉ๋๋ค.
| ํ๋ | ํ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|---|
smartExtraction | boolean | true | LLM ๊ธฐ๋ฐ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ ์ถ์ถ ํ์ฑํ/๋นํ์ฑํ |
llm.auth | string | api-key | api-key๋ llm.apiKey / embedding.apiKey๋ฅผ ์ฌ์ฉ; oauth๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฌ๊ทธ์ธ ๋ฒ์์ OAuth ํ ํฐ ํ์ผ์ ์ฌ์ฉ |
llm.apiKey | string | (embedding.apiKey๋ก ํด๋ฐฑ) | LLM ํ๋ก๋ฐ์ด๋์ฉ API ํค |
llm.model | string | openai/gpt-oss-120b | LLM ๋ชจ๋ธ๋ช |
llm.baseURL | string | (embedding.baseURL๋ก ํด๋ฐฑ) | LLM API ์๋ํฌ์ธํธ |
llm.oauthProvider | string | openai-codex | llm.auth๊ฐ oauth์ผ ๋ ์ฌ์ฉ๋๋ OAuth ํ๋ก๋ฐ์ด๋ ID |
llm.oauthPath | string | ~/.openclaw/.memory-lancedb-pro/oauth.json | llm.auth๊ฐ oauth์ผ ๋ ์ฌ์ฉ๋๋ OAuth ํ ํฐ ํ์ผ |
llm.timeoutMs | number | 30000 | LLM ์์ฒญ ํ์์์ (๋ฐ๋ฆฌ์ด) |
extractMinMessages | number | 2 | ์ถ์ถ์ด ์์๋๋ ์ต์ ๋ฉ์์ง ์ |
extractMaxChars | number | 8000 | LLM์ ์ ์ก๋๋ ์ต๋ ๋ฌธ์ ์ |
OAuth llm ์ค์ (๊ธฐ์กด Codex / ChatGPT ๋ก๊ทธ์ธ ์บ์๋ฅผ LLM ํธ์ถ์ ์ฌ์ฉ):
{
"llm": {
"auth": "oauth",
"oauthProvider": "openai-codex",
"model": "gpt-5.4",
"oauthPath": "${HOME}/.openclaw/.memory-lancedb-pro/oauth.json",
"timeoutMs": 30000
}
}
llm.auth: "oauth" ์ฐธ๊ณ ์ฌํญ:
llm.oauthProvider๋ ํ์ฌopenai-codex์ ๋๋ค.- OAuth ํ ํฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก
~/.openclaw/.memory-lancedb-pro/oauth.json์ ์ ์ฅ๋ฉ๋๋ค. - ํ์ผ์ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅํ๋ ค๋ฉด
llm.oauthPath๋ฅผ ์ค์ ํ์ธ์. auth login์ OAuth ํ์ผ ์์ ์ด์ api-keyllm์ค์ ์ ์ค๋ ์ท์ ์ ์ฅํ๋ฉฐ,auth logout์ ํด๋น ์ค๋ ์ท์ด ์์ ๋ ๋ณต์ํฉ๋๋ค.api-key์์oauth๋ก ์ ํํ ๋llm.baseURL์ด ์๋์ผ๋ก ์ด์ ๋์ง ์์ต๋๋ค. OAuth ๋ชจ๋์์ ์๋์ ์ผ๋ก ์ฌ์ฉ์ ์ ์ ChatGPT/Codex ํธํ ๋ฐฑ์๋๋ฅผ ์ํ๋ ๊ฒฝ์ฐ์๋ง ์๋์ผ๋ก ์ค์ ํ์ธ์.
๋ผ์ดํ์ฌ์ดํด ์ค์ (๊ฐ์ + ๋จ๊ณ)
| ํ๋ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
decay.recencyHalfLifeDays | 30 | Weibull ์ต์ ์ฑ ๊ฐ์ ์ ๊ธฐ๋ณธ ๋ฐ๊ฐ๊ธฐ |
decay.frequencyWeight | 0.3 | ๋ณตํฉ ์ ์์์ ์ ๊ทผ ๋น๋์ ๊ฐ์ค์น |
decay.intrinsicWeight | 0.3 | importance ร confidence์ ๊ฐ์ค์น |
decay.betaCore | 0.8 | core ๊ธฐ์ต์ Weibull ๋ฒ ํ |
decay.betaWorking | 1.0 | working ๊ธฐ์ต์ Weibull ๋ฒ ํ |
decay.betaPeripheral | 1.3 | peripheral ๊ธฐ์ต์ Weibull ๋ฒ ํ |
tier.coreAccessThreshold | 10 | core๋ก ์น๊ฒฉํ๊ธฐ ์ํ ์ต์ ํธ์ถ ํ์ |
tier.peripheralAgeDays | 60 | ์ค๋๋ ๊ธฐ์ต์ ๊ฐ๋ฑํ๊ธฐ ์ํ ๊ฒฝ๊ณผ ์ผ์ ์๊ณ๊ฐ |
์ ๊ทผ ๊ฐํ
์์ฃผ ๋ถ๋ฌ์ค๋ ๊ธฐ์ต์ ๋ ๋๋ฆฌ๊ฒ ๊ฐ์ ํฉ๋๋ค (๊ฐ๊ฒฉ ๋ฐ๋ณต ํ์ต ๋ฐฉ์).
์ค์ ํค (retrieval ํ์):
reinforcementFactor(0-2, ๊ธฐ๋ณธ๊ฐ:0.5) โ0์ผ๋ก ์ค์ ํ๋ฉด ๋นํ์ฑํmaxHalfLifeMultiplier(1-10, ๊ธฐ๋ณธ๊ฐ:3) โ ์ ํจ ๋ฐ๊ฐ๊ธฐ์ ํ๋ ์บก
CLI ๋ช ๋ น์ด
openclaw memory-pro list [--scope global] [--category fact] [--limit 20] [--json]
openclaw memory-pro search "query" [--scope global] [--limit 10] [--json]
openclaw memory-pro stats [--scope global] [--json]
openclaw memory-pro auth login [--provider openai-codex] [--model gpt-5.4] [--oauth-path /abs/path/oauth.json]
openclaw memory-pro auth status
openclaw memory-pro auth logout
openclaw memory-pro delete <id>
openclaw memory-pro delete-bulk --scope global [--before 2025-01-01] [--dry-run]
openclaw memory-pro export [--scope global] [--output memories.json]
openclaw memory-pro import memories.json [--scope global] [--dry-run]
openclaw memory-pro reembed --source-db /path/to/old-db [--batch-size 32] [--skip-existing]
openclaw memory-pro upgrade [--dry-run] [--batch-size 10] [--no-llm] [--limit N] [--scope SCOPE]
openclaw memory-pro migrate check|run|verify [--source /path]
OAuth ๋ก๊ทธ์ธ ํ๋ฆ:
openclaw memory-pro auth login์คํ--provider๋ฅผ ์๋ตํ๊ณ ๋ํํ ํฐ๋ฏธ๋์์ ์คํํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ธฐ ์ ์ CLI๊ฐ OAuth ํ๋ก๋ฐ์ด๋ ์ ํ๊ธฐ๋ฅผ ํ์ํฉ๋๋ค- ๋ช
๋ น์ด๊ฐ ์ธ์ฆ URL์ ์ถ๋ ฅํ๊ณ
--no-browser๊ฐ ์ค์ ๋์ง ์์ ํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฝ๋๋ค - ์ฝ๋ฐฑ์ด ์ฑ๊ณตํ๋ฉด, ๋ช
๋ น์ด๊ฐ ํ๋ฌ๊ทธ์ธ OAuth ํ์ผ (๊ธฐ๋ณธ๊ฐ:
~/.openclaw/.memory-lancedb-pro/oauth.json)์ ์ ์ฅํ๊ณ , ์ด์ api-keyllm์ค์ ์ ์ค๋ ์ท์ ๋ก๊ทธ์์์ฉ์ผ๋ก ์ ์ฅํ๋ฉฐ, ํ๋ฌ๊ทธ์ธllm์ค์ ์ OAuth ์ค์ (auth,oauthProvider,model,oauthPath)์ผ๋ก ๊ต์ฒดํฉ๋๋ค openclaw memory-pro auth logout์ ํด๋น OAuth ํ์ผ์ ์ญ์ ํ๊ณ ์ค๋ ์ท์ด ์กด์ฌํ๋ฉด ์ด์ api-keyllm์ค์ ์ ๋ณต์ํฉ๋๋ค
๊ณ ๊ธ ์ฃผ์
์ฃผ์ ๋ ๊ธฐ์ต์ด ์๋ต์ ํ์๋๋ ๊ฒฝ์ฐ
๊ฐ๋ ๋ชจ๋ธ์ด ์ฃผ์
๋ <relevant-memories> ๋ธ๋ก์ ๊ทธ๋๋ก ์ถ๋ ฅํ ์ ์์ต๋๋ค.
์ต์ A (๊ฐ์ฅ ์์ ): ์ผ์์ ์ผ๋ก Auto-Recall ๋นํ์ฑํ:
{ "plugins": { "entries": { "memory-lancedb-pro": { "config": { "autoRecall": false } } } } }
์ต์ B (๊ถ์ฅ): Auto-Recall์ ์ ์งํ๊ณ ์์ด์ ํธ ์์คํ ํ๋กฌํํธ์ ์ถ๊ฐ:
<relevant-memories>/ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ฝํ ์ธ ๋ฅผ ์๋ต์ ๋ ธ์ถํ๊ฑฐ๋ ์ธ์ฉํ์ง ๋ง์ธ์. ๋ด๋ถ ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ์ฌ์ฉํ์ธ์.
์ธ์ ๋ฉ๋ชจ๋ฆฌ
/new๋ช ๋ น์ด ์ ์๋ โ ์ด์ ์ธ์ ์์ฝ์ LanceDB์ ์ ์ฅ- ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ (OpenClaw์ ์ด๋ฏธ ๋ค์ดํฐ๋ธ
.jsonl์ธ์ ์์ํ ๊ธฐ๋ฅ์ด ์์) - ๋ฉ์์ง ์ ์ค์ ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ: 15)
๋ฐฐํฌ ๋ชจ๋์ /new ๊ฒ์ฆ์ ๋ํด์๋ docs/openclaw-integration-playbook.md๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํ ์ฌ๋์ ๋ช ๋ น์ด (์: /lesson)
CLAUDE.md, AGENTS.md ๋๋ ์์คํ
ํ๋กฌํํธ์ ๋ค์์ ์ถ๊ฐํ์ธ์ (์์ด์ ํธ๊ฐ ์ฝ๋ ์๋ฌธ ์ง์๋ฌธ์ด๋ฏ๋ก ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค):
## /lesson command
When the user sends `/lesson <content>`:
1. Use memory_store to save as category=fact (raw knowledge)
2. Use memory_store to save as category=decision (actionable takeaway)
3. Confirm what was saved
## /remember command
When the user sends `/remember <content>`:
1. Use memory_store to save with appropriate category and importance
2. Confirm with the stored memory ID
AI ์์ด์ ํธ๋ฅผ ์ํ ์ฒ ์น
์๋ ๋ธ๋ก์
AGENTS.md์ ๋ณต์ฌํ์ฌ ์์ด์ ํธ๊ฐ ์ด ๊ท์น์ ์๋์ผ๋ก ์ ์ฉํ๋๋ก ํ์ธ์ (์์ด์ ํธ๊ฐ ์ฝ๋ ์๋ฌธ ์ง์๋ฌธ์ด๋ฏ๋ก ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค).
## Rule 1 โ Dual-layer memory storage
Every pitfall/lesson learned โ IMMEDIATELY store TWO memories:
- Technical layer: Pitfall: [symptom]. Cause: [root cause]. Fix: [solution]. Prevention: [how to avoid]
(category: fact, importance >= 0.8)
- Principle layer: Decision principle ([tag]): [behavioral rule]. Trigger: [when]. Action: [what to do]
(category: decision, importance >= 0.85)
## Rule 2 โ LanceDB hygiene
Entries must be short and atomic (< 500 chars). No raw conversation summaries or duplicates.
## Rule 3 โ Recall before retry
On ANY tool failure, ALWAYS memory_recall with relevant keywords BEFORE retrying.
## Rule 4 โ Confirm target codebase
Confirm you are editing memory-lancedb-pro vs built-in memory-lancedb before changes.
## Rule 5 โ Clear jiti cache after plugin code changes
After modifying .ts files under plugins/, MUST run rm -rf /tmp/jiti/ BEFORE openclaw gateway restart.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง
LanceDB ํ
์ด๋ธ memories:
| ํ๋ | ํ์ | ์ค๋ช |
|---|---|---|
id | string (UUID) | ๊ธฐ๋ณธ ํค |
text | string | ๊ธฐ์ต ํ ์คํธ (FTS ์ธ๋ฑ์ฑ๋จ) |
vector | float[] | ์๋ฒ ๋ฉ ๋ฒกํฐ |
category | string | ์ ์ฅ ์นดํ
๊ณ ๋ฆฌ: preference / fact / decision / entity / reflection / other |
scope | string | ์ค์ฝํ ์๋ณ์ (์: global, agent:main) |
importance | float | ์ค์๋ ์ ์ 0-1 |
timestamp | int64 | ์์ฑ ํ์์คํฌํ (ms) |
metadata | string (JSON) | ํ์ฅ ๋ฉํ๋ฐ์ดํฐ |
v1.1.0์ ์ฃผ์ metadata ํค: l0_abstract, l1_overview, l2_content, memory_category, tier, access_count, confidence, last_accessed_at
์นดํ ๊ณ ๋ฆฌ ์ฐธ๊ณ : ์ต์์
categoryํ๋๋ 6๊ฐ ์ ์ฅ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Smart Extraction์ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ ์๋ฏธ ๋ผ๋ฒจ (profile/preferences/entities/events/cases/patterns)์metadata.memory_category์ ์ ์ฅ๋ฉ๋๋ค.
๋ฌธ์ ํด๊ฒฐ
"Cannot mix BigInt and other types" (LanceDB / Apache Arrow)
LanceDB 0.26 ์ด์์์ ์ผ๋ถ ์ซ์ ์ด์ด BigInt๋ก ๋ฐํ๋ ์ ์์ต๋๋ค. memory-lancedb-pro >= 1.0.14๋ก ์
๊ทธ๋ ์ด๋ํ์ธ์ โ ์ด ํ๋ฌ๊ทธ์ธ์ ์ด์ ์ฐ์ ์ฐ์ฐ ์ ์ Number(...)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ณํํฉ๋๋ค.
๋ฌธ์
| ๋ฌธ์ | ์ค๋ช |
|---|---|
| OpenClaw ํตํฉ ํ๋ ์ด๋ถ | ๋ฐฐํฌ ๋ชจ๋, ๊ฒ์ฆ, ํ๊ท ๋งคํธ๋ฆญ์ค |
| ๋ฉ๋ชจ๋ฆฌ ์ํคํ ์ฒ ๋ถ์ | ์ ์ฒด ์ํคํ ์ฒ ์ฌ์ธต ๋ถ์ |
| CHANGELOG v1.1.0 | v1.1.0 ๋์ ๋ณ๊ฒฝ์ฌํญ ๋ฐ ์ ๊ทธ๋ ์ด๋ ๊ทผ๊ฑฐ |
| ์ฅ๋ฌธ ์ปจํ ์คํธ ์ฒญํน | ๊ธด ๋ฌธ์๋ฅผ ์ํ ์ฒญํน ์ ๋ต |
๋ฒ ํ: Smart Memory v1.1.0
์ํ: ๋ฒ ํ โ
npm i memory-lancedb-pro@beta๋ก ์ฌ์ฉ ๊ฐ๋ฅ.latest๋ฅผ ์ฌ์ฉํ๋ ์์ ๋ฒ์ ์ฌ์ฉ์๋ ์ํฅ ์์.
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| Smart Extraction | LLM ๊ธฐ๋ฐ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ ์ถ์ถ + L0/L1/L2 ๋ฉํ๋ฐ์ดํฐ. ๋นํ์ฑํ ์ ์ ๊ท์์ผ๋ก ํด๋ฐฑ. |
| ๋ผ์ดํ์ฌ์ดํด ์ค์ฝ์ด๋ง | ๊ฒ์์ Weibull ๊ฐ์ ํตํฉ โ ๋์ ๋น๋์ ๋์ ์ค์๋์ ๊ธฐ์ต์ด ์์์ ๋ญํฌ. |
| ๋จ๊ณ ๊ด๋ฆฌ | 3๋จ๊ณ ์์คํ (Core โ Working โ Peripheral), ์๋ ์น๊ฒฉ/๊ฐ๋ฑ. |
ํผ๋๋ฐฑ: GitHub Issues ยท ๋๋๋ฆฌ๊ธฐ: npm i memory-lancedb-pro@latest
์์กด์ฑ
| ํจํค์ง | ์ฉ๋ |
|---|---|
@lancedb/lancedb โฅ0.26.2 | ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค (ANN + FTS) |
openai โฅ6.21.0 | OpenAI ํธํ Embedding API ํด๋ผ์ด์ธํธ |
@sinclair/typebox 0.34.48 | JSON Schema ํ์ ์ ์ |
Contributors
Full list: Contributors
Star History
๋ผ์ด์ ์ค
MIT