### What happened? / 问题描述 OpenCode 会话导入功能无法检测到 OpenCode v1.x 版本的会话。导入器扫描的是旧版 JSON 文件存储格式,但 OpenCode v1.x 已经迁移到 SQLite 数据库存储。 ### Steps to reproduce / 复现步骤 1. 安装 OpenCode v1.x(例如 v1.18.26) 2. 在 OpenCode 中创建一些对话 3. 打开 PI-Desktop → 设置 → 导入 → 选择 "OpenCode" 4. 无法检测到任何会话 ### Expected behavior / 预期行为 PI-Desktop 应该能够检测并导入 OpenCode v1.x SQLite 数据库中的会话。 ### Actual behavior / 实际行为 - 导入器扫描路径:`~/.local/share/opencode/storage/session/`(JSON 文件) - OpenCode v1.x 存储路径:`~/.local/share/opencode/opencode.db`(SQLite 数据库) - v1.x 中 `storage/session/` 目录不存在 - 结果:检测到 0 个会话 ### App version / 应用版本 v0.15.1 ### Operating system / 操作系统 Windows ### Extra environment / 其他环境信息 _No response_ ### Logs / 日志 ```shell ``` ### Screenshots / 截图 _No response_
Activity
muzimu217 commentedon Sep 20, 2026
在本机做了完整复现与格式测绘,结论与报告一致:OpenCode v1.x 已把会话存储从
storage/session/*.json迁移到单文件 SQLite,导入器扫旧路径所以检测到 0 个会话。以下是复现证据与新格式测绘,供修复直接取用。复现(本机 OpenCode v1.2.10,macOS)
~/.local/share/opencode/opencode.db存在(本机 224 MB,WAL 模式);storage/session/目录为空v1.x 存储测绘(drizzle 风格三表 + JSON 负载列)
session:id(ses_*)、title、directory(工作区路径)、time_created/time_updated(毫秒时间戳)、version、parent_id(子代理会话有父 id)、time_compacting/time_archived。message:id/session_id/time_*+data(JSON):{"role":"user","time":{"created":1771564410206},"model":{"providerID":"opencode","modelID":"..."},"agent":"build"} {"role":"assistant","time":{"created":...,"completed":...},"modelID":"...","providerID":"...","mode":"build", "tokens":{"total":11468,"input":78,"output":86,"reasoning":0,"cache":{"read":510,"write":10794}},"cost":0,"finish":"stop"}part:id/message_id/session_id+data(JSON),本机类型分布:tool9673 /step-start8133 /step-finish8046 /reasoning7411 /text3813 /file21 /compaction17。text部件为{"type":"text","text":"..."};tool部件含callID/tool/state.status/state.input/state.output/起止时间。修复建议
opencode.db即优先走 SQLite 导入;否则回落旧storage/session/JSONL——旧版本用户不受影响,两条路径并存。session行 → 会话(title/directory/created);按message.time_created排序,role直接对应;正文从其part取type=text,工具调用取type=tool;step-*可跳过,compaction建议视为压缩边界(导入为分隔标记或截断)。tokens字段比旧格式更完整(含 reasoning/cache),导入时可以带上。导入器是插件
io.github.muzimu217.session-import(我们维护)——我们会在插件侧按上面方案跟进修复,以插件更新形式发布;主仓不需要改动。muzimu217 commentedon Sep 20, 2026
跟进修复:插件侧 0.4.9 已就绪 → vastsa/pi-desktop-plugins#56。
一个根因更正:上架的 0.4.8 其实已经支持 OpenCode v1.x 的 SQLite 格式(0.4.7 起),楼主检测不到的原因在路径——OpenCode 的 Windows 应用把数据放在
%LOCALAPPDATA%\opencode\data(OpenCode 官方 tracker 确认的位置),而插件此前只探测~/.local/share/opencode,所以在 Windows 上永远找不到库。0.4.9 改为按序探测三处(%LOCALAPPDATA%\opencode\data→XDG_DATA_HOME→~/.local/share),macOS/Linux 行为不变。已用真实数据验证(本机 224 MB / 629 个会话的 v1.x 库):scan 全部发现,单会话还原(200 条消息含 104 条工具调用)58 ms,模型与时间戳正确。
等这个 PR 合并、插件更新上架后,在插件页升级到 0.4.9 再扫描即可。如果你装的是 0.4.7 之前的旧版本,升级本身也会解决(SQLite 支持是 0.4.7 引入的)。
muzimu217 commentedon Sep 20, 2026
更新:修复已发布——插件中心(应用内插件市场默认源)现已上架 session-import 0.4.9,直接在市场搜索 "session import" 安装/更新后再扫描即可;OpenCode v1.x 的 Windows 数据路径(
%LOCALAPPDATA%\opencode\data)已按序探测。源码同步进官方插件仓 main(#56),后续开发迁至独立仓库 muzimu217/pi-desktop-session-import。vastsa commentedon Sep 21, 2026
复核确认问题已在上游插件修复,不需要 PI-Desktop 主仓改动。插件中心已发布 session-import 0.4.9:Windows 按 %LOCALAPPDATA%\opencode\data → XDG_DATA_HOME → ~/.local/share 探测 OpenCode v1.x 数据库。请在插件页升级到 0.4.9 后重新扫描。