Files
wehub-resource-sync 3e4a9af0d6
Tests / test-linux (3.11) (push) Has been cancelled
Tests / test-linux (3.13) (push) Has been cancelled
Tests / test-linux (3.9) (push) Has been cancelled
Tests / test-windows (push) Has been cancelled
Tests / test-macos (push) Has been cancelled
Tests / lint (push) Has been cancelled
Docker / build (push) Has been cancelled
Docker / build-gpu (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 09:51:32 +00:00

236 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- WEHUB_ZH_README -->
> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/MemPalace/mempalace) · [上游 README](https://github.com/MemPalace/mempalace/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
<div align="center">
<img src="assets/mempalace_logo.png" alt="MemPalace" width="240">
# MemPalace
本地优先的 AI 记忆。逐字存储、可插拔后端,LongMemEval 上 R@5 raw 达 96.6% —— 零 API 调用。
[![][version-shield]][release-link]
[![][python-shield]][python-link]
[![][license-shield]][license-link]
[![][discord-shield]][discord-link]
</div>
> [!CAUTION]
> **谨防仿冒网站。** MemPalace 没有其他官方网站。**唯一**官方来源是本 **[GitHub 仓库](https://github.com/MemPalace/mempalace)**,、**[PyPI 包](https://pypi.org/project/mempalace/)**,以及 **[mempalaceofficial.com](https://mempalaceofficial.com)**. 上的文档。任何其他域名(包括 `.tech`、`.net` 或其他 `.com` 变体)均为仿冒站点,可能分发恶意软件。详情与时间线见 [docs/HISTORY.md](docs/HISTORY.md)。
> [!IMPORTANT]
> **若未接入自动保存钩子,Claude Code 会话会在 30 天后过期。** [阅读此文 →](https://github.com/MemPalace/mempalace/discussions/1388)
>
> 需要最短的恢复/设置路径?使用 [Claude Code 保留设置清单](https://mempalaceofficial.com/guide/claude-code-retention.html).
---
## 它是什么
MemPalace 将你的对话历史以逐字文本形式存储,并通过语义搜索(semantic search)检索。它不进行摘要、抽取或改写。索引是结构化的——人物和项目成为 *wings*(翼),主题成为 *rooms*(房间),原始内容存放在 *drawers*(抽屉)中——因此搜索可以限定范围,而无需在整个扁平语料库上运行。
检索层是可插拔的。当前默认是 ChromaDB;接口定义在 [`mempalace/backends/base.py`](mempalace/backends/base.py),可插入替代后端而无需改动系统其余部分。
除非你主动选择,否则数据不会离开你的机器。
架构、概念与挖掘流程:
[mempalaceofficial.com/concepts/the-palace](https://mempalaceofficial.com/concepts/the-palace.html).
---
## 安装
MemPalace 提供 CLI,建议在隔离环境中安装,以避免在 Debian/Ubuntu/Homebrew Python 上出现 PEP 668 错误,并防止 mempalace 的依赖(`chromadb``numpy``grpcio`、…)与你全局 site-packages 中的其他包冲突。
我们推荐 [`uv`](https://docs.astral.sh/uv/) —— `uv tool install` 会将 `mempalace` CLI 放入 PATH 上的隔离环境中:
```bash
uv tool install mempalace
mempalace init ~/projects/myapp
```
若你更偏好它,[`pipx`](https://pipx.pypa.io/) 用法相同:
`pipx install mempalace`
仅在已激活的 virtualenv 中、且你明确希望 `import mempalace` 可用时,才使用纯 `pip`
```bash
python -m venv .venv && source .venv/bin/activate
pip install mempalace
```
### Docker
也提供容器镜像,可在无本地 Python 工具链的情况下运行 MCP server 或 CLI。所有内容持久化在 `/data`palace、config 及缓存的 embedding 模型)下,因此请在那里挂载卷。
```bash
# Build the image (CPU; bundles the `extract` + `spellcheck` extras)
docker build -t mempalace .
# MCP server over stdio — note the `-i` flag (JSON-RPC needs stdin)
docker run -i --rm -v mempalace-data:/data mempalace
# Run any CLI command instead (mount the host directory you want to mine)
docker run --rm -v mempalace-data:/data -v /path/to/project:/work mempalace mine /work
docker run --rm -v mempalace-data:/data mempalace search "why GraphQL"
```
作为 stdio server 接入 MCP 客户端(例如 Claude Code):
```json
{
"mcpServers": {
"mempalace": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "mempalace-data:/data", "mempalace"]
}
}
}
```
`docker compose run --rm mcp` 同样可用(见 `docker-compose.yml`)。要启用 CUDA 加速的 embedding,请用 `docker build -f Dockerfile.gpu -t mempalace:gpu .` 构建 GPU 变体,并以 `--gpus all` 运行。可在构建时自定义捆绑的 extras,例如 `docker build --build-arg EXTRAS="extract,spellcheck" -t mempalace .`
## 存储后端
ChromaDB 为默认后端,无需配置。MemPalace 还提供可插拔后端契约,并在刻意不同的底层上验证,以免契约无意间围绕单一厂商定型。所有非默认后端均需主动启用。
| Backend | Mode | Install | Namespaces | Lexical | Configure with |
| ------- | ---- | ------- | :--------: | :-----: | -------------- |
| `chroma` _(默认)_ | 本地(嵌入式) | 内置 | – | ✓ | – |
| `sqlite_exact` | 本地(精确) | 内置 | – | ✓ | – |
| `milvus` | 本地(Lite)· 服务端可选 | `mempalace[milvus]` | ✓ | ✓ | `MEMPALACE_MILVUS_URI` |
| `qdrant` | 服务端(REST) | 内置 | ✓ | ✓ | `MEMPALACE_QDRANT_URL` |
| `pgvector` | 服务端(Postgres | `mempalace[pgvector]` | ✓ | ✓ | `MEMPALACE_PGVECTOR_DSN` |
通过 `--backend <name>``MEMPALACE_BACKEND=<name>``"backend": "<name>"``config.json` 中选择。连接变量、命名空间行为与部署说明见 [存储后端](/guide/configuration#storage-backends)。
## 快速开始
```bash
# Mine content into the palace
mempalace mine ~/projects/myapp # project files
mempalace mine ~/.claude/projects/ --mode convos # Claude Code sessions (scope with --wing per project)
# Search
mempalace search "why did we switch to GraphQL"
# Load context for a new session
mempalace wake-up
```
适用于 Claude Code、Gemini CLI、[Antigravity](https://mempalaceofficial.com/guide/antigravity.html),、兼容 MCP 的工具及本地模型,见 [mempalaceofficial.com/guide/getting-started](https://mempalaceofficial.com/guide/getting-started.html).
---
## 基准测试
以下所有数据均可通过本仓库中的命令复现,见 [`benchmarks/BENCHMARKS.md`](benchmarks/BENCHMARKS.md)。完整逐题结果文件已提交至 `benchmarks/results_*`
**LongMemEval — 检索召回(R@5500 题):**
| Mode | R@5 | LLM required |
|---|---|---|
| 原始(语义搜索,无启发式,无 LLM) | **96.6%** | 无 |
| Hybrid v4held-out 450 题(在 50 题 dev 上调优,训练时未见) | **98.4%** | 无 |
| Hybrid v4 + LLM rerank(完整 500 题) | ≥99% | 任意能力足够的模型 |
原始 96.6% 在任何阶段都不需要 API key、云服务或 LLM。hybrid 流水线增加了关键词增强、时间邻近增强与偏好模式抽取;held-out 98.4% 是诚实的可泛化指标。
rerank 流水线使用 LLM reader 从检索到的 top-20 会话中提升最佳候选。它可与任意能力足够的模型配合——我们已在 Claude Haiku、Claude Sonnet 以及通过 Ollama Cloud 的 minimax-m2.7 上复现(不依赖 Anthropic)。原始与 rerank 之间的差距与模型无关;我们不以「100%」作为标题数字,因为最后 0.6% 是通过检查特定错误答案达到的,而 `benchmarks/BENCHMARKS.md` 将其标记为对测试集过拟合(teaching to the test)。
**其他基准测试(完整结果见 [`benchmarks/BENCHMARKS.md`](benchmarks/BENCHMARKS.md)):**
| Benchmark | Metric | Score | Notes |
|---|---|---|---|
| LoCoMosessiontop-10,无 rerank | R@10 | 60.3% | 1,986 题 |
| LoCoMohybrid v5top-10,无 rerank | R@10 | 88.9% | 同一数据集 |
| ConvoMem(全类别,250 条) | 平均召回 | 92.9% | 每类 50 条 |
| MemBenchACL 20258,500 条) | R@5 | 80.3% | 全类别 |
我们刻意不与 Mem0、Mastra、Hindsight、Supermemory 或 Zep 做并排对比。这些项目在不同划分上发布不同指标,将检索召回与端到端 QA 准确率并列并非诚实比较。请参阅各项目自己的研究页面获取其公布数字。
**复现所有结果:**
```bash
git clone https://github.com/MemPalace/mempalace.git
cd mempalace
uv sync --extra dev # or: pip install -e ".[dev]"
# see benchmarks/README.md for dataset download commands
uv run python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.json
```
---
## 知识图谱
MemPalace 包含带有效期窗口(validity windows)的时态实体关系图(temporal entity-relationship graph)——支持 add、query、invalidate、timeline——由本地 SQLite 支撑。
用法与工具参考:
[mempalaceofficial.com/concepts/knowledge-graph](https://mempalaceofficial.com/concepts/knowledge-graph.html).
## MCP server
35 个 MCP 工具涵盖 palace 读写、knowledge-graph 操作、跨 wing 导航、drawer 管理和 agent diary。安装说明与完整工具列表:
[mempalaceofficial.com/reference/mcp-tools](https://mempalaceofficial.com/reference/mcp-tools.html).
## Agents
每位 specialist agent 在 palace 中拥有独立的 wing 和 diary。
运行时可通过 `mempalace_list_agents` 发现——不会让你的 system prompt 臃肿:
[mempalaceofficial.com/concepts/agents](https://mempalaceofficial.com/concepts/agents.html).
## Auto-save hooks
面向 **Claude Code、Codex CLI 和 Cursor IDE** 的 Auto-save hooks 会定期保存,并在上下文压缩(context compression)之前保存:
- Claude Code + Codex →
[mempalaceofficial.com/guide/hooks](https://mempalaceofficial.com/guide/hooks.html)
- Cursor IDE(增加 session-start recall,并在压缩前生成 transcript 快照)→
[mempalaceofficial.com/guide/cursor-hooks](https://mempalaceofficial.com/guide/cursor-hooks.html)
如果你是在时间紧迫的情况下安装,请先从
[Claude Code retention setup checklist](https://mempalaceofficial.com/guide/claude-code-retention.html):
开始,配置 hooks,备份现有 JSONL transcript,并用 `mempalace mine ~/.claude/projects/ --mode convos` 回填它们。
若要在 hooks 生成的文件级 chunk 之上实现逐消息 recall,请定期运行 `mempalace sweep <transcript-dir>`——它为每条 user/assistant 消息存储一个 verbatim drawer,具有幂等性且可安全恢复。
---
## Requirements
- Python 3.9+
- 向量存储后端(vector-store backend,默认 ChromaDB
- 嵌入模型约需 ~300 MB 磁盘空间。入门流程(`python -m mempalace.onboarding`)提供 `embeddinggemma-300m`(多语言,100+ 种语言,推荐)或 `all-MiniLM-L6-v2`(仅英语,约 ~30 MB)。详见 [`mempalace/embedding.py`](mempalace/embedding.py) 中的 docstring 及迁移说明。
核心 benchmark 路径无需 API key。
## Docs
- 入门 → [mempalaceofficial.com/guide/getting-started](https://mempalaceofficial.com/guide/getting-started.html)
- CLI 参考 → [mempalaceofficial.com/reference/cli](https://mempalaceofficial.com/reference/cli.html)
- Python API → [mempalaceofficial.com/reference/python-api](https://mempalaceofficial.com/reference/python-api.html)
- 完整 benchmark 方法论 → [benchmarks/BENCHMARKS.md](benchmarks/BENCHMARKS.md)
- 发行说明 → [CHANGELOG.md](CHANGELOG.md)
- 勘误与公开说明 → [docs/HISTORY.md](docs/HISTORY.md)
## Contributing
欢迎提交 PR。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## License
MIT — 详见 [LICENSE](LICENSE)。
<!-- Link Definitions -->
[version-shield]: https://img.shields.io/badge/version-3.5.0-4dc9f6?style=flat-square&labelColor=0a0e14
[release-link]: https://github.com/MemPalace/mempalace/releases
[python-shield]: https://img.shields.io/badge/python-3.9+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
[python-link]: https://www.python.org/
[license-shield]: https://img.shields.io/badge/license-MIT-b0e8ff?style=flat-square&labelColor=0a0e14
[license-link]: https://github.com/MemPalace/mempalace/blob/main/LICENSE
[discord-shield]: https://img.shields.io/badge/discord-join-5865F2?style=flat-square&labelColor=0a0e14&logo=discord&logoColor=5865F2
[discord-link]: https://discord.com/invite/ycTQQCu6kn