๐Ÿง  memory-lancedb-pro

July 21, 2026 ยท View on GitHub

๐Ÿง  memory-lancedb-pro ยท ๐ŸฆžOpenClaw Plugin

OpenClaw ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ AI ๋ฉ”๋ชจ๋ฆฌ ์–ด์‹œ์Šคํ„ดํŠธ

AI ์—์ด์ „ํŠธ์—๊ฒŒ ์ง„์งœ ๊ธฐ์–ตํ•˜๋Š” ๋‘๋‡Œ๋ฅผ ์„ ๋ฌผํ•˜์„ธ์š” โ€” ์„ธ์…˜์„ ๋„˜์–ด, ์—์ด์ „ํŠธ๋ฅผ ๋„˜์–ด, ์‹œ๊ฐ„์„ ๋„˜์–ด.

LanceDB ๊ธฐ๋ฐ˜ OpenClaw ๋ฉ”๋ชจ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ, ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„ยท์˜์‚ฌ๊ฒฐ์ •ยทํ”„๋กœ์ ํŠธ ๋งฅ๋ฝ์„ ์ €์žฅํ•˜๊ณ  ์ดํ›„ ์„ธ์…˜์—์„œ ์ž๋™์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

OpenClaw Plugin npm version LanceDB License: MIT

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 ExtractionLLM ๊ธฐ๋ฐ˜ 6๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜: profile, preferences, entities, events, cases, patterns
Intelligent ForgettingWeibull ๊ฐ์‡  ๋ชจ๋ธ โ€” ์ค‘์š”ํ•œ ๊ธฐ์–ต์€ ์œ ์ง€, ๋…ธ์ด์ฆˆ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ๋ผ์ง
Hybrid Retrieval๋ฒกํ„ฐ + BM25 ์ „๋ฌธ ๊ฒ€์ƒ‰, Cross-Encoder ๋ฆฌ๋žญํ‚น์œผ๋กœ ์œตํ•ฉ
Context Injection๊ด€๋ จ ๊ธฐ์–ต์ด ๋งค ์‘๋‹ต ์ „์— ์ž๋™์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์ง
Multi-Scope Isolation์—์ด์ „ํŠธ๋ณ„, ์‚ฌ์šฉ์ž๋ณ„, ํ”„๋กœ์ ํŠธ๋ณ„ ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๊ณ„
Any ProviderOpenAI, Jina, Gemini, Ollama ๋˜๋Š” OpenAI ํ˜ธํ™˜ API ๋ชจ๋‘ ์ง€์›
Full ToolkitCLI, ๋ฐฑ์—…, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์—…๊ทธ๋ ˆ์ด๋“œ, ๋‚ด๋ณด๋‚ด๊ธฐ/๊ฐ€์ ธ์˜ค๊ธฐ โ€” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์ ํ•ฉ

๋น ๋ฅธ ์‹œ์ž‘

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 enabled
  • memory-lancedb-pro@...: plugin registered

์™„๋ฃŒ! ์ด์ œ ์—์ด์ „ํŠธ๊ฐ€ ์žฅ๊ธฐ ๊ธฐ์–ต์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์„ค์น˜ ๊ฒฝ๋กœ (๊ธฐ์กด ์‚ฌ์šฉ์ž, ์—…๊ทธ๋ ˆ์ด๋“œ)

์ด๋ฏธ OpenClaw๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ:

  1. ์ ˆ๋Œ€ ๊ฒฝ๋กœ์˜ plugins.load.paths ํ•ญ๋ชฉ์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
  2. ๋ฉ”๋ชจ๋ฆฌ ์Šฌ๋กฏ ๋ฐ”์ธ๋”ฉ: plugins.slots.memory = "memory-lancedb-pro"
  3. ํ™•์ธ: 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๋Š” ํ•ต์‹ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์„ค์ •๊ณผ ์ผ์ƒ์ ์ธ ์‚ฌ์šฉ์„ ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋„๊ตฌ๋“ค์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค:

์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ โ€” ์›ํด๋ฆญ ์„ค์น˜, ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ๋ณต๊ตฌ

CortexReach/toolbox/memory-lancedb-pro-setup

