dsh-session-eva-status:用 EVA 配色标出侧边栏 Session 官方状态

前言

在 DeepSeek Harness(DSH)里,侧边栏 Session 列表会随运行、待交互、已完成未读、置顶等状态变化,客户端本身已有状态点、选中高亮和 spinner。若你希望在长列表里一眼区分「需要我点一下」「当前打开的是哪条」「跑完还没看」,又不想自己维护一套状态存储或与官方 UI 抢样式,社区插件 dsh-session-eva-status 提供一种只读官方事实、只做视觉增强的做法:不持有状态,从 Client 已有服务读数,给每行写 data- 属性,再用一张注入样式表着色。

这是什么

dsh-session-eva-status 是 DSH Web 侧插件,维护者为 WhatCannotBeSaid,在 SkillHub 目录 分类为「趣味换装」。它按 Session 行的官方 UI 状态着色,配色参考 Evangelion 风格;插件不轮询、不碰 host 半端,卸载时订阅、Observer、行属性和样式表会一并清理。

核心功能

下面按「读什么官方事实 → 画什么」说明(与 README 状态表一致)。

行状态 读取的官方事实 装饰
待交互(审批 / 提问 / 计划审阅等) uiSession.sessionStatus.pendingInteraction 左侧全高竖条,约 1.6 s 呼吸动画;深浅主题各用一种蓝(来自 card C「Newtype」封面:#AAC7EF / #3F629C)
当前在主视图打开的 Session sessions.list 中 retainedBy.mainView > 0 红色全高左侧竖条,静态;深色 #FF3B30,浅色 #E01B24
已完成但未读 sessionStatus.completionUnread 紫色 #7A4FD6 全高左侧竖条
置顶 workspaces.list 的 pinnedSessionIds 行标题文字为静态六色彩虹(background-clip: text);行本身不加竖条,官方 pin 图标与排序不变
运行中 / 子 agent 运行中 / 空闲 / 已归档等 — 不额外绘制,保留官方 spinner 与归档变暗

官方优先级为:待交互 > 运行中 > 子 agent > 已完成。若 Session 已结束但子 agent 仍在跑,官方行会显示 spinner,插件不把它标成「已完成」,避免与 spinner 冲突。

插件自身优先级为:待交互 > 选中 > 子 agent(让位)> 未读。需要你先处理的行优先于「当前正在看」的行;选中行保留红色竖条,子 agent 的 spinner 仍可同时显示。

设计原则:形状表达含义,颜色与光感表达风格。置顶仅改标题文字颜色,不改 pin 图标。深浅主题通过 body[data-ds-dark-theme] 区分,部分颜色在浅色背景下单独校准对比度(≥4.5:1)。

实现要点(便于评估是否与你的 DSH 版本匹配):

  • 行锚点:[data-row-key="session:<id>"](由 @deepseek-ai/dsh-client-ui-workspace 渲染)。
  • 状态来源:ctx.uiSession.sessionStatus、ctx.sessions.list、ctx.workspaces.list。
  • 竖条用行上 ::before 伪元素,不改行背景,以免覆盖官方 hover / 选中反馈。
  • 使用 React 不管理的 data-eva-state,配合针对 data-row-key 的 MutationObserver,避免重渲染清掉标记。

package.json 标明兼容 dshReleases 的 0.2.0-rc.2,harnessRange 为 >=0.2.0-rc.2;许可证 MIT,当前版本 0.2.0。

安装与启用

安装后需重启 DSH(仅刷新页面可能仍用旧 bundle)。将 <profile> 换成你的 profile 名(例如 web)。

从 npm 注册表:

dsh plugin --profile <profile> add dsh-session-eva-status

或从 GitHub:

dsh plugin --profile <profile> add github:WhatCannotBeSaid/dsh-session-eva-status

若本地已有插件目录,也可作为 Profile 依赖安装:

dsh plugin --profile <profile> add <path-to>/dsh-session-eva-status

配置

默认项写在随包提供的 cordis.patch.yml 中,可在该处修改。

字段 默认值 含义
hideOfficialDot true 在待交互与未读行上隐藏官方状态点(由左侧竖条替代)
breatheMs 1600 待交互竖条呼吸周期(毫秒,≥ 200)
colors EVA 调色板 可覆盖 pending / pendingLight / selected / selectedLight / unread;pending、selected 为深色模式值,pendingLight、selectedLight 为浅色覆盖

配置格式错误会在加载时抛错,不会静默跳过。

典型用法

1、按上文命令为指定 profile 安装插件并重启 DSH。
2、打开 Web 客户端侧边栏 Session 列表:有待审批或待回答的行应出现蓝色呼吸竖条;当前主视图 Session 为红色竖条;完成未读为紫色竖条;置顶 Session 标题为彩虹字。
3、若官方小圆点与竖条重复,保持默认 hideOfficialDot: true 即可;想保留官方圆点时可改为 false 并自行对比可读性。
4、需要自定义品牌色时,在 cordis.patch.yml 中调整 colors 或 breatheMs,保存后按 DSH 插件热更新/重启流程生效。

适用场景与注意

适合长期在 DSH 里并行多条 Session、依赖官方状态又希望列表扫一眼就能分级的开发者。它属于「趣味换装」类视觉插件,不改变 Session 逻辑或权限。

安装前建议自行查看 GitHub 源码 与 MIT 许可证。DSH 插件在当前 dsh 进程权限下运行;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店审发。

子 agent 仍在运行时,插件会尊重官方 spinner,不对该行叠加「已完成」样式;归档、空白等状态也不额外装饰,避免与官方语义打架。

结尾

dsh-session-eva-status 把侧边栏 Session 的官方状态映射成 EVA 风格的竖条与置顶彩虹标题,只读 Client、无自管状态,适合想强化列表可读性又不想 fork UI 的场景。目录页:https://www.skillhub.cn/plugins/WhatCannotBeSaid/dsh-session-eva-status;仓库:https://github.com/WhatCannotBeSaid/dsh-session-eva-status。

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

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

Xiaoye