Bundle
dsh-plugin-claude-import
Import Claude Code sessions into DeepSeek Harness: agent tools (claude_session_list / claude_session_import) plus a Web GUI one-click import dock.
- Source
- changhang155
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 14 days ago
Readme
# dsh-plugin-claude-import
Import [Claude Code](https://docs.anthropic.com/en/docs/claude-code) sessions (`~/.claude/projects/*.jsonl`) into [DeepSeek Harness](https://github.com/deepseek-ai/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](https://github.com/changhang155/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)
```sh
dsh plugin --profile web add dsh-plugin-claude-import
```
The 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:
```sh
dsh --profile web --dump-config | grep claude
```
### Manual (into an existing profile)
```sh
cd ~/.dsh/profiles/web
pnpm add dsh-plugin-claude-import
```
Then register the row in `~/.dsh/profiles/web/cordis.patch.yml`:
```yaml
- 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:
```sh
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
```sh
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.js
```
Layout:
- `lib/index.js` — host half: registers the two agent tools (`defineTool` from `@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`](https://github.com/topics/dsh-plugin) topic for discoverability.
Install
dsh plugin --profile web add github:changhang155/dsh-plugin-claude-import
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-plugin-claude-import from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.