内容
# aura-mnemos
**一个用于AI代理的持久内存MCP服务器,带有诚实的健康端点,当其存储失败时仍能存活。**
> 安装名称为 `aura-mnemos`(`import aura_mnemos`);普通名称 `mnemos` 已被PyPI上的一个无关项目占用。
---
## 为什么
每个代理会话都从空白开始。对话历史记录还在,但是 *知识* —— 上周学到的东西、注意到的模式、做出的决定 —— 在上下文窗口关闭时就会蒸发。 mnemos 就是你存放这些东西的架子。一个小而坚固、诚实的架子。
诚实意味着诚实。当架子坏了 —— 数据库文件丢失、磁盘已满、权限错误 —— mnemos 会告诉你。它不会静默崩溃。不会返回空结果,看起来像“没找到”。它会以你的代理可以听到并采取行动的方式说“我坏了”。这是灾难测试:服务器必须在存储失败时存活,健康端点必须告诉真相。
---
## 安装
```bash
pip install aura-mnemos # 仅MCP服务器 — 标准库,无依赖
pip install "aura-mnemos[health]" # + FastAPI健康侧车
```
需要Python ≥ 3.10。
---
## 作为MCP服务器使用
配置MCP客户端以启动 `aura-mnemos`:
```json
{
"mcpServers": {
"mnemos": {
"command": "aura-mnemos",
"args": []
}
}
}
```
存储默认位于 `~/.mnemos/mnemos.db`。可以通过环境变量 `MNEMOS_DB` 重写。
### 工具
**`remember`** — 存储带有可选标签和来源的记忆。
```json
{
"content": "AURA mesh基于信任和诚实的健康端点运行。",
"tags": "philosophy",
"source": "6E"
}
```
返回 `{"id": 1, "created_at": "2026-07-19T12:00:00+00:00"}`。
**`recall`** — 按内容子字符串搜索记忆。
```json
{
"query": "mesh",
"limit": 10
}
```
返回 `{"count": 1, "results": [{"id": 1, "content": "...", "tags": "...", "source": "...", "created_at": "..."}]}`。
**`list_recent`** — 列出最近的记忆。
```json
{
"limit": 5
}
```
结果形状与 `recall` 相同。
每个工具在存储无法访问时返回 `{"error": "..."}` —— 服务器永远不会崩溃,永远不会撒谎。
---
## 诚实的健康
启动健康侧车:
```bash
aura-mnemos-health
# 默认监听127.0.0.1:8080;设置PORT以更改它
```
当存储活动时:
```bash
curl http://127.0.0.1:8080/health
```
```json
{
"status": "ok",
"timestamp": "2026-07-19T16:16:22.486547+00:00",
"version": "0.1.0",
"checks": [
{ "name": "sqlite", "status": "ok", "latency_ms": 0.27, "detail": "/home/you/.mnemos/mnemos.db" },
{ "name": "memories_table", "status": "ok", "latency_ms": 0.17, "detail": "/home/you/.mnemos/mnemos.db" }
]
}
```
当存储丢失时:
```bash
MNEMOS_DB=/nonexistent/db.sqlite aura-mnemos-health &
curl http://127.0.0.1:8080/health
```
```json
{
"status": "down",
"timestamp": "2026-07-19T16:16:22.868237+00:00",
"version": "0.1.0",
"checks": [
{ "name": "sqlite", "status": "down", "latency_ms": null, "detail": "database not found: /nonexistent/db.sqlite" },
{ "name": "memories_table", "status": "down", "latency_ms": null, "detail": "database not found: /nonexistent/db.sqlite" }
]
}
```
整体 `status` 是各个检查中最差的(`ok` < `degraded` < `down`)。
灾难必须真正发生。 mnemos 不会对其存储撒谎。测试套件证明了这一点:`test_health_down_when_db_missing` 将 `MNEMOS_DB` 设置为一个不存在的路径,并断言状态不是 `"ok"`。如果该测试在存储活动时通过,则测试正在撒谎 —— 而测试旨在在它撒谎时失败。
---
## 路线图(此处未提供)
这些是项目可能成长的方向,但其中没有一个存在:
- **图层** — 按主题、实体或关系链接记忆(超越子字符串搜索)
- **原生应用** — 读取和写入相同存储的桌面/移动客户端
- **框架适配器** — LangChain、CrewAI、Microsoft Semantic Kernel集成
- **网格桥** — 在AURA网格上同步存储(Ubuntu ↔ macOS)
如果您想要其中之一,存储模式是稳定且有文档的。 SQLite文件属于您。
---
## 属性/出处
> AURA模式库的一部分 — © Reality Optimizer。 由一个由小型模型和Claude组成的由人类领导的网格构建。 Apache-2.0。
---
*架子很小。你放在上面的东西属于你。*