内容
# ⚡ 普罗米修斯内存
> 🌐 **English** · [Português](docs/lang/README.pt-BR.md) · [Español](docs/lang/README.es.md) · [中文](docs/lang/README.zh-CN.md)
> L0→L3 内存管道,用于 AI 代理。
> 将原始对话转化为角色、技能和图表。
> 建立在 [Mnemosyne](https://github.com/abdiasrj/mnemosyne) (BEAM)+ 腾讯DB-Agent-Memory(L0→L3 金字塔)架构启发。
[](LICENSE)
[](https://www.python.org/)
[](https://github.com/abdiasrj/mnemosyne)
## 为什么是“普罗米修斯”
在希腊神话中,普罗米修斯是记忆女神 Mnemosyne 的儿子 —— 将 **知识之火** 带给人类的泰坦。Mnemosyne 存储(记忆);普罗米修斯将原始数据转化为 **可行的知识** (角色、技能、图表)。
## 🧠 您的代理的第二大脑
**一个大脑,许多代理。** 普罗米修斯内存作为所有 AI 代理的 **共享第二大脑** 。OpenCode、Claude Code、Cursor、Codex 和自定义代理通过 MCP 读取和写入同一个 **内存** 。代理 A 在早上做出的决定可以在下午被代理 B 使用 —— 没有任何信息在会话、工具或机器之间丢失。
### 🔁 为循环代理而建
专为 **持续运行的循环代理** (每日检查、监控、24/7 自动化)设计:每个循环迭代都会回忆以前的循环所学的内容(`mnemosyne recall`)并在完成后存储新的事实(`mnemosyne remember`)。L0→L3 管道自动整合所有内容 —— 每 6 小时,事实变成场景,每周,场景变成角色和技能。代理在每次循环中 **变得更智能** ,无需任何人工干预。
## 用例
- 🔁 **24/7 循环代理** —— 每日检查、X/Twitter 监控、学习运行的监视器
- 🤝 **多代理团队** —— 不同角色的代理共享上下文
- 📅 **长期项目** —— 多个会话,零上下文丢失
- 🛠️ **多个 AI 工具** —— 您的整个堆栈共用一个内存层
## 功能
- 🔍 **分层时间线** —— L3→L2→L1 钻取,侧边栏显示项目/日期/统计信息
- 🕸️ **知识图谱** —— G6.js d3-force,Obsidian 风格:发光,悬停激活,点击 → 详情
- 📐 **Mermaid 画布** —— 自动生成的代理状态图,缩放,点击 → 外包内容
- 📄 **多模态本地 RAG** —— 上传 PDF、TXT、MD、DOCX、PNG、JPG,自动 OCR(Tesseract),矢量搜索(余弦超过 fastembed 384d;sqlite-vec KNN 计划在 v0.2 中)
- 📝 **笔记** —— URL 导入(GitHub、X/Twitter、网站)并进行净化处理和自定义 Markdown 渲染器
- ✏️ **内联编辑器** —— 直接在 UI 中编辑和删除记忆(5 个标签 + 编辑器模态框)
- 🗄️ **存储层** —— 默认 SQLite(WAL),PostgreSQL-ready 接口(`DATABASE_URL`)登陆 v0.2
- 💾 **日志卸载** —— 大型工具输出变为引用(最多 61% 的令牌减少)
- ⚡ **实时资源监视器** —— 实时 GPU/RAM/磁盘条 + 时间线侧边栏中的进程使用情况(每 3 秒更新)
- 🧠 **技能生成** —— 检测场景中的重复模式并生成可重复使用的技能
- 🎨 暗黑模式,响应式,无需构建步骤(无 node_modules)
## 架构
```
┌─────────────────────────────────────────────────────┐
│ 普罗米修斯 Web UI (:8777) │
│ 时间线 │ 图谱 │ 画布 │ 文档 │ 笔记 │ ✏️ │
└─────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ L3 角色 │ │ L2 场景 │ │ L0 会话 │
│ (每周) │ │ (每 6 小时)│ │(会话结束)│
└─────────────┘ └─────────────┘ └─────────────┘
│
┌────▼────┐
│ L1 │
│ 事实 │
│(自动记忆)│
└────┬────┘
│
┌──────────▼──────────┐
│ Mnemosyne 3.12+ │
│ SQLite + sqlite-vec│
│ FTS5 + BEAM │
└─────────────────────┘
```
[ARCHITECTURE.md](ARCHITECTURE.md) 中有完整的详细信息。
## 快速入门
### 先决条件
- Python 3.10+
- 带 systemd 的 Linux(用于 24/7 服务 - 可选)
- DeepSeek API 密钥(用于 L2/L3 合并)
- Tesseract OCR(可选,用于扫描的 PDF 和图像)
### 安装(1 命令)
```bash
git clone https://github.com/hofstatter/prometheus-memory.git
cd prometheus-memory
python setup.py # 通用:Windows / macOS / Linux / Raspberry Pi
# 或:bash setup.sh (Unix 包装器)
```
安装程序自动检测您的操作系统/架构,询问您的 **语言** (en/pt/es/zh),安装依赖项并在每个平台上注册 Web UI(Linux 上的 systemd,macOS 上的 launchd,Windows 上的任务计划程序说明)。
### 平台支持
| 平台 | 状态 |
|---|---|
| Linux x86_64 | ✅ |
| Linux ARM64 / Raspberry Pi 5 | ✅ |
| macOS (Intel + Apple Silicon) | ✅ |
| Windows 10/11 (x64) | ✅ (原生 Python;OCR 可选) |
### UI 语言 🌐
Web UI 自动检测您的浏览器语言并支持 **English, Português, Español 和 中文** —— 随时使用顶栏中的 🌐 选择器切换(每个浏览器保存)。在 `.env` 中设置 `PROMETHEUS_LANG` 以强制使用默认值。(RAG 选项卡渲染为中文中的 检索增强。)
`setup.sh` 安装依赖项,复制管道脚本,安装自动内存技能,创建 cron 作业并启用 Web UI systemd 服务。
然后配置您的密钥:
```bash
nano ~/prometheus-memory/.env # 需要 DEEPSEEK_API_KEY
systemctl --user restart prometheus-web
```
打开:**http://localhost:8777**
### 手动安装
```bash
pip install "mnemosyne-memory[all]>=3.12"
pip install -r requirements.txt
cp .env.example .env # 使用您的密钥编辑
set -a; . ./.env; set +a
python3 web/app.py # http://localhost:8777
```
## 配置
所有选项都是环境变量 - 请参阅 [.env.example](.env.example):
| 变量 | 默认值 | 用途 |
|---|---|---|
| `DEEPSEEK_API_KEY` | — | **必填** 用于 L2/L3(场景,角色,技能) |
| `PROMETHEUS_HOST` | `127.0.0.1` | Web UI 绑定(使用 `0.0.0.0` 用于局域网,自担风险) |
| `PROMETHEUS_PORT` | `8777` | Web UI 端口 |
| `MNEMOSYNE_HOME` | `~/.hermes/mnemosyne` | Mnemosyne 数据目录 |
| `PROMETHEUS_NOTES_DIR` | `~/notes` | 笔记目录 |
| `PROMETHEUS_USER` | `$USER` | 角色记忆中使用的名称 |
| `PROMETHEUS_PROJECT` | `geral` | 记忆的默认项目 |
| `PROMETHEUS_PASSWORD` | — | **UI 登录密码** (当 bind ≠ localhost 时必填) |
| `PROMETHEUS_TOKEN` | — | 代理/脚本的 API Bearer Token |
| `PROMETHEUS_PROTECT_READS` | `false` | `true` = 整个 UI 需要登录 |
| `PROMETHEUS_PROJECTS` | — | 已知项目(逗号分隔) |
| `PROMETHEUS_EXCLUDE` | — | 从 UI 中隐藏的内容(逗号分隔) |
| `FIRECRAWL_API_KEY` | — | 爬虫备用(可选) |
## L0→L3 管道
| 层级 | 脚本 | 频率 | 输出 |
|---|---|---|---|
| **L0** 会话 | `scripts/session_logger.py` | 每个会话结束 | 每个会话的 Markdown |
| **L1** 事实 | `auto-memory` 技能 | 在会话期间 | `mnemosyne remember` |
| **L2** 场景 | `scripts/memory_aggregator.py` | 每 6 小时 cron | 主题场景 + 画布 |
| **L3** 角色 | `scripts/persona_synthesizer.py` | 每周 cron | `persona.md` + L3 事实 |
| **技能** | `scripts/skill_generator.py` | 每周(与 L3) | `~/.opencode/skills/generated/` 中的技能 |
| **卸载** | `scripts/ref_manager.py` | 按需 | 带有 node_id 的 `refs/*.md` |
## 截图
| 时间线 | 图谱 | 画布 | RAG | 笔记 |
|---|---|---|---|---|
|  |  |  |  |  |
## API(REST)
| 端点 | 方法 | 描述 |
|---|---|---|
| `/health` | GET | 真实的健康检查(DB + 嵌入 + CLI) |
| `/api/timeline` | GET | 具有项目提取的近期记忆 |
| `/api/graph` | GET | 知识图谱的节点/边 |
| `/api/canvas` | GET | Mermaid 状态图 |
| `/api/search?q=` | GET | 记忆召回 |
| `/api/stats` | GET | 总数(记忆,场景,RAG 文档,笔记) |
| `/api/stats/resources` | GET | 实时 GPU/RAM/磁盘/进程使用情况 |
| `/api/stats/savings` | GET | 令牌节省估算 |
| `/api/context/briefing` | GET | ~500-token 压缩会话简报 |
| `/api/projects` | GET | 检测到的项目 |
| `/api/memory/<id>` | GET/PUT/DELETE | 记忆详情 / 更新 / 删除 |
| `/api/rag/collections` | GET/POST | RAG 集合 |
| `/api/rag/upload` | POST | 上传 + 索引文档(最大 50MB) |
| `/api/rag/search` | POST | 矢量搜索 |
| `/api/rag/documents` | GET/DELETE | 列出 / 删除文档 |
| `/api/notes` | GET | 列出笔记 |
| `/api/notes/import` | POST | 从 URL 导入笔记(SSRF 防护) |
| `/api/notes/<path>` | GET/PUT/DELETE | 笔记 CRUD |
| `/api/notes/search` | POST | 全文笔记搜索 |
> **注意:** 代理的记忆 **写入** 通过 Mnemosyne CLI/MCP(共享存储)。计划在 v0.2 中添加专用的 `POST /api/memory` REST 端点。
## 安全
- 默认绑定到 `127.0.0.1`(无网络暴露)
- **登录系统**:当 `PROMETHEUS_HOST != 127.0.0.1` 时,UI 会要求 `PROMETHEUS_PASSWORD` 并且颁发 30 天的 HMAC 会话。登录端点限速(5 次尝试/分钟/IP - 即使正确密码也等待窗口)
- **API令牌**:代理/脚本使用 `Authorization: Bearer $PROMETHEUS_TOKEN` 代替登录密码
- **作用域**:默认保护写入(读取开放);`PROMETHEUS_PROTECT_READS=true` 保护整个 API(HTML shell 保持公开以便登录模态框可以渲染)
- **单用户,单共享存储**:无每代理隔离(信任边界 = 本地机器)。多租户范围在 v0.2 中落地
- 笔记端点上的路径遍历保护
- URL 导入的 SSRF 保护,在每次重定向时重新验证
- XSS 强化:净化集合 ID,转义代码块,严格的 CSP 头部
- 源代码中没有密钥 - 仅环境变量
## 集成
与任何 MCP 兼容的代理一起使用 - **所有开发工具共用一个内存**:
```
OpenCode ─┐
Claude Code ─┼──► Mnemosyne MCP (:8765) ──► 普罗米修斯内存(同一存储)
Cursor ─────┤ ▲
Codex CLI ──┘ REST API (:8777) — /api/context/briefing, /api/memory/*
```
### 每个工具的设置
| 工具 | 设置 |
|---|---|
| **OpenCode** | 原生 - 复制包含的技能:`cp -r skills/auto-memory ~/.opencode/skills/` |
| **Claude Code** | `claude mcp add mnemosyne --transport sse http://localhost:8765/sse` |
| **Cursor** | `.cursor/mcp.json` → `{"mcpServers": {"mnemosyne": {"url": "http://localhost:8765/sse"}}}` |
| **Codex CLI** | `~/.codex/config.toml` → `[mcp_servers.mnemosyne]` `url = "http://localhost:8765/sse"` |
| **任意代理** | REST:`GET /api/context/briefing`(会话开始,~500 个令牌)+ Mnemosyne CLI/MCP 用于写入 |
代理 A 在早上做出的决定可以在下午被代理 B 使用 - 不同的工具,相同的内存。
## 令牌节省
普罗米修斯旨在 **减少令牌花费** ,而不仅仅是存储记忆:
| 机制 | 它如何节省 |
|---|---|
| **卸载** (`scripts/ref_manager.py`) | 大型工具输出 (>500 个字符) 变成 `[ref:id]` 引用 - 高达 **61% 的令牌减少** 上下文 |
| **L0→L3 压缩** | 原始事实合并为场景和角色 - 回忆注入减少约 40 个令牌/合并事实 |
| **上下文简报** | `GET /api/context/briefing` 返回 ~500 个令牌的压缩摘要(角色 + 场景 + 最近的事实)- 以最低成本启动每个会话 |
| **节省仪表盘** | `GET /api/stats/savings` 估计总共节省的令牌(卸载字节 ÷ 4 + 压缩)并在 UI 侧边栏中显示一个 💰 卡片 |
## 比较
参见 [COMPARISON.md](COMPARISON.md) - Mnemosyne vs MemPalace vs TencentDB vs 普罗米修斯。
## 作者
**Herbert Hofstatter** - [@hofstatter](https://github.com/hofstatter) · [X @hofstatter](https://x.com/hofstatter)
## 许可证
MIT - 参见 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。