dsh-session-time-absolute:侧边栏会话时间改为绝对时间

前言

DeepSeek Harness(DSH)侧边栏里,每条会话行通常会显示相对时间,例如「10分钟」。对需要对照日志、工单或跨天排查问题的开发者来说,相对时间往往还要心算或点开详情。社区插件 dsh-session-time-absolute(维护者 v-hiker,分类:客户端)只做一件事:在启用后,把会话行里 class 以 _time 结尾的时间格改成可配置的绝对时间;关掉总开关后,按宿主同一套相对时间算法逐格还原,不必刷新页面。

下面介绍插件定位、能力与安装方式。事实以 GitHub 仓库 README 为准;社区目录页:https://www.skillhub.cn/plugins/v-hiker/dsh-session-time-absolute(独立站点,与 DeepSeek / 幻方无官方从属关系)。

这是什么

dsh-session-time-absolute 是 DSH 客户端侧插件:通过 Cordis patch 注入 @deepseek-ai/dsh-client-ui-session,在侧边栏已渲染的会话行上改写时间显示。它不改动工作区行、hover 卡或搜索页;宿主在格子上显示「待审批」等状态(aria-hidden="true")时也不会覆盖。

总开关与时间来源

设置入口:设置 → 会话时间。配置保存在浏览器 localStorage,键名为 dsh-session-time-absolute.settings.v1,结构为 { enabled, source, format }。旧版若缺少 enabled 字段,按「开」处理。

  1. 启用绝对时间:页面顶部总开关。关闭后插件立刻还原为宿主相对时间(覆盖前会记下原文;关闭时还会用 dsh-client-ui-primitives.relativeTime 与 workspace 词典 time.* 重算,与宿主一致),并断开 MutationObserver、退订 ctx.sessions.list,之后对页面零开销。
  2. 时间来源
    - 最后活动时间:使用 ctx.sessions.list 的 updatedAt,与宿主画「10分钟」同一字段;此模式下不向宿主发 HTTP 请求。
    - 创建时间:由宿主扫描 <DSH_HOME>/sessions/<workspace>/session-<id>/ 的目录创建时间,经 GET /api/session-time-absolute/created 提供给页面;结果缓存 20 秒,并发共享同一次扫描。若某会话尚未进缓存,会节流补拉,期间该行暂时显示最后活动时间。

显示格式

格式为占位符模板,默认 YYYY-MM-DD HH:mm。常见占位符如下(完整表见 README):

占位符 含义 占位符 含义
YYYY / YY 四位 / 两位年 MM / M 月(补零 / 不补零)
DD / D 日(补零 / 不补零) HH / H 时 24 制(补零 / 不补零)
mm / m 分 ss / s 秒

字面文字原样保留、不做转义;模板里若出现大写 D(例如单词 Date),会被当作占位符处理,自定义格式时需留意。

行为与性能要点

插件只处理带 data-row-key="session:<id>" 的行。观察器挂在 document.body(subtree),但回调会先过滤:仅当变更落在会话行内或新插入会话行时才重绘;聊天流式输出、输入框等高频 DOM 变更不会触发。同一帧内多次变更经 requestAnimationFrame 合并为一趟扫描,遍历 querySelectorAll('[data-row-key^="session:"]'),不遍历会话库、不读磁盘(除「创建时间」模式下的那一次 API)。

宿主 React 把文本改回相对时间时,观察器会在下一帧改回绝对时间。判定「是否为本插件写入」时,优先看 data-dsh-sta-applied;无标记时若文本恰好等于当前格式下的绝对时间,关开关时也会还原。

安装与启用

装完后需重启 DSH,或等待主机 client.js 轮询推送 rebuilt 后生效。file: 与 tarball 安装均为拷贝;改源码后需 remove 再 add(并升版本号)才会同步到 profile。

从 tarball 安装(分发用,README 推荐)

dsh plugin --profile desktop add "<插件目录>/dist/dsh-session-time-absolute-0.0.1.tgz"

从源码目录安装(本机开发)

dsh plugin --profile desktop add file:<插件目录>/dsh-session-time-absolute

从 zip 安装

将 dsh-session-time-absolute-0.0.1.zip 解压到任意目录,再按源码目录方式用 file: 安装。

重新打包示例:

cd <插件目录>/dsh-session-time-absolute
npm pack --pack-destination ../dist

卸载:

dsh plugin --profile desktop remove dsh-session-time-absolute

典型用法

  1. 按上文命令安装并重启 DSH。
  2. 打开 设置 → 会话时间,打开「启用绝对时间」。
  3. 选择 最后活动时间(零额外请求)或 创建时间(需宿主 API)。
  4. 按需修改格式模板,例如 YYYY-MM-DD HH:mm 或带秒的 YYYY-MM-DD HH:mm:ss。
  5. 若需恢复宿主默认相对时间,关闭总开关即可,无需清缓存或刷新。

适用场景与注意

适合长期在 DSH 里维护大量会话、需要一眼看到「具体几点几分」或按目录创建时间排序对照的场景。插件随当前 DSH 进程权限运行;「创建时间」模式下宿主会对 sessions 目录做 stat(README 描述为增量缓存与 ETag,面向大量会话做了优化),安装前建议阅读源码与 MIT 许可证(见仓库 package.json)。

结尾

dsh-session-time-absolute 把侧边栏会话时间从相对改为可配置的绝对时间,并提供总开关与低开销的 DOM 更新策略。更多信息见社区目录 v-hiker/dsh-session-time-absolute 与源码 github.com/v-hiker/dsh-session-time-absolute。

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

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

小夜