🧠 长期记忆系统
macOS上LLM应用程序的企业级语义存储系统
🍎 仅限macOS🤖 MCP驱动|🔒 100%本地和私人|☁️ Mac之间的iCloud同步
](https://github.com/MyronKoch/longterm-memory-macos)   
🌟 特性
- 🌐 网络仪表盘:苹果启发的Liquid Glass UI
localhost:5555 - 🕸️ 知识图谱:使用D3.js和Three.js进行交互式2D/3D可视化
- 🧠 语义搜索:使用Ollama+nomic嵌入文本的本地AI驱动嵌入(LM Studio回退)
- 🔌 浏览器扩展:使用上下文菜单和记忆徽章捕获网络内容
- 📦 归档系统:通过完整搜索浏览和管理存档的记忆
- 🔄 跨Mac同步:通过iCloud在多个macOS系统之间进行双向同步
- ⚡ 实时更新:PostgreSQL WAL监控用于即时同步触发
- 🤖 MCP集成:用于Claude Desktop和其他兼容框架的本地模型上下文协议服务器。
- 🔐 隐私第一:本地生成的所有嵌入,没有外部API调用
📸 截图
仪表板-浏览视图
*带有自动系统检测的明暗主题*
时间线和见解
*可视化内存模式并发现连接*
语义搜索
*通过意义而不仅仅是关键字来寻找记忆*
知识图谱-三维视图
*使用Three.js进行交互式可视化*
知识图谱-二维视图
*使用D3.js和焦点突出显示进行强制布局*
Chrome 扩展
*使用Liquid Glass弹出窗口捕获网络内容*
🖥️ 仪表盘
苹果液态玻璃设计
仪表板采用了受苹果设计语言启发的现代用户界面:
- 实心深色卡片 带有微妙的边框和苹果系统颜色
- 统一导航 跨所有视图(浏览、时间线、见解、存档、图表)
- Bento网格布局 3柱响应式设计
- 苹果蓝口音 (#0A84FF)贯穿整个界面
- 命令选项板 (⌘K)用于键盘优先导航
视图
| 查看 | 描述 |
|---|---|
| 浏览 | 基于卡片的内存网格,带有过滤器、搜索和重要性指标 |
| 时间线 | 具有日/周/月粒度的可视化活动图 |
| 洞察 | 自动模式发现、焦点区域和标签相关性 |
| 档案 | 通过搜索和分页浏览存档的记忆 |
| 图 | 具有2D/3D模式的交互式知识图 |
知识图谱
- 3D模式:Three.js具有斐波那契球面布局、自动旋转、轨道控制
- 2D模式:D3.js具有可拖动节点的力定向模拟
- 特性:局部视图(跳距)、路径查找、时间动画、节点搜索
- 右键单击菜单:在仪表板中查看实体内存,开始路径查找
- 平稳导航:聚焦节点时的动画摄影机过渡
- 颜色编码:紫色(人物)、蓝色(项目)、绿色(科技)、橙色(网站)
启动仪表板
cd dashboard
python3 app.py
# Opens at http://localhost:5555🚀 快速开始
一个命令安装
curl -fsSL https://raw.githubusercontent.com/MyronKoch/longterm-memory-macos/main/install.sh | bash安装什么
- PostgreSQL 17 带有pgvector 0.8.0扩展名
- 奥拉玛 使用nomic嵌入文本模型(768维嵌入)
- 数据库模型 使用实体、观察和归档表
- 后台服务 通过macOS启动代理
- 浏览器扩展 文件(需要手动Chrome设置)
总安装时间:~5分钟
手动安装
git clone https://github.com/MyronKoch/longterm-memory-macos.git
cd longterm-memory-macos
chmod +x install.sh
./install.sh🤖 AI代理安装
使用Cursor、Windsurf、Claude Code或其他AI编码代理?只需粘贴此提示:
Clone https://github.com/MyronKoch/longterm-memory-macos and follow the
AGENT.md file to install the complete system. Execute each step, verify
it succeeds, then proceed to the next. Run the health check at the end.这 AGENT.md 该文件包含针对AI代理优化的分步说明,每个步骤后都有验证检查。
🏗️ 建筑
flowchart TB
subgraph Inputs[Data Sources]
Claude[Claude Desktop]
Browser[Chrome Extension]
end
subgraph Core[Core System]
MCP[MCP Server
postgres-mcp]
NH[Native Host
Python]
DB[(PostgreSQL 17
+ pgvector)]
Dash[Dashboard
:5555]
end
subgraph Services[Background Services]
Ollama[Ollama
nomic-embed]
BG[LaunchAgents]
end
Claude MCP
MCP DB
Browser NH
NH DB
Dash DB
Browser -.->|badge queries| Dash
BG --> DB
Ollama BG多Mac同步
flowchart LR
subgraph Mac1[Mac #1]
DB1[(PostgreSQL)]
D1[Dashboard]
DB1 --- D1
end
subgraph Mac2[Mac #2]
DB2[(PostgreSQL)]
D2[Dashboard]
DB2 --- D2
end
subgraph Sync[iCloud Drive]
T[Transport]
end
DB1 T
T DB2核心组件
| 组件 | 技术 | 描述 |
|---|---|---|
| 网络仪表盘 | Flask+Vue 3 | 带有反应性组件的液态玻璃UI |
| 知识图谱 | Three.js+D3.js | 双模式2D/3D可视化 |
| 设计系统 | 自定义CSS | 苹果启发的Liquid Glass组件 |
| 浏览器扩展 | Chrome API | 通过原生消息进行内容捕获 |
| MCP服务器 | postgres-mcp | 克劳德桌面集成 |
| 同步引擎 | PostgreSQL | 双向跨Mac同步 |
| 预埋管道 | Ollama+LM Studio | 本地矢量生成(768 dim),带回退功能 |
🔌 浏览器扩展
直接从任何Chromium浏览器捕获web内容:
特性
- 🧠 上下文菜单:右键单击→ “长期记忆数据库”子菜单
- 存储选区 - 保存选择+上下文 - 保存整个页面 - 打开仪表板
- 🔔 记忆徽章:显示当前站点的内存计数
- 💡 自动建议:提示保存频繁访问的页面
- ⚙️ 设置:打开/关闭徽章和建议
安装
- 打开
chrome://extensions/并启用开发人员模式 - 点击“加载解包”并选择
browser-extension/chrome-extension/ - 跑
./browser-extension/install_extension.sh用于本机主机设置 - 复制您的扩展ID并更新本机消息清单
📚 看 浏览器扩展名/README.md 详细设置。
🤖 MCP配置
连接到任何兼容MCP的AI助手:
配置位置: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"longterm-memory": {
"command": "uvx",
"args": ["postgres-mcp"],
"env": {
"POSTGRES_CONNECTION_STRING": "postgresql://YOUR_USERNAME@localhost:5432/longterm_memory",
"SYSTEM_CONTEXT": "PostgreSQL memory for user-specific data. Query at conversation start for context."
}
}
}
}支持的客户:克劳德桌面、克劳德代码、光标、Continue.dev、Windsurf、Cline、Roo Cline、谷歌Gemini CLI
📚 看 docs/MULTI_APP_SETUP.md 用于Claude代码和游标配置。
📖 用法
仪表板命令
# Start dashboard
cd dashboard && python3 app.py
# Access views
open http://localhost:5555 # Browse (default)
open http://localhost:5555/?view=timeline # Timeline
open http://localhost:5555/?view=insights # Insights
open http://localhost:5555/?view=archive # Archive
open http://localhost:5555/graph # Knowledge Graph维护
# Health check
./scripts/health_check.sh
# Manual sync between Macs
./scripts/sync_databases.sh
# Generate embeddings for new observations
python3 scripts/ollama_embeddings.py
# View logs
tail -f ~/Documents/GitHub/longterm-memory-macos/logs/*.log⏰ 后台服务
系统使用macOS LaunchAgent执行计划任务和 sleepwatcher 用于唤醒触发同步。
计划的作业
| 工作 | 时间表 | 目的 |
|---|---|---|
| 嵌入 | 4:00 AM,4:00 PM | 生成新观测的矢量 |
| 备份 | 4:20 AM,4:20 PM | 本地数据库备份,保留7天 |
| 数据库同步 | 上午8点、下午12点、下午6点、晚上11点 | 双向M1↔M3通过iCloud同步 |
| 唤醒同步 | 从睡眠中唤醒 | Mac唤醒时同步数据库 |
LaunchAgent文件
位于 ~/Library/LaunchAgents/:
| 文件 | 描述 |
|---|---|
com.longtermmemory.embeddings.plist | Ollama嵌入式代 |
com.longtermmemory.backup.plist | 数据库备份 |
com.longtermmemory.dbsync.plist | 跨设备数据库同步 |
homebrew.mxcl.sleepwatcher | 唤醒/睡眠事件处理程序 |
同步唤醒设置
用途 睡眠观察者 在Mac唤醒时触发数据库同步:
# Install sleepwatcher (one-time)
brew install sleepwatcher
brew services start sleepwatcher
# Wake/sleep scripts (created automatically by installer)
~/.wakeup # Runs sync_databases.sh on wake
~/.sleep # Logs sleep events管理服务
# View all longterm-memory services
launchctl list | grep longterm
# Reload a service after editing its plist
launchctl unload ~/Library/LaunchAgents/com.longtermmemory.dbsync.plist
launchctl load ~/Library/LaunchAgents/com.longtermmemory.dbsync.plist
# Check sleepwatcher status
brew services info sleepwatcher
# View sync logs
tail -f ~/Documents/GitHub/longterm-memory-macos/logs/db_sync.log
tail -f ~/Documents/GitHub/longterm-memory-macos/logs/wake_sync.logmacOS Tahoe兼容性
在macOS Tahoe(15.x)上,同步脚本通过osascript使用Finder写入iCloud Drive,绕过TCC(透明度、同意和控制)限制。
首次运行:macOS将提示您输入Finder自动化权限。点击 允许 以启用自动同步。
为什么选择osascript/Finder? 直接 cp 从launchd运行时,在TCC下对iCloud的命令失败。Finder具有本机iCloud访问权限,并绕过了这些限制。
故障排除:如果您仍然看到“不允许操作”错误:
- 检查系统设置→ 隐私和安全→ 自动化→ 确保您的终端具有Finder访问权限
- 可选择将脚本移动到
~/.local/bin/(文档文件夹外)
sql查询
-- Recent observations
SELECT * FROM observations ORDER BY created_at DESC LIMIT 10;
-- Semantic search (requires embedding)
SELECT *, embedding '[query_vector]' as distance
FROM observations
WHERE embedding IS NOT NULL
ORDER BY distance LIMIT 10;
-- Query both active and archived
SELECT * FROM all_observations;
-- Entity relationship counts
SELECT e.name, COUNT(o.id) as obs_count
FROM entities e
LEFT JOIN observations o ON e.id = o.entity_id
GROUP BY e.id ORDER BY obs_count DESC;🎨 设计系统
Liquid Glass设计系统在整个应用中提供一致的造型:
CSS文件
| 文件 | 目的 |
|---|---|
liquid-glass.css | 核心变量、颜色、排版 |
liquid-glass-components.css | 按钮、卡片、标签、模型 |
关键变量
--brand-primary: #0A84FF; /* Apple Blue */
--bg-base: #000000; /* True black background */
--glass-bg: rgba(28, 28, 30, 0.8); /* Card backgrounds */
--text-primary: rgba(255, 255, 255, 0.95);🔍 故障排除
仪表板无法启动
# Check Python dependencies
pip3 install flask psycopg2-binary --break-system-packages
# Check PostgreSQL is running
brew services restart postgresql@17扩展显示连接错误
# Verify native host
python3 browser-extension/native-host/longterm_memory_host.py
# Check extension ID in manifest matches loaded extension嵌入未生成
# Verify Ollama is running
ollama list
# Pull the embedding model
ollama pull nomic-embed-text
# If Ollama unavailable, LM Studio fallback is automatic
# Just ensure LM Studio is running with nomic-embed-text-v1.5 loaded
# Manual embedding generation
python3 scripts/ollama_embeddings.py📊 演出
| 度量 | 值 |
|---|---|
| 语义搜索 | 每个查询约50ms |
| 仪表板负载 | \<500ms |
| 图形渲染(3D) | 500个节点约2秒 |
| 图形渲染(2D) | 500个节点约1秒 |
| 跨Mac同步 | ~10s端到端 |
| 内存使用量 | ~200MB |
🗺️ 路线图
- \[\]浏览器扩展Liquid Glass重新设计
- \[\]移动响应式仪表板
- \[\]导出/导入功能
- \[\]批量操作界面
- \[\]内存聚类可视化
- \[\]自然语言查询界面
📄 许可证
MIT许可证-请参阅 许可证 了解详情。
______________________________________________________________________
肯塔基州路易斯维尔制造❤️ 用于AI原生工作流
堆栈:PostgreSQL 17•pgvector•Ollama•Flask•Vue 3•Three.js•D3.js
