Claude Memory Sync:服务器
仓库:
- 服务器(当前仓库):https://github.com/le0nardomartins/ClaudeMemorySync-Server
- 客户端(每台机器一个):https://github.com/le0nardomartins/ClaudeMemorySync。它包含
claude-memory-sync技能,执行三路合并,使用SYNC_KEY加密所有内容,还支持基于私有 Git 仓库的无服务器模式。
服务器不进行合并,也无法读取内容。它存储密封的清单和 Blob,并且只接受基于最新版本构建的新版本(否则返回 409 冲突)。
按需阅读本文件夹中的以下文件:
deploy.md:在 Railway 或其他主机上部署、更新api.md:协议说明,用于调试请求operations.md:用于查询和维护的 SQL、备份、撤销、诊断
服务器日志信息为葡萄牙语。operations.md 列出了每条日志及其含义。
始终适用的规则
- 数据。 当机器上使用
SYNC_KEY时,数据库仅保存加密数据。没有SYNC_KEY时,它保存用户的 API 密钥。无论哪种情况,切勿公开暴露 Postgres,也切勿共享DATABASE_URL。 - 密钥。
CLIENT_PUBLIC_KEYS仅保存公钥,可以展示。CLIENT_PRIVATE_KEY和SYNC_KEY绝不应出现在服务器或聊天中。 - 先确认。 在进行部署、推送、更改 Railway 变量、
TRUNCATE、DELETE或其他任何不可逆操作之前,务必先获得用户确认。操作数据前请备份(pg_dump,参见operations.md)。 - 协议匹配。 客户端和服务器必须运行相同的协议版本。当一方更新时,提醒用户更新每台机器上的另一方。
- 重置服务器不会删除机器上的任何内容。 每台机器本地保留其基础数据,并在下一轮同步时重新上传所有内容。要从所有机器上删除一个文件,只需在一台机器上删除即可:无需为此操作服务器。
任务
初始部署
按照 deploy.md → “Railway” 操作。用户需要:
- 在控制面板中创建项目和 Postgres,或允许使用 Railway CLI;
- 粘贴公钥。
最后,在日志中查找 memory server na porta ... | PCs autorizados: ...。
授权一台机器
- 在机器上生成密钥:
python src/components/remote_client.py keygen <name>(客户端)或npm run keygen -- <name>(服务器端)。 - 将
<name>:<base64>追加到CLIENT_PUBLIC_KEYS中,用逗号分隔,不要删除其他条目。 - Railway 会自动重启。检查日志中该名称是否出现在
PCs autorizados中。
撤销一台机器
从 CLIENT_PUBLIC_KEYS 中移除该机器的条目。如果机器已被入侵,引导用户在所有机器上轮换 SYNC_KEY(客户端排障)并重置历史记录(operations.md)。
排障
查看服务日志(Railway 控制面板或 railway logs),并与 operations.md → “Diagnostics” 进行比对。客户端侧的日志文件为 sync.log。409 后跟 201 是正常现象。
查询或维护数据库
使用 operations.md 中的查询。对于一次性访问,使用 railway connect Postgres。优先使用只读查询,并在执行任何写操作前获得确认。
更新服务器
- 推送到仓库:Railway 从
Dockerfile部署。迁移会在启动时运行(db.migrate)。 - 然后要求用户更新客户端。