前言¶
在 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。