dsh-session-live:在会话悬停卡片里看「此刻在干什么」

前言

DSH 侧边栏里,每个会话都有一张悬停卡片:标题、相对时间、一个圆点,以及「运行中 / 空闲」。多会话并行时,这些字段能告诉你「有没有在跑」,却很难回答「正在跑什么、卡在哪一步、最近聊到哪、累计用了多少 token」。要逐个点开会话才能摸清状态,成本偏高。

dsh-session-live(会话实时预览)在悬停卡片的「相对时间」与「状态行」之间插入一块实时活动面板,把当前工具、最近调用、问答摘要、用量概况和最近上传图片压进同一张卡片,且悬停时不额外发起 I/O。下面介绍它的定位、能力与安装方式。

这是什么

  • 插件 ID:dsh-session-live
  • 维护者:lilcandi
  • 分类:客户端(Web)
  • 版本(package.json):1.0.1
  • 许可证:MIT
  • 兼容 DSH:>=0.2.0-rc.1 <0.3.0-0(见 package.json 的 engines.dsh 与 dsh.compatibility)

一句话:在 DSH 会话悬停卡片里预览该会话的实时活动——此刻在跑什么工具、最近做了什么、内容说到哪、轮数与 token 概况、以及最近一张用户上传图的缩略图。

目录页:skillhub.cn/plugins/lilcandi/dsh-session-live
源码与说明:github.com/lilcandi/dsh-session-live

与同类插件的分工

README 用表格区分了几类悬停相关插件,避免重复装同一类信息:

插件 侧重
@comecaramelos/dsh-hover-information 花了多少(turns / tokens / cache / context window)
dsh-ballast 上下文窗口占用
dsh-git-badge 需要你做什么动作
dsh-session-live 此刻正在做什么、卡在哪,顺带一行总量(轮数 / token 合计 / 模型短名)

本插件刻意不做 cache 明细、上下文占用条与成本计算;token 直接读宿主内置 tokenUsage 投影(@deepseek-ai/dsh-token-meter),不自算、不新增取数请求。与上表其他插件同时安装时,设计上不会出现两份相同的数字块。

核心功能

悬停实时活动面板

在默认卡片信息之外,面板可回答(各项可在设置里单独关闭):

  1. 当前活动:正在跑的工具名称、参数摘要、已运行多久。
  2. 最近工具序列:最近若干次工具调用的小图标条(长度 0–12 可配,默认 5)。
  3. 内容预览:最近一条提问与回复的单行摘要;注入的系统文本会被剥掉,尽量只显示用户真正输入的那句。
  4. 耗时与异常:本轮 / 当前步 / 当前工具的时间;工具失败、轮次异常终止、被中断等。
  5. 压缩标记:上下文压缩时的提示。
  6. 用量一行:对话轮数 · 累计 token · 模型短名(例:131 轮 · 6.9M · deepseek-v4.1-flash);悬停该行可看输入 / 输出细分与推理力度。轮数来自插件折叠的 turn/start 计数;token 来自列表快照里的 projectionValues.tokenUsage。
  7. 图片:会话最近一张用户上传图片的缩略图,点击可放大看原图(遮罩挂在 body,避免鼠标离开会话行时组件卸载导致大图消失)。

面板为「小而快」:用一行概况合并原先的模型行与工具条标题行;缩略图默认 72px(紧凑模式 56px),行数从最多约 7 行压到约 4 行。

数据怎么到卡片上

sidebar.session.row.hover 插槽只提供 sessionId,无法对「任意会话」用 useProjection 绑定当前会话。因此宿主在 Node 侧用折叠器把事件流变成 liveActivity 投影,随会话列表快照下发;浏览器端读 byId[sessionId].projectionValues.liveActivity,打开悬停卡片时只读内存,零往返。

宿主侧主要模块:src/activity.js(事件流 → 活动状态)、liveActivity 投影注册,以及 /session-live/api/{health,overview,detail,settings,image} 等路由。客户端为手写 CJS、零构建的 client.js,挂接悬停面板与设置页。

独立设置页

