内容
<div align="center">
# 🧠 MemMesh
### 为 AI 代理提供持久、本地优先的记忆 —— 仅需一个 Rust 二进制文件。
*您的代理在每次会话之间都会忘记所有内容。MemMesh 为它们提供持久的、类型化的、可搜索的记忆,这些记忆存储在您的机器上 —— 无需向量数据库,无需搜索集群,也无需强制调用 LLM。*
[](LICENSE)
[](https://github.com/ThinkfleetAI/memmesh/releases)
[](https://www.rust-lang.org)
[](https://modelcontextprotocol.io)
[](https://github.com/ThinkfleetAI/memmesh/stargazers)
[**memmesh.ai**](https://memmesh.ai) · [**文档**](https://docs.memmesh.ai) · [**发布**](https://github.com/ThinkfleetAI/memmesh/releases)
</div>
---
## 为什么选择 MemMesh
每个代理框架都将内存附加到托管的向量存储和 LLM 提取调用中。这意味着需要运行数据库、数据离开您的机器,并且账单随着您记住的内容而增加。
MemMesh 走的是相反的道路:**一个二进制文件,一个文件,所有内容都本地化**。
| | MemMesh | 典型的代理内存栈 |
|---|---|---|
| **运行时** | 一个 Rust 二进制文件(SQLite 或 Postgres) | 应用程序 + 外部向量数据库(+ 搜索服务) |
| **隐私** | 数据永远不会离开您的机器 | 记忆被发送到托管的存储中 |
| **LLM 调用** | **无需调用** —— 启发式捕获 + 零 LLM 知识图谱 | 每个消息的提取调用 |
| **时间模型** | 双时间(*何时发生* vs *何时学习*) | 平面时间戳 |
| **协议** | MCP 原生 —— 在 Claude Code、Cursor、Windsurf、Codex 中运行 | 框架特定的 SDK |
| **许可证** | Apache-2.0,无限制 | 各不相同 |
## ⚡ 60 秒快速入门
```sh
# 1. 构建(Rust 1.78+)
cargo build --release --bin memmesh
# 2. 将其连接到机器上的每个 AI 工具 —— 只需一个命令
./target/release/memmesh install
# 3. 观察它记住
./target/release/memmesh observe --content "Ryan 更喜欢在所有项目中使用 pnpm 而不是 npm。"
./target/release/memmesh search --query "pnpm"
# → 返回存储的记忆,类型化和时间戳
```
`memmesh install` 会检测每个受支持的工具,将 MCP 服务器块合并到其配置中(您的其他 MCP 服务器不受影响),并将教学技能放在正确的位置。
| 工具 | MCP 配置 | 技能位置 |
|---|---|---|
| Claude Code | `~/.claude.json` | `~/.claude/skills/memmesh/SKILL.md` |
| Cursor | `~/.cursor/mcp.json` | `~/.cursor/rules/memmesh/SKILL.md` |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` | *(MCP 工具描述)* |
| Codex CLI | `~/.codex/config.toml` | *(MCP 工具描述)* |
重启主机工具后,它会重新加载其配置。 有用的标志: `--dry-run`, `--tool <id>` (可重复), `--mcp-only` (跳过技能), `--no-hooks` (跳过 Claude Code 自动观察钩子), `--force`。
## 🛠️ 命令行界面
二进制文件默认打开 `~/.memmesh/memory.db` (使用 `--db <path>` 覆盖):
```sh
memmesh migrate # 初始化 / 重新应用迁移(安全重复)
memmesh observe --content "我们决定使用 Postgres 作为内存后端。"
memmesh save --platform local --project alpha --type fact \
--content "Sarah 更喜欢电子邮件而不是电话"
memmesh get <id> # 按 ID 获取
memmesh search --query "Sarah" --project alpha --limit 10
memmesh mcp # 作为 MCP stdio 服务器运行
```
## 🧰 MCP 工具
下划线名称是规范的;点名称被接受为旧别名。
**可在开源引擎中提供(完全本地):**
| 工具 | 它做什么 |
|---|---|
| `memory_observe` | 提供原始文本;实质性陈述被自动捕获(主要写入路径) |
| `memory_save` | 插入具有范围、类型、内容、重要性的内存项 |
| `memory_recall` | 按 ID 获取(在访问时强化项目) |
| `memory_search` | 按范围 / 项目 / 代理 / 用户 / 会话 + 内容匹配过滤 |
| `memory_list` | 作用域中最近的项目 |
| `memory_delete` | 忘记一个项目 —— 软删除(默认,可恢复)或硬删除 |
| `memory_supersede` | 记录更正(旧项目被保留以供溯源) |
| `memory_stats` | 存储记忆的总计数 |
| `memory_extract_pending` / `memory_commit_extraction` | 客户端 LLM 知识图谱提取 —— **您的** 模型,您的密钥,您的速率限制(引擎从不调用 LLM) |
**托管模式([memmesh.ai](https://memmesh.ai))—— 智能层:**
| 工具 | 它做什么 |
|---|---|
| `memory_graph_reason` | 知识图谱上的多跳推理 |
| `memory_query_graph` | 时间点(双时间)边查询 |
| `memory_prefetch_related` | 通过传播激活的预期检索 |
| `memory_build_context` | 完整的主体上下文包(配置文件 + 模式 + 预测) |
| `memory_predict` | 预测主体的下一个事件 —— 校准,具有溯源和诚实的放弃 |
> 开源引擎是一个完整、持久的内存 **存储**。托管模式在相同的数据之上添加了智能层 —— 校准预测、行为发现和图推理。仅限托管的工具的技能会顺利降级为本地安装的 `search` / `recall`。
## 🏗️ 架构
单个 Rust 工作区;模式在运行时选择,而不是编译时 —— 相同的二进制文件运行本地(SQLite)或服务器(Postgres)。
| 货架 | 目的 |
|---|---|
| `core` | 域类型 (`MemoryItem`, `MemoryScope`, `Contact`, …) + 启发式提取 |
| `storage` | `Storage` 特性 + `SqliteStore` + `PostgresStore` |
| `embed` / `embed-server` | 嵌入生成 + 独立嵌入服务 |
| `mcp` | MCP stdio 协议层 |
| `server` | 长期服务(MCP + HTTP) |
| `sync` | 本地和服务器存储之间的双时间同步 |
| `audit` | 仅追加审计日志 |
| `license` | 离线许可证令牌验证(Ed25519) |
| `cli` | `memmesh` 二进制文件 |
| `eval` | 检索质量评估框架 |
## 🤝 贡献
欢迎提出问题和 PR。MemMesh 是 Apache-2.0 许可的,旨在嵌入、扩展和自我托管。 如果您在项目中使用它,我们很乐意听到您的消息。
## 📄 许可证
[Apache License 2.0](LICENSE). © 2026 ThinkFleet, Inc. 和 MemMesh 贡献者。