baisama-cloud/dsh-session-mover

Plugin插件 Native原生 ⭐ 2 MIT Sessions & Context会话与上下文

在 DeepSeek Harness(DSH)网页界面中,将会话拖拽至其他工作区 — 将侧边栏会话直接拖到其他工作区(完整历史克隆+原会话归档)

Project Overview项目介绍

dsh-session-mover is a purpose-built plugin for DeepSeek Harness (DSH), adding cross-workspace session moving functionality to DSH’s web GUI. The plugin extends DSH’s native drag-and-drop system, which only supports reordering sessions within a single workspace, to allow moving full sessions between different workspaces. To install, you clone the repository to your local machine, run npm pack to generate a compressed .tgz package, then add it to your DSH plugin bundle via the bundle patch mechanism.

This plugin is designed for DSH users who organize their agent conversations into separate workspaces and need to rearrange their sessions between different workspaces. The workflow is straightforward: you hold down any session in the DSH sidebar session list, drag it to the title of a different workspace, then release your mouse to complete the move. After moving, you will see a result notification at the bottom of the interface, and if you moved the currently open session, you will be automatically redirected to the new session in the target workspace.

The plugin is open source under the MIT license, with no external dependencies beyond the DSH core APIs. Due to DSH platform constraints, there are a few limitations to note: moving a session generates a new session ID and archives the original one, instead of modifying the original session in place. Subagent sessions and blank placeholder sessions cannot be moved, and the plugin does not work when DSH is set to the flat single-list mode, which has no workspace title rows for drop targeting.

这是专为 DeepSeek Harness(DSH)开发的原生插件,用于在 DSH 的网页端图形界面中直接将会话拖动移动到其他工作区。DSH 官方原生仅支持同工作区内的会话重排序,该插件拓展了原有的拖拽交互能力,新增了跨工作区移动会话的功能,整个操作流程不需要打开额外面板或点击功能按钮。

该插件面向需要整理会话、调整会话所属工作区的 DSH 用户,使用流程十分直观:用户只需在侧边栏的会话列表中按住想要移动的会话行,拖动到目标工作区的标题行后松开,即可完成移动操作。移动完成后底部会弹出结果提示,如果移动当前打开的会话,插件会自动跳转到移动后的新会话。

该插件遵循 DSH 插件包分发标准,可通过克隆仓库本地打包后,用 DSH 的 bundle patch 机制挂载使用,代码开源遵循 MIT 许可。受 DSH 平台限制,移动会话会生成新会话ID并归档原会话,不支持子代理会话、空白占位会话移动,平面列表模式下无法使用。

Pre-install check安装前体检Compatibility · Security兼容性 · 安全性 1 warning1 项注意
  • Only 2 stars - very few users, little community feedback星标只有 2,几乎没人在用,遇到问题缺少社区反馈
DSH walks through these 9 checksDSH 会逐条核对这 9 项

Compatibility兼容性

  • DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
  • External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
  • Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册

Security安全性

  • Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
  • Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
  • curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
  • Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
  • Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
  • Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式

Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:baisama-cloud/dsh-session-mover

把 baisama-cloud/dsh-session-mover 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-session-mover

在 DeepSeek Harness(DSH)Web GUI 中直接把会话拖到其他工作区的插件。

按住侧边栏(会话列表)里的任意会话行,拖到另一个工作区的标题行上松手,会话即移动到该工作区——同标题、同完整历史,原会话自动归档隐藏。

功能

  • 直接在会话列表里拖动,无需任何面板或按钮;
  • 支持工作区组内会话、跨工作区、以及「未分组」会话拖入工作区;
  • 移动后底部弹出结果提示;若拖的是当前打开的会话,会自动跳转到新副本;
  • 同工作区内拖动仍走官方重排逻辑,互不干扰;
  • 失败有可见的红色提示,不会无声无息。

安装

与 DSH 插件包相同的分发方式:

# 克隆到本地后,用 dsh 的 bundle patch 机制挂载
npm pack            # 生成 dsh-session-mover-0.1.0.tgz

或在 DSH 配置的插件列表中加入该包,cordis.patch.yml 已声明:

- insert:
    - id: dsh-session-mover
      name: 'dsh-session-mover'

lib/client.js 是已打包的浏览器 bundle(window.__ModuleLoader__.load 形态,与 dsh-omni-bridge 相同);宿主 lib/index.js 在 webServer 上注册 POST /session-mover/move-session 路由供客户端调用。若作为动态插件运行,宿主同样提供 harness.handle('move-session') 配对(两种方式都已内置,逻辑共用)。

使用

  1. 在侧边栏会话列表里按住要移动的会话行;
  2. 拖到另一个工作区的标题行(带文件夹图标的行)上松手;
  3. 原会话从旧工作区消失(归档),目标工作区出现同历史的新会话,底部提示移动结果。

会话所属工作区由会话的 cwd(工作目录)决定。受平台约束(会话日志默认 zstd 压缩、会话头不可变、存储层无迁移 API),无法保留原会话 ID 原地搬家,因此采用「目标工作区克隆 + 原会话归档」语义。

工作原理

  • 官方侧边栏的会话行本身可拖拽,拖起时会把会话 ID 写入 dataTransfer(setData("text/plain", id)),但官方只允许同工作区内重排;
  • 插件在 document 层监听 drop,用语义属性(role="treeitem" + aria-expanded,而非样式类)定位光标下的工作区标题行,按其在树中的顺序映射到对应工作区;
  • 命中后调用宿主 move-session:
    1. sessionQuery.readSession 读取源会话完整日志;
    2. sessions.create 在目标工作区创建携带完整历史的新会话(保持创建时间与 agent 预设,cwd = 目标工作区路径);
    3. sessions.flush 持久化;
    4. workspace.attachSession 归属到目标工作区;
    5. workspaceRegistry.archiveSession 归档源会话。

限制

  • 移动会产生新的会话 ID(平台无原地迁移能力),原会话归档隐藏(日志与记录保留,可被 workspaceRegistry 查询);
  • 子代理(subagent)会话与空白占位会话不作为可拖拽项;
  • 平面列表模式("In one list")下没有工作区标题行,拖放无效(符合预期)。

许可

MIT

← 上一个 Prev dsh-ops-kit 下一个 Next dsh-pet-StatusLight →