dsh-plugin-claude-import
Import Claude Code sessions (~/.claude/projects/*.jsonl) into DeepSeek Harness as continuable context — an auto-summary chain, the last task, the file footprint, and the tail state — rather than an event replay.
The plugin is the DSH-native port of claude-code-to-dsh (a zero-dependency Python CLI that produces the same seed / markdown documents).
Features
- Agent tools (host half):
- claude_session_list — list sessions under ~/.claude/projects (id / project / title / mtime / size / message stats). - claude_session_import — import one session as a seed context block (paste-ready for a new session) or a full markdown continuation document; with createSession=true it creates a new DSH session in the Claude session's project directory and delivers the context as its first message.
- Web GUI (client half): a "Claude 导入" action in the conversation header — enter a session id (empty = most recent) and the plugin creates a new DSH session, opens it, and seeds the import instruction.
Requirements
dsh≥0.1.0-rc.6(npm:npx @deepseek-ai/dsh web), Node.js ≥ 18.- A local Claude Code installation with sessions under
~/.claude/projects(the plugin reads them from the dsh host process).
Installation
One command (bundle flow, recommended)
dsh plugin --profile web add dsh-plugin-claude-importThe package declares dsh.bundle, so dsh plugin links it, appends it to the profile's bundles, and applies its patch layer (which inserts the plugin row). Restart dsh web and verify:
dsh --profile web --dump-config | grep claudeManual (into an existing profile)
cd ~/.dsh/profiles/web
pnpm add dsh-plugin-claude-importThen register the row in ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- id: claude-import
name: 'dsh-plugin-claude-import'Restart dsh web.
From GitHub
No build step is required (plain JS), so a git install works without a prepare script:
dsh plugin --profile web add github:changhang155/dsh-plugin-claude-import#<sha>If pnpm refuses to run scripts, allow the build in the profile's pnpm-workspace.yaml (allowBuilds: dsh-plugin-claude-import: true) and re-run the add.
Peer dependencies
The plugin uses @deepseek-ai/cordis, @deepseek-ai/dsh-tools, @deepseek-ai/dsh-host-apiproxy, and @deepseek-ai/schemastery as peers, resolved from the dsh installation. When installing into a fresh profile, ensure those are present (the web profile already bundles them; a bare profile may need pnpm add of the peers or symlinks to the dsh install's node_modules/@deepseek-ai).
Usage
From the agent: ask for the list, then import:
请列出 Claude Code 的历史会话。
把会话 <id> 导入为 seed,并在其项目目录下新建一个 DSH 会话。The tool claude_session_import accepts:
| parameter | meaning |
|---|---|
sessionId | 8-char prefix, full id, or a full .jsonl path |
format | seed (default) or markdown |
createSession | create a new DSH session in the Claude project dir and deliver the context as its first message |
From the Web GUI: click Claude 导入 in the conversation header, optionally type a session id, and press 导入. A new session is created and opened; its agent reports the title, touched files, and open threads.
Compatibility
DeepSeek Harness is in developer preview — compatibility-breaking changes are expected. This plugin targets the 0.1.0-rc.6 npm line (peer ranges use ^0.1.0-rc.6). If a later rc breaks the client contract (window.__ModuleLoader__ / slot injection), update the plugin or pin your dsh version.
The import is heuristic: session titles come from Claude's ai-title / summary rows; the "touched files" list only covers Write/Edit (and Read) tool calls; local-command-mode sessions (mostly command injection) are detected and annotated rather than misread as conversation.
Development
git clone https://github.com/changhang155/dsh-plugin-claude-import
cd dsh-plugin-claude-import
npm test # node --test tests/ (no dependencies)
node --check lib/index.js lib/client.js lib/parse.jsLayout:
lib/index.js— host half: registers the two agent tools (defineToolfrom@deepseek-ai/dsh-tools).lib/client.js— client half: the Web GUI dock (loaded via the client runner).lib/parse.js— pure-Node Claude Code JSONL parser (no dependencies).cordis.patch.yml— the bundle patch layer that activates the plugin.
License
MIT — see [LICENSE](LICENSE). Mark the repository with the dsh-plugin topic for discoverability.