Claude Memory Sync:服务器
仓库:
- 服务器(本仓库):https://github.com/le0nardomartins/ClaudeMemorySync-Server
- 客户端(每台 PC 一个):https://github.com/le0nardomartins/ClaudeMemorySync。它带有
claude-memory-syncskill,执行三方合并,使用SYNC_KEY加密所有内容,并支持通过私有 Git 仓库的无服务器模式。
服务器不进行合并,也不读取内容。它只存储密封的清单和 blob,并且仅当新版本基于最新版本时才会接受(否则返回 409 conflict)。
按需阅读本目录下的文件:
deploy.md:在 Railway 或其它提供商上部署和更新api.md:协议说明,用于调试请求operations.md:用于查询和维护的 SQL、备份、撤销、诊断
始终适用的规则
- 数据。 当 PC 上设置了
SYNC_KEY时,数据库中只有加密数据。没有它,数据库包含用户的 API 密钥。无论如何,绝不要公开暴露 Postgres,也绝不要共享DATABASE_URL。 - 密钥。
CLIENT_PUBLIC_KEYS只包含公钥,这些可以公开。CLIENT_PRIVATE_KEY和SYNC_KEY永远不发送到服务器或聊天中。 - 执行前确认:部署、推代码、在 Railway 上更改变量、
TRUNCATE、DELETE或任何其他不可逆操作前,务必确认。在修改数据前先备份(pg_dump,见operations.md)。 - 协议必须匹配。 客户端和服务器必须使用相同版本的协议。更新其中一个时,请提醒用户在所有 PC 上更新另一个。
- 清空服务器不会删除 PC 上的任何数据。 每台 PC 在本地保存数据库,并在下一轮同步中重新发送所有内容。要删除所有 PC 上的某个文件,只需在一台 PC 上删除即可:不要因此去操作服务器。
任务
初始部署
按照 deploy.md → "Railway" 操作。用户需要:
- 在控制台中创建项目和 Postgres 数据库,或授权使用 Railway CLI;
- 粘贴公钥。
最后,在日志中确认出现 memory server na porta ... | PCs autorizados: ... 这行。
授权一台 PC
- 在 PC 上生成密钥:
python src/components/remote_client.py keygen <名称>(客户端)或npm run keygen -- <名称>(本仓库)。 - 将
<名称>:<base64>追加到CLIENT_PUBLIC_KEYS中,用逗号分隔,不要删除其他条目。 - Railway 会自动重启。在日志中确认
PCs autorizados里出现该名称。
撤销一台 PC
从 CLIENT_PUBLIC_KEYS 中删除该 PC 的条目。如果该机器已被入侵,建议在所有 PC 上更换 SYNC_KEY(参见客户端排错),并清空历史记录(见 operations.md)。
诊断
读取服务日志(Railway 控制台或 railway logs),并与 operations.md → "Diagnóstico" 对照。客户端日志文件为 sync.log。出现 409 后跟 201 是正常现象。
查询或维护数据库
使用 operations.md 中的查询语句。对于临时访问,使用 railway connect Postgres。优先使用只读查询,任何写入操作都需确认。
更新服务器
- 推送代码到仓库:Railway 会通过
Dockerfile自动部署。迁移会在启动时自动运行(db.migrate)。 - 之后,请用户更新所有客户端。