前言¶
在 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
核心功能¶
两个界面,同一数字¶
- 侧栏会话行:仅有子智能体活动时,用数字替代(或占据)该行状态区域中心的转圈示意;主智能体也在跑时,数字落在宿主转圈/圆点的角落,主智能体的 spinner 仍由宿主绘制。警告、错误与数字并列在角落,避免被计数遮挡。其他「主智能体空闲但子任务在跑」等状态下,数字居中放大显示。
- 会话标题旁(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。资料中的安装步骤如下。
- 将仓库放到你的工作目录(资料使用
git clone获取源码;安装前请自行阅读源码与 MIT 许可证,插件以当前 DSH 进程权限运行)。 - 在克隆后的目录内执行本地 bundle 安装:
cd dsh-title-agent-indicator
dsh plugin --profile web add "link:$PWD"
- 安装后启动或重启 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-ui1.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 目录页。