๋‹จ์ˆœํ•œ ์ธ์Šคํ†จ๋Ÿฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค โ€” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ค์–‘ํ•œ ์‹ค์ œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€๋Šฅ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค:

์ƒํ™ฉ์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘
์„ค์น˜ํ•œ ์  ์—†์Œ์ƒˆ๋กœ ๋‹ค์šด๋กœ๋“œ โ†’ ์˜์กด์„ฑ ์„ค์น˜ โ†’ ์„ค์ • ์„ ํƒ โ†’ 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 ๊ฐ€์ด๋“œ ์„ค์ •

CortexReach/memory-lancedb-pro-skill

์ด 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

๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ

์ „์ฒด ์•ˆ๋‚ด: ์„ค์น˜, ์„ค์ •, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ๋‚ด๋ถ€ ๊ตฌ์กฐ.

YouTube Video https://youtu.be/MtukF1C8epQ

Bilibili Video 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.tsCLI ๋ช…๋ น์–ด: memory-pro list/search/stats/delete/delete-bulk/export/import/reembed/upgrade/migrate
src/store.tsLanceDB ์Šคํ† ๋ฆฌ์ง€ ๋ ˆ์ด์–ด. ํ…Œ์ด๋ธ” ์ƒ์„ฑ / 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.tsLLM ๊ธฐ๋ฐ˜ 6๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ ์ถ”์ถœ + L0/L1/L2 ๊ณ„์ธต ์ €์žฅ + 2๋‹จ๊ณ„ ์ค‘๋ณต ์ œ๊ฑฐ
src/decay-engine.tsWeibull ํ™•์žฅ ์ง€์ˆ˜ ๊ฐ์‡  ๋ชจ๋ธ
src/tier-manager.ts3๋‹จ๊ณ„ ์Šน๊ฒฉ/๊ฐ•๋“ฑ: 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-lancedbmemory-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-smallhttps://api.jina.ai/v11024
OpenAItext-embedding-3-smallhttps://api.openai.com/v11536
Voyagevoyage-4-lite / voyage-4https://api.voyageai.com/v11024 / 1024
Google Geminigemini-embedding-001https://generativelanguage.googleapis.com/v1beta/openai/3072
Ollama (๋กœ์ปฌ)nomic-embed-texthttp://localhost:11434/v1ํ”„๋กœ๋ฐ”์ด๋”๋ณ„ ์ƒ์ด
๋ฆฌ๋žญํฌ ํ”„๋กœ๋ฐ”์ด๋”

Cross-Encoder ๋ฆฌ๋žญํ‚น์€ rerankProvider๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ๋ฐ”์ด๋”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

ํ”„๋กœ๋ฐ”์ด๋”rerankProvider์˜ˆ์‹œ ๋ชจ๋ธ
Jina (๊ธฐ๋ณธ๊ฐ’)jinajina-reranker-v3
SiliconFlow (๋ฌด๋ฃŒ ํ‹ฐ์–ด ์ œ๊ณต)siliconflowBAAI/bge-reranker-v2-m3
Voyage AIvoyagererank-2.5
Pineconepineconebge-reranker-v2-m3

Jina ํ˜ธํ™˜ ๋ฆฌ๋žญํฌ ์—”๋“œํฌ์ธํŠธ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค โ€” rerankProvider: "jina"๋กœ ์„ค์ •ํ•˜๊ณ  rerankEndpoint๋ฅผ ํ•ด๋‹น ์„œ๋น„์Šค๋กœ ์ง€์ •ํ•˜์„ธ์š” (์˜ˆ: Hugging Face TEI, DashScope qwen3-rerank).

Smart Extraction (LLM) โ€” v1.1.0

