DeepSeek Harness natively supports drag-and-drop reordering of sessions within the same workspace in the sidebar, but when a session is dragged to another workspace, the operation is silently ignored. This plugin adds cross-workspace migration capability, allowing sessions to be moved by dragging or invoking tools.

The plugin is maintained by community member PianoPrince and uses the MIT license. It does not depend on TypeScript or build steps, and directly provides pure JavaScript source code.

Core Capabilities

  • Drag-and-drop migration: In the sidebar grouped view, drag an idle session row onto the target workspace title row, then confirm to complete the move.
  • Batch migration / group merge: Supports selecting multiple sessions with Ctrl/Shift and dragging the entire batch, or using the “Move Entire Group” option in the group title “⋯” menu. Once the source group is emptied, it can be deleted; a group merge can be completed with two commands.
  • True migration · zero tokens: Migration does not copy the session; it preserves the original session ID and full history, does not re-inject context, and consumes no tokens.
  • Workspace relocation wizard: When a project folder is moved or renamed, causing an invalid path, use this feature to repair the workspace group in place. The ID, title, order, and archive position remain unchanged, and the sessions under that workspace are migrated together.
  • Session rescue: A session rescue panel is provided in Settings, allowing one-click recovery of lost, unaccounted, or misplaced sessions.
  • Trash and backup: Deleted items are moved to the trash and can be restored; backups are automatically generated during migration and can be restored or cleaned up by session.
  • Data protection: Provides previews of trash and backup counts and storage usage, and supports previewing before a “Clean up” operation.
  • Move history and undo: Records the most recent 100 cross-workspace moves and supports batch undo.
  • Migration task center: Persistently records the status of batch migration tasks (completed/failed), and failed items support one-click retry.
  • Empty group cleanup: Lists only workspaces with zero members and supports opening the folder.
  • Agent tools: Provides the mover_list_sessions, mover_move_session, and mover_repair_sessions tools, allowing migration and repair to be triggered through natural language in a conversation.

Installation

Run the following command under the Web profile:

dsh plugin --profile web add "github:PianoPrince/dsh-workspace-mover"

After installation, restart dsh web.

System Requirements

  • Node.js version: >= 22
  • DeepSeek Harness version: >= 0.1.5-rc.1
  • The desktop profile and web profile are independent, and each requires its own installation.

Usage

Drag-and-drop migration

  1. In the sidebar grouped view, press and hold any idle session row;
  2. Drag it to the target workspace title row; a dashed highlight will appear;
  3. Release to confirm. The target workspace path will be shown in a dialog. Click “Move” to complete the operation.

Batch migration

  1. Use Ctrl/Shift + click to select multiple sessions (the currently open session is included automatically), or use Esc to clear the selection;
  2. Drag any selected session row to the target workspace title row, then confirm to move all selected sessions;
  3. Alternatively, use the “⋯” menu on the target group title and choose “Move Entire Group…”. After the migration, if the source group is empty, you can confirm deletion.

Migration in a conversation

Enter a command directly in the conversation, for example “Move session X to group Y”. The Agent tools will parse the session ID and execute the migration. This operation triggers the same backup and rollback pipeline as the panel, and requires host approval before execution.

Limitations and Compatibility

  • View limitation: This plugin does not activate under the “flat list” view; operations must be performed under the grouped view.
  • Running sessions: Attempts to move a running session will be rejected, and failed operations will roll back automatically.
  • Sidebar redrawing plugins: This plugin is generally compatible with plugins that redraw the sidebar. However, if another plugin replaces the official sidebar structure, this plugin may fail to recognize session rows. The feature may not trigger, but data will not be corrupted.
  • Similar plugins: It is recommended to enable only one session mover plugin to avoid conflicts.

Repository and Source Code

Plugin project: https://github.com/PianoPrince/dsh-workspace-mover