claude2dsh
Import Claude Code sessions, skills and plugin assets into DSH as native resumable sessions, and export or sync DSH sessions back to Claude Code JSONL.
Install
dsh plugin --profile web add claude2dsh
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
Claude2DSH
Move Claude Code conversations, skills, agents, commands, memory, and MCP servers into DeepSeek Harness as native, resumable sessions — and take DSH turns back to Claude Code JSONL when you need to.





[简体中文](README.zh.md)
Claude Code is the first source adapter in a multi-tool migration layer. Claude2DSH preserves the useful conversation structure, writes through DSH's native persistence APIs, and keeps the original Claude directory read-only by default.
[!IMPORTANT]
0.3.0requires DSH>=0.1.5-rc.1 <0.2.0and no longer starts on0.1.0-rc.x. DSH 0.1.5 replaced the service-level session API with per-session handles and moved the Session log to format v3; 0.2.x releases predate that change. Upgrade the harness (npm install -g @deepseek-ai/dsh@latest) or stay onclaude2dsh@0.2.0-rc.5.
Why Claude2DSH
Resume natively · Bring more than chat · Return without risking the source
Claude turns become DSH-native session events that DSH can inspect, replay, and resume. · Skills, user-global instructions, project memory, tool-output sidecars, subagent transcripts, and plugin assets have explicit migration paths. · Export and sync target a safe copy under $DSH_HOME by default. Concurrent edits pause instead of overwriting either side.
The governing principle is zero-configuration by default: the default path produces a visible result without requiring users to understand profiles or bundles first, while dangerous write-back remains explicitly gated.
flowchart LR
A["Claude Code JSONL<br/>~/.claude/projects<br/>read-only"] --> B["Claude adapter<br/>discover · parse · normalize"]
B --> C["Normalized session IR<br/>turns · steps · tools · images"]
C --> D["DSH event synthesis<br/>native session events"]
D --> E[("DSH sessions<br/>$DSH_HOME/sessions")]
E --> F["Export / sync<br/>safe copy"]
F --> G["Claude Code JSONL<br/>resumable transcript"]
E --> H["Settings UI + tools<br/>import · export · sync · merge"]
Quickstart
Requirements: Node.js >=22.19.0, pnpm, and the dsh CLI.
# Install the published plugin into DSH's built-in headed profile dsh plugin --profile web add @claude2dsh/plugin@0.3.0 # Start the browser UI; the terminal prints the local URL dsh web
Then:
1. Open the URL printed by dsh web.
2. On a fresh DSH installation, choose Configure later if the model API-key prompt appears; migration itself does not call a model.
3. Open Settings → Claude2DSH.
4. Choose a language, confirm the Claude sessions directory, and optionally include subagent/workflow transcripts.
5. Click Preview import, inspect the counts and item report, then click Run import.
flowchart LR
S1["Install plugin<br/>dsh plugin --profile web add ..."] --> S2["Start UI<br/>dsh web"]
S2 --> S3["Open Settings → Claude2DSH"]
S3 --> S4["Preview import"]
S4 --> S5["Run import"]
S5 --> R["Native DSH sessions<br/>listed in Session sources"]
The first section of Settings → Claude2DSH is the migration guide; Chinese is the default UI language and English is selectable. If port 3080 is already in use, run dsh web --port 0 and open the URL printed by DSH.
Preview is read-only and returns an itemized plan before any DSH write.
This is what a successful run looks like. The screenshot comes from a real Claude2DSH UI using a synthetic, privacy-safe Claude transcript.
Repository helper
If you cloned this repository, the helper performs the same install into the main web profile and starts the UI on DSH's default local port (3080):
bash scripts/install-claude2dsh.sh
Set CLAUDE2DSH_PROFILE only when you intentionally want a custom profile. Headless profiles expose the sam
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::6,最后更新 2026-09-17