dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 可视化跨设备会话迁移插件|Visual cross-device session migration with drag-and-drop ZIP, JSONL, and folder imports.
English | 简体中文
A visual cross-device session migration plugin for DeepSeek Harness. Export a session on one device, then import its ZIP, JSONL, or unpacked folder into a selected workspace on another device.
session.jsonl, or complete export folder onto the page, then choose a target workspace.cwd to the destination workspace.subagents/<id>/session.jsonl descendant.decodeStorageRecord() and validates each reconstructed log with Session.create() before writing./session-import remains available for local, scripted workflows.0.1.1-rc.2 or a compatible build.Clone this repository on the machine running Harness:
git clone https://github.com/Suixin04/dsh-session-migrator.git
cd dsh-session-migrator
npm install
npm run build:client
Install it into the Web profile:
dsh plugin --profile web add /absolute/path/to/dsh-session-migrator
Restart the existing dsh web process. The Import sessions action then appears at the bottom of the sidebar.
Updating
package.json, Host code, or the profile composition requires a Harness restart. Rebuildingclient.jsalone may be picked up only when the matching client-plugin watcher is running.
Harness already provides session export. Open the source session and either:
/export, orThe browser downloads a file similar to:
dsh-session-session-xxxxxxxx.zip
The archive normally includes the root session, all descendant subagent sessions, and referenced image attachments.
The interface follows the current Harness language:
Use the current session's workspace:
/session-import "/absolute/path/dsh-session-xxx.zip"
Choose another existing workspace explicitly:
/session-import "/absolute/path/dsh-session-xxx.zip" --workspace "/absolute/path/to/project"
An unpacked export directory or a single JSONL file is also accepted:
/session-import "/path/to/unpacked-export" --workspace "/path/to/project"
/session-import "/path/to/session.jsonl" --workspace "/path/to/project"
When none of the imported IDs exists locally, original session IDs are preserved.
When any ID conflicts, the plugin clones the complete imported tree:
id and parentSession fields are remapped;senderSessionId provenance fields are remapped;User/model-authored text, historical tool arguments, and tool-result text are intentionally not searched and replaced. They are immutable conversation content, and blindly rewriting ID-like strings could corrupt meaning. If a continued cloned conversation tries to reuse an old subagent ID, call list_agents to obtain the current cloned address.
session.jsonl
subagents/
<session-id>/
session.jsonl
media/
<attachment-id>.<png|jpg|jpeg|webp|gif>
A ZIP may contain one extra top-level directory. The importer detects and strips that single wrapper when locating the root session.jsonl.
npm install
npm run build:client
npm test
Important files:
index.js — Host plugin, /session-import, and POST /api/session.import.core.js — parsing, validation, attachment restore, ID remapping, and persistence.client-src.js — React UI source and drag/drop workflow.client.js — prebuilt Harness lazy-CJS browser bundle.build-client.mjs — browser bundle build script.cordis.patch.yml — DSH profile bundle patch.MIT