Status Monitor:DeepSeek Harness 侧边栏实时状态层

前言

DeepSeek Harness 的侧边栏擅长回答「我的会话放在哪个项目」,但不擅长回答「现在发生了什么」——哪个在等你批准、哪个在跑、哪个刚跑完我还没看。一些现代 AI 客户端把这件事做得很好:agent 列表按状态分组、运行中的会话带实时动静、完成的会话留未读标记。Status Monitor 把这套状态语言移植到 DSH:不是替换原生列表,而是在原生列表上方加一层实时状态表,让「项目结构」和「任务状态」同时可见。

插件定位

Status Monitor 是一个给 DeepSeek Harness 侧边栏注入实时状态流的插件,由维护者 zhangyuzhangyu233 开发,版本 0.5.4,分类为客户端插件。它通过叠加一层状态表实现会话状态的可视化,支持折叠摘要、展开通知中心、FLIP 状态切换动画等特性。

状态总表

状态总表叠在「工作区」上方,原生工作区树保持不动。

状态                          ● 3  🔔  ⌄     ← 折叠态:紧凑摘要
  ▸ ● 需要输入                     2
  ▾ ● 正在工作                     1
      📁 dsh-coderipple
         Claude 动态壁纸复刻…  ◌ 实时步骤
  ▸ ● 未读                         3
────────────────────────────────────
工作区                                ← 原生列表,完全保留
  ▸ dsh-coderipper
  ▸ ...

状态分组包括:需要输入、待审查、正在工作、未读、已完成。折叠总表时摘要行保留实时数字(正在工作 / 需要输入 / 未读),空分组自动隐藏箭头。原生工作区分组、搜索、拖拽、置顶、归档、右键菜单完全保留。

状态 → 项目 → 会话 → 执行步骤

展开任意状态,里面先按项目选项卡分栏(沿用原生 folder 图标与行规格),再是会话。

  • 运行中的会话前面是和原生列表一模一样的转圈图标(同一套 SVG 几何 + 1.5s 呼吸节奏);
  • 会话下方显示当前执行步骤:来自 DSH 的 todo 投影里 in_progress 的条目;没写 todo 时回退到运行中的子代理名称;
  • 步骤文字带白色高光从左往右扫过,字号/行距与会话行一致(14px / 20px / 32px 行高);
  • 点会话直接打开,点项目行收起该项目。

折叠摘要 ⇄ 展开通知中心

折叠态(默认紧凑视图)

只显示有内容的分类,标题右侧显示未读总数和通知中心入口(铃铛)。每行可以就地展开,查看该分类下的项目、会话与运行步骤。0 计数自动隐藏。

展开态(通知中心)

四组常驻并全部展开,已完成分组按未读优先排序:

  • 未读项带蓝点加粗,排在前面;打开会话后 DSH 原生清掉未读,自动移入历史;
  • 悬停「已完成」分组行:全部标为已读(保留历史)与 清空已完成(只清已读历史,未读保留);
  • 悬停单条已完成会话:行尾 × 单独删除这条通知;
  • 计数实时跟随,状态写入 localStorage;只影响 Status Monitor 的通知层,不删除或归档真实 DSH 会话。

丝滑的状态切换

Status Monitor 做了一套 FLIP 转场,参照现代客户端的 timeline 动画参数:

动作 动效
会话跨状态组移动 240ms cubic-bezier(.3,.7,.4,1) 平滑滑行
新出现 淡入 + 上移 6px,同曲线
消失 180ms ease-out 淡出 + 上浮 4px(幽灵行)
流式更新 rAF 合帧 + 内容签名去重,数据没变不重建 DOM,动画不被打断

系统「减少动态效果」时全部降级为静态。

子智能体分组

v0.4.1 起,由子智能体(subagent)创建的会话按 origin === 'subagent' 识别,单独归入「子智能体」分组,排在其他项目分组之后。折叠、会话行、运行步骤等行为不变。