smartExtraction์ด ํ™œ์„ฑํ™”๋˜๋ฉด (๊ธฐ๋ณธ๊ฐ’: true), ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ •๊ทœ์‹ ๊ธฐ๋ฐ˜ ํŠธ๋ฆฌ๊ฑฐ ๋Œ€์‹  LLM์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์–ต์„ ์ง€๋Šฅ์ ์œผ๋กœ ์ถ”์ถœํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œํƒ€์ž…๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
smartExtractionbooleantrueLLM ๊ธฐ๋ฐ˜ 6๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ ์ถ”์ถœ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”
llm.authstringapi-keyapi-key๋Š” llm.apiKey / embedding.apiKey๋ฅผ ์‚ฌ์šฉ; oauth๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ”์œ„์˜ OAuth ํ† ํฐ ํŒŒ์ผ์„ ์‚ฌ์šฉ
llm.apiKeystring(embedding.apiKey๋กœ ํด๋ฐฑ)LLM ํ”„๋กœ๋ฐ”์ด๋”์šฉ API ํ‚ค
llm.modelstringopenai/gpt-oss-120bLLM ๋ชจ๋ธ๋ช…
llm.baseURLstring(embedding.baseURL๋กœ ํด๋ฐฑ)LLM API ์—”๋“œํฌ์ธํŠธ
llm.oauthProviderstringopenai-codexllm.auth๊ฐ€ oauth์ผ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” OAuth ํ”„๋กœ๋ฐ”์ด๋” ID
llm.oauthPathstring~/.openclaw/.memory-lancedb-pro/oauth.jsonllm.auth๊ฐ€ oauth์ผ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” OAuth ํ† ํฐ ํŒŒ์ผ
llm.timeoutMsnumber30000LLM ์š”์ฒญ ํƒ€์ž„์•„์›ƒ (๋ฐ€๋ฆฌ์ดˆ)
extractMinMessagesnumber2์ถ”์ถœ์ด ์‹œ์ž‘๋˜๋Š” ์ตœ์†Œ ๋ฉ”์‹œ์ง€ ์ˆ˜
extractMaxCharsnumber8000LLM์— ์ „์†ก๋˜๋Š” ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜

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-key llm ์„ค์ •์˜ ์Šค๋ƒ…์ƒท์„ ์ €์žฅํ•˜๋ฉฐ, auth logout์€ ํ•ด๋‹น ์Šค๋ƒ…์ƒท์ด ์žˆ์„ ๋•Œ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.
  • api-key์—์„œ oauth๋กœ ์ „ํ™˜ํ•  ๋•Œ llm.baseURL์ด ์ž๋™์œผ๋กœ ์ด์ „๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. OAuth ๋ชจ๋“œ์—์„œ ์˜๋„์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ChatGPT/Codex ํ˜ธํ™˜ ๋ฐฑ์—”๋“œ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.
๋ผ์ดํ”„์‚ฌ์ดํด ์„ค์ • (๊ฐ์‡  + ๋‹จ๊ณ„)
ํ•„๋“œ๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
decay.recencyHalfLifeDays30Weibull ์ตœ์‹ ์„ฑ ๊ฐ์‡ ์˜ ๊ธฐ๋ณธ ๋ฐ˜๊ฐ๊ธฐ
decay.frequencyWeight0.3๋ณตํ•ฉ ์ ์ˆ˜์—์„œ ์ ‘๊ทผ ๋นˆ๋„์˜ ๊ฐ€์ค‘์น˜
decay.intrinsicWeight0.3importance ร— confidence์˜ ๊ฐ€์ค‘์น˜
decay.betaCore0.8core ๊ธฐ์–ต์˜ Weibull ๋ฒ ํƒ€
decay.betaWorking1.0working ๊ธฐ์–ต์˜ Weibull ๋ฒ ํƒ€
decay.betaPeripheral1.3peripheral ๊ธฐ์–ต์˜ Weibull ๋ฒ ํƒ€
tier.coreAccessThreshold10core๋กœ ์Šน๊ฒฉํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ํ˜ธ์ถœ ํšŸ์ˆ˜
tier.peripheralAgeDays60์˜ค๋ž˜๋œ ๊ธฐ์–ต์„ ๊ฐ•๋“ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๊ณผ ์ผ์ˆ˜ ์ž„๊ณ„๊ฐ’
์ ‘๊ทผ ๊ฐ•ํ™”

์ž์ฃผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ์–ต์€ ๋” ๋А๋ฆฌ๊ฒŒ ๊ฐ์‡ ํ•ฉ๋‹ˆ๋‹ค (๊ฐ„๊ฒฉ ๋ฐ˜๋ณต ํ•™์Šต ๋ฐฉ์‹).

