DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

rinneditor /

rinneditor/session-import

Verified

This plugin has no description yet.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@4c4874ea

session-import

将 Codex 本地会话和 DeepSeek Harness 导出的会话 ZIP 导入 DeepSeek Harness(DSH),在确认导入时选择目标工作区和会话模式。

插件包名为 dsh-session-import,界面入口为 会话导入,位于侧栏底部、设置上方。点击入口打开浮窗:可以拖动标题区域移动,也可以拖动上下左右边缘调整大小。标题、来源切换和搜索框固定,只有会话列表在内容超出时滚动。

使用方法 · 安装 · 会话来源设置 · 格式与限制 · 常见问题 · 开发

使用方法

导入 Codex 会话

Codex 导入入口:点击加载会话读取本机历史
  1. 打开侧栏的 会话导入,选择 Codex。
  2. 点击 加载会话。打开浮窗时不会自动扫描。
  3. 展开工作区,或使用搜索框查找工作区、路径或会话标题。
  4. 点击会话旁的 导入,选择目标工作区和会话模式。
  5. 点击 确认导入。成功后刷新 DSH 会话列表,即可在目标工作区查看。

选择 保留原工作区 时,插件按会话记录中的路径查找或创建 DSH 工作区。需要导入到其他目录时,先在 DSH 中添加目标工作区,再在导入窗口选择它。

列表按“工作区 → 会话”分组,同一个会话 ID 只显示一次;标题相同但 ID 不同的会话仍分别显示。多数据目录中存在同一会话时,优先采用更新时间较新的副本,时间相同则比较文件修改时间。

标题优先使用可读取的 Codex SQLite 数据库中的自定义名称,再使用 session_index.jsonl 中的名称,随后回退到数据库标题或会话 ID。工作区分组优先使用明确的项目 ID,没有 ID 时按项目名称合并,最后按路径分组。能够识别的后台审查和子代理记录会被过滤。

导入 DeepSeek Harness 会话 ZIP

DeepSeek Harness 导入入口:选择会话 ZIP 后预览并确认导入
  1. 打开 会话导入,选择 DeepSeek Harness。
  2. 点击 导入会话,选择一个或多个 DSH 导出的 ZIP 文件。
  3. 解析后的会话按“工作区 → 会话”展示,重复选择同一会话 ID 会更新其预览。
  4. 展开工作区,点击会话旁的 导入,选择目标工作区并检查会话模式。
  5. 点击 确认导入。成功后刷新 DSH 会话列表。

选择 ZIP 只解析和预览,点击确认后才保存。预览显示用户消息、助手消息数量,并提示未结束的回合。导入不会自动执行历史工具调用。

跨系统迁移时,例如把 Windows 的 ZIP 导入 macOS,如果原工作区路径不适用于本机,必须选择本机目标工作区。

会话模式与重复导入

Codex 会话和未记录模式的 DSH 归档,可以在确认导入前选择当前 DSH 提供的模式,默认采用 DSH 默认模式。已记录 agentPreset 的 DSH 归档保留原模式。导入完成后,已有历史的会话模式会锁定。

已导入的会话显示 已导入。再次导入时会先弹出确认提示,继续后创建一个具有新 ID 的副本,保留已有记录。当前没有原地覆盖功能,因此重新导入后,DSH 侧栏可能出现同名会话。

安装

准备并构建

当前开发依赖通过 link:../deepseek-harness/... 连接到 Harness 源码,构建需要两个仓库位于同一父目录:

your-directory/
├── deepseek-harness/
└── session-import/

准备 Git、Node.js 和 pnpm,版本要求以所用 Harness 版本为准。如果已有 Harness 源码,可以直接使用;首次准备可执行:

git clone https://github.com/deepseek-ai/deepseek-harness.git
git clone https://github.com/rinneditor/session-import.git

cd deepseek-harness
pnpm install
pnpm run build

cd ../session-import
pnpm install
pnpm build

