用 dsh-import-agents 把 pi、OpenCode、Codex 等历史会话导入 DeepSeek Harness

前言

DeepSeek Harness(dsh)把模型、工具、会话、沙箱和界面都做成插件,官方仓库的口号就是「Everything is a Plugin / 一切皆插件」。换到这套运行时之后,卡住的往往不是装插件,而是历史对话还散落在别处:pi 的 JSONL、OpenCode 的 SQLite、Codex 和 Claude Code 各自的会话目录。这些文件能在原工具里打开,但不能直接当成 dsh 会话继续聊。

dsh-import-agents 做的就是把这四类来源的会话、聊天记录和智能体配置读进 DeepSeek Harness:导入结果出现在会话列表,可以带着完整上下文接着聊;pi / OpenCode 的 agent 与模式提示词会变成可发现的 dsh skills。Web 界面 composer 工具行里有一键「同步」按钮,也可用斜杠命令;新顶层会话启动时,若还有未导入历史,插件会询问是否迁移。

本文按社区插件目录页、GitHub 仓库 README(中英文)、package.json、CHANGELOG、LICENSE 和 npm 页面交叉核对后整理。社区目录 deepseek-harness-plugin.com 是独立站点,和 DeepSeek / 幻方没有官方从属关系,不要把它理解成官方应用商店。

这是什么

dsh-import-agents 是一款「会话与消息」类 DeepSeek Harness 插件,由 Chang-Tong 维护,GitHub 仓库为 Chang-Tong/dsh-import-agents。许可证为 MIT(Copyright 2026 dsh-import-pi-opencode contributors)。npm 包名同为 dsh-import-agents,当前版本 0.2.6(2026-08-17 发布)。主要语言是 JavaScript,运行要求 Node.js ≥ 22.19(仓库说明这与 dsh 一致,需要 node:sqlitenode:zlib 的 zstd)。package.json 里客户端注入声明了 "platform": "web",同步按钮面向 dsh web。

它解决的问题很具体:把 piopencodecodexclaude-code 的历史会话写成可 resume 的 dsh 会话,并把 pi 的 agent / 模式提示词、opencode 的 agent 转成 $DSH_AGENTS_HOME/skills 下的技能包。导入按源 cwd 挂到对应工作区,标题带来源标签([pi][opencode][codex] 等)。重复导入是幂等的:稳定 id 形如 pi- / oc- / codex- / claude-,已存在的会跳过。

GitHub 仓库页面在笔者查阅时显示 10 颗星;社区目录页当时标注 6 颗星。星标以仓库页面为准,目录数字可能滞后。目录页收录日期为 2026-08-06。

核心功能

下面只写目录页和仓库 README 里已经写明、可以按文档复现的部分。

四种来源,写成可继续的 dsh 会话

每种来源对应默认数据根和一条斜杠命令。存储位置以仓库文档为准:

来源 默认位置 命令
pi ~/.pi/agent/sessions 下的 JSONL /import-pi
opencode ~/.local/share/opencode/opencode.db /import-opencode
codex ~/.codex/sessions 下的 JSONL /import-codex
claude-code ~/.claude/projects 下的 JSONL /import-claude-code

导入不是把文本粘进当前对话框,而是写出与 dsh 持久化后端一致的 JSONL 事件(带校验和的 zstd 帧、项目目录编码)。仓库说明:dsh 自带的 list / load / prepare 可以按原格式读回。打开导入的会话后,文本、推理块和工具调用都在,模型拿到完整历史再继续。

工具调用会写成 tool-call 内容块,并配套 tool/call + tool/result 事件,Trajectory 标签页能渲染工具卡片。FAQ 写明:各来源格式本身通常只保存调用、不保存工具结果,导入用占位 tool/result 让恢复会话时请求仍然合法。--tools-as-text 改成纯文本(无轨迹卡片),--no-tools 则丢弃工具调用。机械记录(step-startpatchcompaction 等)会跳过。

一键同步、斜杠命令、新会话迁移提示

composer 工具行有一个小按钮(英文界面为 Sync,中文界面为 同步),点击后执行 /import-all,结果内联显示。/import-all 会跑四个来源再加 agents。也可以按来源单独导入。

新顶层会话启动时,若该项目还有未导入历史,插件会询问是否迁移。决定按项目记住,全局 agents 的决定也记住,状态写在 $DSH_HOME/import-pi-opencode-state.json。只对带 cwd 的全新顶层会话触发,subagent 不触发;headless 等没有 UI provider 的环境会静默跳过。可用 config: { offerOnStart: false } 关掉询问。

Agents 变成 skills,会话按工作区挂载

/import-agents 把 pi 的 agent / 模式提示词和 opencode 的 agent 写成 $DSH_AGENTS_HOME/skills/<名称>/SKILL.md(默认 ~/.agents/skills/),frontmatter 记录 metadata.source / metadata.kind。名称冲突会改成 <名称>-<来源>(文档举例 k3-reviewer-opencode);已存在的 bundle 只补 SKILL.md,同名同内容则跳过。

导入的会话按原始 cwd 挂到匹配工作区,没有则创建。旧导入可用 /attach-workspaces 补挂。缺少 cwd 的会话在挂工作区时记为跳过,而不是失败(CHANGELOG 0.2.2)。

安装与启用

社区目录页给出的安装命令如下,在 DeepSeek Harness 终端里运行:

dsh plugin add github:Chang-Tong/dsh-import-agents

如需可复现安装,按目录页说明固定 commit 哈希:

dsh plugin add github:Chang-Tong/dsh-import-agents#<commit>

仓库 README 推荐走 npm 包、并指定 web profile(0.2.4 起声明了 dsh.bundle,一键安装会自动激活层,无需再手改 cordis.patch.yml):

