Introduction¶
If you use Claude Code and DSH (DeepSeek Harness) simultaneously, you have likely encountered the same problem: session history on one side, skills, global instructions, and project memory on the other. Claude Code sessions are JSONL transcripts, while skills and memory are scattered in various files under ~/.claude. After switching to DSH, these assets cannot be directly continued, and manual transfer risks losing structure.
DSH’s philosophy is “everything is a plugin.” claude2dsh is a migration plugin built on this principle: it reads Claude Code sessions and assets and writes to DSH’s native persistence; when a reverse operation is needed, it can also export DSH sessions back to Claude Code. Below introduces its features, installation, and typical usage.
Overview¶
claude2dsh is a DSH plugin maintained by kirkchinese, under the MIT license, with the current release version being 0.2.0-rc.5 (release candidate). According to the listing in the awesome-dsh-plugin list, it belongs to the Sessions & Messages group.
One-sentence positioning: Migrating Claude Code sessions, skills, memory, and plugin assets into DSH’s natively continuous sessions, and allowing the export of DSH sessions back to Claude Code JSONL when necessary.
Two design points worth clarifying first:
- Zero-config by default: The default paths can produce visible results without needing to understand profiles or bundles; dangerous writes are explicitly gated.
- Source directory read-only: The original Claude directory is kept read-only by default; exports/syncs write to safe copies under
$DSH_HOME; when editing concurrently, the plugin pauses rather than overwriting either side.
Core Features¶
Session Import¶
claude2dsh_import migrates Claude sessions into DSH native session events. Migrated sessions can be checked, replayed, and continued by DSH. After execution, it returns a categorized count: previewed / imported / already / appended / skipped / failed. You can see at a glance which items already exist, which are newly imported, and which were skipped or failed.
Skill Import¶
claude2dsh_import_skills copies Claude skills into DSH native discoverable assets, appearing under $DSH_HOME/skills, and entering DSH’s skill discovery process.
Global Instruction Migration¶
claude2dsh_import_context migrates user-level ~/.claude/CLAUDE.md into DSH global instructions. This step previews before writing and does not overwrite $DSH_HOME/AGENTS.md if the content differs.
Project Memory Migration¶
claude2dsh_import_memory turns project MEMORY.md and memory/*.md into DSH discoverable content, creating a DSH skill package for each project.
Export and Sync¶
The reverse direction is also possible: exporting DSH sessions back into continuous Claude Code JSONL transcripts. By default, it writes to a safe copy under $DSH_HOME without touching the original Claude directory.
Browser UI¶
The capabilities above have corresponding entry points in the browser UI started by dsh web: Settings → Claude2DSH provides a migration wizard, covering import, export, sync, and merge.
Installation and Activation¶
Environment requirements: Node.js >=22.19.0, pnpm, and the dsh CLI.
dsh plugin --profile web add @claude2dsh/plugin@0.2.0-rc.5
dsh web
The first line installs the plugin into DSH’s web profile, the second line starts the browser UI. The terminal will print the local URL, which you can open in your browser.
If the default port 3080 is occupied, use the following command instead; DSH will switch to an available port and print the URL in the terminal:
dsh web --port 0
If you have cloned the repository, you can also use the repository’s helper script, which has the same effect: install to the main web profile and start the UI on DSH’s default local port 3080.
bash scripts/install-claude2dsh.sh
Typical Usage¶
After installation, simply follow the wizard:
- Open the URL printed by
dsh weband go to Settings → Claude2DSH. - Select the interface language, confirm the Claude session directory, and optionally include subagent/workflow transcripts.
- First click Preview import. The preview is read-only and returns a step-by-step plan and categorized counts; at this point, no DSH writing has occurred.
- After checking the report, click Run import. Successfully imported sessions will appear in DSH’s Session sources list and can be continued directly.
The first part of the wizard is the migration guide; the default interface is in Chinese, with English available as an option.
Applicable Scenarios and Notes¶
Suitable for: Developers migrating from Claude Code to DSH, or those using both sides in parallel, who wish to retain session history rather than starting from scratch; also suitable for scenarios where Claude skills, global instructions, and project memory are moved as a whole into DSH.
Notes before use:
- 0.2.0-rc.5 is a release candidate, not the official version.
- The original Claude directory is read-only by default; exports/syncs write to safe copies under
$DSH_HOMEby default; dangerous writes are explicitly gated. When editing concurrently, the plugin chooses to pause rather than overwrite either side. - The Awesome badge in the README only indicates being listed in the awesome-dsh-plugin list (Sessions & Messages group); the automatic radar awesome-dsh-plugins has not marked it as runtime-verified, so the badge does not represent this layer of verification.
- Like all DSH plugins, the plugin runs with the permissions of the current dsh process. Before installation, it is recommended to review the source code and license (this project is MIT) to ensure there are no issues before installing into a common profile.
Conclusion¶
What claude2dsh does is focused: it migrates Claude Code’s sessions, skills, global instructions, and project memory into DSH, keeping the source directory read-only, explicitly gating writes, allowing previews, and supporting reverse direction. For developers moving between two sets of tools, this is a direct way to take historical assets with them.
- Directory Page: https://www.skillhub.cn/plugins/kirkchinese/claude2dsh
- GitHub: https://github.com/kirkchinese/claude2dsh