news 2026/9/17 15:52:15

一键导入Claude Code、Codex、OpenCode会话到PI-Desktop:3步完成迁移指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一键导入Claude Code、Codex、OpenCode会话到PI-Desktop:3步完成迁移指南

一键导入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/projectsJSONL 逐行记录
Codex~/.codex/sessionsJSONL 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)

支持三种粒度的勾选:

  1. 全选:顶部的复选框一键选中全部
  2. 整组勾选:点分组标题前的复选框,选中某来源或某项目的全部会话
  3. 单条勾选:精挑细选特定会话

分组逻辑的实现见 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 15:50:54

STM32双人五子棋课设全攻略:从时钟树到状态机

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 15:50:07

基于MATLAB的有限体积法对流换热数值求解与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 15:48:35

读OpenSpec 文档后,把 Claude Code 的 Key 换到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 15:48:00

Versal ACAP上运行JupyterLab的底层原理与VD100 AI加速实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 15:46:36

STM32工程化开发:VS Code + CMake + GCC构建量产级嵌入式环境

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华