构建生成 lib/index.js 后端入口和 lib/client.js 浏览器入口。Harness 需要支持 sidebar.footer.action 扩展槽,并满足本插件 package.json 声明的依赖要求。

当前源码依赖相邻目录,仅把 GitHub 地址交给包管理器不能保证在独立环境中完成构建。请使用已构建的本地目录安装。

安装到 Web

在 DSH 的 插件 页面选择 添加插件,输入已构建插件的本地绝对路径,例如 /absolute/path/session-import,安装并启用 dsh-session-import。

也可以在 Harness 源码目录使用 CLI 安装到 web profile:

pnpm dsh plugin --profile web add "/absolute/path/session-import"
pnpm dsh web

将示例路径替换为本机插件目录。首次安装后重启 Web 服务并刷新页面,检查侧栏是否出现 会话导入。

安装到 DSH Desktop

在 DSH Desktop 自己的插件页面 添加已构建插件的本地绝对路径,安装并启用 dsh-session-import。需要重启时,完全退出 Desktop 后重新打开。

当前 Harness 的 Desktop 使用独立的 desktop profile,CLI Web 使用 web profile。在 Web 中安装插件,不会自动为 Desktop 安装;公开 CLI 也不能管理 Desktop 保留的 profile。请使用 Desktop 内的插件管理界面。

旧目录名为 codex-import-plugin,旧包名为 dsh-codex-import。迁移后,请在实际使用的 DSH 实例中安装并启用 dsh-session-import,检查旧依赖是否仍指向已经改名的目录。

会话来源设置

点击导入窗口右上角、关闭按钮旁的 齿轮,打开 Codex 来源设置。

  1. 输入数据目录或其 sessions 文件夹路径,点击 添加。
  2. 根据需要开启或关闭 自动查找常见数据目录。
  3. 点击 保存设置,返回 Codex 页面后点击 加载会话或 重新加载。

设置立即生效,无需重启。支持 ~/、~\ 和本机绝对路径,例如 ~/.codex、/Volumes/Work/CodexData、D:\CodexData。不存在或暂未挂载的目录也可以保存;扫描结果显示未找到目录或读取失败的原因。移除来源只停止扫描该自定义目录,不删除文件。

自动发现

会话检索取决于 DSH 后端运行的系统用户和环境,与 Codex 应用的安装位置无关。

来源 检查位置
基础目录 DSH 进程继承的 CODEX_HOME;未设置时使用用户主目录下的 .codex
自定义目录 设置中保存的 codexHomes
通用自动发现 用户主目录下的 .codex、XDG_CONFIG_HOME/codex、XDG_DATA_HOME/codex
XDG 未设置时 用户主目录下的 .config/codex 和 .local/share/codex
macOS 自动发现 ~/Library/Application Support/Codex
Windows 自动发现 %APPDATA%\Codex 和 %LOCALAPPDATA%\Codex

只有存在且可读取 sessions 子目录的候选位置才会扫描。指向同一会话目录的软链接只扫描一次,一个来源失败不会阻止其他来源加载。

关闭自动发现后,仍检查基础目录和自定义目录。插件不进行全盘搜索,默认不扫描 archived_sessions。其他进程独有的环境变量、其他系统用户的数据目录和任意自定义位置,需要在设置中手动添加。

保存位置与初始配置

可视化设置默认保存到当前系统用户主目录下的 .dsh/session-import/sources.json,重新打开浮窗或重启 DSH 仍会保留。该默认路径不会随 DSH_HOME 自动改变。

首次使用读取 loader 中的 codexHomes 和 autoDiscover;已有可视化设置时,以保存的文件为准。需要为不同实例分别保存来源设置,可以通过 settingsPath 指定独立文件。

在 profile 的 cordis.patch.yml 中覆盖已启用的条目,例如:

- id: session-import
  name: dsh-session-import
  config:
    autoDiscover: true
    codexHomes:
      - ~/other-codex
      - /Volumes/Work/CodexData/sessions
    settingsPath: /absolute/path/session-import-sources.json