v0.5.4 起,子智能体分组改用 16px 的 WinUI 风格描边机器人图标(currentColor、1px 描边、16% 填充),和原生图标保持一致;其它项目分组继续使用原来的文件夹图标;折叠、未读、清空、拖拽等行为全部不变。

v0.5.3 起,子智能体完成后自动离开「已完成」,不再计入未读数、不再出现在已完成通知里(仍在需要输入/工作中可见,方便观察子任务);未读清空动效为按与「已完成」相同的方向逐行右滑淡出,最后收起未读摘要行。

可控、可演示

设置 → 通用里两个开关:Status Monitor 状态表、模拟状态数据(演示)。演示模式用脚本数据循环播放全部状态、项目分栏、执行步骤,不需要真的跑任务。支持中英双语、明暗主题 token 自适应、侧栏折叠 rail 时自动隐藏。

安装

需要 DeepSeek Harness,且 Web UI 中安装过本地插件。

方式 A(推荐):在 DSH 的「插件」面板里从本地目录安装本仓库根目录,或调用 Harness 的 plugin_manager 工具:

install_bundle  target = <本仓库绝对路径>

方式 B(手工登记):

  1. 把本仓库克隆到任意位置;
  2. 在 profile 的 node_modules 下建软链指向仓库根目录(例如 <profile>/node_modules/dsh-status-monitor);
  3. 在 profile 的 cordis.yml 插件列表里加一条:
- id: dsh-status-monitor
  name: dsh-status-monitor
  1. 重启 DSH,在插件面板确认 Status Monitor · 状态栏动效 已启用。

安装后:设置 → 通用 → 打开「Status Monitor 状态表」。想先看看效果,再打开「模拟状态数据(演示)」。

已知限制

  • 待审查(Ready for review) 分组已预留:DSH 当前没有对应信号时计数为 0,但状态行会保留显示;
  • 已完成通知的「清空 / 删除」只作用于 Status Monitor 的通知层,不会删除、归档或修改真实会话;
  • 「全部标为已读」是 Status Monitor 的本地已读标记,不改动 DSH 的 completionUnread;
  • 「未读」的真实来源是 DSH 的 completionUnread(内存态),DSH 重启后未读会重置;
  • 执行步骤依赖会话的 todo 投影,未写清单的长任务只显示转圈(+ 子代理名兜底)。

设计来源

  • Claude 桌面端:侧边栏行状态只有四种:blocked / review / working / unread,文案 Needs input / Ready for review / Working / Unread;行状态色:warning 琥珀 / accent 蓝 / muted 灰;动画:timeline-status-rise(240ms cubic-bezier(.3,.7,.4,1))、timeline-status-fall(180ms ease-out)、展开 200ms cubic-bezier(.19,1,.22,1)。
  • DSH 原生 UI:行高 32px、标题 14px/20px、行间距 2px、section header 36px、StateDot ongoing 转圈几何,全部按原生 CSS 实测值对齐。
  • 本项目没有包含、复制或分发任何 Anthropic / DeepSeek 的代码或资源;视觉与交互为独立重实现,与 Anthropic 无关联、未获其背书。

生态说明

DeepSeek Harness 的理念是「一切皆插件」。社区目录 https://www.skillhub.cn/plugins/zhangyuzhangyu233/dsh-status-monitor 是独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

安装并启用插件后,在 DSH 侧边栏上方会出现状态总表。默认折叠态显示紧凑摘要,点击任意摘要行可就地展开查看项目、会话与运行步骤。展开状态持久化,三角随展开/收起旋转。点击标题右侧铃铛图标可打开通知中心,查看所有状态。在通知中心里,未读项带蓝点加粗,打开会话后自动移入已完成历史。悬停「已完成」分组行可全部标为已读或清空已完成;悬停单条已完成会话可单独删除通知。运行中的会话会显示实时转圈图标和当前执行步骤,步骤文字带白色高光扫过效果。

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

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

Xiaoye