DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

stone-beka /

stone-beka/dsh-workspace-insight

Verified

Workspace and session activity dashboard for the DSH Web UI: overview, month heat calendar and a continuous-date timeline matrix. Read-only, local data.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@6b291b8a

dsh-workspace-insight

npm version license

给 DSH Web UI 加一块工作区 / 会话活动看板:哪些工作区还活着、它们跑了哪些对话、花了多少时间、哪些可以放心归档。全部只读本地数据,不出本机。

English | 中文

安装

dsh plugin --profile web add dsh-workspace-insight

装完后硬刷新(Ctrl/Cmd + Shift + R)。左侧栏出现柱状图图标,点它把主区域切到「工作区洞察」;设置页里也能打开。

卸载:

dsh plugin --profile web remove dsh-workspace-insight

兼容性与前提

  • 需要 DSH 的 Web profile;在 DSH 0.2.2-rc.1 上验证。Host 端解压会话日志需要 Node ≥ 20。
  • 插件直接读取 Host 的会话存储(workpsace 注册表、投影缓存、会话日志)。DSH 大版本若改动存储格式,插件会显示警告条而不是给出错误数字。

隐私

  • 只读 $DSH_HOME 下的本地文件;不发任何网络请求,数据不出本机。
  • 唯一的写入是日活跃索引缓存 $DSH_HOME/cache/workspace-insight/,删掉会自动重建。
  • 两条数据路由同时受 Host 的 connection.admit() 与同源请求头校验保护。

维护

  • 变更记录见 CHANGELOG,许可证 MIT。
  • 无构建步骤:Host 端 index.js、Client 端 client.js 各自单文件,目录结构见文末。

解决什么问题

  • 工作区太多记不过来:一页看完 39 个工作区的最近使用、会话数、轮次、模型+工具耗时。
  • 判断该归档谁:超过 20 天未使用且仍有会话的工作区会被标记「建议归档」。
  • 判断该不该建定时任务:近 14 天触达图 + 会话列表,能看出哪些工作区是周期性在用。

入口

  • 左侧栏图标(柱状图,和「插件」等面板并排):点一下把主区域切到「工作区洞察」页;再点对话切回去。这是 DSH 原生的面板导航方式(main 面板 + sidebar.panellist 图标),侧边栏自己负责按钮和选中态,图标只负责画。
  • 右侧栏的标签页仍然保留(注册为原生 tab 类型 workspace-insight,从右侧栏 + 打开)。
  • 设置 → 工作区洞察 也仍然保留,作为完整版。

主区域版是宽版(总览 / 月视图 / 时间轴 三个标签都全);右侧栏窄版只放月视图 + 时间轴。

总览

  • 39 个工作区一行一个:最近使用、会话数、轮次、模型+工具耗时、近 14 天触达柱。
  • 超过 20 天未使用且仍有会话的工作区自动标记「建议归档」。
  • 点行展开会话,可直接打开 / 归档 / 取消归档。

月视图

  • 日历:每天一格,格子加高到 118px,网格最小列宽 86px(面板窄时横向滚动,保证名字放得下)。
  • 格内左右按比例分段:每段宽度 = 当天该工作区会话数占比,颜色 = 该工作区的列色;段内用竖排文字写工作区名(宽度只要 ~10px,所以窄段也能露出名字),完整名字与数量看悬停 tooltip。
  • 点某个彩色段 = 直接筛选该工作区(再点取消),点格子空白处 = 选中当天。
  • 星期表头沿用 7 色(周一红 → 周日紫),周末格子有淡底、今天有描边高亮,日期数字标色。
  • 悬停某一天:tooltip 列出当天涉及的工作区及各自对话数(最多 4 个 + 更多)。
  • 顶部月度摘要:活跃天数 · 对话数 · 涉及工作区数 · 最长连续活跃天数 · 环比上月(+N / -N / 持平)。
  • 顶部可 只看指定工作区:选中后日历与摘要只统计该工作区,下方列出它本月全部对话;若该工作区本月无记录,会明确提示而不是给一张空日历。
  • 点某一天 → 按工作区分组列出当天用过的对话,可打开 / 归档;每组右侧有 「在时间轴只看这个工作区」,一键跳到时间轴并只保留该列(时间轴顶部「显示所有列」可还原)。
  • 月份可前后翻页,「回到本月」可直接跳回。

