
DSH Chat Import
A DeepSeek Harness plugin that imports conversation history from 18+ AI coding tools, so you can continue right where you left off.
All sessions, continued in DSH.
Intro
DSH Chat Import imports conversation history with full context from other agents, turning it into a seamlessly resumable DeepSeek Harness session.
Now covers import from 21 agents: Claude Code, Codex, ChatGPT, Cursor, Gemini, Antigravity CLI, Reasonix, opencode, MiMo Code, ZCode, Grok Build, OpenClaw, Pi Coding Agent, Hermes, Kimi CLI / Kimi Code, Kilo Code, Qoder CLI, WorkBuddy, Qwen Work CN (千问办公) and DSH session logs.
Export back to: Claude Code, Codex, Kimi Code.
Supported Agents
Claude Code |
Codex |
ChatGPT |
Cursor |
Gemini CLI |
Antigravity CLI |
Reasonix |
OpenCode |
MiMo Code |
Kilo Code |
ZCode |
|
Grok Build |
OpenClaw |
Pi Coding Agent |
Hermes |
Kimi CLI |
|
Qoder CLI |
WorkBuddy |
Qwen Work CN |
DSH |
Install
dsh plugin --profile web add dsh-chat-import # npm package
dsh plugin --profile web add -w link:/path/to/dsh-chat-import # local checkout (symlink)
Usage
- Import — pick the conversations to import from the "Import sessions" panel in the bottom-right of the GUI and import with one click, or have your agent call the context tool:
import_chat({ format: "claude", path: "~/.claude/projects" })
import_chat({ format: "chatgpt", path: "~/Downloads/chatgpt-export/conversations.json" })
import_chat({ format: "local-jsonl", path: "D:\downloads\session.jsonl" })
Reasonix directory imports conservatively collapse only recovery ancestors proven by both a strict semantic prefix and an explicit parent_id lineage. Ambiguous or divergent files remain separate; use lineageMode: "physical" for one session per JSONL.
Resume — refresh the session list, open the imported session, and keep chatting from where the source left off.
Sync (optional) — the panel's "Sync" tab offers bidirectional incremental sync, off by default. Sub-agent conversations are filtered out by default in both directions.
Tool injection (optional) — the "Session Import" settings section exposes three
injectToolslevels: Minimal (default, keeps only theimport_chatentry tool resident; low-frequency management tools stay out of context), Full (all 13 tools), and Off (invisible to the agent; the GUI panel still works). Tool descriptions are slimmed down to selection-time essentials; behavioral details ride along in execution results and error text, only when needed.
Full tool / command usage (parameters, examples, edge cases) lives in docs/USAGE.md.
Companion tool: config migration
Only need to migrate configuration (skills, hooks, global settings) rather than conversation history? dsh-movein handles config migration and complements this plugin -- DSH Chat Import only handles conversation history, and each tool works standalone. Its first-migration guide (中文) walks through a preview-first, apply-second, verify-each-step flow.
The combined flow of the two tools has not been jointly validated, and cross-linking is not a mutual endorsement; check sources, targets, duplicate-import and retraction boundaries for each tool separately.
This plugin's import_agents is a lightweight asset mover (it persists pi/opencode/Claude/Codex agents, prompts and skills as DSH skills); for full config migration (hooks, permission rules, settings), use dsh-movein.
Features
| Capability | Entry points | Description |
|---|---|---|
| Batch import | import_chat (20 formats) · scan_discover · sidebar panel |
Import 19+ sources with one tool; each conversation becomes its own session |
| Import history & purge | sidebar panel History tab | View imports.json records; remove plugin-created sessions (with confirmation) |
| Full-fidelity resume | Imported sessions | Tool calls & results, reasoning, titles, models and timestamps carry over |
| Export back | export_chat (format: claude / codex / kimi) |
Serialize DSH sessions back to Claude / Codex / Kimi |
| Bidirectional sync | panel "Sync" tab | Incremental sync in both directions (external ↔ DSH), off by default |
One documented exception to full fidelity: failed ghost retry steps. When a tool call never received its result and the very next step re-emits the same call id verbatim, the dead step is dropped at import — the result already pairs with the re-emitted call. Duplicate call ids in the imported log would hard-fail DSH's conversation folding (a second
startfor the same id), swallowing the whole trajectory after the first duplicate. See thedroppedRetryStepscounter on the converter result.
Docs
| Document | Description |
|---|---|
| Usage Reference | Full parameters, examples and edge cases for every tool / command |
| Interchange protocol | Interchange v1 protocol and bundle format |
| Changelog | Version history |
| Roadmap | Shipped / planned |
| Contributing | Development setup, commit rules, security & privacy |
No comments yet. Be the first to write one.