前言¶
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),不自算、不新增取数请求。与上表其他插件同时安装时,设计上不会出现两份相同的数字块。
核心功能¶
悬停实时活动面板¶
在默认卡片信息之外,面板可回答(各项可在设置里单独关闭):
- 当前活动:正在跑的工具名称、参数摘要、已运行多久。
- 最近工具序列:最近若干次工具调用的小图标条(长度 0–12 可配,默认 5)。
- 内容预览:最近一条提问与回复的单行摘要;注入的系统文本会被剥掉,尽量只显示用户真正输入的那句。
- 耗时与异常:本轮 / 当前步 / 当前工具的时间;工具失败、轮次异常终止、被中断等。
- 压缩标记:上下文压缩时的提示。
- 用量一行:对话轮数 · 累计 token · 模型短名(例:
131 轮 · 6.9M · deepseek-v4.1-flash);悬停该行可看输入 / 输出细分与推理力度。轮数来自插件折叠的turn/start计数;token 来自列表快照里的projectionValues.tokenUsage。 - 图片:会话最近一张用户上传图片的缩略图,点击可放大看原图(遮罩挂在
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 中两步都要做:
- 在
dependencies增加:"dsh-session-live": "file:J:/plugin/dsh-session-live" - 在
dsh.profile.bundles数组追加:"dsh-session-live"
只加依赖、不写入 bundles 时,插件常表现为「装了但没跑」:cordis.patch.yml 只能 patch 已插入的条目。
安装完成后重启 DSH(dsh web),并刷新浏览器页面。
典型用法¶
安装并重启后,无需额外命令即可使用:
- 在侧边栏把鼠标悬停到某个会话行,卡片中应出现实时活动面板(总开关关闭则不插入内容)。
- 若会话正在调用工具,查看「当前活动行」的工具名、参数摘要与已运行时长。
- 需要看累计消耗时,看尾部「用量概况」一行;鼠标悬停可看 token 输入 / 输出细分与推理力度。
- 若会话里上传过图片,卡片底部可出现缩略图;点击放大,Esc 或点遮罩空白处关闭。
- 按需打开 设置 → 会话预览,关掉不需要的行(例如只保留当前活动 + 用量),或开启紧凑模式、调整最近工具条长度。
图片由插件路由按内容寻址读取附件(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