Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

reallygood83/remember

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

7 Commits

Repository files navigation

๐Ÿง  Remember

AI ๋น„์„œ๊ฐ€ ์ง„์งœ "๊ธฐ์–ต"ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒฝ๋Ÿ‰ ์ธ์ง€ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ


์ด๊ฒŒ ๋ญ”๊ฐ€์š”?

AI ๋น„์„œ(ChatGPT, Claude, OpenClaw ๋“ฑ)๋Š” ๋Œ€ํ™”๊ฐ€ ๋๋‚˜๋ฉด ๋ชจ๋“  ๊ฑธ ์žŠ์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

"์–ด์ œ ๋ญ ๋จน์—ˆ์–ด?"๋ผ๊ณ  ๋ฌผ์œผ๋ฉด ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋ถ„๋ช… ์–ด์ œ ๋งํ–ˆ๋Š”๋ฐ.

๋ณดํ†ต ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  MEMORY.md ๊ฐ™์€ ํŒŒ์ผ์— ๊ธฐ์–ต์„ ์ ์–ด๋‘๋Š”๋ฐ:

  • ๐Ÿ“„ ํŒŒ์ผ์ด ์ ์  ์ปค์ ธ์„œ โ†’ ํ† ํฐ ๋‚ญ๋น„
  • ๐Ÿ—‘๏ธ ์˜ค๋ž˜๋œ ์ •๋ณด๊ฐ€ ์Œ“์—ฌ์„œ โ†’ ์ˆ˜๋™ ์ •๋ฆฌ ํ•„์š”
  • ๐Ÿ” ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์„œ โ†’ ๊ฒ€์ƒ‰์ด ๋ถ€์ •ํ™•

Remember๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์‚ฌ๋žŒ์˜ ๋‡Œ์ฒ˜๋Ÿผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.


์‚ฌ๋žŒ์˜ ๋‡Œ๋Š” ์–ด๋–ป๊ฒŒ ๊ธฐ์–ตํ•˜๋‚˜์š”?

  1. ์ž์ฃผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฑด ๊ฐ•ํ•ด์ง„๋‹ค โ†’ ๋งค์ผ ๋จน๋Š” ์•ฝ ์ด๋ฆ„์€ ์ ˆ๋Œ€ ์•ˆ ์žŠ์Œ
  2. ์•ˆ ์“ฐ๋Š” ๊ฑด ์ž์—ฐํžˆ ์‚ฌ๋ผ์ง„๋‹ค โ†’ 3๋…„ ์ „ ์ ์‹ฌ ๋ฉ”๋‰ด๋Š” ๊ธฐ์–ต ๋ชปํ•จ
  3. ๋น„์Šทํ•œ ๊ฑด ํ•ฉ์ณ์ง„๋‹ค โ†’ "์„œ์šธ ๋ง›์ง‘" ๊ธฐ์–ต๋“ค์ด ํ•˜๋‚˜๋กœ ๋ฌถ์ž„
  4. ํ•˜๋‚˜๋ฅผ ๋– ์˜ฌ๋ฆฌ๋ฉด ๊ด€๋ จ๋œ ๊ฒƒ๋„ ๋”ฐ๋ผ์˜จ๋‹ค โ†’ "์ถ•๊ตฌ" ํ•˜๋ฉด "FC์„œ์šธ" "์ฃผ๋ง๊ฒฝ๊ธฐ" "์ง๊ด€"

Remember๋Š” ์ด 4๊ฐ€์ง€๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.


ํ•ต์‹ฌ ๊ธฐ๋Šฅ 3๊ฐ€์ง€

1. ๐Ÿงน ๋ง๊ฐ ๊ณก์„  (FSRS)

"์•ˆ ์“ฐ๋Š” ๊ธฐ์–ต์€ ์ž์—ฐํžˆ ์‚ฌ๋ผ์ง„๋‹ค"

  • ์ž์ฃผ ์ฐพ๋Š” ๊ธฐ์–ต โ†’ ์ ์  ๊ฐ•ํ•ด์ง (stability โ†‘)
  • ์˜ค๋ž˜ ์•ˆ ์“ด ๊ธฐ์–ต โ†’ ์ ์  ํ๋ ค์ง โ†’ ์ž๋™ ์ •๋ฆฌ
  • ๊ฒฐ๊ณผ: ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€๋จ, ํ† ํฐ ์ ˆ์•ฝ

