附开源工具,一条指令即可同步,原始对话零改动 · 支持任意电脑就地运行

一、为什么写这篇

如果你既用 Claude Code 的命令行(CLI,在终端里 claude 那个),又用 Claude Desktop 桌面应用,你很快会发现一个别扭的地方:

  • 你在 CLI 里聊过的一堆会话,默认根本不会出现在 Desktop 的会话列表里
  • 想找回某个旧对话继续聊,只能回到命令行里 claude --resume,桌面端干瞪眼。

本文提供一个开源小工具,帮你把 CLI 的历史会话“一键同步”进 Desktop 的会话列表,点开就能继续。全程不改动、不删除你的任何原始对话记录,安全可逆。

开源仓库地址:GitHub - MenciNank/claude-cli-sessions-to-desktop: 让 Claude Code CLI 的历史会话出现在 Claude Desktop 会话列表里(同步脚本 + 使用 SOP) · GitHub

二、最终效果

  • 打开 Claude Desktop,会话列表里能看到你以前在 CLI 里聊的所有会话(按时间排序)。
  • 点开任意一个,历史对话完整加载,可以直接接着聊。
  • 在 Desktop 里续聊的内容,回到 CLI 用 claude --resume 也能看到——因为两边读写的是同一份记录。

三、原理(1 分钟看懂,不看也能用)

真正存放对话内容的,是本地的一份 JSONL 文件,CLI 和 Desktop 共用同一份:

C:\Users\<你>\.claude\projects\<工作目录>\<会话id>.jsonl

而 Desktop 的会话列表,靠的是另一批“索引卡片”文件:

%LOCALAPPDATA%\Claude-3p\claude-code-sessions\<账号id>\<组织id>\local_<会话id>.json

这些卡片里只记标题、工作目录,以及一个指向 JSONL 的 cliSessionId,不存对话内容本身。Desktop 恢复会话时,执行的其实就是 claude --resume <会话id>,读的还是那份 JSONL。

所以本工具做的事,就是:为每个还没被 Desktop 收录的 CLI 会话,补一张缺失的“索引卡片”。

四、前置条件

  • Windows 系统;
  • 同一台电脑上都用过 Claude Code CLI 和 Claude Desktop;
  • Desktop 至少已经建过一个会话(让它生成过存储目录)。

五、使用方法一:什么都不用懂,让 Desktop 里的 Claude 自己做

这是最省事的方式,全程只在 Desktop 里打字。

  1. 从上面的仓库把项目下载到本地(点绿色 Code → Download ZIP,解压)。
  2. 打开 Claude Desktop,把解压出来的文件夹路径发给它,并说:

请执行这个文件夹里的 sync_cli_sessions.py,

把我的 Claude Code CLI 历史会话同步进 Desktop。

  1. 等 Claude 跑完,它会告诉你“新增了多少个会话”。
  2. 彻底退出并重新打开 Claude Desktop(托盘图标右键退出,或任务管理器结束进程,只关窗口不算)。
  3. 重开后在会话列表里就能看到历史会话了,点开验证能否继续。

六、使用方法二:会命令行的,直接跑脚本

在项目目录下执行(先预览,再正式同步):

# 预览会新增哪些会话,不写任何文件

py sync_cli_sessions.py --dry-run

 

# 正式同步

py sync_cli_sessions.py

若 py 不可用,可换成 python 或 python3。同步完同样要彻底重启 Desktop 才能看到。

七、常见问题

Q:会不会弄坏我原来的对话?

不会。脚本只在 Desktop 的索引目录里新增 local_*.json 文件,从不碰 .claude/projects 里的原始记录。

Q:同步后又用 CLI 新开了会话怎么办?

再运行一次即可,已同步的会自动跳过,只补新的(幂等,可反复运行)。

Q:脚本报“没找到 Desktop 的会话存储目录”?

说明这台电脑的 Desktop 还没建过会话。先在 Desktop 里随便新建并保存一个会话,再运行。

Q:太短的会话为什么没同步?

脚本默认跳过少于 4 条消息的会话,避免列表被大量无意义会话塞满。想全部同步可调小脚本里的 MIN_LINES。

Q:换一台电脑也能用吗?

能。脚本会自动适配该机的账号和路径,不写死任何机器专属信息,拷到别的电脑就地运行即可。

八、注意事项与回退

  • 不要 CLI 和 Desktop 同时打开同一个会话并同时输入,两边同时写一份 JSONL 可能写乱;先后切换没问题。
  • 回退很简单:同步只是新增了索引文件,删掉这些新增的 local_*.json 即可还原(注意别误删 Desktop 自己原生创建的同名会话)。

九、开源地址与结语

项目地址(欢迎 Star):GitHub - MenciNank/claude-cli-sessions-to-desktop: 让 Claude Code CLI 的历史会话出现在 Claude Desktop 会话列表里(同步脚本 + 使用 SOP) · GitHub

工具很小,但解决了一个实实在在的割裂问题。如果对你有用,点个 Star,或分享给同样在 CLI 和桌面端之间来回切的朋友。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