dsh plugin --profile web add dsh-import-agents

指定版本、从 GitHub 短格式安装,或卸载,也可以按 README 写:

dsh plugin --profile web add dsh-import-agents@0.2.6
dsh plugin --profile web add github:Chang-Tong/dsh-import-agents
dsh plugin --profile web remove dsh-import-agents

从 Git 安装带源码的插件时,安装过程会跑 prepare 构建。README 说明 pnpm ≥ 10 默认阻止脚本:第一次 add 可能失败并给出 allowBuilds 提示,把提示的 key 写进该 profile 的 pnpm-workspace.yaml 后再跑一次。安装已经构建好的 tarball 或本地 checkout 不需要这一步。

安装后按仓库步骤验证:

  1. 重启 dsh web——主机插件在启动时注册斜杠命令,前端同步按钮由 dsh web 加载。
  2. 刷新页面——重启后旧页面的 RPC 连接已断开,不刷新则按钮和命令会失败。
  3. 确认输入框工具行出现 同步 / Sync 按钮,输入 /import-all 有响应。

目录页和仓库都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。

典型用法

1. 一键导入四种来源和 agents

重启并刷新页面后,点 composer 工具行的 同步 按钮,或直接输入:

/import-all

导入的会话出现在会话列表(按工作区分组);导入的 agent 出现为 skills。一切幂等,想跑多少次都行。若显示「新导入 0,已存在跳过 N」,说明这些会话已经导过,不会重复写入。

只导某一个来源,或只导 agents:

/import-pi
/import-opencode
/import-codex
/import-claude-code
/import-agents

常用选项(README):--limit N--project 子串、--since(ISO 或毫秒)、--no-tools--tools-as-text--tool-truncate N

旧导入没有挂上工作区时:

/attach-workspaces

2. 覆盖默认路径和迁移询问

默认路径和开关可以在插件插入行上覆盖。cordis.patch.yml 里插件 id 为 import-pi-opencode,包名为 dsh-import-agents。仓库列出的配置键如下:

默认值 含义
offerOnStart true 新顶层会话启动时是否询问迁移
piRoot ~/.pi/agent/sessions pi 会话根目录
piAgentRoot ~/.pi/agent pi agents / 提示词根目录
opencodeDb ~/.local/share/opencode/opencode.db opencode SQLite 路径
opencodeConfig ~/.config/opencode opencode agents 根目录
codexRoot ~/.codex/sessions codex 会话根目录
claudeRoot ~/.claude/projects claude-code 项目根目录
skillsRoot $DSH_AGENTS_HOME/skills skills 输出根目录
toolTruncate 1000 工具调用参数截断长度(字符)

关掉启动询问的写法是 config: { offerOnStart: false }

3. 仓库源码里的 CLI(不经过 dsh)

README 提供不启动 dsh 的命令行入口,默认 dry-run,加 --apply 才写入。需要在仓库 checkout 里执行 node import.mjs(该文件在 GitHub 源码根目录;package.json 的 npm files 列表未包含它,不能默认当成装完 npm 包就能用):

node import.mjs all
node import.mjs all --apply
node import.mjs sessions codex --apply --limit 20
node import.mjs agents --apply
node export.mjs

all 与 GUI 里的 /import-all 语义一致:四个来源加 agents(CHANGELOG 0.2.5)。export.mjs 把会话写成 Markdown,默认输出到 $DSH_HOME/exports/<来源>/<会话id>.md,支持 --source--project--limit--since--out--no-reasoning--no-tools

适用场景与注意事项

比较适合这几类用法:

  • 已经在 pi、OpenCode、Codex 或 Claude Code 里积累了项目会话,希望迁到 DeepSeek Harness,还想保留推理块和工具调用轨迹。
  • 需要把 pi / OpenCode 的自定义 agent、模式提示词变成 dsh skills,并留下 metadata.source / metadata.kind 溯源。
  • 希望用 Web UI 的同步按钮或 /import-all 做幂等同步,而不是手工拷 JSONL。

使用前要注意:

  1. 权限与许可证。插件以当前 dsh 进程权限运行,安装时可能执行代码。安装前阅读 仓库源码 和 MIT 许可证。
  2. 运行时版本。需要 Node.js ≥ 22.19。同步按钮和客户端 bundle 面向 web profile;headless 环境会跳过迁移询问。
  3. 重启后必须刷新。重启 dsh web 后旧页面的 RPC 已断开,未刷新时点同步或跑斜杠命令都会失败。
  4. 工具结果可能是占位。源格式往往不存工具结果。导入保留调用并写占位 tool/result,轨迹能出卡片,但结果内容并不等于原工具真实输出。
  5. OpenCode 缺库不会崩。CHANGELOG 0.2.1:opencode 读取器在数据库不存在时按「无会话」处理,而不是崩溃。
  6. 不要和目录页命令混用猜测。目录页安装入口是 dsh plugin add github:Chang-Tong/dsh-import-agents;README 推荐的 npm 写法带 --profile web。两者都能装,按你用的 profile 选择,不要自行拼接未经页面写出的命令。

小结

dsh-import-agents 把 pi、OpenCode、Codex、Claude Code 的会话变成 DeepSeek Harness 里可 resume 的会话,并把对应 agent / 提示词落成 skills。同步按钮、斜杠命令和新会话迁移提示覆盖了日常搬迁路径。它是社区 MIT 插件,不是 DeepSeek 官方组件;目录页只负责收录和给出安装命令。

安装入口以目录页为准:

dsh plugin add github:Chang-Tong/dsh-import-agents

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-import-agents/

GitHub:https://github.com/Chang-Tong/dsh-import-agents

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

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

小夜