2. ๐Ÿ”— ์ค‘๋ณต ๋ณ‘ํ•ฉ

"๋น„์Šทํ•œ ๊ฑด ํ•ฉ์ณ์ง„๋‹ค"

  • "FC์„œ์šธ ์ข‹์•„ํ•จ" + "K๋ฆฌ๊ทธ ์‹œ์ฆŒ๊ถŒ ์žˆ์Œ" โ†’ ์ž๋™์œผ๋กœ ํ•˜๋‚˜๋กœ
  • ๋ชจ์ˆœ๋˜๋ฉด ์ƒˆ ์ •๋ณด๊ฐ€ ์ด๊น€: "์ข‹์•„ํ•˜๋Š” ์ƒ‰ ๋นจ๊ฐ•" โ†’ "์ข‹์•„ํ•˜๋Š” ์ƒ‰ ํŒŒ๋ž‘"
  • ๊ฒฐ๊ณผ: ์ค‘๋ณต ์—†๋Š” ๊น”๋”ํ•œ ๊ธฐ์–ต

3. ๐Ÿ” ์—ฐ๊ด€ ๊ฒ€์ƒ‰

"ํ•˜๋‚˜๋ฅผ ๋– ์˜ฌ๋ฆฌ๋ฉด ๊ด€๋ จ๋œ ๊ฒƒ๋„ ๋”ฐ๋ผ์˜จ๋‹ค"

  • "์ถ•๊ตฌ" ๊ฒ€์ƒ‰ โ†’ "K๋ฆฌ๊ทธ" + "์ฃผ๋ง๊ฒฝ๊ธฐ" + "ํ™ˆ๊ฒฝ๊ธฐ" ๊ฐ™์ด ๋‚˜์˜ด
  • ํ‚ค์›Œ๋“œ ๋งค์นญ + ์˜๋ฏธ ์œ ์‚ฌ๋„ ๋™์‹œ ์‚ฌ์šฉ
  • ๊ฒฐ๊ณผ: ๋†€๋ผ์šธ ์ •๋„๋กœ ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰

์„ค์น˜ (30์ดˆ)

npm install @reallygood/remember

๋˜๋Š” ๊ธ€๋กœ๋ฒŒ CLI๋กœ:

npm install -g @reallygood/remember

์˜์กด์„ฑ: better-sqlite3 ํ•˜๋‚˜๋ฟ. ๋ฌด๊ฒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์‚ฌ์šฉ๋ฒ•

JavaScript API

import { Remember } from '@reallygood/remember';
// 1. ์ดˆ๊ธฐํ™” (SQLite ํŒŒ์ผ ํ•˜๋‚˜๋กœ ๋)
const mem = new Remember({ dbPath: './my-memory.db' });
// 2. ๊ธฐ์–ต ์ €์žฅ
await mem.store('์‚ฌ์šฉ์ž๋Š” K๋ฆฌ๊ทธ ์‹œ์ฆŒ๊ถŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค', {
 category: 'fact',
 tags: ['K๋ฆฌ๊ทธ', '์ถ•๊ตฌ']
});
await mem.store('์ฃผ๋ง๋งˆ๋‹ค ํ™ˆ๊ฒฝ๊ธฐ ์ง๊ด€์„ ๊ฐ„๋‹ค', {
 category: 'fact',
 tags: ['์ฃผ๋ง', 'K๋ฆฌ๊ทธ', '์ถ•๊ตฌ']
});
// 3. ๊ฒ€์ƒ‰ โ€” "์ถ•๊ตฌ"๋งŒ ๊ฒ€์ƒ‰ํ•ด๋„ ์—ฐ๊ด€ ๊ธฐ์–ต ๋‹ค ๋‚˜์˜ด!
const results = await mem.recall('์ถ•๊ตฌ');
// โ†’ [
// { content: 'K๋ฆฌ๊ทธ ์‹œ์ฆŒ๊ถŒ ๋ณด์œ ', score: 0.95 },
// { content: '์ฃผ๋ง ํ™ˆ๊ฒฝ๊ธฐ ์ง๊ด€', score: 0.82 }
// ]
// 4. ๊ธฐ์–ต ์ •๋ฆฌ (์˜ค๋ž˜๋œ ๊ฑฐ ์ž๋™ ์†Œ๋ฉธ)
await mem.consolidate();
// 5. ํ†ต๊ณ„
const stats = await mem.stats();
// โ†’ { total: 150, active: 120, archived: 30, avgRetention: 0.72 }

