memarium 是一个 npm CLI,把你的 Claude Code 与 VS Code Copilot Chat 会话同步到一个私有 GitHub repo,然后让你能在任何 机器上 resume 任意一段会话。配合可选的 memarium Claude Code 插件,还能在会话内做 digest + recall。
memarium Claude Code · Copilot Chat MIT 你在笔记本上开始调一个 Kubernetes pod,午饭时间到了,走到楼上参加 一个会,会后想在台式机上接着干 — 但 Claude 会话还卡在笔记本上。 于是你重头来过:粘贴日志、重新解释集群拓扑、希望新会话在烧掉一 小时上下文之前能赶上。
或者:周五下午一段会话调出了一个 flaky 测试的根因,你 ship 了修复。 周一早上,另一台机器的新会话从零开始重新推导同一个根因。
memarium 把每段会话保留在 ~/.memarium/session-repo/
下,推到你私有的 GitHub repo。任意一台机器拉了之后都能跑
memarium resume <sessionId> — 同样的上下文、
同样的已读文件、同样的决策、同样的死胡同。
memarium sync
扫描 ~/.claude/projects/ 与 VS Code Copilot Chat
存储,把新会话复制到 spool(原始 .jsonl 与渲染
.md + .raw.json 一起保留),提交,
推到你私有 GitHub repo 的设备分支。
多设备感知:每台笔记本推自己的分支,GitHub Action 在
main 上做确定性合并。可选的加密 — 通过透明的
git clean/smudge filter,你的 repo 可以是 private 而不必把
原文交给 GitHub。
memarium resume <id>
把会话的 .jsonl 从 spool 复制到
~/.claude/projects/<encoded-cwd>/<newId>.jsonl,
打印出 cd <project> && claude --resume <newId>
命令让你跑。
每次 resume 都是一次 fork — 这台机器上的副本 会拿到一个新的 sessionId,这样两台设备 resume 同一个源会话时 可以独立继续,spool 同步时不会撞 id。fork 的 origin 会被记录, digest 工具之后可以把同源 thread 关联起来。
周五下午 4 点,在你的笔记本上。已经调了三个小时的 Kubernetes
集成测试,Claude 读了 14 个文件,跑了十几条 kubectl
命令,排除了三个怀疑的根因,最后把范围缩小到两个 pod 之间的
时钟偏差假设。你累了,你退出。
周六早上,在你的台式机上。你坐下来端着咖啡,跑:
memarium sync # 拉其他机器上的新会话 memarium list-sessions --since 2d # 找昨天那段 memarium resume 1f2c3d # 复制 + 打印 `claude --resume`
memarium 拉笔记本的分支,在 spool 里找到昨天那段会话,把
.jsonl 复制到台式机的 ~/.claude/projects/,
把 /Users/laptop-me 路径改写成
/Users/desktop-me(通过 memarium config --map-path
一次配置过),然后打印:
Session forked: 1f2c3d-... → 8a7b6c5d-... Continue with: cd /Users/desktop-me/work/k8s-cluster && claude --resume 8a7b6c5d-...
你跑那条。Claude 启动起来,14 个文件还在上下文里,三个被排除的 假设还在对话里,时钟偏差的线索等着你下一句 prompt。你不重新解释。 你不重新推导。你就接着周五的你 — 在另一台机器上,另一把椅子里, 端着第二杯咖啡。
需要 Node 20+。
npm install -g memarium memarium init
wizard 会引导你过一遍私有 GitHub repo URL、可选加密、设备分支命名。
之后每台机器上的 memarium sync 推自己的新会话、拉别人
的,memarium resume <id> 让你本地接着任意一段。
想要 digest + recall?装可选的 Claude Code 插件:
/plugin marketplace add june9593/memarium-plugin /plugin install memarium
插件和 CLI 共用 ~/.memarium/session-repo/ — 装其中一个、
两个都装、或者都不装,顺序也无所谓。
| 命令 | 做什么 |
|---|---|
memarium init | 交互式 wizard。clone 你的私有 repo 到 ~/.memarium/session-repo/,设置设备分支。 |
memarium sync | 抽取这台机器上新的 Claude Code + Copilot 会话,提交,推送。 |
memarium list-sessions [--project] [--since] [--device] | 列出 spool 里的会话,可按条件过滤,用于挑选 resume 目标。 |
memarium resume <sessionId> | 把 spool 里的会话 fork 到 ~/.claude/projects/,打印 claude --resume 命令。 |
memarium config [--map-path FROM=TO] | 读 / 改 ~/.memarium/config.json(比如跨设备 path 映射)。 |
memarium list · show · cat | 从 shell 浏览 spool。 |
memarium crypt <action> | 管理 git clean/smudge 加密 filter。 |
memarium workflow | 装跨设备合并的 GitHub Action。 |
memarium doctor | 健康检查(CLI / npm / git-crypt / 插件 / spool 格式)。 |
memarium upgrade | npm install -g memarium@latest 的封装。 |
所有东西都在 ~/.memarium/ 下:
session-repo/ — git 跟踪,推到你的私有 GitHub reposession-repo/raw_sessions/<tool>/<project>/<date>/*.{md,raw.json,jsonl} — 同步过来的会话副本加上原始 .jsonl(给 resume 用)session-repo/.memarium/index.json — 单会话条目索引config.json、passphrase、repo-salt.json — CLI 本地配置resume-forks.json — 记录 fork 出来的 sessionId 与其 origin 的对应关系 book/(chronicles + topics + 目录)是可选的 Claude Code
插件写的,不是 npm CLI。CLI 不会启动 LLM — 它只是 transport + I/O。
配套的 Claude Code 插件 才是把同步过来的会话变成可检索笔记本的那一半。 插件提供两条 slash 命令:
/memarium — 把会话整理成 chronicles(一个工作线一份,AI 优先 frontmatter)和 topics(中粒度子系统索引)。/memarium-recall — 开始新工作前的三阶段渐进式 recall:项目 topic 列表 → 单 topic 的 chronicle → 全文。让 agent 站在过去的学习之上,而不是重新摸索。插件可以脱离 npm CLI 工作(只整理本机会话),npm CLI 也可以脱离 插件工作(只 sync + resume)。两者一起,你既有跨设备的 可携带性,也有跨时间的可携带性。
MIT 许可证 · 由 @june9593 构建 · 168 个 vitest 测试 · 可选 git clean/smudge 加密 filter。