路径:账号菜单 → 设置 → 侧栏最末「会话预览」(README 中亦称「设置 → 会话实时预览」)。共 12 项,写入 profile 的插件设置(与 dsh config 同源),跨浏览器、跨设备一致;SettingsForms 不可用时降级到插件路由或 localStorage,页底会标明当前通道。

项 默认 说明
启用悬停实时预览 开 总开关
显示当前活动行 开 工具 + 参数摘要 + 时长
显示最近工具序列 开 小图标条
显示内容预览 开 最近问答摘要
显示耗时 开 本轮 / 步 / 工具时间
显示异常 开 失败、异常终止、中断
显示压缩标记 开 压缩提示
显示图片缩略图 开 最近用户上传图
显示模型名称 开 用量行中的模型短名
显示用量概况 开 轮数 · token · 模型
紧凑模式 关 更小字号与间距
最近工具条长度 5 0–12,0 为隐藏

修改设置即时生效;若改的是注册期元数据(例如 settings.section 的 label),需重启 dsh web 后导航项才会更新。

安装与启用

DSH 生态里插件常以本地路径或 profile 依赖方式接入;以下命令与步骤来自项目 README,请把路径换成你本机插件目录。

方式一:官方命令(README 推荐)

dsh plugin --profile web add file:J:/plugin/dsh-session-live

方式二:手工改 profile

在 %DSH_HOME%\profiles\web\package.json 中两步都要做:

  1. 在 dependencies 增加:"dsh-session-live": "file:J:/plugin/dsh-session-live"
  2. 在 dsh.profile.bundles 数组追加:"dsh-session-live"

只加依赖、不写入 bundles 时,插件常表现为「装了但没跑」:cordis.patch.yml 只能 patch 已插入的条目。

安装完成后重启 DSH(dsh web),并刷新浏览器页面。

典型用法

安装并重启后,无需额外命令即可使用:

  1. 在侧边栏把鼠标悬停到某个会话行,卡片中应出现实时活动面板(总开关关闭则不插入内容)。
  2. 若会话正在调用工具,查看「当前活动行」的工具名、参数摘要与已运行时长。
  3. 需要看累计消耗时,看尾部「用量概况」一行;鼠标悬停可看 token 输入 / 输出细分与推理力度。
  4. 若会话里上传过图片,卡片底部可出现缩略图;点击放大,Esc 或点遮罩空白处关闭。
  5. 按需打开 设置 → 会话预览,关掉不需要的行(例如只保留当前活动 + 用量),或开启紧凑模式、调整最近工具条长度。

图片由插件路由按内容寻址读取附件(ref=sha256:...),不依赖宿主附件服务;缩略图 URL 形态见 README:/session-live/api/image?ref=sha256:<64hex>&type=<mediaType>。

适用场景与注意

适合谁:经常在 DSH 里并行多个会话、需要在侧边栏一眼判断「哪个会话在跑什么、是否卡住、聊到哪、大概用了多少 token」的开发者。

权限与安全:插件在 DSH 宿主进程内运行,与当前 dsh web 进程权限一致;安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认路径与依赖来源可信。

生态说明:社区插件目录(如 skillhub.cn)是独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式,本插件是客户端 bundle,通过 cordis.patch.yml 注入悬停与设置插槽。

开发侧:本地改 client.js 通常可由 HMR 生效;改宿主侧投影注册等仍建议重启 dsh web。仓库提供多套 test/*.mjs 自检,多数无需启动 DSH(accept-live-render.mjs 依赖活实例,不可达时 SKIP)。

结尾

dsh-session-live 把「会话此刻在做什么」收进悬停卡片:工具与进度、最近调用、去注入后的问答摘要、一行用量与可选缩略图,并靠宿主投影 + 列表快照避免悬停时的额外请求。若你已在用专门统计 token 或上下文占用的插件,可以与本插件分工并存。

  • 目录页:https://www.skillhub.cn/plugins/lilcandi/dsh-session-live
  • GitHub:https://github.com/lilcandi/dsh-session-live
羽毛球分组比赛记分
小程序二维码

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

Xiaoye