📥 DSH Chat Import
Import 15+ external agent conversation histories into DeepSeek Harness as full-fidelity, resumable sessions — and export / sync back to Claude Code, Codex, Kimi, or a portable interchange bundle.
💡 Intro · 🚀 Install · ✨ Features · 🗂 Supported sources · 🛠 Usage · 🔑 Key behaviors · 📚 Docs · ⭐ Star History · 🤝 Contributing
15+ agent sources, one plugin — full-fidelity import into DeepSeek Harness, seamless resume, matrix interop / backup / handoff on the way out.

Changelog: CHANGELOG.md · Roadmap: ROADMAP.md · Interchange protocol: docs/INTERCHANGE.md
💡 Intro
dsh-chat-import imports conversation histories from Claude Code, Codex, ChatGPT, Cursor, Gemini, Reasonix, opencode, ZCode, Grok Build, OpenClaw, Pi Coding Agent, Hermes, Kimi CLI / Kimi Code, Qoder CLI and DSH session logs — tool calls, reasoning and all — as full-fidelity, resumable DeepSeek Harness sessions. Source files are read read-only (never rewritten), the DSH engine is never touched, and every import becomes a fresh session grouped into the workspace of its source cwd.
The reverse direction is covered too: export_claude serializes a DSH session back into a Claude Code JSONL transcript that Claude Code can load with --resume (read-only — your DSH log is never modified), sync_to_claude incrementally appends a session's new turns back to a Claude Code file — guarded, never silently overwriting — and the same matrix extends to Codex rollouts (export_codex) and Kimi wire files (export_kimi), plus a portable interchange bundle (export_bundle / restore_bundle) with SHA-256 fingerprints and cross-machine restore.
Requires Node.js ≥ 22.13, targets dsh 0.1.x (tested on 0.1.0-rc.6 / 0.1.0-rc.7).
🚀 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)
Then:
- Import — call any
import_*tool in a DSH session:
import_claude({ path: "~/.claude/projects" })
import_chatgpt({ path: "~/Downloads/chatgpt-export/conversations.json" })
import_local_jsonl({ path: "D:\downloads\session.jsonl" })
- Resume — refresh the session list, open the imported session, and keep chatting from where the source left off.
- Discover & batch —
scan_discover()previews read-only; the sidebar "Import sessions" panel browses by workspace and supports multi-select import;/import-allbatch-imports everything. - Sync (optional) — the panel's "Sync" tab offers bidirectional incremental sync (external → DSH, DSH → external), default off.
Uninstall: remove the
import-claudeinsert line from your profile's bundles and restart dsh; imported sessions stay untouched and the plugin never auto-deletes.
✨ Features
| Capability | Entry points | Description |
|---|---|---|
| Batch import from 15+ sources | import_* (16 tools) · scan_discover · sidebar panel · /import |
A file, a directory or a whole database — each conversation becomes its own session |
| Full-fidelity resume | Imported sessions | Tool calls & results, reasoning, titles, models and timestamps carry over; sessions group into the source cwd workspace |
| Matrix export | export_claude / export_codex / export_kimi |
Serialize DSH sessions back to Claude / Codex / Kimi formats; every lossy item is reported |
| Portable backup | export_bundle / restore_bundle |
Interchange bundle with dual SHA-256 fingerprints, restorable across machines |
| Incremental write-back | sync_to_claude |
Appends new complete turns back to a Claude Code file — guarded, never overwriting |
| Agent asset migration | import_agents |
Converts pi / opencode / Claude / Codex agents, prompts, skills, instructions into persistent DSH skills |
| MCP mirror plan | import_mcp / /mcp-status |
Reads Claude / Codex MCP servers and generates a reviewable DSH MCP client YAML snippet |
| Settings translation | import_settings / /settings-suggest |
Turns Claude settings / Codex config into DSH migration suggestions (read-only) |
| Handoff summaries | /resume-claude / /resume-codex |
Treats external transcripts as untrusted history and injects a handoff summary into the current session |
| Read-only audit / checkup | verify_session / doctor / CLI dsh-chat-import doctor |
Structural audit and migration health check |
| Idempotency & protection | All import tools | expectedHash / restamp / context-budget protection; unchanged sources skip, grown sources append |
🗂 Supported sources
| Source | Storage location | Import tool |
|---|---|---|
| Claude Code | ~/.claude/projects/<slug>/<sessionId>.jsonl |
import_claude |
| Claude-3p (new client) | %LOCALAPPDATA%\Claude-3p\claude-code-sessions (metadata → JSONL via cliSessionId) |
import_claude |
| Codex / ChatGPT CLI | ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl |
import_codex |
| ChatGPT (web export) | anywhere you saved the export — conversations.json |
import_chatgpt |
| Cursor | ~/.cursor/projects/<slug>/agent-transcripts/<id>/<id>.jsonl |
import_cursor |
| Gemini CLI | ~/.gemini/history/<slot>/chats/session-*.json |
import_gemini |
| Reasonix (CLI + desktop) | ~/.reasonix/sessions/desktop-*.jsonl · %APPDATA%\reasonix\projects\<slug>\sessions\*.jsonl |
import_reasonix |
| opencode | ~/.local/share/opencode/opencode.db |
import_opencode |
| ZCode (z.ai CLI) | ~/.zcode/cli/db/db.sqlite |
import_zcode |
| Grok Build | ~/.grok/sessions/<project>/<session_id>/ |
import_grokbuild |
| OpenClaw | ~/.openclaw/agents/<agent>/sessions/*.jsonl |
import_openclaw |
| Pi Coding Agent | ~/.pi/agent/sessions/--<cwd>--/<timestamp>_<uuid>.jsonl |
import_pi |
| Hermes | ~/.hermes/ (Windows %LOCALAPPDATA%\hermes) |
import_hermes |
| Kimi CLI / Kimi Code | ~/.kimi/sessions/<workdir-md5>/<sessionId>/wire.jsonl · ~/.kimi-code/sessions/<workspaceId>/<sessionId>/agents/main/wire.jsonl |
import_kimi |
| Qoder CLI | ~/.qoder/projects/<encoded-project>/<sessionId>.jsonl (subagents in <sessionId>/subagents/*.jsonl) |
import_qoder |
| DSH session logs | ~/.dsh/sessions/<encoded-workspace>/<sessionId>/session.jsonl(.zstd) |
import_dsh |
| Any local JSONL | any .jsonl file / directory (auto-detected) |
import_local_jsonl |
Each import preserves what the source actually records; anything a format cannot preserve is explicitly flagged in the import report. Per-format details and edge cases live in Usage Reference.
🛠 Usage
All import_* tools share the same path semantics: a single file becomes one session, a directory is scanned recursively for batch import. Common options: preview (zero side effects), force (new full copy), sessionId (override target id), expectedHash (SHA-256 verification), restamp (shift timestamps to now), workspaceMode / workspaceDir (grouping control).
import_claude({ path: "C:\Users\<you>\.claude\projects\<slug>\<sessionId>.jsonl" })
import_opencode({ path: "C:\Users\<you>\.local\share\opencode\opencode.db" })
import_local_jsonl({ path: "D:\downloads\session.jsonl", format: "claude" })
import_chatgpt / import_opencode / import_zcode / import_hermes always return batch results — one file / database contains every session, and each conversation becomes its own session in a single call.
Full per-tool / per-command usage lives in docs/USAGE.md.
🔑 Key behaviors
- Read-only import — source transcripts and databases are never rewritten; imported DSH history is append-only.
- Idempotent + incremental — unchanged sources skip without re-reading; grown sources append only new turns; shrinking is detected and reported.
- Auto workspace grouping — sessions land in the workspace of their source
cwd(authoritative mapping → slug decode → home-directory sandbox guard; falls back to the source file's directory when the path does not exist locally). - Fail loudly — malformed lines, suspected secrets, format limitations and export degradations are all reported; every persisted session gets a structural self-check.
- Sandbox — reading sources or writing exports outside the workspace requires the session sandbox to allow that path.
📚 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 |
⭐ Star History
🤝 Contributing
Contributions welcome — fork the repo, create a feature/<name> branch, and open a PR. Full guide: CONTRIBUTING.md.
- Tests:
npm test· Cross-platform guard:npm run check:linux - Repo conventions: AGENTS.md — conventional commits, bilingual READMEs must stay in sync, plugin consumes public dsh host services only, multi-session file-claim protocol.
📄 License
MIT — see LICENSE.
还没有评论,来写第一条。