์„ค์ • ํ‚ค (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 ๋กœ๊ทธ์ธ ํ๋ฆ„:

  1. openclaw memory-pro auth login ์‹คํ–‰
  2. --provider๋ฅผ ์ƒ๋žตํ•˜๊ณ  ๋Œ€ํ™”ํ˜• ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ธฐ ์ „์— CLI๊ฐ€ OAuth ํ”„๋กœ๋ฐ”์ด๋” ์„ ํƒ๊ธฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค
  3. ๋ช…๋ น์–ด๊ฐ€ ์ธ์ฆ URL์„ ์ถœ๋ ฅํ•˜๊ณ  --no-browser๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ํ•œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ฝ๋‹ˆ๋‹ค
  4. ์ฝœ๋ฐฑ์ด ์„ฑ๊ณตํ•˜๋ฉด, ๋ช…๋ น์–ด๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ OAuth ํŒŒ์ผ (๊ธฐ๋ณธ๊ฐ’: ~/.openclaw/.memory-lancedb-pro/oauth.json)์„ ์ €์žฅํ•˜๊ณ , ์ด์ „ api-key llm ์„ค์ •์˜ ์Šค๋ƒ…์ƒท์„ ๋กœ๊ทธ์•„์›ƒ์šฉ์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ํ”Œ๋Ÿฌ๊ทธ์ธ llm ์„ค์ •์„ OAuth ์„ค์ • (auth, oauthProvider, model, oauthPath)์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค
  5. openclaw memory-pro auth logout์€ ํ•ด๋‹น OAuth ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ์Šค๋ƒ…์ƒท์ด ์กด์žฌํ•˜๋ฉด ์ด์ „ api-key llm ์„ค์ •์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค

๊ณ ๊ธ‰ ์ฃผ์ œ

์ฃผ์ž…๋œ ๊ธฐ์–ต์ด ์‘๋‹ต์— ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ

๊ฐ€๋” ๋ชจ๋ธ์ด ์ฃผ์ž…๋œ <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:

ํ•„๋“œํƒ€์ž…์„ค๋ช…
idstring (UUID)๊ธฐ๋ณธ ํ‚ค
textstring๊ธฐ์–ต ํ…์ŠคํŠธ (FTS ์ธ๋ฑ์‹ฑ๋จ)
vectorfloat[]์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ
categorystring์ €์žฅ ์นดํ…Œ๊ณ ๋ฆฌ: preference / fact / decision / entity / reflection / other
scopestring์Šค์ฝ”ํ”„ ์‹๋ณ„์ž (์˜ˆ: global, agent:main)
importancefloat์ค‘์š”๋„ ์ ์ˆ˜ 0-1
timestampint64์ƒ์„ฑ ํƒ€์ž„์Šคํƒฌํ”„ (ms)
metadatastring (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.0v1.1.0 ๋™์ž‘ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ทผ๊ฑฐ
์žฅ๋ฌธ ์ปจํ…์ŠคํŠธ ์ฒญํ‚น๊ธด ๋ฌธ์„œ๋ฅผ ์œ„ํ•œ ์ฒญํ‚น ์ „๋žต

๋ฒ ํƒ€: Smart Memory v1.1.0

์ƒํƒœ: ๋ฒ ํƒ€ โ€” npm i memory-lancedb-pro@beta๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. latest๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ˆ์ • ๋ฒ„์ „ ์‚ฌ์šฉ์ž๋Š” ์˜ํ–ฅ ์—†์Œ.

๊ธฐ๋Šฅ์„ค๋ช…
Smart ExtractionLLM ๊ธฐ๋ฐ˜ 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.0OpenAI ํ˜ธํ™˜ Embedding API ํด๋ผ์ด์–ธํŠธ
@sinclair/typebox 0.34.48JSON Schema ํƒ€์ž… ์ •์˜

Contributors

@win4r @kctony @Akatsuki-Ryu @JasonSuz @Minidoracat @furedericca-lab @joe2643 @AliceLJY @chenjiyong

Full list: Contributors

Star History

Star History Chart

๋ผ์ด์„ ์Šค

MIT


WeChat QR ์ฝ”๋“œ