‹ 首页

cloud-sync

@thedotmack · 收录于 2 周前 · 上游提交 5 天前

Set up or check claude-mem cloud sync with cmem.ai Pro. Use when the user says "set up cloud sync", "sync my memories", "cmem pro", "cloud backup", "sync status", or wants their memory database backed up or synced to their cmem.ai account.

适合你,如果希望将 Claude 记忆安全同步到云端

/ 通过 npx 安装 校验哈希
npx oh-my-skill add thedotmack/claude-mem/cloud-sync
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- thedotmack/claude-mem/cloud-sync
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify thedotmack/claude-mem/cloud-sync
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
88398GitHub stars
~1.1K上下文体积 · 单文件
索引托管

怎么用

商店整理自技能原文 · 版本 132b463 · 表述以原文为准
它做什么

装上后,Claude 可以帮你设置或检查记忆的云端同步,将你的记忆数据库备份或同步到 cmem.ai 账户。

什么时候触发

当你说“设置云同步”、“同步我的记忆”、“cmem pro”、“云备份”、“同步状态”等关键词,或要求备份/同步记忆时触发。

装好后可以这样说
技能原文 SKILL.md作者撰写 · Apache-2.0 · 132b463

Cloud Sync (cmem.ai Pro)

The installed worker syncs through SyncHub. There is one client, one durable operation log, and no separate sync daemon. This skill checks status or writes the three connection values issued by cmem.ai → Connect.

Security rule: never print the sync token, put it in argv, or log it. Confirm only its length. Preserve every unrelated setting and keep ~/.claude-mem/settings.json mode 0600.

1. Check status

Resolve the worker port and query the always-registered status route:

PORT="${CLAUDE_MEM_WORKER_PORT:-$(node -e "const fs=require('fs'),p=require('path'),os=require('os');const uid=(typeof process.getuid==='function'?process.getuid():77);const fallback=String(37700+(uid%100));try{const s=JSON.parse(fs.readFileSync(p.join(os.homedir(),'.claude-mem','settings.json'),'utf-8'));process.stdout.write(String(s.CLAUDE_MEM_WORKER_PORT||fallback));}catch{process.stdout.write(fallback);}" 2>/dev/null)}"
curl -s "http://127.0.0.1:${PORT}/api/sync/status"
  • configured: true and hub.reachable: true → the worker completed an authenticated GET /v1/sync/status against SyncHub. Report deviceId, pending counts, lastFlushAt, lastError, and the Hub head/checkpoint; stop unless the user asked to replace the connection.
  • configured: true and hub.reachable: false → report hub.error and say the SyncHub connection is not verified. A zero pending count or lastError: null is not success because an empty queue performs no push.
  • configured: false → continue.
  • Connection refused, 404, or 503 immediately after restart → retry every three seconds for about 30 seconds before diagnosing the worker.
2. Obtain the connection

Ask for all three values shown by cmem.ai → Connect:

  1. sync token;
  2. user id;
  3. SyncHub URL.

The Hub URL must be an absolute https:// URL. Do not substitute the cmem.ai application API URL; the installed client talks only to SyncHub.

3. Write installed-client settings

Substitute the collected values inside this quoted stdin script. Do not echo them before or after running it:

node - <<'EOF'
const fs = require('fs'), os = require('os'), path = require('path');
const token = 'PASTE_TOKEN_HERE';
const userId = 'PASTE_USER_ID_HERE';
const hubUrl = 'PASTE_HUB_URL_HERE';
if (!token || !userId || !/^https:\/\/[^\s]+$/.test(hubUrl)) {
  console.error('token, user id, and an https SyncHub URL are required');
  process.exit(1);
}
const dir = path.join(os.homedir(), '.claude-mem');
const file = path.join(dir, 'settings.json');
fs.mkdirSync(dir, { recursive: true });
const settings = fs.existsSync(file) ? JSON.parse(fs.readFileSync(file, 'utf8')) : {};
const target = settings.env && typeof settings.env === 'object' ? settings.env : settings;
target.CLAUDE_MEM_CLOUD_SYNC_TOKEN = token;
target.CLAUDE_MEM_CLOUD_SYNC_USER_ID = userId;
target.CLAUDE_MEM_CLOUD_SYNC_HUB_URL = hubUrl.replace(/\/+$/, '');
fs.writeFileSync(file, JSON.stringify(settings, null, 2) + '\n', { mode: 0o600 });
fs.chmodSync(file, 0o600);
console.log(`saved cloud connection: token length ${token.length}, user id length ${userId.length}`);
EOF

These are the only required connection keys. The worker mints and persists a device id on first start and defaults the device name to the hostname.

4. Restart and verify
curl -s -X POST "http://127.0.0.1:${PORT}/api/admin/restart"

Poll the status route every five seconds for up to 30 seconds while the successor starts. Success means configured: true, hub.reachable: true, and lastError: null. The local route always makes an authenticated, read-only SyncHub status probe, even when every pending count is zero; it never uses a legacy cmem.ai Pro status route and never appends or advances sync state. Pending counts describe only writes made after the SyncHub launch baseline; setup does not migrate a pre-launch local corpus.

If hub.reachable is false, report hub.error. If lastError is non-null, report it too. Ask the user to verify the three values in cmem.ai → Connect. Never include the token.

5. Report

Report device id, pending counts, last successful flush, Hub reachability and checkpoint, and any Hub/flush error. End with this privacy note:

Cloud sync uploads your observation narratives and full prompt text to your cmem.ai account.
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。