CLI

# ๊ธฐ์–ต ์ €์žฅ
remember store "์ปคํ”ผ๋Š” ์•„๋ฉ”๋ฆฌ์นด๋…ธ ์„ ํ˜ธ" --category preference
# ๊ฒ€์ƒ‰
remember recall "์ปคํ”ผ"
# ํ†ต๊ณ„ ๋ณด๊ธฐ
remember stats
# ๊ธฐ์–ต ์ •๋ฆฌ (๋ง๊ฐ ๊ณก์„  ์ ์šฉ)
remember consolidate
# ๊ธฐ์กด MEMORY.md์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ
remember import --file MEMORY.md
# ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
remember export --format markdown

๊ธฐ์กด ์†”๋ฃจ์…˜๊ณผ ๋น„๊ต

Remember Vestige mem0 MemGPT
์–ธ์–ด JavaScript Rust Python Python
์„ค์น˜ npm install Rust ๋นŒ๋“œ Docker+Qdrant pip + ์„ค์ •
ํฌ๊ธฐ ~์ˆ˜๋ฐฑKB 22MB+130MB ์ˆ˜GB ์ˆ˜GB
์˜์กด์„ฑ SQLite๋งŒ Nomic ๋ชจ๋ธ Qdrant ์„œ๋ฒ„ OpenAI ํ•„์ˆ˜
์˜คํ”„๋ผ์ธ โœ… (BM25 ๋ชจ๋“œ) โœ… โŒ โŒ
๋Œ€์ƒ ์ƒํ™œ ๋น„์„œ/๋ฒ”์šฉ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ์ฑ—๋ด‡ ์ฑ—๋ด‡
ํ•ต์‹ฌ ์ฒ ํ•™ ๊ฐ€๋ณ๊ณ  ์‹ค์šฉ์  ์ •๊ตํ•˜๊ณ  ํ•™์ˆ ์  ํด๋ผ์šฐ๋“œ ์—ฐ๋™ ์ž์œจ ์—์ด์ „ํŠธ

์ž„๋ฒ ๋”ฉ ๋ชจ๋“œ

Remember๋Š” ์ž„๋ฒ ๋”ฉ ์—†์ด๋„ ์™„์ „ํžˆ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค (BM25 ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰).

๋” ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰์„ ์›ํ•˜๋ฉด ์ž„๋ฒ ๋”ฉ์„ ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

// ์ž„๋ฒ ๋”ฉ ์—†์ด (๊ธฐ๋ณธ๊ฐ’, ๊ฐ€์žฅ ๊ฐ€๋ฒผ์›€)
new Remember({ embedMode: 'none' });
// Cerebras (๋ฌด๋ฃŒ, ๋น ๋ฆ„)
new Remember({ embedMode: 'cerebras' });
// ๋กœ์ปฌ Ollama (์˜คํ”„๋ผ์ธ, ํ”„๋ผ์ด๋ฒ„์‹œ)
new Remember({ embedMode: 'ollama' });
// OpenAI (๊ฐ€์žฅ ์ •ํ™•)
new Remember({ embedMode: 'openai' });

OpenClaw ์—ฐ๋™

OpenClaw AI ์—์ด์ „ํŠธ์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

// examples/openclaw-integration.js
import { Remember } from '@reallygood/remember';
const mem = new Remember({ 
 dbPath: '/Users/you/clawd/memory.db',
 embedMode: 'cerebras' // ๋ฌด๋ฃŒ API
});
// ๋Œ€ํ™”์—์„œ ์ค‘์š”ํ•œ ๋‚ด์šฉ ์ž๋™ ์ €์žฅ
mem.store('์‚ฌ์šฉ์ž๊ฐ€ ๋‹คํฌ๋ชจ๋“œ๋ฅผ ์„ ํ˜ธํ•จ', { category: 'preference' });
// ์ƒˆ ์„ธ์…˜ ์‹œ์ž‘ ์‹œ ๊ด€๋ จ ๊ธฐ์–ต ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
const context = await mem.recall('์‚ฌ์šฉ์ž ์„ ํ˜ธ');
// ๋งค์ผ consolidate (ํฌ๋ก ์žก)
await mem.consolidate();

