claude2dsh
将 Claude Code 会话、技能与插件资产导入为 DSH 原生可续聊会话,并支持将 DSH 会话导出或同步回 Claude Code JSONL。
安装
dsh plugin --profile web add claude2dsh
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
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)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:6,最后更新 2026-09-17