内容
# DevMemory 代理
大多数 AI 编程助手在会话结束时就会忘记一切。DevMemory 不会 —— 它是一款基于 Qwen Cloud 并部署在阿里云上的 AI 助手,可以从一个会话到下一个会话,继续保留它对您的了解。
告诉它您的工具偏好、您做出的架构决策、您修复的错误 —— 它会自动记住这些,无需明确的“记住这一点”。每个记忆都会被嵌入、语义搜索和重新排序,并根据艾宾浩斯式衰减曲线进行权重计算,这样您真正使用的记忆会保持清晰,不常用的记忆会逐渐淡忘 —— 就像人类协作伙伴的记忆一样。
## 演示
🎥 _演示视频链接 — 待提交前添加(最长 3 分钟,YouTube/Vimeo/优酷)。_
## 架构
完整的系统图(请求流程 + 内存生命周期):[docs/architecture.md](docs/architecture.md)
```mermaid
flowchart LR
Dev[开发者 / IDE] -->|MCP 或 REST| 代理[DevMemory 代理]
代理 --> Qwen[Qwen Cloud<br/>qwen3.7-max / embedding / rerank]
代理 --> MemEngine[内存引擎]
MemEngine --> PG[(PostgreSQL + pgvector<br/>阿里云 RDS)]
```
## 工作原理
1. **检索** — 每个消息都会被嵌入,并通过 pgvector 的余弦相似度与存储的记忆进行匹配(前 20 个候选)。
2. **重新排序** — 候选者通过 `qwen3-rerank` 重新排序,以实现真正的语义相关性,并应用衰减,使陈旧的记忆即使在文本相似的情况下也排名较低。
3. **拟合** — 最有价值的记忆会被贪婪地打包到 8,000-token 的上下文预算中,并注入到系统中。
4. **响应** — `qwen3.7-max` 使用该上下文进行回答,并调用 4 个自定义工具(技能)直接回忆、保存或搜索对话中的记忆。
5. **记住** — 每次对话结束后,提取过程会自动提取新的偏好、决策、错误修复和模式 —— 无需显式“记住这一点” —— 并强化实际使用的记忆。
## 快速开始
```bash
cp .env.example .env
# 至少填写 QWEN_API_KEY(参见下面的“获取 Qwen Cloud API 密钥”)
docker-compose up --build
```
这将启动 4 个服务:`db`(PostgreSQL 16 + pgvector)、`redis`、`backend`(FastAPI on :8000)和 `mcp`(MCP 服务器 on :8001)。
验证它是否启动:
```bash
curl http://localhost:8000/health
# {"status":"ok","db":"connected","qwen":"reachable"}
```
### 获取 Qwen Cloud API 密钥
1. 在 [qwencloud.com](https://qwencloud.com) 注册并检查您的免费配额。
2. 从您的帐户仪表板生成 API 密钥。
3. 将其粘贴到 `.env` 中:
```env
QWEN_API_KEY=sk-your-key-here
```
`QWEN_BASE_URL` 和模型名称(`qwen3.7-max`、`text-embedding-v4`、`qwen3-rerank`)已经在 `.env.example` 中默认为正确的值 —— 无需其他更改即可运行。
## API 参考
| 方法 | 端点 | 描述 |
|---|---|---|
| `GET` | `/health` | Ping DB 和 Qwen Cloud;如果 DB 无法访问,则返回 `503` |
| `POST` | `/api/v1/chat` | 发送消息,获取增强记忆的响应 |
| `GET` | `/api/v1/memories/{user_id}` | 列出用户的记忆(可选 `?project_id=`) |
| `DELETE` | `/api/v1/memories/{user_id}/{memory_id}` | 删除特定记忆 |
| `POST` | `/api/v1/memories/{user_id}/forget` | 运行艾宾浩斯衰减,自动遗忘低于重要性阈值的记忆 |
| `GET` | `/api/v1/memories/{user_id}/stats` | 记忆统计:总数,按类型划分,风险计数 |
## MCP 工具
DevMemory 还作为 MCP 服务器运行(`app/mcp/server.py`,端口 8001),因此任何 MCP 兼容的 IDE 或代理可以直接使用它:
| 工具 | 描述 |
|---|---|
| `memory_save` | 将记忆保存到持久存储中 |
| `memory_search` | 两阶段语义搜索(embedding + rerank) |
| `memory_forget` | 遗忘特定记忆,ID 或基于衰减的自动遗忘 |
| `memory_stats` | 用户的记忆统计:总数,按类型划分,风险记忆 |
## 记忆衰减算法
重要性遵循艾宾浩斯式遗忘曲线,并带有访问次数保留奖励:
```
effective_decay = max(0, decay_rate - log1p(access_count) * 0.1)
importance(t) = base_importance * e^(-effective_decay * days_since_access)
```
每种类型的记忆都有不同的衰减率 —— 首选项和模式的衰减率较慢:
| 类型 | 衰减率 |
|---|---|
| `preference` | 0.02(最慢) |
| `pattern` | 0.03 |
| `decision` | 0.05 |
| `bug_fix` | 0.08 |
| `general` | 0.10(最快) |
回忆记忆会将其重要性提升 +0.2(上限为 1.0)—— 频繁使用的记忆会积极抵抗衰减。当前重要性低于 `MEMORY_IMPORTANCE_THRESHOLD`(默认为 0.05)的记忆会自动遗忘。
## 技术栈
| 层 | 技术 |
|---|---|
| 语言 | Python 3.11 |
| API 框架 | FastAPI |
| 数据库 | PostgreSQL 16 + pgvector(阿里云 RDS) |
| AI — 推理 | Qwen Cloud `qwen3.7-max` |
| AI — 嵌入 | Qwen Cloud `text-embedding-v4` |
| AI — 重新排序 | Qwen Cloud `qwen3-rerank` |
| MCP 协议 | `mcp` / `fastmcp` |
| 会话缓存 | Redis |
| DI | `dependency-injector` |
| 容器 | Docker + docker-compose |
| 云 | 阿里云 ECS + RDS PostgreSQL |
## 阿里云部署
阿里云服务使用证明(ECS + RDS + Qwen Cloud API,每个独立验证):[alibaba_cloud_proof/alibaba_proof.py](alibaba_cloud_proof/alibaba_proof.py)
```bash
cd alibaba_cloud_proof && python alibaba_proof.py
```
## 可扩展性和产品化
DevMemory 从一开始就针对 SaaS 进行架构设计:
- **多租户隔离** — 每个记忆都限定为 `user_id`(+ 可选 `project_id`/`workspace_id` via `WorkspaceContext`)
- **水平扩展** — 无状态 FastAPI + 外部 Redis + 托管 Postgres
- **MCP 协议** — 任何 IDE 或 AI 工具都无需自定义集成工作即可连接
- **存储库模式** — 将 pgvector 替换为另一个向量存储,对 `MemoryEngine` 或代理无需任何更改
## 许可证
MIT — 参见 [LICENSE](LICENSE)