dsh-title-agent-indicator:在会话侧栏与标题旁显示运行中的子智能体数量

前言

在 DeepSeek Harness(DSH)里并行跑子智能体(subagent)时,侧栏和当前会话标题往往只反映主智能体的转圈、圆点或等待状态,不容易一眼看出「这一会话下面还有多少个子任务在跑」。官方 UI 与 codex-ui 各自有状态指示,但子智能体数量并不会以统一数字形式叠在上面。

dsh-title-agent-indicator 是 howyay 维护的 DSH Web 客户端插件(当前版本 0.5.0,MIT 许可证)。它在不替代宿主对主智能体状态负责的前提下,统计会话子树里 origin === "subagent" 且仍在运行的节点数,并在两个界面位置用同一数字展示;没有运行中的子智能体时,插件不绘制任何元素。

这是什么

插件类型为 Web 客户端注入(platform: web),通过 Cordis patch 注册占用位,读取标准会话列表 store(useSessions → byId),单次折叠统计各会话后代里正在运行的 subagent,与官方 ui-subagent 目录所用投影一致。不发起 RPC、不做轮询、不持久化额外数据。

维护者与源码:

  • 目录页:https://www.skillhub.cn/plugins/howyay/dsh-title-agent-indicator
  • 仓库:https://github.com/howyay/dsh-title-agent-indicator

核心功能

两个界面,同一数字

  1. 侧栏会话行:仅有子智能体活动时,用数字替代(或占据)该行状态区域中心的转圈示意;主智能体也在跑时,数字落在宿主转圈/圆点的角落,主智能体的 spinner 仍由宿主绘制。警告、错误与数字并列在角落,避免被计数遮挡。其他「主智能体空闲但子任务在跑」等状态下,数字居中放大显示。
  2. 会话标题旁(Session header):当前会话在标题相邻 actions 行显示相同数字(占用 conversation.session.header.actions,order 5)。

数字含义

显示 含义 条件
N 该会话后代中正在运行的 subagent 数量 存在 N 个运行的 descendant subagent
无 不绘制 没有运行的 descendant subagent

主智能体自身状态(运行中、等待授权、等待计划审阅、等待回答、已结束等)仍由宿主 UI 负责;本插件只计数 subagent,并隐藏仅代表 subagent 活动的运行图标,同时保持警告与错误可见。

无障碍与 tooltip 支持中英文,例如「Only subagents working: N」或「Main agent working + N subagent(s) running」。

与收藏(archive-manager favorites)的配合

在 archive-manager 收藏场景下,仅 subagent 活动的行可使用全尺寸 favorite;悬停或标记为收藏时,favorite 可替代数字显示。主活动、警告、错误场景下,角落 favorite 仍保留。

实现要点(便于排查)

  • 侧栏无逐行 slot 时,通过无渲染的 shell.overlay 占用(order 200)装饰宿主已有行。
  • 行身份:codex-ui 读 data-dcu-session;其他宿主走 React fiber 链上的 sessionId 等 props,并按行缓存,避免重复遍历。
  • 宿主指示器:codex-ui 用 .dcu-wb-running;官方侧栏用 status slot 后缀或 aria-hidden 标记定位圆点,数字 append 到该元素内;无宿主指示器时数字以正常流排在行首。
  • Mutation 观察与按需整表重绘,避免流式页面 DOM 抖动导致反复全量重绘;相同读数提前返回。

安装与启用

插件未发布到 npm,需将仓库放到本机项目目录后,以本地 link 方式加入 DSH Web profile。资料中的安装步骤如下。

  1. 将仓库放到你的工作目录(资料使用 git clone 获取源码;安装前请自行阅读源码与 MIT 许可证,插件以当前 DSH 进程权限运行)。
  2. 在克隆后的目录内执行本地 bundle 安装:
cd dsh-title-agent-indicator
dsh plugin --profile web add "link:$PWD"
  1. 安装后启动或重启 DSH Web profile。

更新时,在克隆目录执行 git pull --ff-only,再重启 DSH Web profile。

环境要求(来自 package.json 与 README):

  • DSH:>=0.1.5-rc.1(开发与说明针对 0.1.5-rc.1)
  • 会话行 UI:官方侧栏 @deepseek-ai/dsh-client-ui-workspace,以及 @michengai/dsh-codex-ui 1.1.37
  • peerDependencies:react ^18.2.0

测试与验证

仓库提供无浏览器的冒烟测试,可在改代码或升级宿主后快速回归逻辑:

node test/smoke.cjs

或使用 npm script:

npm test

冒烟测试覆盖双占用注册、标题数字、侧栏绘制(官方侧栏 dot 与 codex-ui spinner / 无 spinner 行)、数字嵌套位置、data-dcu-session 路径、嵌套归属与自引用环、幂等重绘与 disposal 清理等。

浏览器侧排版与状态、favorite 行为需 isolated agent-browser 会话,例如:

AGENT_BROWSER_SESSION=<isolated-session> node test/browser-typography.cjs
AGENT_BROWSER_SESSION=<isolated-session> node test/browser-state.cjs
AGENT_BROWSER_SESSION=<isolated-session> node test/browser-favorite.cjs

若可执行文件不在 PATH,设置 AGENT_BROWSER。这些测试使用 fixture 页面,不验证已登录的 DSH 生产页。

适用场景与注意

适合经常在单会话内拉起多个 subagent、需要在侧栏和当前会话标题上同步看到「还有几个子在跑」的 DSH Web 用户。没有 subagent 运行时界面保持与未装插件时一致(无额外 DOM)。

安装前注意:

  • 插件随 DSH Web 客户端加载,权限与当前 DSH 进程一致;仅信任来源明确的仓库与版本(当前资料为 0.5.0)。
  • 强依赖宿主侧栏 DOM / fiber 约定;升级 dsh-codex-ui 或官方 workspace UI 后,若数字错位或消失,应对照 README 中的兼容版本并跑 smoke / browser 测试。
  • 社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方应用商店从属关系;插件星标与归属以 GitHub 与目录页为准(资料记载星标为 0)。

结尾

dsh-title-agent-indicator 把「运行中的 subagent 数量」收成侧栏状态位与会话标题旁的一个数字,主智能体状态仍交给宿主,计数数据来自标准 session store、无额外后端。需要接入时,按上文 dsh plugin --profile web add "link:$PWD" 安装并重启 Web profile;细节与 issue 见 GitHub 仓库,分类入口见 skillhub 目录页。

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

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

Xiaoye