dsh-plugin-session-clock: Sidebar session time changed to WeChat-style absolute time

前言

DeepSeek Harness(DSH)桌面客户端左侧栏会列出历史会话,每条旁边通常是相对时间:刚刚、3小时、1天、2个月。对需要对照具体时刻、或习惯微信聊天列表展示方式的开发者来说,相对标签要心算一遍,效率不高。内核里这类文案由 @deepseek-ai/dsh-client-ui-workspace 的 timeLabel() 直接渲染,侧栏又没有单独替换时间文本的插槽,所以不能指望改一行配置就换展示规则。社区插件 dsh-plugin-session-clock(维护者 msongw-design,分类:客户端)在客户端侧用最小侵入的方式,把会话行第三列改写成绝对时间格式。

这是什么

dsh-plugin-session-clock 是 DeepSeek Harness 客户端插件(dsh.client.platform: web),版本 0.1.0,MIT 许可证。它只做一件事:把左侧栏会话列表里的相对时间改成微信式的绝对时间,并同样接管英文界面下内核原本的 now / 5min / 3h / 1d / 2mo / 2y 等相对标签。

显示规则

改写后的格式如下(资料中的对照表):

时间范围 显示示例
今天 21:12(24 小时制,补零)
昨天 昨天21:12
今年更早 10/27
往年 25/12/31(两位年份)

未来时间(例如时钟偏差)按「今天」处理,只显示 HH:MM。英文界面下「昨天」显示为 Yesterday。格式跟随时区与系统时钟;跨过零点后每 30 秒自动刷新一次,因此列表里的 21:12 会在午夜变成类似 10/29 的日期形式。

实现方式与代价

README 说明:侧栏 sidebar.workspaces 是单值插槽,若整体替换等于重写整个会话浏览器(搜索、分组、拖拽、重命名等),成本过高。本插件因此走 DOM 级补丁:

  1. 注册不可见的 shell.overlay 座位(组件只返回 null),从标准 useSessions 快照读取 updatedAt。
  2. 用 MutationObserver 跟踪内核已渲染的 [data-row-key="session:<id>"] 行,只改写第三列时间文本。
  3. 仅处理两类文本:内核刚写下的相对标签,或本插件上一次写下的文本;单元格出现「进行中」等状态文案时不改动。
  4. 改写时直接修改文本节点的 nodeValue,保留 React 持有的节点;观察器将连续变更合并为每 100ms 至多一次重绘,流式回答时避免按帧空转。

这是 DOM 补丁,不是插槽扩展。若内核改掉 data-row-key 或调整行子元素顺序,插件会静默失效——列表退回相对时间,不报错、也不破坏列表。开发与使用环境在资料中写明为 DSH 0.2.1-rc.3(macOS desktop profile);行结构按该版本 SessionRow 核对:第三个子元素为时间单元格。升级 DSH 后建议看一眼列表时间是否仍为绝对格式。

已知边界

  • 只改会话列表行;悬停卡片里的「创建于 …」及相对时间不改。
  • 只改左侧栏会话行;搜索结果元信息行不含时间。
  • 日期顺序固定为 MM/DD(月/日),不随语言切换。
  • 不接管「进行中」等状态文案,也不插入或隐藏行。

安装与启用

插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。

方式一:Plugins 页(推荐)

  1. 左侧栏点 Plugins。
  2. 点 Add plugin。
  3. 填写 Git 地址 https://github.com/msongw-design/dsh-plugin-session-clock,或本仓库克隆后的本地绝对路径。
  4. 安装完成后在 Installed 组里启用。

方式二:写进 profile

在 profile 目录(~/.dsh/profiles/desktop)里执行:

pnpm add /path/to/dsh-plugin-session-clock

将包名加入该 profile 下 package.json 的 dsh.profile.bundles,重启应用。

社区插件目录页:skillhub.cn/plugins/msongw-design/dsh-plugin-session-clock。该站点为独立社区目录,与 DeepSeek / 幻方无官方从属关系。

开发与验证

仓库提供无头冒烟测试,可在插件根目录执行:

node test/smoke.mjs

测试覆盖 clockLabel 的四种时间分支、中英文相对标签的接管与误判防护、状态文案保护、已绘制行的重绘、槽位注册等;React 默认从 DSH 的 ~/.dsh/profiles/node_modules 加载,可用环境变量 DSH_PROFILE_MODULES 覆盖。

结尾

若你希望 DSH 侧栏会话时间与微信列表一致、又不愿接管整个 workspaces 插槽,dsh-plugin-session-clock 提供一条已文档化的客户端补丁路径。启用后留意 DSH 升级是否仍匹配行结构;失效时表现仅为恢复相对时间。源码与说明见 GitHub,目录介绍见 SkillHub 插件页。

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

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

Xiaoye