dsh-workspace-drag:在侧边栏拖拽整理对话

在 DeepSeek Harness (DSH) 的侧边栏中管理会话时,将对话移动到不同工作区通常需要繁琐的菜单操作。dsh-workspace-drag 作为一个 DSH Web UI 插件,旨在简化这一过程。它允许用户直接将对话行拖拽到任意工作区组,实现会话的迁移与归类。

插件简介

该插件由维护者 lanscer 开发,采用 MIT 许可证。它通过浏览器端的拖拽引擎与主机的原子性迁移逻辑配合,在不弹出中间面板的情况下完成会话的跨工作区移动。

安装

可以通过官方插件命令从 GitHub 仓库安装:

dsh plugin --profile web add github:lanscer/dsh-workspace-drag

如果是本地检出,需要在插件目录内运行打包脚本:

npm run install:plugin

注意事项:
* 插件会将自身注册到 ~/.dsh/profiles/web 目录。
* 在 Windows 下,安装命令必须在克隆后的插件目录内运行(即包含 package.json 的目录),否则会报错 ENOENT ... package.json。
* Windows 环境下,插件安装程序使用 junction 创建符号链接,无需开发者模式或管理员权限。

使用方法

启用功能后,在侧边栏的分组视图中:
1. 按住一个对话会话行。
2. 将其拖动到另一个工作区组的标题或该组内的任意会话行上。
3. 释放鼠标,会话将自动移动到目标工作区。

如果需要在设置页控制该功能,请前往 Settings → Drag to Organize。

功能特性

该插件主要包含以下核心能力:

  • 无缝跨工作区拖放:直接将会话行拖动到目标工作区组,无需确认弹窗或中间面板。
  • 设置页一键开关:通过设置页可随时启用或禁用拖拽整理功能。
  • 运行中会话保护:当前处于运行状态的会话 agent 无法被移动。
  • 自动等待日志静默:对于刚刚结束的会话,主机端会自动等待日志写入结束(最多 15 秒),确保迁移时数据完整。
  • 原子性移动验证:迁移过程采用“复制到临时位置 -> 验证 -> 原子交换”的机制,确保数据不丢失。
  • 实时写入句柄重指向:修复了迁移后因句柄路径未更新导致的 ENOENT 错误,确保会话在移动后仍能正常接收日志。

技术细节与注意事项

迁移逻辑

每个会话的工作区身份由其日志头部的 cwd 字段(绝对路径)决定。迁移操作会重写该头部,更新工作区注册表的所有权,并将物理会话目录移动到新的工作区项目键目录下。

v3 日志格式支持

插件要求 DSH 版本在 0.1.5 以上以支持 v3 日志格式。迁移时会重写 session.v3.jsonl[.zstd] 文件的头部,否则 DSH 持久化层会因路径不匹配报错。

依赖与兼容性

  • Node.js:需要 Node.js >= 18。
  • zstd CLI:主机端需要安装 zstd 命令行工具。
  • 头部重写:迁移会重写日志头部的 cwd 字段。

文件结构

插件的核心逻辑位于 lib/index.js(主机端)和 lib/client.js(浏览器端),通过 package.json 中的 dsh.bundle.patch 和 dsh.client.inject 配置进行集成。

结语

dsh-workspace-drag 通过原生拖拽体验解决了 DSH 中会话整理的痛点,提供了安全、原子的迁移方案。对于需要频繁调整工作区结构的开发者,这是一个提升效率的实用工具。

  • GitHub 仓库:https://github.com/lanscer/dsh-workspace-drag
  • 插件目录:https://www.skillhub.cn/plugins/lanscer/dsh-workspace-drag
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