็ป AI ่ฃ ไธๅฅใ่ฎฐๅฟๆไฝ็ณป็ปใโโไธๅช่ฎฉๅฎ่ฎฐๅพไฝ๏ผ่ๆฏ่ฎฉๅฎ่ชๅทฑๆด็ใ่ชๅทฑๅฝ็บณใ่ชๅทฑ้ๅฟ๏ผ่ถ็จ่ถ่ชๆใ
Memory Palace ๆฏไธไธช Python library๏ผๅฏ่ขซไปปๆ AI Agent ๆกๆถ้ๆใๅฎๆไพ๏ผ
- ไธๅฑๅญๅจๅผๆ โ Core๏ผ้่บซๅฃ่ข๏ผโ Recall๏ผๆฝๅฑๆ๏ผโ Archival๏ผๅฐไธๅฎค๏ผ
- ๅๅ ๅญๆททๅๆฃ็ดข โ ๆฐ้ฒๅบฆ ร ้่ฆๆง ร ็ธๅ ณๆง ร ็ฉบ้ด้ป่ฟๆง
- ๆฌ่ฟๅฐไบบ (Curator) โ ่ชๅจๆด็ใๅป้ใๅฒ็ช่ฐๅใๆธ่ฟ้ๅฟ
- 5-pass ๆบ่ฝๆๅ โ ๆๆกฃ โ ไบๅฎๆๅ โ ๅฒ็ช่ฐๅ โ ๅ ณ็ณปๆฝๅ โ ๅญๅจ
- ๅ้้ๆฅๅ
ฅ โ CLI (
palace) + MCP Server (palace-mcp) - ๅ จ็จๅฎก่ฎกๆฅๅฟ โ ๆฏๆฌกๆไฝไธๅฏ็ฏกๆน่ฎฐๅฝ
git clone <repo-url>
cd memory-palace
uv sync --extra dev
# ้ช่ฏๅฎ่ฃ
palace --help
python -c "import memory_palace; print(memory_palace.__version__)"ๅฆ้ๅพๅญๅจ๏ผKuzuDB๏ผ๏ผ
uv sync --extra graphMemory Palace ้่ฟ LiteLLM ็ปไธๆฅๅ ฅ 100+ LLM Provider๏ผๅ ็ฝฎ retry / timeout / streaming ๆฏๆใ้่ฟ็ฏๅขๅ้้ ็ฝฎ๏ผ
# โโ MiniMax๏ผๆจ่๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโ
export MINIMAX_API_KEY="sk-cp-..."
export MP_LLM__PROVIDER="minimax"
export MP_LLM__MODEL_ID="MiniMax-M2.5"
export MP_LLM__BASE_URL="https://api.minimaxi.com/v1"
# โโ OpenAI โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
export OPENAI_API_KEY="sk-..."
# ้ป่ฎคๅณ openai/gpt-4o-mini๏ผๆ ้้ขๅค่ฎพ็ฝฎ
# โโ DeepSeek โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
export DEEPSEEK_API_KEY="sk-..."
export MP_LLM__PROVIDER="deepseek"
export MP_LLM__MODEL_ID="deepseek-chat"
export MP_LLM__BASE_URL="https://api.deepseek.com/v1"
# โโ Anthropic / Claude โโโโโโโโโโโโโโโโโโโโโโ
export ANTHROPIC_API_KEY="sk-ant-..."
export MP_LLM__PROVIDER="anthropic"
export MP_LLM__MODEL_ID="claude-sonnet-4-6"ไนๅฏไปฅ้่ฟ YAML ้ ็ฝฎๆไปถ๏ผๆพๅจๆฐๆฎ็ฎๅฝไธ๏ผ๏ผ
# ~/.memory_palace/memory_palace.yaml
memory_palace:
llm:
provider: minimax
model_id: MiniMax-M2.5
base_url: https://api.minimaxi.com/v1
max_tokens: 2000ไผๅ ็บง๏ผ็ฏๅขๅ้ > YAML > ๅ ็ฝฎ้ป่ฎคๅผ
# ไฟๅญ่ฎฐๅฟ
palace save "ๆๆๅๆฌข็็ผ็จ่ฏญ่จๆฏ Python๏ผๆ่ฟๅจๅญฆ Rust" \
--importance 0.8 --room preferences --tags "็ผ็จ,่ฏญ่จ"
# ๆ็ดข
palace search "Python"
# ๆบ่ฝๆๅๆๆกฃ๏ผ้่ฆ LLM๏ผ
palace ingest meeting_notes.txt
# ๆฅ็ๆฆ่ง
palace inspect
# ๆๅจ่งฆๅๆด็๏ผ้่ฆ LLM๏ผ
palace curate
# ๅฏๅจ MCP Server
palace serveๅฏๅจ MCP ๆๅกๅ๏ผAI Agent ๅฏ้่ฟ JSON-RPC ๅ่ฎฎ่ฐ็จ 18 ไธชๅทฅๅ ท๏ผ
# stdio ๆจกๅผ๏ผCodex / Claude Desktop / Cursor ็ญ๏ผ
palace serve
# ๆ็ดๆฅ็จๅ
ฅๅฃ็น
palace-mcppalace-mcp ไธ palace serve ๅจ stdio ๆจกๅผไธไผ้ป่ฎคๅ
ณ้ญ banner ๅๅธธ่ง่ฟ่กๆฅๅฟ๏ผ
้ฟๅ
ๆ้ JSON-RPC ่พๅบๅ่ฟๅ่ฎฎๆต๏ผๅฏน CodexใClaude DesktopใCursor ่ฟ็ฑป stdio ๅฎขๆท็ซฏ๏ผ
ไธ้่ฆ้ขๅค wrapperใ
Claude Desktop ้
็ฝฎ (claude_desktop_config.json)๏ผ
{
"mcpServers": {
"memory-palace": {
"command": "palace-mcp",
"env": {
"MINIMAX_API_KEY": "sk-cp-...",
"MP_LLM__PROVIDER": "minimax",
"MP_LLM__MODEL_ID": "MiniMax-M2.5",
"MP_LLM__BASE_URL": "https://api.minimaxi.com/v1"
}
}
}
}Codex / Cursor ไนๅฏ็ดๆฅไฝฟ็จๅๆ ท็ stdio ๅ
ฅๅฃใๅชๆๅจ HTTP ๆจกๅผไธ๏ผๆๅก็ซฏๆไผไฟ็
ไบบ็ฑปๅฏ่ฏป็ๅฏๅจ่พๅบ๏ผstdio ๆจกๅผ้ป่ฎคๆๅ่ฎฎๅฎๅ
จไผๅ
ๅค็ใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 5F Integration โ CLI / Python API / MCP [v1.0] โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ 4F Service โ MemoryService โ Retriever โ Curatorโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ 3F Engine โ FactExtractor โ Scoring โ Reconcileโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ 2F Storage โ CoreStore โ RecallStore โ Archival โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ
โ 1F Foundation โ Config โ AuditLog โ LLM โ Embeddingโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| ๅฑ | ๅฎ็ฐ | ่ฏดๆ | ่ทฏ็ฑ่งๅ |
|---|---|---|---|
| Core | JSON ๆไปถ | ้่บซๅฃ่ข๏ผ้ข็ฎๅ้ (2KB) | importance โฅ 0.7 |
| Recall | SQLite FTS5 | ๆฝๅฑๆ๏ผๅ จๆๆฃ็ดข | importance < 0.7 |
| Archival | ChromaDB | ๅฐไธๅฎค๏ผๅ้่ฏญไนๆ็ดข | ๆๆ่ฎฐๅฟๅๆญฅๅๅ ฅ |
search_sync(query) โ Core ๅ
ณ้ฎๅญๅน้
+ Recall FTS5 โ ๆ importance ๆๅบ
search(query) โ FTS5 + Vector(Archival) RRF ่ๅ โ ๅๅ ๅญ่ฏๅ
| ๅฝไปค | ่ฏดๆ | ้่ฆ LLM |
|---|---|---|
palace save |
ไฟๅญไธๆก่ฎฐๅฟ | |
palace search |
ๆ็ดข่ฎฐๅฟ | |
palace update |
ๆดๆฐไธๆก่ฎฐๅฟ๏ผ็ๆฌ้ๅข๏ผ | |
palace forget |
่ฝฏๅ ้คไธๆก่ฎฐๅฟ | |
palace inspect |
ๆฅ็ๆฆ่งๆๅๆก่ฏฆๆ | |
palace audit |
ๆฅ็ๅฎก่ฎกๆฅๅฟ | |
palace rooms |
ๅๅบๆๆๆฟ้ด | |
palace metrics |
ๆฅ็่ฟ่ฅๆๆ | |
palace ingest |
5-pass ๆบ่ฝๆๅๆๆกฃ | โ |
palace curate |
ๆๅจ่งฆๅๆฌ่ฟๅฐไบบ | โ |
palace import |
ๆน้ๅฏผๅ ฅ๏ผ.md / .jsonl๏ผ | |
palace export |
ๆน้ๅฏผๅบ | |
palace serve |
ๅฏๅจ MCP Server | |
palace persona list/create/switch/delete |
ๅค่ง่ฒ็ฎก็ | |
palace schedule start/status |
Sleep-time ่ฐๅบฆ | โ |
ๆๆๅฝไปคๆฏๆ --data-dir ๆๅฎๆฐๆฎ็ฎๅฝ๏ผ้ป่ฎค ~/.memory_palace๏ผใ
| ๅทฅๅ ท | ่ฏดๆ |
|---|---|
save_memory |
ไฟๅญ่ฎฐๅฟ๏ผcontent, importance, room, tags๏ผ |
search_memory |
ๆ็ดข่ฎฐๅฟ๏ผquery, top_k, room๏ผ |
update_memory |
ๆดๆฐ่ฎฐๅฟๅ ๅฎน |
forget_memory |
่ฝฏๅ ้ค |
inspect_memory |
ๆฅ็ๅๆก่ฏฆๆ |
curate_now |
่งฆๅ Curator ๆด็ |
reflect_now |
็ๆ้ซ้ถๅๆ |
ingest_document |
5-pass ๆบ่ฝๆๅ |
get_health |
6 ็ปดๅฅๅบท่ฏไผฐ |
get_stats |
็ป่ฎกๆฆ่ง๏ผCore/Recall ๆฐ้๏ผ |
get_context |
็ผ่ฏ็ปๆๅไธไธๆ |
get_audit_log |
ๅฎก่ฎกๆฅๅฟ |
get_metrics |
่ฟ่ฅๆๆ |
list_rooms |
ๆฟ้ดๅ่กจ |
import_memories |
ๆน้ๅฏผๅ ฅ |
export_memories |
ๆน้ๅฏผๅบ |
list_personas |
Persona ๅ่กจ |
switch_persona |
ๅๆข Persona |
MCP ่ตๆบ๏ผpalace:// ๅ่ฎฎ๏ผ๏ผhealthใstatsใroomsใcontext/{query}ใmemory/{id}ใauditใpersonasใmetricsใ
| ๅ้ | ่ฏดๆ | ็คบไพ |
|---|---|---|
MP_LLM__PROVIDER |
LLM ไพๅบๅ | minimax / openai / deepseek |
MP_LLM__MODEL_ID |
ๆจกๅๅ็งฐ | MiniMax-M2.5 / gpt-4o-mini |
MP_LLM__BASE_URL |
API ๅฐๅ | https://api.minimaxi.com/v1 |
MP_LLM__MAX_TOKENS |
ๆๅคง่พๅบ token | 2000 |
MINIMAX_API_KEY |
MiniMax API Key | sk-cp-... |
OPENAI_API_KEY |
OpenAI API Key | sk-... |
DEEPSEEK_API_KEY |
DeepSeek API Key | sk-... |
API Key ่งฃๆ่งๅ๏ผ
{PROVIDER}_API_KEY๏ผๅฆ provider=fooโ ่ฏปFOO_API_KEY๏ผ
# memory_palace.yaml
memory_palace:
llm:
provider: minimax
model_id: MiniMax-M2.5
base_url: https://api.minimaxi.com/v1
max_tokens: 2000
embedding:
provider: openai # openai / local
model_id: text-embedding-3-small
dimension: 1536
storage:
base_dir: ./data
core:
max_bytes: 2048
scoring:
recency: 0.20
importance: 0.20
relevance: 0.50
room_bonus: 0.10
graph:
enabled: false
curator:
trigger:
timer_hours: 24
session_count: 20
cooldown_hours: 1
ebbinghaus:
enabled: true
base_stability_hours: 168 # 7 ๅคฉ
rooms:
- name: general
description: ๆชๅ็ฑป้็จ่ฎฐๅฟ
- name: preferences
description: ็จๆทๅๅฅฝ
- name: projects
description: ้กน็ฎ็ฅ่ฏ
- name: people
description: ไบบ็ฉๅ
ณ็ณป
- name: skills
description: ๆ่ฝ่ฎฐๅฟLiteLLM ๅทฒ่ชๅจๅค็็ปๅคงๅคๆฐ Provider ๅทฎๅผ๏ผ้ดๆใ่ฏทๆฑๆ ผๅผใ้่ฏฏ้่ฏใ่ถ ๆถๆงๅถ็ญ๏ผใMemory Palace ๅจ LiteLLM ไนไธไฟ็ไบไธๅฑ่ฝป้ๅๅค็๏ผ
| ๅๅค็ | ่ฏดๆ |
|---|---|
<think> ๆ่ๆ ็ญพๅฅ็ฆป |
ๆจ็ๆจกๅ๏ผMiniMaxใDeepSeek ็ญ๏ผ่พๅบไธญๅฏ่ฝๅ
ๅซ <think>...</think>๏ผๅจ่ฟๅๅ่ชๅจๆธ
็ |
| Markdown ไปฃ็ ๅดๆ ๅฅ็ฆป | ่ชๅจๅป้ค ```json ... ``` ๅ
่ฃน๏ผๆนไพฟไธๆธธ็ดๆฅ่งฃๆ JSON |
response_format ้็บง |
ๅฏนไธๆฏๆ json_object ็ Provider๏ผๅฆ MiniMax๏ผ่ชๅจ่ทณ่ฟ่ฏฅๅๆฐ |
ๆณจๆ๏ผLLM ไป็ถๅฎๆดๆง่กๆจ็๏ผthinking๏ผ๏ผๅชๆฏ่ฟๅๆๆฌไธญ็
<think>ๆ ็ญพ่ขซๅฅ็ฆป๏ผไธๅฝฑๅๆจ็่ดจ้ใ
from pathlib import Path
from memory_palace.service.memory_service import MemoryService
from memory_palace.foundation.llm import ModelConfig
from memory_palace.foundation.openai_provider import OpenAIProvider
# ๆๅปบ LLM
llm = OpenAIProvider(ModelConfig(
provider="minimax",
model_id="MiniMax-M2.5",
base_url="https://api.minimaxi.com/v1",
))
# ๅๅงๅๆๅก
svc = MemoryService(Path("./data"), llm=llm)
# CRUD
item = svc.save(content="Python ๆฏๆๆๅธธ็จ็่ฏญ่จ", importance=0.8, room="preferences")
results = svc.search_sync("Python", top_k=5)
svc.update(item.id, "Python ๅ Rust ๆฏๆๆๅธธ็จ็่ฏญ่จ", reason="ๆดๆฐ")
svc.forget(item.id, reason="ไธๅ้่ฆ")
# ๅผๆญฅๆ็ดข๏ผFTS5 + Vector ๆททๅ๏ผ
import asyncio
results = asyncio.run(svc.search("Python", top_k=5))
# ็ป่ฎก
stats = svc.stats() # {"core_count": ..., "recall_count": ..., "total": ...}# ๅ
จ้ๆต่ฏ๏ผMock LLM๏ผๆ ้ API Key๏ผ
uv run pytest tests/ -q
# ่ทณ่ฟ็ๅฎ LLM ๆต่ฏ
uv run pytest tests/ -m "not real_llm" -q
# ไป
่ฟ่ก MiniMax ็ๅฎ LLM ๆต่ฏ๏ผ้่ฎพ็ฝฎ MINIMAX_API_KEY๏ผ
uv run pytest tests/test_e2e/test_minimax_real.py -v
# Lint
uv run ruff check src/ tests/| ๆๆกฃ | ๅ ๅฎน |
|---|---|
| SPEC v2.0 | ๅฎๆดๆๆฏ่งๆ ผโโๆฐๆฎๆจกๅใๆฅๅฃๅฅ็บฆใPrompt ๆจกๆฟ |
| CONVENTIONS.md | ไปฃ็ ็บฆๅฎโโTDD ็บชๅพใๅๅฑ่งๅใGotchas |
| PROJECT_CONTEXT.md | ้กน็ฎๅ จ่ฒโโๆจกๅ็ถๆใ็ๆฌ่งๅใๆต่ฏ baseline |
MIT