attention-plugins:DSH Web 会话通知与主线/支线编排

前言

在 DeepSeek Harness(DSH)里并行开多个会话时,任务何时结束、是否失败、是否在等你回答或授权,往往只能靠反复切标签页确认。社区里已有基于会话状态的轻量通知思路;attention-plugins 在同类架构上重写并扩展,把「完成提醒」和「多任务并行时的优先级」放在一起:你可以标一条主线,其余当支线,用声音和可选的系统通知把注意力拉回来,而不必盯屏轮询。

下面介绍这个由维护者 zjbc2000 发布的客户端(Web)插件:它挂在 DSH Web 界面里运行,不替代 Harness 本身的任务调度,只负责感知会话状态并给出可配置的反馈。

这是什么

attention-plugins 是面向 DSH Web 的轻量插件,定位是「智能会话通知 + 主线/支线管理」。它监听会话运行与交互状态,在四类事件上触发音效或浏览器通知,并允许你把某个会话标为主线:主线结束立即提醒,支线逐个完成时保持静默,直到全部支线结束再提醒一次。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行阅读源码与许可证——插件随当前 DSH Web 进程在浏览器侧执行,配置写入本机 localStorage。

核心功能

四类事件通知

插件区分四种通知场景(可在设置里按事件单独开关默认音效):

事件 含义 默认音效
Completed 任务成功跑完(running 从 true 到 false) Chime
Failed Agent 循环真实失败(api-session/error;用户主动中止不触发) Subtle
Question 需要用户回答 Success
Permission 需要用户授权(含 plan-review、approval 等 pending 交互) Success

完成与失败主要依赖远程事件 api-session/status、api-session/error;提问与权限没有对应的 api-session/* 远程事件,实现上通过注入 UI 会话状态 ctx.uiSession.sessionStatus 中的 pendingInteraction(kind: 'question' | 'plan-review' | 'approval')检测,首帧只记录基线以避免误报。

主线与支线

  • 标为主线:该会话完成时立即声音/通知(在全局开关与事件开关允许的前提下)。
  • 未标主线:视为支线;单个支线完成时不为「全部完成」单独响铃。
  • 当所有支线都完成后,触发一次汇总提醒(README 示例文案为 “All side-line tasks completed”)。
  • 若没有任何会话标主线(纯支线模式):全部会话都结束后触发一次「All tasks completed」类提醒。

主线标记有两处入口:会话标题栏右侧「设为主线」按钮,以及新会话在发出第一条消息之前、输入框工具行左侧的紧凑星标图标。未标记为灰色星标,标记后为橙色高亮的「主线」状态。

声音与浏览器通知

  • 内置三种 Web Audio 实时合成音效:Chime、Success、Subtle;音量 0–100%,默认 70%。
  • 可选浏览器系统通知(Notification API,需用户授权);默认关闭。
  • 「为当前会话也通知」默认关闭——通常只在离开该标签或不想被当前页打断时打开浏览器通知即可。

设置面板位于 Settings → Attention,配置持久化键名为 attention-plugins:config。

界面注入与实现要点

插件通过 Cordis patch 向 DSH Web 注入 slot:conversation.session.header.utilities(标题栏主线按钮)、conversation.input.left(输入框工具行星标)。事件引擎、主线/支线逻辑与音效参数在仓库内带有 Vitest 单元测试(README 记录为 62 个测试全部通过)。

安装与启用

环境要求:DeepSeek Harness ≥ 0.1.6-alpha.1。

官方 README 给出的安装方式是从本地构建后以 file: 路径注册 Web 插件(尚未列出 npm 一键安装;路线图中有 npm 发布与目录收录待办):

# 从本地安装
cd /path/to/attention-plugins
pnpm install && pnpm run build
dsh plugin --profile web add file:$(pwd)

# 重启 DSH Web
dsh web

将 /path/to/attention-plugins 换为你 clone 或解压后的仓库根目录。构建产物经 tsc 与 bundle-client.mjs 生成,再由 dsh plugin --profile web add 指向该目录。

安装完成后:

  1. 打开 Settings → Attention,确认声音总开关、音量、浏览器通知及各事件开关。
  2. 打开任意会话,在标题栏或(新会话下)输入框工具行标记主线。
  3. 若需离开标签页仍能收到系统通知,在设置中开启浏览器通知并在浏览器里允许站点通知权限。

典型用法

主线优先的多任务并行

同时启动四个会话:A 标为主线,B、C、D 为支线。

A 完成 → 立即通知
B、C、D 各自完成 → 静默
全部支线完成 → 通知「All side-line tasks completed」

适合「一个主需求必须马上跟进,其余是辅助扫描或子任务」的工作方式。

纯支线、无主线

三个会话均未标主线:

A、B 完成 → 静默
C 完成(最后一个)→ 通知「All tasks completed」

适合一批同质任务同时跑、只关心「是否全部结束」的场景。

阻塞式交互

会话在运行中抛出 Question 或 Permission:

→ 通知 + Question 默认 Success 音效
→ 用户切回标签回答或授权

Question 使用 Success、Completed 使用 Chime 等默认映射可在设置里按事件调整。

适用场景与注意

适合谁:经常在 DSH Web 里开多会话的开发者或使用者;需要 audible / 系统级提醒而不是手动刷新;愿意用「一条主线 + 多条支线」区分优先级的人。

使用前注意:

  • 插件仅在 Web profile 下按 README 方式安装;依赖 DSH 0.1.6-alpha.1 及以上客户端注入包(如 dsh-client-ui-session、dsh-api-session-controller 等,见 package.json 的 dsh.client.inject)。
  • 失败通知语义是 agent loop 错误,不等于所有用户可见的异常;用户中止不会走 Failed 路径。
  • 浏览器通知与 Web Audio 受浏览器策略、标签页焦点、音频设备切换影响;实现上对 AudioContext 做了冷启动预热与 devicechange 后重建,仍建议在真实多设备环境下试一次音量与路由。
  • 路线图仍包含 npm 发布、更多音效、自定义音频上传等项,当前以 GitHub 源码安装为主。

若你维护或 fork 插件,仓库 pnpm test 可跑完整单元测试;pnpm run watch 便于改 client bundle 后刷新 DSH Web 验证。

结尾

attention-plugins 把 DSH 多会话并行时的「什么时候该看一眼」收敛成可配置的四类事件、可选浏览器通知,以及主线/支线两套汇总逻辑;安装路径与配置项均以仓库 README 为准。进一步细节与英文说明见 GitHub 仓库,社区索引见 SkillHub 目录页。

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

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

Xiaoye