前言¶
在 DeepSeek Harness(DSH)里并行开多个会话时,任务何时结束、是否失败、是否在等你回答或授权,往往只能靠反复切标签页确认。社区里已有基于会话状态的轻量通知思路;attention-plugins 在同类架构上重写并扩展,把「完成提醒」和「多任务并行时的优先级」放在一起:你可以标一条主线,其余当支线,用声音和可选的系统通知把注意力拉回来,而不必盯屏轮询。
下面介绍这个由维护者 zjbc2000 发布的客户端(Web)插件:它挂在 DSH Web 界面里运行,不替代 Harness 本身的任务调度,只负责感知会话状态并给出可配置的反馈。
这是什么¶
attention-plugins 是面向 DSH Web 的轻量插件,定位是「智能会话通知 + 主线/支线管理」。它监听会话运行与交互状态,在四类事件上触发音效或浏览器通知,并允许你把某个会话标为主线:主线结束立即提醒,支线逐个完成时保持静默,直到全部支线结束再提醒一次。
- 维护者:zjbc2000
- 分类:客户端(
platform: web) - 许可证:MIT(见仓库 LICENSE)
- 当前 package 版本:0.1.2(以仓库
package.json为准) - 目录页:SkillHub 插件页
- 源码:GitHub zjbc2000/attention-plugins
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 指向该目录。
安装完成后:
- 打开 Settings → Attention,确认声音总开关、音量、浏览器通知及各事件开关。
- 打开任意会话,在标题栏或(新会话下)输入框工具行标记主线。
- 若需离开标签页仍能收到系统通知,在设置中开启浏览器通知并在浏览器里允许站点通知权限。
典型用法¶
主线优先的多任务并行¶
同时启动四个会话: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 目录页。