memento
Health Gecti
- License — License: AGPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 12 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
A shared brain for your AI coding tools — collects conversations, plans and memory from Claude Code / Cursor / Codex / Obsidian / Antigravity, self-hosted, cross-device, MCP-ready
Memento
给你的 AI 工具建个共享大脑
跨设备、跨工具自动采集 AI 编程对话与记忆,自建后端汇总,Web + MCP 统一查看、搜索、召回。
✨ 它能做什么
- 🧠 跨设备同步对话 — Mac / Linux / Windows 上的 Claude Code / Codex / Cursor / Antigravity 等工具,聊过的内容统一汇总
- 🔍 混合检索 — BGE-M3 向量 + jieba 分词的全文索引,中英文都能搜
- 🕸️ 知识图谱 — LLM 自动从对话抽实体(项目 / 工具 / 技术 / 人物 / 概念)、关系、观察;超过 7 天的老观察自动压缩成 summary
- 🔗 MCP 接入 — 在任何 AI IDE 里通过 MCP 直接调
memory_search/memory_recall/daily_summary,Claude 自己就能查你过去做的事 - 📅 AI 日报 — Celery 每天 23:30 跑两阶段:先为每篇文档生成摘要,再聚合成跨工具每日 digest
- 🔒 入队前脱敏 — Collector 本地就过 14 类密钥正则(OpenAI / Anthropic / GitHub / Slack / Telegram / AWS / Bearer / 私钥 / URL 内嵌凭证 …),磁盘上 SQLite 队列也安全
- 🌐 公开分享 — 项目时间线 / 日报一键生成 share 链接,带 GeoIP 访客统计、有效期、随时撤销
- 🛡️ 完全自托管 — Docker Compose 一键起,Postgres + Redis + MinIO 全在你机器上,数据不出门
- 🔐 多租户隔离 — 多用户独立空间,owner / admin / viewer 三级角色 + 细粒度授权 + 审计日志
- ⚡ 守护进程级 — 设备上跑成 launchd / systemd / Task Scheduler,断网离线队列、自愈重试
🏗️ 架构
graph TB
subgraph DEV["📱 用户设备 Mac/Linux/Windows"]
direction LR
CC["Claude Code<br/>~/.claude"]
CDX["Codex<br/>~/.codex"]
CUR["Cursor<br/>~/.cursor"]
AG["Antigravity<br/>~/.gemini/antigravity"]
OC["OpenClaw<br/>~/.openclaw"]
HM["Hermes<br/>~/.hermes"]
OBS["Obsidian Vault"]
COL["memento-brain-collector<br/>watchdog 监听<br/>SQLite 离线队列<br/>sanitizer 入队脱敏"]
CC --- COL
CDX --- COL
CUR --- COL
AG --- COL
OC --- COL
HM --- COL
OBS --- COL
end
subgraph SRV["☁️ 自托管 Memento 服务端"]
direction TB
NGX["nginx<br/>HTTPS + gzip"]
subgraph DK["Docker Compose"]
direction LR
API["FastAPI :8000"]
WEB["Next.js Web :3000"]
CW["Celery Worker"]
CB["Celery Beat"]
PG[("PostgreSQL 16<br/>+ pgvector")]
RD[("Redis 7")]
S3[("MinIO<br/>S3 兼容")]
end
EMB["BGE-M3 Embedding<br/>:8002 宿主进程"]
NGX --> API
NGX --> WEB
API <--> PG
API <--> RD
API <--> S3
API -.调用.-> EMB
CW <--> PG
CW <--> RD
CB --> CW
end
subgraph CLT["🤖 AI 工具 MCP 客户端"]
direction LR
MCC["Claude Code"]
MCDX["Codex"]
MCUR["Cursor"]
MAG["Antigravity"]
end
MCP["memento-brain-memory<br/>MCP Server"]
MCC --> MCP
MCDX --> MCP
MCUR --> MCP
MAG --> MCP
COL ==>|"HTTPS + collector token"| NGX
MCP ==>|"HTTPS + JWT"| NGX
subgraph PUB["🌍 公开访问"]
SHARE["分享链接 /s/<token>"]
GEO["GeoIP DB<br/>访客统计"]
end
NGX --> SHARE
SHARE --> GEO
classDef device fill:#fef3c7,stroke:#d97706,color:#92400e
classDef server fill:#dbeafe,stroke:#2563eb,color:#1e40af
classDef client fill:#fce7f3,stroke:#db2777,color:#831843
classDef public fill:#dcfce7,stroke:#16a34a,color:#14532d
class CC,CDX,CUR,AG,OC,HM,OBS,COL device
class API,WEB,CW,CB,PG,RD,S3,EMB,NGX server
class MCC,MCDX,MCUR,MAG,MCP client
class SHARE,GEO public
数据流(单条对话从产生到可搜)
sequenceDiagram
participant T as AI 工具
participant W as 本地文件
participant C as Collector
participant Q as SQLite 队列
participant A as API
participant P as Postgres
participant E as Embedding
participant M as MCP
T->>W: 写 .jsonl 对话
W->>C: watchdog 文件事件
C->>C: 解析 + 脱敏
C->>Q: 入离线队列
Q->>A: HTTPS POST(失败重试)
A->>P: 写 documents / conversation_messages / content_tsv
A-->>E: 异步算 embedding
E->>P: 写 document_embeddings (pgvector)
A-->>P: LLM 抽 entities / relations
Note over M: 用户在 Claude Code 里调 memory_search
M->>A: GET /api/memory/semantic
A->>E: 算 query embedding
E->>P: cosine_distance 排序
P-->>M: 返回相关 chunk
Embedding 失败时
embedding_status写为failed,Celery beat 每 15 分钟扫pending/failed自动重试,不会因为单次抖动丢向量。
🧰 支持的 AI 工具
| 工具 | 采集内容 | 格式 |
|---|---|---|
| Claude Code | 对话、记忆、计划、历史 | JSONL / Markdown |
| OpenClaw | 对话会话、身份、记忆、学习、技能 | JSONL / Markdown |
| Codex | 对话、历史、技能、状态 | JSONL / TOML / SQLite |
| Antigravity | 完整对话(内置解密 .pb)、计划、代码快照 |
Protobuf / Markdown |
| Obsidian | 所有笔记 | Markdown |
| Cursor | 对话、技能、MCP 配置 | JSONL / Markdown |
| Hermes | 完整对话(含工具调用)、persona、技能、CLI 历史 | JSON / Markdown / SQLite |
🚀 快速开始
一键安装(推荐)
# macOS / Linux
curl -fsSL https://mem.ihasy.com/install.sh | sh
# Windows (PowerShell)
iwr https://mem.ihasy.com/install.ps1 -useb | iex
也可以浏览器打开 https://mem.ihasy.com/install 拿复制好的命令。脚本会下载仓库到 ~/memento/(可用 MEMENTO_INSTALL_DIR 覆盖),然后跑内置 ./install.sh。
已 clone 仓库
git clone https://github.com/ddong8/memento.git && cd memento
./install.sh # macOS / Linux
.\install.ps1 # Windows
install.sh 自动完成:
- 生成
.env随机密钥(JWT / collector token / MinIO / Postgres 密码) docker compose up -d --build起 7 个容器- 探活 API
/health - 交互提示创建第一个用户(自动 owner,拿 collector_token)
pip install memento-brain-collector+ setup + 注册系统服务
可选参数:
| 命令 | 说明 |
|---|---|
./install.sh embedding |
装宿主 BGE-M3 服务(~1.3 GB,语义搜索 / MCP 召回必需) |
./install.sh doctor |
检查所有服务状态 |
./install.sh update |
git pull + 重建 + 升级 |
./install.sh uninstall |
停服务,保留数据和配置 |
./install.sh uninstall --purge |
同上 + 清 Docker 数据卷 + .env |
./install.sh uninstall --all |
核弹级:pip 包 / ~/.memento / 模型缓存 / Docker 镜像 / MCP 配置 全清 |
服务端口
| 端口 | 服务 |
|---|---|
| 8001 | API (Swagger: /docs) |
| 3001 | Web UI |
| 8002 | Embedding(宿主) |
| 5433 | PostgreSQL |
| 6380 | Redis |
| 9000 / 9001 | MinIO / 控制台 |
端口与常见项目错开,避免冲突。
💻 在额外设备上接入
pip install memento-brain-collector # 只装采集器
# 或 pip install memento-brain # 一并装齐 collector + MCP memory
memento-collector setup # 交互式填 URL + token
PyPI 包名
memento-brain-collector/memento-brain-memory(短名memento-memory被占了),CLI 保留短别名memento-collector/memento-memory。
怎么拿 token?
- 跑过
./install.sh→ 末尾会打印,同时存到.env.local - Web 注册 →
/auth/register第一个用户自动 owner + 显示 token;之后任意时刻头像 → 个人资料
守护进程
memento-collector status # 查看状态
memento-collector start # 启动服务
memento-collector stop # 停止服务
memento-collector run # 前台运行(调试)
按平台自动适配:macOS launchd / Linux systemd user / Windows Task Scheduler。
🕸️ 知识图谱
LLM 自动从同步进来的对话和文档里抽:
- 实体 (
knowledge_entities) — 项目 / 工具 / 技术 / 人物 / 概念,跨对话去重合并 - 关系 (
knowledge_relations) — 实体之间的uses/creates/depends_on/discussed - 观察 (
observations) — 关于某个实体的具体事实陈述,带时间戳和来源 doc
自动压缩:同一实体超过 7 天的累积观察会被 LLM 合并成一段更短的 summary,保语义、省空间。压缩窗口可通过 MEMENTO_COMPACTION_AGE_DAYS 调整。
通过 MCP 工具 memory_recall / memory_context / memory_store 可读写;Web /memory 页可视化查看。
🧠 MCP 记忆服务
装齐 memento-brain 后,所有 AI IDE 会自动配置 MCP 接入(由 memento-collector setup 完成):
| AI 工具 | MCP 配置文件 | 写入方式 |
|---|---|---|
| Claude Code | ~/.claude.json |
claude mcp add CLI |
| Cursor | ~/.cursor/mcp.json |
JSON mcpServers.memento-memory |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
同上 |
| Antigravity | ~/.gemini/antigravity/mcp_config.json |
同上 |
| Codex | ~/.codex/config.toml |
TOML [mcp_servers.memento-memory] |
| OpenClaw | ~/.openclaw/openclaw.json |
openclaw mcp set CLI |
接入后在任何 AI IDE 里可以调:
| 工具 | 用途 |
|---|---|
memory_search(q) |
跨工具语义检索过去对话 |
memory_recall(category, days) |
按类别召回最近 N 天的记录 |
memory_context(project_name) |
切换项目时拉相关上下文 |
daily_summary(date) |
看某天的活动汇总 |
memory_store(content, entity_name) |
主动保存观察 |
外加 4 个 MCP resources(以 URI 形式暴露,IDE 可订阅):
| URI | 内容 |
|---|---|
memory://projects |
所有项目列表 |
memory://projects/{name} |
单个项目详情(对话 / 实体 / 观察) |
memory://identity/{tool} |
指定工具的"身份卡"(用户偏好 / 长期记忆) |
memory://daily/{date} |
某天的活动汇总 |
👥 用户与权限
| 角色 | 说明 |
|---|---|
owner |
首个注册用户。可改任意用户 role/status,看全量数据 |
admin |
可审批 pending 用户、管理设备、看 audit log |
viewer |
只读(默认)。只能看分给自己的 project/tool |
pending |
新注册未激活,需 admin 批准 |
关键流程:
- 注册:
/auth/register— 首个用户自动 owner + active,之后注册需要 admin 批准 - token 自助管理:右上角头像 → 个人资料,查看/复制/重新生成 collector token
- 批准用户:owner/admin 进
/admin,pending 用户旁有按钮,批准后 token 立即出现可复制 - 细粒度授权:
/admin/permissions按 project / tool 给 viewer 发 read/write 权限 - 审计日志:
access_logs表落库每次敏感操作(user_id / action / IP / metadata),便于事后追溯
🌐 公开分享
项目时间线和日报可以一键生成公开分享链接:
- 进
/projects/<id>/timeline或/daily/<date>,右上角 分享 按钮 - 选有效期(可永久),生成
/s/<token>URL - 访客无需登录直接查看
- 后台记录访客 IP + 国家/地区/城市(本地 GeoIP DB,无外发请求)
- 随时可撤销
🛠️ 技术栈
| 层级 | 技术 |
|---|---|
| 采集器 | Python ≥3.10, watchdog, httpx, pydantic-settings |
| MCP 记忆 | Python ≥3.10, mcp ≥1.26, asyncpg, pgvector |
| 服务端 | Python ≥3.12, FastAPI ≥0.115, SQLAlchemy 2.0 async, asyncpg, Celery |
| 数据库 | PostgreSQL 16 (+ pgvector + pg_trgm), Redis 7, MinIO (S3 兼容) |
| 前端 | Next.js 16, React 19, TypeScript, Tailwind CSS 4 |
| AI 摘要 / 图谱 | Anthropic Claude API + OpenAI 兼容端点(Kimi / DashScope...) |
| Embedding | BGE-M3 宿主运行(macOS MPS / Linux CUDA / CPU 回退) |
| GeoIP | MaxMind GeoLite2 / db-ip city-lite(离线 mmdb) |
| 部署 | Docker Compose(7 服务) |
⚙️ 后台任务
Celery beat 调度的定时任务:
| 任务 | 触发 | 作用 |
|---|---|---|
daily_digest |
每天 23:30 | 生成跨工具的每日 AI 活动汇总(逐 doc 摘要 → 聚合) |
embedding_retry |
每 15 分钟 | 扫 embedding_status=pending/failed 的 doc 重新算向量 |
tsvector_backfill |
启动时 | 给历史数据补全 jieba 分词的全文索引 |
memory_compaction |
手动 / 周期 | 合并 7 天以上累积过多的实体观察为 summary |
📁 目录结构
memento/
├── collector/ # 本地采集器 — PyPI: memento-brain-collector
│ └── collector/
│ ├── main.py # 守护进程入口
│ ├── cli.py # setup / install / start / stop / uninstall
│ ├── watcher.py # watchdog 跨平台监听 + 去抖
│ ├── queue.py # SQLite WAL 离线队列
│ ├── sync_client.py # HTTPS 同步(分片上传 / 离线重试)
│ ├── sanitizer.py # 入队前脱敏(API key / 私钥 / OAuth)
│ ├── parsers/ # 8 个解析器
│ └── tools/ # 6 个工具定义
├── mcp_server/ # MCP 记忆 — PyPI: memento-brain-memory
├── memento_brain/ # Meta — PyPI: memento-brain(一键装齐)
├── server/ # 后端 FastAPI
│ └── server/
│ ├── main.py # 入口 + schema 迁移 + validate_production
│ ├── config.py # MEMENTO_ 前缀 settings + fail-fast
│ ├── middleware/ # JWT + collector token (constant-time)
│ ├── api/ # REST + SSE + MCP 挂载
│ ├── db/ # 16 张表
│ ├── services/ # ingest / embedding / graph / cache / geoip
│ └── tasks/ # Celery worker + beat
├── web/ # Next.js 16 前端
│ ├── src/app/ # 18+ 页面
│ └── src/components/ # Aurora 设计系统
├── embedding/ # BGE-M3 宿主服务
├── scripts/ # install.py 后端 + 工具脚本
├── deploy/bootstrap/ # curl 一键安装(install.sh / .ps1 / index.html)
├── docs/ # project-architecture.md / collector-architecture.md
└── docker-compose.yml
⚙️ 环境变量
所有变量统一 MEMENTO_ 前缀。
| 变量 | 默认值 | 说明 |
|---|---|---|
MEMENTO_SERVER_URL |
http://localhost:8001 | 服务端 API 地址 |
MEMENTO_SERVER_TOKEN |
— | collector token |
MEMENTO_OBSIDIAN_VAULT_PATH |
自动发现 | Obsidian vault 路径 |
MEMENTO_NONINTERACTIVE |
— | setup 时设 1 跳过 prompt |
| 变量 | 默认值 | 说明 |
|---|---|---|
MEMENTO_DATABASE_URL |
postgresql+asyncpg://postgres:postgres@localhost:5433/memento | Postgres 连接 |
MEMENTO_REDIS_URL |
redis://localhost:6380/0 | Redis broker + backend |
MEMENTO_COLLECTOR_TOKEN |
collector-dev-token | 兜底 collector token(dev 用) |
MEMENTO_SECRET_KEY |
change-me-in-production | JWT 签名密钥(生产必须覆盖) |
MEMENTO_S3_ENDPOINT |
http://localhost:9000 | MinIO/S3 端点 |
MEMENTO_S3_ACCESS_KEY / MEMENTO_S3_SECRET_KEY |
minioadmin | MinIO 凭据 |
MEMENTO_S3_BUCKET |
memento | 大文件 bucket |
MEMENTO_ANTHROPIC_API_KEY |
— | Claude API(AI 摘要) |
MEMENTO_AI_API_KEY / _BASE_URL / _MODEL |
— / dashscope / kimi-k2.5 | OpenAI 兼容备用 |
MEMENTO_EMBEDDING_SERVER_URL |
http://host.docker.internal:8002 | 宿主 BGE-M3 服务 |
MEMENTO_GEOIP_DB |
/data/geoip/GeoLite2-City.mmdb | GeoIP 数据库路径 |
MEMENTO_DEBUG |
0 |
设 1 允许 dev 默认值启动 |
MEMENTO_PORT |
8000 | API 监听端口 |
| 变量 | 默认值 | 说明 |
|---|---|---|
MEMENTO_EMBEDDING_PORT |
8002 | HTTP 端口 |
MEMENTO_EMBEDDING_MODEL_NAME |
BAAI/bge-m3 | sentence-transformers 模型 |
🌐 远程访问 / 自定义域名
前端 API 地址自动跟随
window.location.hostname(代码里getApiBase(),不写死)Docker 端口映射自动支持 IPv4 + IPv6
放行域名改 server/server/main.py 里的
allow_origin_regex,默认:allow_origin_regex=r"(https?://localhost:\d+|https?://mem\.ihasy\.com)"
🗑️ 卸载
服务端(跑过 install.sh)./install.sh uninstall # 只停容器,保留数据 / .env / pip 包
./install.sh uninstall --purge # 同上 + 删 Docker 数据卷 + .env
./install.sh uninstall --all # 核弹级(加 -y 跳过二次确认)
--all 会清:
- pip 包(memento-brain-* + 旧品牌 daily-report-*)
~/.memento+~/.daily-report(旧路径)- Collector 日志(macOS / Linux / Windows 各自路径)
- Embedding venv + HuggingFace 模型缓存(~1.3 GB)
- Docker 镜像 + 数据卷
.env/.env.local- AI 工具的 MCP
memento-memory条目
memento-collector uninstall # 摘掉 launchd/systemd/Task
pip uninstall -y memento-brain-collector memento-brain-memory memento-brain
rm -rf ~/.memento
# 日志(选一)
rm -rf ~/Library/Logs/memento # macOS
rm -rf ~/.local/share/memento/logs # Linux
# Windows: Remove-Item -Recurse $env:LOCALAPPDATA\memento
# AI 工具 MCP 条目手动删掉 memento-memory 块
📄 License
本项目采用 AGPL-3.0 许可证。
简单说:个人使用、自托管、内部用、研究学习都免费。但如果你拿这份代码(或任何改动)对外提供网络服务(SaaS / 公开 host),按 AGPL 第 13 条,你必须把你修改后的完整源码也按 AGPL 公开。
商业授权(免除 AGPL 限制、闭源使用、SaaS 化等场景)请联系作者。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi