dsh-workspace-ranswork:DeepSeek Harness 会话总览面板

前言

在 DeepSeek Harness(DSH)中,长时间运行多个会话或工作区时,主界面往往只能看到当前打开的标签页,切换和回顾都依赖浏览器标签。当有任务正在运行时,需要快速定位正在进行的会话;没有任务时,又想查看全部对话历史。这种需求在智能体开发与多任务并行场景中很常见,但原生界面缺少统一的「会话总览」视图。

dsh-workspace-ranswork 是为 DSH 设计的会话总览插件,侧边栏新增一个入口,主面板按运行状态分组展示会话。它不新增路由、不轮询、不写文件,仅消费 DSH 现有的客户端快照与客户端服务,在现有架构下提供轻量级总览能力。

插件定位

  • 名称:dsh-workspace-ranswork
  • 维护者:rans725
  • 核心价值:侧边栏一键切换「进行中」与「对话总览」,卡片式展示会话,支持置顶、重命名、复制 ID、分叉、停止、归档等操作,并提供自由拖拽排序与自动/固定两种排序模式。

核心功能

两种视图模式

侧边栏按钮根据运行状态自动切换:

  • 进行中:只有正在运行的会话,卡片带脉冲状态点。
  • 对话总览:没有会话运行时,列出全部可见会话,按更新时间倒序。

两种模式都会自动排除:已归档会话、空白草稿、子代理会话。面板内不显示目录路径。

卡片操作

鼠标悬停在卡片上,右上角浮出操作条:

  • 置顶:只影响本面板,卡片左侧出现品牌色竖条、边框同色、图钉变实心且按钮保持高亮。置顶后卡片自动排到最前(需切换到「固定」模式才真正改变顺序)。
  • 重命名:卡片内就地编辑,Enter 保存 / Esc 取消。
  • 复制 ID:复制会话 ID 到剪贴板。
  • 分叉:从当前点创建分支并跳转过去。
  • 停止运行:中断当前轮次(仅运行中的卡片出现,需二次确认)。
  • 归档:从列表移除(需二次确认)。

点击卡片空白处仍然是打开该会话。

自定义卡片按钮

在 设置 → 进行中/对话总览 里的「卡片按钮」可以逐项开关操作条上的按钮:置顶 / 重命名 / 复制 ID / 分叉 / 归档。默认全开,修改立即生效。

  • 「停止」按钮不在可配置项里:运行中的卡片永远显示停止按钮,随时能中断。
  • 全部关掉 = 全部打开:勾掉最后一个会自动回到全开,操作条不会变成空白。
  • 配置存储在 cookie dsh_wso_card_actions + localStorage dsh.workspace-ranswork.cardActions(逗号分隔的动作名,如 pin,rename,copy)。
  • 没存过配置、或配置值里有不认识的按钮名,都按「全开 / 忽略未知项」处理。

卡片拖动排序(自由排序)

面板是一整张扁平列表,没有工作区分组标题,卡片可以拖到任意位置,不会改变会话的归属工作区:

  • 排序结果存储在 cookie dsh_wso_order + localStorage dsh.workspace-ranswork.order,刷新后保留。
  • 拖到最前 = 置顶,卡片出现置顶徽标;把已置顶的卡片拖到非首位 = 取消置顶。拖动置顶与「置顶」按钮共享同一份置顶集合(cookie dsh_wso_pinned + localStorage dsh.workspace-ranswork.pinned)。
  • 指针压在哪张卡身上,就与那张卡换位:不需要瞄准卡片之间的缝隙,被拖的卡会实时让位到目标那一格,其余卡片平滑滑过去。
  • 指针还停在被拖那张卡自己的范围内时,位置完全不动。
  • 指针从某张卡上滑到两张卡之间的缝隙时,落点停在刚换到的那一格,不会跳回起手位置。
  • 已换好位的卡片会平滑滑停一次就待住:指针继续微动时不会再从旧位置重新出发。
  • 在设置里把组排序从「固定」切到「自动」会清掉手动排序、按新模式重排。

点击还是拖动:5 像素阈值

  1. 按下鼠标时先当作「点击」;
  2. 指针累计位移一旦达到 5px,就转成「拖动」——而且不可逆:即使又拖回原点,松手也不会打开会话;
  3. 松手时,仍在「点击」状态才打开会话;拖动松手只做落位,并屏蔽紧接着的那个 click 事件(200ms),避免一拖就误开。