按本机系统替换路径,Windows 的自定义目录可写为 D:/CodexData。修改 loader 配置后重启 DSH;更新目录中的会话内容只需重新加载。已安装的 bundle 会插入插件条目,无需再插入第二个同名条目。

格式与限制

Codex 本地日志

读取 Codex rollout JSONL 中可转换的用户消息、助手文本、工具调用和工具结果,转换为 DSH 会话事件,并保留来源会话 ID、创建时间和所选标题。重复导入时使用新 ID。

Codex 转换并非完整运行环境备份:开发者和系统消息不会作为用户对话导入,未支持的事件会被跳过,图片及其他非文本内容不会完整迁移。工作区文件、原应用的工具实现和凭据不随会话导入。

DSH 会话 ZIP

ZIP 根目录必须包含一个 session.jsonl,首行为有效的 DSH 会话头。归档版本必须与当前 DSH 的会话格式版本一致,插件不会自动迁移不兼容版本。

项目 限制或行为
单个 ZIP 大小 最大 25 MB
解压后的日志 最大 64 MB
ZIP 文件条目 最多 64 个
逻辑事件 最多 500,000 个
校验 校验持久化事件,并按 DSH 会话重放规则检查
记录类型 支持普通事件及文本、推理、工具调用的压缩 chunk 行
保留信息 标题、创建时间、消息、工具记录、已有模式及继承前缀
外部资源 归档未包含的工作区文件和其他外部文件不会恢复

ZIP 在内存中解析,不解压到磁盘。不安全的归档路径、无效日志、不连续序号及不兼容格式会被拒绝。导入接口仅允许本机访问;浏览器中的 Codex 检索读取 DSH 后端所在电脑的数据目录。

常见问题

侧栏没有“会话导入”?

检查当前实例是否已安装并启用 dsh-session-import,本地插件目录是否存在,以及 lib/client.js 是否已构建。Web 与 Desktop 要分别安装;初次安装或重建后,重启对应服务或应用。旧依赖还指向已改名目录时,也会导致加载失败。

加载不到 Codex 会话?

打开齿轮设置,检查最近一次扫描结果。确认添加的是数据目录或 sessions 文件夹,以及 DSH 用户有读取权限。移动 Codex 应用本身不会移动会话数据;自定义数据目录需要手动添加。

名称或工作区分组与 Codex 不一致?

先重新加载,并确认扫描的是当前使用的数据目录。标题和项目名称依赖 Codex 索引与可用的 SQLite 元数据;索引缺失、数据库格式不受支持或运行时无法读取 SQLite 时,会采用回退名称和路径分组。同名会话不一定是同一个 ID。

为什么重新导入后有两条同名会话?

当前重新导入会创建副本。确认提示中会说明这一行为,不会替换已经保存的历史。

更新插件后,旧导入会话仍提示历史加载或迁移失败?

更新转换逻辑不会重写已经保存的日志。可以使用更新后的插件重新导入原 Codex 会话,或重新选择兼容的 DSH 归档。先确认新会话能够打开,再处理旧记录。

开发

pnpm build
pnpm test

构建包含后端 TypeScript、客户端 TypeScript 和浏览器插件打包。测试涉及来源发现、目录设置、会话去重、目标工作区、ZIP 校验、重复导入和 HTTP 上传;HTTP 测试需要允许监听本机端口。

主要文件:

  • src/client/:侧栏入口、导入浮窗和来源设置界面。
  • src/catalog.ts、src/discovery.ts:Codex 会话与显示元数据检索。
  • src/import-session.ts:Codex JSONL 转换与保存。
  • src/import-zip.ts、src/chunk-rows.ts:DSH ZIP 解析、记录展开与保存。
  • src/settings.ts:来源设置校验与持久化。
  • src/index.ts:插件服务、导入工具与本机 HTTP 接口。
  • cordis.patch.yml:session-import loader 条目。

插件同时保留独立入口 /session-import,可在本机 Web 服务地址后添加该路径访问。

—/ 5

No ratings yet

Verified DSH bundle

Commit 4c4874ea0a4c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout