一键导入Claude Code、Codex、OpenCode会话到PI-Desktop:3步完成迁移指南
【免费下载链接】PI-DesktopLocal-first AI coding agent desktop: Electron + Rust host core + pi Agent Harness + user-installable plugins项目地址: https://gitcode.com/GitHub_Trending/pid/PI-Desktop
PI-Desktop 是一款本地优先(local-first)的 AI 编程智能体桌面应用,内置了强大的历史会话导入功能:它会自动扫描你电脑上 Claude Code、Codex、OpenCode 三个工具的历史会话文件,把完整的对话记录一键迁移为 PI-Desktop 会话——消息、工具调用、时间戳、项目路径全部保留,还能避免重复导入。
对于同时用过多个 AI 编程工具的朋友来说,这相当于把散落在各处的"编程记忆"集中到一个统一的工作台里。
为什么需要会话导入?
如果你长期在不同 AI 编程工具之间切换,大概率遇到过这些烦恼:
- 💬历史记录分散:Claude Code 存在
~/.claude,Codex 存在~/.codex,OpenCode 存在~/.local/share/opencode,想找某次对话要翻好几个目录 - 🔍格式互不兼容:三个工具各自使用不同的 JSONL/JSON 存储格式,无法直接互通
- 📁项目上下文丢失:想在新工具里继续旧对话,却只能从零重新解释背景
PI-Desktop 的导入器(importer)机制统一解决了这些问题,源码位于 apps/desktop/electron/main/importers/:
| 来源工具 | 扫描目录 | 文件格式 |
|---|---|---|
| Claude Code | ~/.claude/projects | JSONL 逐行记录 |
| Codex | ~/.codex/sessions | JSONL rollout 文件 |
| OpenCode | ~/.local/share/opencode/storage | 会话 + 消息分离的 JSON |
| PI-Desktop | 原生会话 | 支持再导入/迁移 |
每个来源都有独立的导入器实现,例如 claude.ts、codex.ts、opencode.ts,统一注册在 index.ts 中并行扫描。
导入前的智能清洗
导入不是"照搬原始文件",PI-Desktop 会先做一层智能解析,保证导入后的会话干净可读:
- 过滤合成消息:自动跳过 Claude Code 注入的以
<开头的系统提示行,以及 Codex 的 IDE 上下文前缀 - 智能提取标题:以你输入的第一条真实消息作为会话标题,而不是无意义的文件 ID
- 容错解析:损坏的时间戳会自动回退到文件修改时间;超大文件采用抽样扫描,标题和时间戳依然能保留
- 工具调用保留:Codex 的
function_call、OpenCode 的 tool part 都会转换为 PI-Desktop 的工具消息卡片
这些规则都有对应的测试用例保障,例如 importer-codex-scan.test.mjs。
三步完成历史会话导入
第 1 步:打开设置页的"导入"标签
启动 PI-Desktop 后,进入设置(Settings)页面,选择Import(导入)标签页。这里包含两个面板:会话导入和模型配置导入,我们关注前者。
提示:如果从未使用过 Claude Code 等工具,对应目录不存在时扫描结果为空属正常现象,导入器会静默跳过。
第 2 步:扫描并勾选要导入的会话
点击Scan(扫描)按钮,应用会并行扫描所有来源的历史会话。结果按来源(Source)或项目路径(Path)分组展示,每条会话显示:
- 会话标题与消息条数(超大文件显示为 —)
- 最后更新时间
- 来源徽章(Claude Code / OpenCode / Codex / PI)
支持三种粒度的勾选:
- 全选:顶部的复选框一键选中全部
- 整组勾选:点分组标题前的复选框,选中某来源或某项目的全部会话
- 单条勾选:精挑细选特定会话
分组逻辑的实现见 import-groups.ts。
第 3 步:点击导入并确认结果
点击Import Selected(导入选中项),完成后会弹出结果提示,明确告知导入成功 / 跳过 / 失败的会话数量。导入完成后,侧边栏会直接显示新建的项目与会话,点击即可继续对话——原对话的完整上下文都还在。
导入是安全的:可重复、不破坏原件
这套导入机制有两个值得一提的设计:
- 🔁 幂等去重:每个导入会话使用确定性的 ID(
import-<来源>-<原始ID>,见 types.ts)。对同一条会话重复导入是空操作,不会产生重复数据 - 🛡️ 只读源文件:导入器只读取各工具的本地存储目录,绝不修改原始文件,迁移后你仍可在原工具中正常查看历史
导入 UI 与后端 IPC 的完整链路分别在 agent-sections.tsx(SessionImportPanel)和 session-ipc.ts 中。
常见问题(FAQ)
Q:扫描不到任何会话?A:确认对应工具确实运行过(Claude Code 需在终端执行过会话);三个工具的会话目录都位于用户主目录下,无需额外配置。
Q:消息数显示为"—"是什么意思?A:表示该会话文件过大,扫描时采用了抽样模式,消息条数无法精确统计,但导入后条数是准确的。
Q:导入后可以删除原工具的会话文件吗?A:可以。导入后的会话已完整保存在 PI-Desktop 本地存储中,与源文件相互独立。
Q:能只导入某个项目的会话吗?A:可以。选择按项目路径分组后,勾选对应分组即可批量导入该项目的全部会话。
结语
只需扫描 → 勾选 → 导入三步,就能把 Claude Code、Codex、OpenCode 的历史会话完整迁移到 PI-Desktop。配合它的多项目分组、插件生态和本地优先的存储架构,所有 AI 编程对话终于可以在一个桌面工作台里统一管理。快去试试吧 👇
【免费下载链接】PI-DesktopLocal-first AI coding agent desktop: Electron + Rust host core + pi Agent Harness + user-installable plugins项目地址: https://gitcode.com/GitHub_Trending/pid/PI-Desktop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考