Introduction¶
Need to migrate a DeepSeek Harness conversation to another computer, deployment environment, or new workspace? DSH’s built-in /export command generates .zip archives and .l log files, but direct imports often cause session ID conflicts, data overwrites, or errors during parsing.
The dsh-session-import plugin adds conversation import functionality to the DSH Web interface. It reads and validates exported files, restores their contents as a new conversation, and supports selective state synchronization, rollback protection, and SHA-256 verification.
Core Features¶
Interface and Interaction
* Adds an Import conversation button to the new-session page, with file selection and drag-and-drop support.
* Provides a preview before import, showing the title, message count, tool activity, turn count, original workspace, model, and conversation state.
* Handles request cancellation, focus restoration, and responsive layout on the browser side.
Validation and Security
* Supports .zip archives and DSH /export-generated .l logs.
* Displays SHA-256 fingerprints and can require matching expectedHash.
* Validates ZIP CRC-32, central directory metadata, entry boundaries, and local header names, rejecting encrypted, multi-disk, and ZIP64 formats.
* Automatically rolls back when persistence, workspace attachment, or load validation fails, preventing corrupted sessions from being left behind.
Import and Synchronization
* Always assigns a new conversation ID and never overwrites existing conversations.
* Supports setting the target workspace, custom title, original timestamps, or resetting to the current time.
* Provides a no-side-effect validation mode (dryRun=1) and an immediate restore mode (open=1).
* Supports selectively synchronizing model, reasoning effort, agent presets, permissions, sandbox, approval policies, and planning mode.
Installation and Enablement¶
Before installing, ensure that your environment has Node.js (version 24 or 22.19.x recommended), Git, and pnpm installed. Network access to registry.npmjs.org and github.com is required.
Installation via npx is recommended (no DSH source code required):
npx --yes -p @deepseek-ai/dsh dsh plugin --profile web add github:JuneLearn/dsh-session-import
After installation, start the Web interface and you will see the Import conversation button on the new session page.
Usage Steps¶
- Open DSH Web and click
New sessionat the top of the left sidebar. - Above the workspace controls, locate the workspace and mode controls, then click
Import conversationto the right ofStandard mode. - Select or drag and drop a
.zipor.lfile generated by DSH/export. - Check the structural verdict, SHA-256, counts, original workspace, and syncable state.
- Select the target workspace and adjust the title, relabeling, and synchronization options as needed.
- Click
Start import; the new conversation will appear in the sidebar and open automatically.
Notes and Limitations¶
- File size limit: The uploaded and extracted root session log is limited to 256 MB.
- Entry count limit: A single ZIP archive may contain up to 10,000 entries, and the expanded root log may contain up to 1,000,000 events.
- Validation scope: Structural validation covers event sequence, timestamps, types, references, round/step and tool call pairing, message envelopes,
surfaceOp, andsourceEventSeqs. - Hash signature: The SHA-256 value proves equality with the provided fingerprint, but DSH exports are not digitally signed, so authorship is not attested.
- Permissions and data: Uploaded files are parsed locally in memory and are never sent to external services; the plugin does not initiate outbound network requests or access API keys or other credentials.
- Deletion limitations: Deletion permissions are reserved only for the current DSH process. Imported conversations continue to work after restart, but can no longer be deleted via the plugin rollback endpoint.
Conclusion¶
dsh-session-import provides a secure and controllable solution for conversation migration, suitable for developers who need to back up, reproduce across environments, or organize historical conversations. For more details, see the GitHub repository or the community catalog.