前言¶
在 DSH Web 里同时开多个会话时,任务跑完、模型在等你回答或等你点确认,往往只能靠扫列表或偶尔弹一下的 toast。toast 会自动消失,多个会话叠在一起时也分不清该先处理哪一个。下面介绍社区插件 dsh-dafeiyu-notice(npm 包名 @local/dsh-plugin-task-notify):用右下角「大肥鱼」把完成、等待回答、等待确认放进同一条 FIFO 队列,点一次切回一个会话,并可选钉钉风格提示音与点击回应动画。
这是什么¶
维护者 Trisia,仓库 Trisia/dsh-dafeiyu-notice,简介为「大肥鱼你做完了就叫我」。插件面向 DSH Web,在客户端注入会话 UI,监听会话从运行中变为空闲、以及新的问答/审批请求,用统一队列做视觉与声音提醒。代码采用 MIT 许可(Copyright (c) 2026 Quan Guanyu);社区目录页见 skillhub.cn/plugins/Trisia/dsh-dafeiyu-notice。DSH 生态是「一切皆插件」;SkillHub 等为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
任务完成提醒¶
任意 DSH 会话从「运行中」变为「空闲」,且不是空白会话、也没有待回答/待确认请求时,右下角出现大肥鱼:待机动画循环,气泡显示「任务完成啦!」和会话标题。多个会话先后完成时排成 FIFO 队列,界面上只出现一只大肥鱼,气泡可显示「还有 N 个」。同一会话重复触发只更新队列条目,不重复占位。用户主动停止生成(点击「停止生成」或连按两次 Esc)不会触发完成提醒。
等待回答 / 等待确认¶
新的问答或审批请求与任务完成共用同一条大肥鱼队列,不是会自动消失的 toast。队首标题为「等你回答」或「等你确认」,气泡里可显示「还有 N 个」。用户点一次打开一个会话;问答和审批按发生顺序排队,不会被后来的任务完成插队。
点击切换与回应动画¶
点击大肥鱼(或聚焦后按 Enter / 空格)会:打开队首会话并从队列移除;播放一段随机「点击回应」动画(共 9 段,随机且避免与上一次连续重复);队列未空时动画结束后回到待机,队列清空时最后一帧播完直接收起。气泡右上角 × 可清空整个队列并收起大肥鱼。
九段点击回应动画 id 与名称:wave(元气挥手)、happy(开心跃动)、shy(害羞惊讶)、tickle(挠痒咯咯笑)、angry(傲娇生气)、scared(被吓一跳)、meet(头顶开光)、wake(惊醒)、tumble(原地左转奔跑)。
提示音¶
任务完成使用内嵌钉钉提示音;等待回答/确认使用另一段三音提示。浏览器需先有一次用户手势(点击或按键)才能稳定发声;MP3 被拦截时会退回 WebAudio 合成音。大肥鱼已显示时,新提醒只入队,不重复响铃。
子智能体¶
子智能体(subagent、子智能体 fork、AgentTeams 成员等)默认不在任务完成时提醒,依据是会话元数据 origin 为 subagent 或存在 parentId。等待回答/确认仍会提醒。可在设置中打开「子智能体完成」开关。
其它¶
大肥鱼可拖动,位置写入 localStorage;颜色跟随宿主 --dsw-alias-* 主题令牌;文案跟随宿主语言(zh / en);元素为 role="button",支持键盘与读屏。
安装与启用¶
前置条件:可运行的 DSH Web 环境,以及 Node.js 与 pnpm。官方 README 未提供 dsh plugin add github:... 一类命令,需本地构建后 link 到 Web profile。
先在插件源码目录构建:
cd /absolute/path/to/notify-plugin
pnpm install
pnpm build
构建生成 Host 入口 index.js 与客户端包 lib/client.js;类型检查可用 pnpm typecheck。
再挂到 DSH Web profile:
cd ~/.dsh/profiles/web
pnpm add link:/absolute/path/to/notify-plugin
把包名加入该 profile 的 dsh.profile.bundles(保留原有条目,在末尾追加):
{
"dependencies": {
"@local/dsh-plugin-task-notify": "link:/absolute/path/to/notify-plugin"
},
"dsh": {
"profile": {
"bundles": [
"@local/dsh-plugin-task-notify"
]
}
}
}
插件包内 cordis.patch.yml 会自动把 task-notify 条目插入 profile。重启 DSH Web 服务并刷新页面即可。安装前建议通读仓库源码与 LICENSE;插件随当前 DSH Web 进程与浏览器上下文运行,权限与宿主一致。
典型用法¶
完成、等待回答、等待确认共用一条队列,消费顺序即入队顺序:
会话 A 完成 ─┐
会话 B 等你回答 ─┼─▶ 队列 [A完成, B回答, C确认] ──点击──▶ 打开 A,队列 [B, C]
会话 C 等你确认 ─┘ ──点击──▶ 打开 B,队列 [C]
──点击──▶ 打开 C,队列 []
| 操作 | 效果 |
|---|---|
| 点击大肥鱼 | 打开队首会话,播放随机点击回应动画 |
点击气泡 × |
清空提醒队列并收起大肥鱼 |
| 拖动大肥鱼 | 移动位置,松手后保存 |
| 聚焦后 Enter / 空格 | 等同于点击 |
设置与存储¶
在 设置 → 通用 → 任务完成提醒 中可调整:
| 设置 | 默认 | 说明 |
|---|---|---|
| 提醒 | 开启 | 总开关;关闭后不再产生新提醒 |
| 声音 | 开启 | 完成与等待提示音;打开时会试听一次 |
| 子智能体完成 | 关闭 | 打开后子智能体完成也显示大肥鱼 |
localStorage 键:
| 键 | 内容 |
|---|---|
dsh.taskNotify.settings.v1 |
{"enabled": true, "sound": true, "notifySubagent": false} |
dsh.taskNotify.spritePos.v1 |
{"left": number, "top": number},单位像素 |
提醒队列仅在内存中,刷新页面会清空;位置与设置会保留。重置可在控制台删除对应键后刷新。
适用场景与注意¶
适合在 DSH Web 里长时间跑多会话、需要明确知道「哪一个刚跑完」或「哪一个在等你点确认/回答」的开发者。若点击大肥鱼无法切换会话,需确认当前 DSH 提供 uiWorkspace 服务,且队列内会话仍存在。没有大肥鱼时可按 README 常见问题顺序检查:提醒总开关、是否手动停止、空白会话、子智能体完成开关、是否重新 pnpm build 并刷新、控制台加载错误。没有声音时先给页面一次用户手势,并检查设置与标签页静音。
点击回应动画素材来自 PC2005-cloud/dsh-pet,再分发须遵循原仓库许可;钉钉提示音来自 assets/dingtalk.mp3,仅用于本插件提示。
结尾¶
dsh-dafeiyu-notice 把 DSH Web 上的任务完成、等待回答、等待确认收敛到同一条大肥鱼队列,用一次点击回到对应会话,并区分完成音与待办音。详情与构建说明见 GitHub README 与 docs/DEVELOPMENT.md;目录页:https://www.skillhub.cn/plugins/Trisia/dsh-dafeiyu-notice;源码:https://github.com/Trisia/dsh-dafeiyu-notice。