手把手教程:让 Claude Code 命令行(CLI)的历史会话,出现在 Claude Desktop 桌面端
附开源工具,一条指令即可同步,原始对话零改动 · 支持任意电脑就地运行
一、为什么写这篇
如果你既用 Claude Code 的命令行(CLI,在终端里 claude 那个),又用 Claude Desktop 桌面应用,你很快会发现一个别扭的地方:
- 你在 CLI 里聊过的一堆会话,默认根本不会出现在 Desktop 的会话列表里;
- 想找回某个旧对话继续聊,只能回到命令行里 claude --resume,桌面端干瞪眼。
本文提供一个开源小工具,帮你把 CLI 的历史会话“一键同步”进 Desktop 的会话列表,点开就能继续。全程不改动、不删除你的任何原始对话记录,安全可逆。
二、最终效果
- 打开 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 里打字。
- 从上面的仓库把项目下载到本地(点绿色 Code → Download ZIP,解压)。
- 打开 Claude Desktop,把解压出来的文件夹路径发给它,并说:
请执行这个文件夹里的 sync_cli_sessions.py,
把我的 Claude Code CLI 历史会话同步进 Desktop。
- 等 Claude 跑完,它会告诉你“新增了多少个会话”。
- 彻底退出并重新打开 Claude Desktop(托盘图标右键退出,或任务管理器结束进程,只关窗口不算)。
- 重开后在会话列表里就能看到历史会话了,点开验证能否继续。
六、使用方法二:会命令行的,直接跑脚本
在项目目录下执行(先预览,再正式同步):
# 预览会新增哪些会话,不写任何文件
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 和桌面端之间来回切的朋友。
更多推荐


所有评论(0)