时间轴(连续日期矩阵)

  • 行 = 日期,一天不落:从最早记录(2026-08-14)到今天连续 84 行,不再跳过空白天;月份首日有加粗分隔线,左侧日期列吸附。
  • 周与周之间的分隔线:相邻两行不属于同一自然周时(周日在上一行、下周一在下一行之间)画一条 1px 虚线,行按"周"成组;月份首日仍是 2px 实线(比周线更重)。
  • 同一星期几永远同一种颜色(周一→周日固定 7 色):日期数字、星期文字、左侧色条同色。
  • 每一列 = 一个工作区,并且整列有固有色:表头色块 12%、有数据的格子 8%、空格子 3% 的同色相底纹,一眼能顺着列往下读。
  • 列顺序:按最近活跃分 7 天内 / 8–14 / 15–21 / 21 天以上 四段,段内有分隔条;段内按最新会话创建时间新→旧。
  • 格子内容:每条对话一个同色小圆点 + 标题,默认最多 3 条(+ N);显示全部开关可展开全部;空格子不再画点。
  • 缩小也看得见字:缩放低于 80% 时进入小字模式——每条对话仍保留一行 9px 标题(最多 2 条 + + N),不会再退化成只剩色块;列头始终显示竖排工作区名。
  • 悬停对话 → 浮层显示完整标题 + 工作区 + 日期;点击 → 切回对话面板并打开该会话。
  • 交互:滚轮只上下;左键拖动平移(横竖都行);Ctrl / Cmd + 滚轮缩放(40%–180%,锚在鼠标处);− / + 可按 10% 微调。
  • 选列 列 n/40 ▾:勾选要显示的工作区(全选 / 全不选),列色与排序不受隐藏影响。

数据来源(只读)

来源 用途
$DSH_HOME/storages/workspace.json 工作区注册表、会话归属、已归档会话 id
$DSH_HOME/storages/session_projcache/sessions/*.json 标题、createdAt、轮次、llmMs/toolMs、token、最后提问时间
$DSH_HOME/sessions/**/*.zstd 会话日志(多帧 zstd),逐帧解压提取事件时间戳 → 每日活跃
  • 不写任何会话或工作区存储;归档动作走 Client 的 uiWorkspace.archiveSession()。
  • 日活跃索引有磁盘缓存:$DSH_HOME/cache/workspace-insight/session-days.v2.json,按文件 size+mtime 增量更新——首次 5–10 秒,之后 ~100–300 毫秒。
  • 总览每 60 秒、月视图每 5 分钟最多重算一次(?refresh=1 强制刷新)。

口径与限制

  • 月视图统计的是「会话-天」:一个对话在 3 天里被用到,记 3 条,不是消息条数。
  • 日期按本机时区从事件 time 换算。
  • 统计覆盖所有有投影缓存的会话(当前 400 条 / 518 会话-天,最早 2026-08-14)。
  • llmMs/toolMs 是本地计时,不是计费口径。

结构

package.json        manifest:dsh.bundle.patch + dsh.client
cordis.patch.yml    插入 workspace-insight 行
index.js            Host:registry/projcache 统计 + 会话日志日索引 + 两条 JSON 路由
client.js           Client:settings.section 页面(总览 + 月视图),主题 token 内联样式
locale/{zh,en}.json 插件清单标题/描述
icon.svg            插件图标
—/ 5

No ratings yet

Verified DSH bundle

Commit 6b291b8af6db

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout