Overview¶
The core architecture of DeepSeek Harness (DSH) is “everything is a plugin.” In multi-workspace management scenarios, you often need to migrate an existing session to another registered workspace. DSH does not natively support direct session migration, which usually means restarting the conversation or manually copying files. The dsh-session-workspace plugin solves this pain point by adding a “Move to another workspace” option to the session sidebar.
What It Is¶
This is a DSH plugin maintained by Unintendedz. It allows moving an existing DeepSeek Harness session in the DSH Web process to another registered workspace. During the move, the session ID remains unchanged, and the conversation history (JSONL generated file) is fully preserved.
Core Features¶
The plugin provides the following capabilities:
- Session migration: Move an existing session to another workspace without changing the session ID or conversation history.
- Environment switching: Update the current working directory (
cwd) persisted for the session. - Artifact movement: Move the current JSONL generated file.
- Index refresh: Update DSH’s workspace index.
- Account update: Update account information associated with the workspace.
- Safety mechanisms:
- Only cold sessions can be moved.
- Native write leases are used to exclude other DSH writers.
- The source version is checked before migration.
- If workspace update fails, roll back to the original state.
- Existing artifacts in the target location are never overwritten.
Installation and Activation¶
Before installing, ensure your DeepSeek Harness version is 0.1.5-rc.1. After installation, restart the DSH Web process.
dsh plugin --profile web add github:Unintendedz/dsh-session-workspace#v0.2.0
Typical Usage¶
- Switch to another session to ensure the target session is no longer active or running.
- Open the session sidebar menu for the target session.
- Select Move to another workspace.
- Select the destination workspace and confirm.
Use Cases and Notes¶
- Session state: Only cold sessions (not opened or not running) can be moved. If a session is active, switch to another session and try again after it has been closed.
- Destination workspace: The destination must be a workspace registered in DSH.
- Persistence backend: The plugin requires the session to use the default per-session JSONL persistence backend (
.jsonl.zstdor.jsonl). It rejects shared SQLite session persistence because independent artifacts cannot be safely relocated. - File conflicts: Existing artifacts in the destination workspace are never overwritten.
- Version compatibility:
- Plugin
0.2.0requires DSH0.1.5-rc.1. - Plugin
0.1.1works with DSH0.1.1-rc.2.
- Plugin
- Node.js environment: A Node.js environment is required, and it must support the Zstandard API used by DSH (usually included in runtimes supported by DSH).
- Backup location: Each migration retains a persistent copy of the original generated file under
<DSH_HOME>/session-workspace-backups/<uuid>/.
Short Conclusion¶
By providing an intuitive migration option in the session sidebar, this plugin simplifies session management across DSH workspaces. For developers who need to move historical sessions between workspaces, it offers a safe and low-risk migration capability. The plugin source code and documentation are available here: Unintendedz/dsh-session-workspace.