前言¶
在 DeepSeek Harness(DSH)中,长时间运行多个会话或工作区时,主界面往往只能看到当前打开的标签页,切换和回顾都依赖浏览器标签。当有任务正在运行时,需要快速定位正在进行的会话;没有任务时,又想查看全部对话历史。这种需求在智能体开发与多任务并行场景中很常见,但原生界面缺少统一的「会话总览」视图。
dsh-workspace-ranswork 是为 DSH 设计的会话总览插件,侧边栏新增一个入口,主面板按运行状态分组展示会话。它不新增路由、不轮询、不写文件,仅消费 DSH 现有的客户端快照与客户端服务,在现有架构下提供轻量级总览能力。
插件定位¶
- 名称:dsh-workspace-ranswork
- 维护者:rans725
- 核心价值:侧边栏一键切换「进行中」与「对话总览」,卡片式展示会话,支持置顶、重命名、复制 ID、分叉、停止、归档等操作,并提供自由拖拽排序与自动/固定两种排序模式。
核心功能¶
两种视图模式¶
侧边栏按钮根据运行状态自动切换:
- 进行中:只有正在运行的会话,卡片带脉冲状态点。
- 对话总览:没有会话运行时,列出全部可见会话,按更新时间倒序。
两种模式都会自动排除:已归档会话、空白草稿、子代理会话。面板内不显示目录路径。
卡片操作¶
鼠标悬停在卡片上,右上角浮出操作条:
- 置顶:只影响本面板,卡片左侧出现品牌色竖条、边框同色、图钉变实心且按钮保持高亮。置顶后卡片自动排到最前(需切换到「固定」模式才真正改变顺序)。
- 重命名:卡片内就地编辑,Enter 保存 / Esc 取消。
- 复制 ID:复制会话 ID 到剪贴板。
- 分叉:从当前点创建分支并跳转过去。
- 停止运行:中断当前轮次(仅运行中的卡片出现,需二次确认)。
- 归档:从列表移除(需二次确认)。
点击卡片空白处仍然是打开该会话。
自定义卡片按钮¶
在 设置 → 进行中/对话总览 里的「卡片按钮」可以逐项开关操作条上的按钮:置顶 / 重命名 / 复制 ID / 分叉 / 归档。默认全开,修改立即生效。
- 「停止」按钮不在可配置项里:运行中的卡片永远显示停止按钮,随时能中断。
- 全部关掉 = 全部打开:勾掉最后一个会自动回到全开,操作条不会变成空白。
- 配置存储在 cookie
dsh_wso_card_actions+ localStoragedsh.workspace-ranswork.cardActions(逗号分隔的动作名,如pin,rename,copy)。 - 没存过配置、或配置值里有不认识的按钮名,都按「全开 / 忽略未知项」处理。
卡片拖动排序(自由排序)¶
面板是一整张扁平列表,没有工作区分组标题,卡片可以拖到任意位置,不会改变会话的归属工作区:
- 排序结果存储在 cookie
dsh_wso_order+ localStoragedsh.workspace-ranswork.order,刷新后保留。 - 拖到最前 = 置顶,卡片出现置顶徽标;把已置顶的卡片拖到非首位 = 取消置顶。拖动置顶与「置顶」按钮共享同一份置顶集合(cookie
dsh_wso_pinned+ localStoragedsh.workspace-ranswork.pinned)。 - 指针压在哪张卡身上,就与那张卡换位:不需要瞄准卡片之间的缝隙,被拖的卡会实时让位到目标那一格,其余卡片平滑滑过去。
- 指针还停在被拖那张卡自己的范围内时,位置完全不动。
- 指针从某张卡上滑到两张卡之间的缝隙时,落点停在刚换到的那一格,不会跳回起手位置。
- 已换好位的卡片会平滑滑停一次就待住:指针继续微动时不会再从旧位置重新出发。
- 在设置里把组排序从「固定」切到「自动」会清掉手动排序、按新模式重排。
点击还是拖动:5 像素阈值¶
- 按下鼠标时先当作「点击」;
- 指针累计位移一旦达到 5px,就转成「拖动」——而且不可逆:即使又拖回原点,松手也不会打开会话;
- 松手时,仍在「点击」状态才打开会话;拖动松手只做落位,并屏蔽紧接着的那个
click事件(200ms),避免一拖就误开。
键盘行为不变:卡片获得焦点后按 Enter / 空格仍然是打开会话。
prefers-reduced-motion: reduce 的用户不播放让位动画(位置直接到位)。
排序模式:自动 / 固定¶
默认是「自动」:置顶的卡片排在最前,其余卡片按活跃度(最近更新时间)从新到旧铺成一条列表:
- 置顶的卡片排在最前(按卡片自己的先后,两种模式都一样);
- 其余卡片按
updatedAt倒序 —— 跨工作区一起比,不再按工作区聚块; - 活跃度完全相同的卡保持原顺序(稳定排序,不抖);
- 「未分组」的卡永远在最后,无论它多活跃。
选「固定」则忽略活跃度:置顶在前,其余按你自己拖出来的顺序排列。
- 点卡片右上角的图钉按钮 → 卡片立刻排到第一,整卡出现品牌色竖条、图钉变实心、按钮高亮;再点一次取消置顶,卡片回到原位。
- 把置顶卡拖到别的位置会自动取消置顶(否则它会被立刻顶回最前,看起来像拖不动)。
- 自动模式下只有「置顶」会插队,未置顶的卡始终严格按活跃度排。
在哪设置:设置 → 进行中/对话总览,单选「自动 / 固定」,改完立即生效(写入 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。
典型用法¶
- 安装插件后,侧边栏会新增一个按钮,默认显示「进行中」。
- 当有任务在运行时,面板只列出运行中的会话,卡片带脉冲状态点,可以点击卡片打开会话、停止运行、归档或复制 ID。
- 当没有任务运行时,按钮自动变为「对话总览」,面板列出全部可见会话,按更新时间倒序排列。
- 在
设置 → 进行中/对话总览中,可以开启或关闭卡片操作条上的按钮(置顶 / 重命名 / 复制 ID / 分叉 / 归档)。 - 拖动卡片可以在当前面板内自由排序;拖到最前会自动置顶,再次拖动可取消置顶。
- 在设置中切换「自动 / 固定」排序模式:自动模式按活跃度排序,固定模式按你拖出的顺序排列。
适用场景与注意¶
适合需要在 DSH 中统一管理多个会话、快速切换运行任务与对话历史、或需要对会话进行置顶、归档等日常操作的开发者与用户。
插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-workspace-ranswork 为 DSH 提供了轻量级会话总览能力,通过侧边栏面板和卡片式操作,让会话管理与切换更直观。可在社区目录查看插件详情,在 GitHub 获取源码与更新。