์ธ์ง€ ๊ณผํ•™ ๋ฐฐ๊ฒฝ

Remember์˜ ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ์‹ค์ œ ๋‡Œ๊ณผํ•™ ์—ฐ๊ตฌ์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค:

๊ธฐ๋Šฅ ๋‡Œ๊ณผํ•™ ์›๋ฆฌ ๋…ผ๋ฌธ
๋ง๊ฐ ๊ณก์„  FSRS (Free Spaced Repetition Scheduler) Piotr Wozniak, 1985
์ค‘๋ณต ๋ณ‘ํ•ฉ ๊ธฐ์–ต ํ†ตํ•ฉ (Memory Consolidation) Squire & Alvarez, 1995
์—ฐ๊ด€ ๊ฒ€์ƒ‰ ํ™•์‚ฐ ํ™œ์„ฑํ™” (Spreading Activation) Collins & Loftus, 1975

130๋…„์˜ ๊ธฐ์–ต ์—ฐ๊ตฌ๋ฅผ 400์ค„์˜ JavaScript๋กœ.


์™œ ๋งŒ๋“ค์—ˆ๋‚˜์š”?

AI ๋น„์„œ๋ฅผ ๋งค์ผ ์“ฐ๋‹ค ๋ณด๋‹ˆ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค:

"์ด ๋…€์„, ์–ด์ œ ํ•œ ์–˜๊ธฐ๋ฅผ ์™œ ๋˜ ๋ฌผ์–ด๋ณด์ง€?"

MEMORY.md๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฑด ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ์ปค์ง€๊ณ , ์˜ค๋ž˜๋œ ๊ฑด ์Œ“์ด๊ณ , ์ฐพ๋Š” ๊ฑด ์–ด๋ ต๊ณ . Vestige ๊ฐ™์€ ์ข‹์€ ์†”๋ฃจ์…˜์ด ์žˆ์ง€๋งŒ Rust ๋นŒ๋“œ์— 130MB ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ๋Š” ๋„ˆ๋ฌด ๋ฌด๊ฑฐ์› ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. SQLite ํ•˜๋‚˜, JavaScript 400์ค„, npm install ํ•œ ์ค„์ด๋ฉด ๋๋‚˜๋Š” AI ๊ธฐ์–ต ์‹œ์Šคํ…œ.

์‚ฌ๋žŒ์˜ ๋‡Œ๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ:

  • ์ค‘์š”ํ•œ ๊ฑด ๊ฐ•ํ™”ํ•˜๊ณ 
  • ์•ˆ ์“ฐ๋Š” ๊ฑด ์žŠ๊ณ 
  • ๋น„์Šทํ•œ ๊ฑด ํ•ฉ์น˜๊ณ 
  • ๊ด€๋ จ๋œ ๊ฑด ๊ฐ™์ด ๋– ์˜ฌ๋ฆฐ๋‹ค

๊ธฐ์—ฌ

PR๊ณผ ์ด์Šˆ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

git clone https://github.com/reallygood83/remember
cd remember
npm install
npm test

๐Ÿ“Š ์‹ค์ธก ๋ฒค์น˜๋งˆํฌ

์‹ค์ œ ์šด์˜ ์ค‘์ธ AI ๋น„์„œ(493์ค„ MEMORY.md, 344๊ฐœ ๊ธฐ์–ต)์—์„œ ์ธก์ •ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

ํ† ํฐ ์ ˆ๊ฐ

MEMORY.md (์ „์ฒด ๋กœ๋”ฉ) Remember (recall) ์ ˆ๊ฐ๋ฅ 
์„ธ์…˜๋‹น ํ† ํฐ 14,460 344 97.6%

