dsh-conversation-import: Migrate Local Codex Conversations into DeepSeek Harness Sessions

前言

在 Codex 里已经跑完一段带工具调用的对话后,若要在 DeepSeek Harness(DSH)里接着聊、或按项目目录在侧边栏统一管理会话,常见做法是手工复制粘贴或另开新会话,上下文与工具轨迹很难完整保留。DSH 社区插件 dsh-conversation-import(维护者 kermars39-web)面向这一缺口:读取本机 ~/.codex 里的 rollout,重建为原生 Harness Session,并按对话原始工作目录归档,可选每 60 秒从源线程追加已完成轮次。

下面按定位、能力、安装与用法说明该插件;事实以 GitHub 仓库 README 与 package.json(当前版本 0.1.9)为准。插件市场审核中,目前需从本地目录安装。

这是什么

dsh-conversation-import 是 DSH 的客户端类插件:在侧边栏 更多 → 导入 提供面板(不占外层导航行),把本地 Codex 对话线程导入为 Harness 原生会话。导入后会话挂在该线程当时的 cwd 对应工作区(已有则归入,没有则创建),标题与时间戳、用户附件、工具调用与结果会按 Harness 事件类型重建(如 bash、write、edit、web_search、web_fetch)。源 Codex 线程不会被修改;数据仅在本地读写,不上传。

核心功能

解析与重建

  • 支持对话深度链接 codex://threads/<id> 或裸 thread id,在本机 Codex rollout 存储中定位最新 rollout 文件(压缩包需 zstd,Node 内置支持,必要时回退 zstd CLI)。
  • Host 端(index.js)解析 session_meta、task_started / task_complete、item_completed、response_item 等记录;无用户提示的轮次会折叠进上一轮,只导入已结束轮次,便于尾部未完成轮次后续通过同步补齐。
  • Codex 工具项映射到 Harness 工具(例如 CommandExecution → bash,FileChange(add) → write,FileChange(update) → edit);MCP 调用、子智能体流量、图片与加密推理等项会跳过(用户附件图片与代理通过 ImageView 查看的截图有单独导入规则,见 README「Known limitations」)。

工作区与列表

  • Session 写入原始工作目录对应的工作区,在侧边栏该项目下可见。
  • 面板展示按原始工作目录分组的最近对话,也提供扁平列表视图。

可选自动同步

  • 每 60 秒轮询;源文件 mtime 未变则不重复解析。
  • 仅追加源线程中已完成的轮次,用 syncedTurns 水位线;事件序号与时间从现有日志延续。
  • Session 若正在打开,新轮次经 live Session 追加;生成中会等到下一 tick。若在 Harness 里已本地续聊(会话轮次超出上次同步点),divergence guard 会暂停该对话的自动同步,界面会提示;重新打开 per-conversation 开关可显式覆盖。
  • 单向同步,不反写 Codex。

安全与隐私(README 摘要)

  • 面板经同源 HTTP 路由访问 Host,受 Connection admission(ctx.connection.requestRejection)约束,与应用 /api 同类凭据;失败关闭(如 admission 不可用时 503)。
  • 只读 ~/.codex 中你指定的线程;只写 Harness Session 与插件状态 ~/.dsh/codex-importer/imports.json。
  • 可选「隐藏外部工具名」仅改写可见文案,工具参数与输出仍保留原内容。

环境与依赖

  • DeepSeek Harness 桌面 0.2.1-rc.5 及以上,且 低于 0.3.0(package.json 中 engines.dsh 与 README 一致)。
  • 本机存在 ~/.codex,且要导入的线程在本机存在。
  • macOS / Linux;Windows 未测试。

安装与启用

插件市场尚未通过审核,需从源码目录安装。安装后重启或刷新页面,入口出现在侧边栏 更多 菜单。

命令行(路径替换为本机克隆或解压后的仓库绝对路径):

plugin_manager install_bundle  target=<absolute path to this repository>

或通过 Plugin Manager UI:插件 → 添加插件 → 本地目录,选择该插件目录。

插件以当前 DSH 进程权限运行;安装前请自行审阅 源码与 MIT 许可证。

典型用法

  1. 侧边栏打开 更多 → 导入。
  2. 粘贴深度链接,或从 Recent conversations(按文件夹分组)点选一行。
  3. 点击 Read conversation,核对标题、原始目录、目标工作区与体量。
  4. 执行 Import locally,再 Open conversation 进入 Harness 会话。
  5. 若需跟进 Codex 侧仍在进行的线程:在 Sync 卡片保持该对话开关开启;若打算只在 Harness 里继续聊,可先关闭同步,避免 divergence 后仍期望双向一致。

适用场景与注意

适合:已在 Codex 完成或进行中的本地线程,希望在 DSH 同一项目目录下续写、查看完整工具链与时间线,并可选从 Codex 单向追更已完成轮次。

务必知晓的限制(摘自 README):

  • 导入本质是快照;最后一轮若仍在生成,需等完成后由同步追加。
  • 跨多个 rollout 文件的线程目前取最新分段,多段合并计划中。
  • 已打开的 Session 不会流式显示追加轮次,需重新打开或刷新列表。
  • 较早导入的会话若需完整附件行为,README 建议再导入一份。
  • 分类为客户端插件;社区目录页:skillhub.cn 插件条目(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。

结尾

dsh-conversation-import 把「Codex 本地 rollout → Harness 原生 Session + 按 cwd 归档 + 可选 60 秒同步」串成一条可复现路径,适合需要在 DSH 插件生态里延续 Codex 上下文的开发者。详情与 issue 见 GitHub:kermars39-web/dsh-conversation-import,目录介绍见 skillhub.cn/plugins/kermars39-web/dsh-conversation-import。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye