🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

手机提醒 ysl289/dsh-alert

DeepSeek 客户端
ysl2892 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

任务完成或出错时推送到手机,随时掌握进度

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/ysl289/dsh-alert.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)
查看扫描证据(共 8 处,展示前 8 条)
  • 写入剪贴板
    client/client.js:1063
    return navigator.clipboard.writeText(String(text)).then(
  • 读取本地文件
    lib/settings.js:64
    const text = readFileSync(path, 'utf8');
  • 写入本地文件
    lib/settings.js:159
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    lib/settings.js:161
    writeFileSync(tmp, JSON.stringify(value, null, 2), { encoding: 'utf8', mode: 0o600 });
  • 写入本地文件
    lib/settings.js:162
    renameSync(tmp, path);
  • 写入本地文件
    lib/settings.js:164
    chmodSync(path, 0o600);
  • 读取本地文件
    lib/integrations.js:169
    if (!existsSync(path)) return null;
  • 读取本地文件
    lib/integrations.js:171
    const raw = JSON.parse(readFileSync(path, 'utf8'));
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 手机提醒插件:AI 跑完 / 出错 / 等你审批时推到手机。7 个免费通道可选,纯提醒,不强依赖其它插件。

README

由 DeepSeek 最新模型翻译生成
dsh-alert · 手机提醒 AI 在电脑上干活,人在外面刷手机。跑完了、出错了、等你审批了 —— 手机上响一声。 7 个免费通道 · 纯提醒,不带审批按钮 · 不强依赖任何其它插件 📹 50 秒介绍视频  · 🖼 设置面板截图  · 📖 引导事实核对表 目录 - 它解决什么 - 特性一览 - 什么时候会提醒你 - 什么时候不吵你 - 能推到哪儿 - 安装 - 快速开始(2 分钟) - 各通道配置 - 设置项 - 和其它插件联动 - 设计 - 常见问题 - 排错 - 开发 - 隐私 - 许可 它解决什么 用 AI 跑长任务时,最难受的是这三件事: | 场景 | 没有这个插件 | 装了这个插件 | | 任务跑完了,你在客厅 | 每隔一会儿回来瞄一眼屏幕 | 手机响一声,回来看结果 | | 任务卡在「等你审批」 | 半小时后回来才发现,白等 | 手机响一声,回来点一下 | | 任务报错了,你没看见 | 下次回来才看到红字 | 立刻知道,能重跑 | 这个插件只做一件事:把通知送到你手机上。 它没有远程审批按钮 ——知道「该回来了」就够了,真要点什么还是回电脑上点更稳妥。
展开完整文档(README 剩余 1 节)
dsh-alert · 手机提醒

AI 在电脑上干活,人在外面刷手机。跑完了、出错了、等你审批了 —— 手机上响一声。

7 个免费通道 · 纯提醒,不带审批按钮 · 不强依赖任何其它插件

📹 50 秒介绍视频  · 🖼 设置面板截图  · 📖 引导事实核对表

目录

- 它解决什么
- 特性一览
- 什么时候会提醒你
- 什么时候不吵你
- 能推到哪儿
- 安装
- 快速开始(2 分钟)
- 各通道配置
- 设置项
- 和其它插件联动
- 设计
- 常见问题
- 排错
- 开发
- 隐私
- 许可

它解决什么

用 AI 跑长任务时,最难受的是这三件事:

| 场景 | 没有这个插件 | 装了这个插件 |
| 任务跑完了,你在客厅 | 每隔一会儿回来瞄一眼屏幕 | 手机响一声,回来看结果 |
| 任务卡在「等你审批」 | 半小时后回来才发现,白等 | 手机响一声,回来点一下 |
| 任务报错了,你没看见 | 下次回来才看到红字 | 立刻知道,能重跑 |

这个插件只做一件事:把通知送到你手机上。 它没有远程审批按钮 ——知道「该回来了」就够了,真要点什么还是回电脑上点更稳妥。

特性一览

| 7 个通道 | ntfy / 微信(企业微信)/ Bark / Server酱 / Webhook(钉钉·飞书·企微群)/ QQ / 自定义 |
| 可多选同时发 | 开了几个就发几个,任一成功就算成功 |
| 四道防打扰闸门 | 延迟提醒、短任务过滤、免打扰时段、定时汇总 |
| 纯提醒 | 不做远程审批。减少被滥用的面,也少一堆权限 |
| 零依赖 | 不 require 任何其它插件。装了 dsh-im / cost-meter / pocket 会自动增强,没装也照常工作 |
| 两套皮肤 | 默认跟随宿主(DeepSeek 蓝);装了 claude-style 自动切珊瑚色 |
| 失败能自解释 | 常见错误码都配上「这是什么 + 怎么办」,不给干巴巴的报错 |
| 422 项测试 | 三平台 × 两版本 CI。关键约束都有断言锁着 |

什么时候会提醒你

六个触发器,默认全开,可以单独关:

| 触发器 | 什么时候响 |
| 任务完成 | 一轮对话正常结束 |
| 任务出错 | 出错、被中断 |
| 等你审批 | AI 请求执行需要批准的命令 |
| 等你回答 | AI 用 ask_user_question 问你问题 |
| 任务受阻 | 权限不足、目标被阻塞 |
| 目标完成 | 长期目标达成 |

什么时候不吵你(四道闸门)

| 闸门 | 默认行为 | 为什么 |
| 延迟提醒 | 等 20 秒再发 | 你 10 秒就回来看屏幕了,通知自动取消 |
| 短任务过滤 | 跑不到 30 秒的不发 | 「你好」这种一问一答不值得吵你 |
| 免打扰时段 | 可设如 23:00-08:00 | 夜里攒着,早上发一条 |
| 定时汇总 | 可选 30 分钟一条 | 连续跑十个任务时,攒成一条而不是十条 |

四个都能在设置页里调,也可以关掉。

能推到哪儿(7 个免费通道,可多选)

按真实动手成本排序 —— 不是按「官方程度」:

| # | 通道 | 适合谁 | 成本 | 限额 |
| 1 | ntfy ⭐ | 所有人 | 装个 App + 订阅,2 分钟 | 无 |
| 2 | Bark | iPhone 用户 | 装 App + 复制 key,3 分钟 | 无 |
| 3 | Server酱 | 想收在微信里 | 微信扫码,1 分钟 | 免费 5 条/天 |
| 4 | Webhook | 已有钉钉/飞书/企微群 | 群里加机器人,5 分钟 | 平台限制 |
| 5 | 微信(企业微信) | 想走官方路径 | 注册企业 + 建应用 + 配 IP,半小时起 | 无 |
| 6 | 自定义 | 有自己服务的开发者 | 有个能收 HTTP 的地址 | 你的 |
| 7 | QQ | 已有 QQ 机器人 | 认证 + 抠 openid,最折腾 | 20 条/分钟 |
| + | IM 复用 | 装了 dsh-im 的人 | 直接复用现成机器人 | 平台限制 |

推荐第 1 个。 ntfy 不用注册、不限条数、不用配 IP。
企业微信虽好,但它要求「企业可信IP」——家庭宽带是动态 IP,今天加明天变,个人用户基本做不成。

为什么去掉了 PushPlus 和抖音

- PushPlus:免费额度各渠道都是 0,必须付费。这个插件的卖点是「免费能用」,留着它就是在误导人。
- 抖音:只对企业主体开放,且是「商户 → 粉丝」方向,个人做不了主动推送。

已经有 dsh-im 的人:可以直接复用

装了 @xmanrui/dsh-im 的话,选「IM 复用」,直接复用它已经接好的微信 / 飞书 / Telegram 机器人,不用再申请一套推送服务。

需要先在 dsh-im 里给机器人配一个「目标」(齿轮 → 新建目标 → 测试 → 保存),之后这一页会自动出现下拉框。

安装

方式一:插件市场(最简单)

打开 DSH → 设置 → 插件 → 搜索 dsh-alert → 安装 → 重启 DSH。

方式二:命令行

在 DSH 对话里直接说:

帮我装 dsh-alert

方式三:从 GitHub 装

找到你的 profile 目录(通常 ~/.dsh/profiles/desktop)
cd ~/.dsh/profiles/desktop
npm install github:ysl289/dsh-alert

然后在 package.json 的 dsh.profile.bundles 里加一行 "dsh-alert"。

方式四:本地目录(改代码调试用)

cd ~/.dsh/profiles/desktop
npm install /path/to/dsh-alert

所有方式都要做的最后一步

重启 DSH。 插件不是热加载的:

- Desktop:退出应用再打开
- Web:重启 dsh web,然后刷新浏览器

重启后进 设置 → 手机提醒,就能看到面板了。

快速开始(2 分钟,ntfy)

以最省事的 ntfy 为例:

1. 手机装 App 应用商店搜 ntfy 安装。图标是白底黑色小喇叭,开发者 Philipp Heckel。

2. 复制主题名 面板里已经帮你生成好了,形如 dsh-7f3a。点右边复制按钮。

3. 在 App 里订阅 打开 ntfy → 右上角 + → Subscribe to topic → 粘贴 → SUBSCRIBE。
订阅成功后首页会多出一行 dsh-xxxx。

4. 回来点「发送测试」 手机响一声就配好了。

之后 AI 跑完任务、出错、等你审批时,手机会自动响。

⚠️ 主题名就是手机和电脑之间的「暗号」,两边必须完全一致。
改完要回 App 里重新订阅。

各通道配置

每个通道的面板里都有分步引导,写着「在哪儿做 / 看到什么算对 / 注意事项」。
下面是梗概,细节以面板为准。

ntfy(推荐)

| 字段 | 说明 |
| 主题名 | 必填。手机 App 里订阅的那个名字 |
| 服务器 | 用官方的保持 https://ntfy.sh |
| 访问令牌 | 只有自建服务器开了鉴权才需要 |
| 提醒强度 | 默认 high(会弹窗置顶)。default 只进通知栏 |

注意:default 优先级不会弹窗,只躺在通知栏里 —— 那就失去意义了。所以默认给了 high。

Bark(iPhone)

| 字段 | 说明 |
| 设备 Key | 必填。Bark App 里那条地址 https://api.day.app/XXXXXXXX,只取斜杠后那段 |
| 服务器地址 | 官方保持 https://api.day.app |
| 提示音 / 分组 | 可选 |

注意:只填斜杠后那一段。连 https:// 一起粘会报 failed to get device token。

微信(企业微信自建应用)

| 字段 | 说明 |
| 企业 ID(CorpID) | 管理后台 →「我的企业」→「企业信息」→ 页面最底部的「企业ID」,ww 开头 |
| 应用 Secret | 管理后台 →「应用管理」→ 点进你建的应用 → Secret 旁点「查看」 |
| 应用 AgentId | 应用详情页顶部「AgentId」后面那串数字 |
| 发给谁 | 留空 = @all(发给全企业) |

⚠️ 这条路有门槛:企业微信会校验「企业可信IP」。
家庭宽带是动态 IP,今天加了明天可能就变。个人用户建议直接用 ntfy。

如果坚持要用,管理后台 →「应用管理」→ 你的应用 →「企业可信IP」里加 IP。

Server酱

| 字段 | 说明 |
| SendKey | SCT 开头是老版(sct.ftqq.com),sctp 开头是新版 Server酱³(sc3.ft07.com) |

两代都支持,插件会自动识别用哪个端点。

注意:免费版每天只有 5 条。

Webhook(钉钉 / 飞书 / 企微群)

| 字段 | 说明 |
| Webhook 地址 | 必填。整条地址,含 ?access_token= 或 /hook/ 后面那段 |
| 平台 | 按地址开头选:oapi.dingtalk.com→钉钉,open.feishu.cn→飞书,qyapi.weixin.qq.com→企微群 |
| 请求体模板 | 留空就按平台自动生成 |
| 额外请求头 | 一般不填 |
注意:钉钉和飞书强制要求配「安全设置」。选「自定义关键词」填 DSH 最省事——本插件发的每条消息标题都带 DSH。

QQ 机器人

| 字段 | 说明 |
| AppID | 开放平台 → 你的机器人 →「开发设置」→ AppID(纯数字) |
| AppSecret | 同一个页面 → 点「重置」才显示,只显示一次 |
| OpenID | 不是 QQ 号。来自单聊消息事件 C2C_MESSAGE_CREATE 的 author.user_openid |

这条路最折腾:openid 不在后台界面上直接显示,得从消息事件里取。
建议改用 dsh-im 的扫码接入。

自定义 HTTP

| 字段 | 说明 |
| URL | 必填。能接收 HTTP 请求的完整地址 |
| 方法 | 一般 POST |
| 请求头 | 需要鉴权时填 JSON |
| 请求体 | 支持 {{title}} {{body}} {{url}} 占位 |
| 视为成功的状态码 | 默认 2xx |

IM 复用(需装 dsh-im)

需要 @xmanrui/dsh-im,在它的「设置 → IM机器人」里:

1. 添加机器人(飞书/微信/QQ 扫码,Telegram 填 Bot Token)
2. 点卡片右上角齿轮 → 复制 Bot ID →「新建目标」→ 选已聊会话 → 测试 → 保存
3. 回到本插件的「IM 复用」页,选机器人 + 目标,点发送测试

注意:装完 dsh-im 必须重启 DSH,插件不是热加载的。

设置项

什么时候提醒

| 项 | 类型 | 默认 | 说明 |
| 六个触发器 | 开关 | 全开 | 见上文触发器表 |
| 延迟提醒 | 秒 | 20 | 这段时间内你回来操作了就取消 |
| 短任务不提醒 | 秒 | 30 | 跑得比这快的不发 |
| 免打扰时段 | 文本 | 空 | 形如 23:00-08:00 |
| 免打扰时 | 单选 | 攒着之后发 | 也可选直接丢掉 / 照发 |
| 定时汇总 | 开关 + 分钟 | 关 | 攒成一条再发 |

提醒里带什么

| 项 | 默认 | 说明 |
| 带跳回链接 | 开 | 手机上点得开(需 dsh-pocket) |
| 带上 AI 最后一段回复 | 开 | |
| 带上工作目录 | 关 | |
| 带上花费 | 关 | 需 dsh-cost-meter |
| 子代理会话也提醒 | 关 | |

面板外观

跟随宿主 / DeepSeek 蓝 / Claude 珊瑚。装了 claude-style 会自动跟随。

和你已装的插件联动

每一条都是可选的。缺了谁,对应增强就安静地不生效,绝不会因此挂掉。

| 插件 | 联动效果 |
| dsh-pocket | 通知里的链接自动换成局域网地址,手机直接点开 |
| dsh-cost-meter | 提醒里带上本次花费 |
| dsh-claude-style | 面板自动切成珊瑚色 |
| dsh-im | 多一个「IM 复用」通道,直接用现成机器人 |
| dsh-notify-windows | 桌面也弹一下 |

dsh-pocket 这条为什么最值钱

默认情况下,通知里的链接是 http://127.0.0.1:PORT —— 这个地址在手机上指手机自己,必然打不开。

装了 dsh-pocket 并开启局域网访问后,链接会换成 http://10.x.x.x:3081,同一个 WiFi 下手机能直接点开,跳回那个会话。

这个替换是自动的,不需要配置。

设计

两套皮肤

| 皮肤 | 主色 | 用于 |
| DeepSeek(默认) | #4d6bfe | 官方风格 |
| Claude | #d97757 | 配 claude-style 插件 |

两套都经过对比度校验:珊瑚色配白字只有 2.9:1(不达标),所以按钮文字改用了近黑色 #1f1e1d,达到 5.33:1。

设计规范(都有测试锁着)

- ❌ 不用 emoji 当结构图标(字体依赖、跨平台不一致)
- ✅ 字号只用 12 / 14 / 16 / 20 / 26 五档
- ✅ 间距只用 4 的倍数
- ✅ 触摸目标 ≥ 44px
- ✅ 文字对比度 ≥ 4.5:1
- ✅ 键盘焦点环始终可见
- ✅ 尊重 prefers-reduced-motion

提醒的「注意事项」用警示色块 + 图标表达,而不是在正文里写「注意:」。
这是刻意的:颜色比文字前缀更容易被看见。

常见问题

装了以后设置里看不到?

先确认重启过 DSH。插件不是热加载的,装完必须重启应用(Web 要重启 dsh web 并刷新浏览器)。

还看不到就检查 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 里有没有 dsh-alert。

点了发送测试,手机没响?

按这个顺序查:

1. 手机上 App 确实装了吗,主题名订阅了吗
2. 主题名两边完全一致吗(大小写、位数)
3. 面板下方有没有红字报错?那行字会告诉你具体原因
4. ntfy 的话,App 里有没有开「instant delivery」——不开可能延迟很久

为什么不做远程审批按钮?

这是刻意的取舍。

远程审批意味着插件要能替你「批准」命令执行 —— 这是很大的权限面。
而且手机上点错一下就可能批准了危险操作。

提醒的价值是「让你知道该回来了」,做到这一点就够。

为什么企业微信默认排在后面?
因为它要求「企业可信 IP」,而家庭宽带是动态 IP。今天加了明天变,个人用户基本做不成。

这不是能力问题,是它的设计面向企业内网。所以面板里明确标了「较麻烦」并前置警告,而不是等用户走完五步才在最后一步撞墙。

为什么设置侧边栏的图标是自制铃铛?

宿主的设置图标是按 section id 硬编码的,只认 account / models / agent-presets / plugins / archived-sessions 五个 id,其余一律回退成齿轮。
register() 里没有 icon 字段 —— 插件侧改不了。

所以本插件按标题文字认出自己那一项,把 svg 换成铃铛。宿主将来改版找不到时,它会安静失效(变回齿轮),不影响任何功能。

排错

面板会把常见错误翻译成人话。下面是完整的映射表:

| 你会看到 | 意思 | 怎么办 |
| errcode 60020 | 企业微信要求可信 IP | 换 ntfy,或把公网 IP 加进白名单 |
| errcode 40013 | CorpID 不对 | 检查企业 ID 是否 ww 开头、有没有复制全 |
| errcode 40001 | Secret 不对 | Secret 点「查看」重新拿一次 |
| errcode 81013 | 「发给谁」的账号不存在 | 改成 @all |
| errcode 300005 | 钉钉 webhook token 无效 | 重新加机器人,整条地址复制 |
| errcode 93000 | 企微群 webhook 地址无效 | 注意别和「企业微信自建应用」搞混 |
| errcode 310000 | 钉钉关键词没匹配 | 关键词填 DSH |
| failed to get device token | Bark Key 不对 | 只填斜杠后那段 |
| [AUTH]错误的Key | Server酱 SendKey 不对 | 整串复制,别截断 |
| code 10004 | QQ 说机器人不存在 | AppID 不对,是纯数字 |
| 40034105 | 你在 QQ 里关了主动消息 | 机器人资料页打开 |
| HTTP 5xx | 对方服务器出错 | 等几分钟再试,不是你配错 |

更细的来源依据见 docs/GUIDE-SOURCES.md。

开发

git clone https://github.com/ysl289/dsh-alert.git
cd dsh-alert
npm test # 422 项离线断言

测试怎么跑

node scripts/test.mjs # 跨版本安全,列文件而不是靠 glob

不要用 node --test "test/*.test.mjs" —— Node 20 会把引号里的 glob 当字面量。

真实 Cordis 验证

想确认插件在真宿主里能激活(而不只是单测过):

从 app.asar 里抽出 Cordis(只需一次)
node scripts/extract-cordis.mjs
CORDIS_ENTRY=/path/to/cordis/lib/index.js npm run test:e2e

目录结构

dsh-alert/
├── lib/ 服务端 │ ├── index.js 入口:事件订阅、去重、策略、投递 │ ├── channels/ 每个通道独立一个文件,纯对象、可脱离宿主测试 │ ├── policy.js 延迟队列 / 汇总队列 / 免打扰 │ ├── deliver.js 重试与超时 │ ├── integrations.js 探测已装的联动插件 │ └── im-bridge.js dsh-im 桥接(注意:必须 inject) ├── client/ │ └── client.js 设置面板 + 引导数据 + 图标系统 ├── test/ 422 项断言 ├── docs/ 截图、视频、核对表 └── scripts/ 测试运行器

两个必须知道的约束

1. Config 不能导出普通对象。 宿主会调 Config['~standard'].validate(),普通对象会抛 TypeError,然后插件被写成 disabled: true。
2. 兄弟插件的服务必须用 ctx.inject 拿。 直接 ctx.dshIm 在真实 Cordis 下会抛 cannot get property without inject。之前的实现用 try/catch 吞异常,导致「装好了也认不到」——用户踩过。

隐私

- 不收集任何数据。 没有统计、没有上报、没有账号。
- 消息只发到你配的那个通道。 用的是各平台自己的 API。
- 凭据只存在本地。 在 ~/.dsh/dsh-alert/settings.json,权限跟随系统用户目录。
- 第三方通道意味着消息经过它。 选 Server酱 / Webhook 时请注意这点;只想走官方路径就用 ntfy 自建或企业微信。

许可

MIT © ysl289

⬆ 回到顶部

如果这个插件省了你几次来回跑,给个 ⭐ 就好
预览分享卡片长什么样 ↓ysl289/dsh-alert
分享 · DeepSeek Harness Hub
ysl289/dsh-alert

任务完成或出错时推送到手机,随时掌握进度

这是你的仓库?认领条目

回到顶部