键盘行为不变:卡片获得焦点后按 Enter / 空格仍然是打开会话。

prefers-reduced-motion: reduce 的用户不播放让位动画(位置直接到位)。

排序模式:自动 / 固定

默认是「自动」:置顶的卡片排在最前,其余卡片按活跃度(最近更新时间)从新到旧铺成一条列表:

  1. 置顶的卡片排在最前(按卡片自己的先后,两种模式都一样);
  2. 其余卡片按 updatedAt 倒序 —— 跨工作区一起比,不再按工作区聚块;
  3. 活跃度完全相同的卡保持原顺序(稳定排序,不抖);
  4. 「未分组」的卡永远在最后,无论它多活跃。

选「固定」则忽略活跃度:置顶在前,其余按你自己拖出来的顺序排列。

  • 点卡片右上角的图钉按钮 → 卡片立刻排到第一,整卡出现品牌色竖条、图钉变实心、按钮高亮;再点一次取消置顶,卡片回到原位。
  • 把置顶卡拖到别的位置会自动取消置顶(否则它会被立刻顶回最前,看起来像拖不动)。
  • 自动模式下只有「置顶」会插队,未置顶的卡始终严格按活跃度排。

在哪设置:设置 → 进行中/对话总览,单选「自动 / 固定」,改完立即生效(写入 cookie + localStorage,双保险)。切换模式会清掉拖出来的顺序(否则「固定」不生效),但不会清掉置顶。

老用户升级:如果你以前手动拖过顺序(存在侧栏面板顺序记录),首次升级会自动落成「固定」,顺序原样不动;面板底部会出现一次提示条,点「去设置」可直接跳到设置页。不想再看到它,点掉即可 —— 提示不常驻、不占位。

与主题联动

卡片底色与模糊直接消费 dsh-glass-ranswork(自定义主题)写在 body 上的 --dsh-glass-panel-light/dark、--dsh-glass-blur、--dsh-glass-saturate。没装主题时自动回退到 DSH 原生主题令牌,观感与内置面板一致。

数据来源

全部读取 Harness 已有的客户端快照(useWorkspaces / useSessions 标准 props)与客户端服务(uiWorkspace、sessions)。宿主侧是空实现:不新增路由、不轮询、不写任何文件。

安装与启用

推荐从 npm 安装:

pnpm add dsh-workspace-ranswork

npm 安装的插件会被插件市场识别为可更新来源,新版本会出现在插件市场的「可更新」列表里;从 URL / Release 附件安装的包在 registry 里没有身份,市场只会如实报告「无更新」,等于每升一版都要手动重装。

# 指定版本
pnpm add dsh-workspace-ranswork@0.4.3

# 不想用 npm 时(能装,但没有更新提醒)
pnpm add https://github.com/rans725/dsh-workspace-ranswork/archive/refs/tags/v0.4.3.tar.gz

# 本地开发时
pnpm add link:/path/to/dsh-workspace-ranswork

然后在 Harness 插件管理器里启用该 bundle,刷新 Web UI。

典型用法

  1. 安装插件后,侧边栏会新增一个按钮,默认显示「进行中」。
  2. 当有任务在运行时,面板只列出运行中的会话,卡片带脉冲状态点,可以点击卡片打开会话、停止运行、归档或复制 ID。
  3. 当没有任务运行时,按钮自动变为「对话总览」,面板列出全部可见会话,按更新时间倒序排列。
  4. 在 设置 → 进行中/对话总览 中,可以开启或关闭卡片操作条上的按钮(置顶 / 重命名 / 复制 ID / 分叉 / 归档)。
  5. 拖动卡片可以在当前面板内自由排序;拖到最前会自动置顶,再次拖动可取消置顶。
  6. 在设置中切换「自动 / 固定」排序模式:自动模式按活跃度排序,固定模式按你拖出的顺序排列。

适用场景与注意

适合需要在 DSH 中统一管理多个会话、快速切换运行任务与对话历史、或需要对会话进行置顶、归档等日常操作的开发者与用户。

插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-workspace-ranswork 为 DSH 提供了轻量级会话总览能力,通过侧边栏面板和卡片式操作,让会话管理与切换更直观。可在社区目录查看插件详情,在 GitHub 获取源码与更新。

羽毛球分组比赛记分
小程序二维码

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

小夜