๐Ÿ“Œ ์ด ์ˆ˜์น˜๋Š” ๊ณผ์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰(RAG)์€ ์ „์ฒด ๋ฌธ์„œ ๋กœ๋”ฉ ๋Œ€๋น„ 90-99% ํ† ํฐ ์ ˆ๊ฐ์ด ์—…๊ณ„ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. โ€” Elasticsearch Labs: RAG๋Š” full-context ๋Œ€๋น„ 1,250๋ฐฐ ๋‚ฎ์€ ์ฟผ๋ฆฌ ๋น„์šฉ (์ถœ์ฒ˜) โ€” Anthropic: BM25 + ์ž„๋ฒ ๋”ฉ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๊ฐ€ ๊ธฐ์กด RAG ๋Œ€๋น„ 49% ๊ฒ€์ƒ‰ ์‹คํŒจ ๊ฐ์†Œ (์ถœ์ฒ˜)

๋น„์šฉ ์ ˆ๊ฐ (ํ•˜๋ฃจ 20์„ธ์…˜ ๊ธฐ์ค€)

๋ชจ๋ธ Before/์›” After/์›” ์ ˆ์•ฝ/์›”
Claude Opus (/1M tokens) .14 .10 .04
Claude Haiku (/bin/zsh.80/1M tokens) .94 /bin/zsh.17 .77
GPT-4o (.50/1M tokens) .69 /bin/zsh.52 .17

์‘๋‹ต ์†๋„

MEMORY.md Remember
๊ฒ€์ƒ‰ ์‹œ๊ฐ„ ~2-3์ดˆ (ํŒŒ์ผ ํŒŒ์‹ฑ) ~10ms (SQLite)
์†๋„ ํ–ฅ์ƒ โ€” 200x

์‹œ๊ฐ„ ๊ฒฝ๊ณผ ํšจ๊ณผ

์‹œ์  MEMORY.md Remember
3๊ฐœ์›” (300๊ฐœ ๊ธฐ์–ต) ํŒŒ์ผ ์ปค์ง€๊ธฐ ์‹œ์ž‘ ์ž๋™ ๊ด€๋ฆฌ
6๊ฐœ์›” (500๊ฐœ) ์ˆ˜๋™ ์ •๋ฆฌ ํ•„์š” FSRS๊ฐ€ ์ž๋™ ์ •๋ฆฌ
1๋…„ (1000๊ฐœ+) ๊ฐ๋‹น ๋ถˆ๊ฐ€ ๋ง๊ฐ ๊ณก์„ ์ด ~300๊ฐœ๋กœ ์œ ์ง€

๊ณผํ•™์  ๊ทผ๊ฑฐ

์ฃผ์žฅ ๊ทผ๊ฑฐ
FSRS ๋ง๊ฐ ๊ณก์„  Anki ํ†ตํ•ฉ, ๋ฆฌ๋ทฐ 20-30% ๊ฐ์†Œ + ๋™์ผ ๊ธฐ์–ต๋ฅ  ์œ ์ง€ (FSRS benchmark)
BM25 ๊ฒ€์ƒ‰์ด ์ „์ฒด ๋กœ๋”ฉ๋ณด๋‹ค ํšจ์œจ์  RAG ์—…๊ณ„ ํ‘œ์ค€, 1,250x ๋‚ฎ์€ ๋น„์šฉ (Elasticsearch Labs)
ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ (BM25+๋ฒกํ„ฐ) Anthropic Contextual Retrieval: ๊ฒ€์ƒ‰ ์‹คํŒจ 49% ๊ฐ์†Œ
์„ ํƒ์  ๊ฒ€์ƒ‰์ด ์ •ํ™•๋„๋„ ๋†’์Œ ๋ถˆํ•„์š”ํ•œ ์ปจํ…์ŠคํŠธ ์ œ๊ฑฐ โ†’ ํ™˜๊ฐ(hallucination) ๊ฐ์†Œ

๋ผ์ด์„ ์Šค

MIT


AI์—๊ฒŒ ์ง„์งœ ๊ธฐ์–ต์„ ์„ ๋ฌผํ•˜์„ธ์š” ๐Ÿง 
Built with โค๏ธ by reallygood83

About

๐Ÿง  Lightweight cognitive memory for AI agents - FSRS, dedup merge, associative recall

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /