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

钉钉任务通知 LapStdy/dsh-dingtalk-notify

DeepSeek Harness
LapStdy33 天前有提交已提供中文文档扫描:含敏感能力

任务完成或需审批时推送到钉钉群提醒你

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add LapStdy/dsh-dingtalk-notify
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · platform
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/11/04·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 33 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 27 处,展示前 23 条)
  • 读取本地文件
    lib/index.js:57
    const manifest = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
  • 读取本地文件
    lib/dingtalk.js:242
    return readFileSync(file, 'utf8').replace(/^ FEFF/, '')
  • 读取本地文件
    lib/dingtalk.js:255
    if (existsSync(file)) fromFile = JSON.parse(readConfigText(file))
  • 读取本地文件
    lib/dingtalk.js:281
    if (existsSync(file)) return false
  • 写入本地文件
    lib/dingtalk.js:282
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    lib/dingtalk.js:283
    writeFileSync(file, `${JSON.stringify(TEMPLATE, null, 2)}\n`, 'utf8')
  • 读取本地文件
    lib/dingtalk.js:374
    if (existsSync(file)) current = JSON.parse(readConfigText(file))
  • 写入本地文件
    lib/dingtalk.js:385
    copyFileSync(file, backup)
  • 写入本地文件
    lib/dingtalk.js:404
    mkdirSync(dirname(file), { recursive: true })
  • 读取本地文件
    lib/dingtalk.js:405
    if (existsSync(file)) {
  • 写入本地文件
    lib/dingtalk.js:407
    copyFileSync(file, `${file}.bak`)
  • 写入本地文件
    lib/dingtalk.js:413
    writeFileSync(tmp, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
  • 读取本地文件
    lib/dingtalk.js:430
    if (statSync(file).size > LOG_MAX_BYTES) truncateSync(file, 0)
  • 发起网络请求
    lib/dingtalk.js:669
    const response = await fetch(signUrl(webhook, config.secret), {
  • 发起网络请求
    lib/client.js:81
    return fetch(path, {
  • 发起网络请求
    lib/client.js:168
    fetch(API.presence, {
  • 读取本地文件
    bin/selftest.mjs:42
    check('模板带注释键', typeof JSON.parse(readFileSync(dingtalk.configPath(), 'utf8'))._说明 === 'string')
  • 读取本地文件
    bin/selftest.mjs:53
    check('写入保留注释键', typeof JSON.parse(readFileSync(dingtalk.configPath(), 'utf8'))._说明 === 'string')
  • 读取本地文件
    bin/selftest.mjs:243
    const manifest = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
  • 写入本地文件
    bin/selftest.mjs:332
    writeFileSync(dingtalk.configPath(), '{"enabled": true, oops', 'utf8')
  • 读取本地文件
    bin/selftest.mjs:338
    const backups = readdirSync(join(tempHome, 'dingtalk-notify')).filter((name) => name.includes('.corrupt-'))
  • 读取本地文件
    bin/selftest.mjs:340
    check('原文件没有被覆盖', readFileSync(dingtalk.configPath(), 'utf8').includes('oops'))
  • 删除本地文件递归
    bin/selftest.mjs:350
    rmSync(tempHome, { recursive: true, force: true })
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 任务完成推送提醒
  • 审批选择推送提醒
  • 内置设置面板

README

由 DeepSeek 最新模型翻译生成
钉钉通知 · dsh-dingtalk-notify 一个 DSH 插件:AI 需要你拍板、或一轮活干完了,往你的钉钉群推一条消息,并附带一个装在 DSH 设置里的控制面板。 钉钉自定义机器人只能发不能收,所以通知里写的是「请回到 DSH 页面操作」。 安装 网页版(命令行 / dsh web) dsh plugin --profile web add github:LapStdy/dsh-dingtalk-notify 装完重启 dsh web(面板在启动时扫描名册),然后打开 设置 → 钉钉通知。 桌面端(DeepSeek Harness 应用) 桌面端的配置由应用自己独占管理,命令行装不了(dsh plugin --profile desktop ... 会直接报 managed exclusively by the Electron application)。
展开完整文档(README 剩余 1 节)
钉钉通知 · dsh-dingtalk-notify

一个 DSH 插件:AI 需要你拍板、或一轮活干完了,往你的钉钉群推一条消息,并附带一个装在 DSH 设置里的控制面板。

钉钉自定义机器人只能发不能收,所以通知里写的是「请回到 DSH 页面操作」。

安装

网页版(命令行 / dsh web)

dsh plugin --profile web add github:LapStdy/dsh-dingtalk-notify

装完重启 dsh web(面板在启动时扫描名册),然后打开 设置 → 钉钉通知。

桌面端(DeepSeek Harness 应用)

桌面端的配置由应用自己独占管理,命令行装不了(dsh plugin --profile desktop ... 会直接报 managed exclusively by the Electron application)。要在应用界面里装:

1. 左侧栏点 插件
2. 点 添加插件
3. 粘贴 github:LapStdy/dsh-dingtalk-notify(也可以粘完整地址 https://github.com/LapStdy/dsh-dingtalk-notify),点安装
4. 装完重启桌面端,再打开 设置 → 钉钉通知

想改代码就先 git clone https://github.com/LapStdy/dsh-dingtalk-notify.git,再 dsh plugin --profile web add "<克隆下来的目录>"。
本插件是纯 JS、无构建步骤,从 GitHub 安装不需要额外的构建授权。

配置放在 ~/.dsh/dingtalk-notify/config.json,面板保存或手改文件都即时生效,不用重启。

运行要求:DSH ≥ 0.1.5-rc.1,Node ≥ 18。

教程:怎么让它真的发到钉钉群

装好插件只是一半,消息发不发得出去,取决于钉钉那边的机器人怎么建。照下面走一遍,大约 5 分钟。

第 1 步 · 在钉钉群里加一个机器人

1. 打开钉钉,进你想收通知的群(没有就新建一个,只有你自己的群也行)
2. 右上角 群设置(⋯)→ 机器人 → 添加机器人 → 自定义(通过 Webhook 接入)
3. 起个名字(比如「DSH 通知」),点下一步

第 2 步 · 选安全设置(这一步决定能不能发成功)

二选一:

| 选哪种 | 怎么做 | 要注意 |
| 加签(推荐) | 复制那串 SEC 开头的密钥 | 密钥要填进 DSH;换了机器人得重新复制 |
| 自定义关键词 | 填一个关键词,比如 DSH | 钉钉只放行正文里含这个词的消息;本插件标题固定带 DSH,所以填 DSH 一定过 |

勾选同意 → 完成 → 复制 Webhook 地址(形如 https://oapi.dingtalk.com/robot/send?access_token=...)。

⚠️ Webhook 地址 + 加签密钥 = 你在这个群里的发帖凭据。别贴给别人,更别提交到 GitHub。

第 3 步 · 填进 DSH 并测通

打开 设置 → 钉钉通知:

连接设置

1. Webhook 地址:粘贴第 2 步复制的地址(原来那条只显示尾巴,直接粘新的就会替换)
2. 加签密钥:用加签模式就粘 SEC...;用关键词模式留空
3. 点 发送测试消息 —— 这一下不受门控限制,永远真发

群里收到,链路就通了。

第 4 步 · 群里收到就是这样

钉钉群里收到的通知

第 5 步 · 没收到?按这个顺序查

| 现象 | 说明 |
| 面板提示 发送失败 310000 | 关键词或加签不匹配,最常见的坑。改成「自定义关键词」并填 DSH 最省事 |
| 面板提示 已跳过 | 这不是失败:当时有人正看着 DSH 页面 / 手机不在线 / 处在免打扰时段。点「发送测试消息」可绕过门控单独验证链路 |
| 面板提示 还没填 Webhook | 地址没存上,回第 3 步重来 |
| 钉钉里没人被 @ | 机器人只会往群里发消息,要 @ 谁得在「高级」里填手机号 |
| 只有完成通知、没有选择通知 | 那个问题可能被 dsh-auto-review 之类的回答者直接接走了,诊断区里有记录 |

会推什么

| 时机 | 钉钉里收到 |
| AI 让你选择(含计划审批) | 🔔 DSH 需要你选择 |
| 某个操作被拦下要你批准 | 🔐 DSH 需要你审批 |
| 一轮任务结束 | ✅ 任务完成 / ❌ 出错 / ⏹ 已中断 |

每一项都能单独关掉。默认「干活不足 5 秒的轮次不发」,避免刷屏。

插件只旁观、不抢答:发完通知立刻放行,弹窗和自动审批照旧工作;发送失败只写日志,绝不影响 AI 干活。

提醒时机

什么时候才发(门控)

每个打开的 DSH 页面每 45 秒报到一次,宿主持有一张在线设备表:

| 模式 | 行为 |
| away(默认) | 有人正看着 DSH 页面就不发;人走开、或只有手机在看时才发 |
| mobileOnly | 只有手机端在线时才发,否则静默 |
| always | 总是发 |

手机浏览器锁屏后会暂停计时器、心跳会断,所以心跳有效期默认 5 分钟。想要「离开电脑才通知我」,用 away 更可靠。

门控

通知长什么样(详细度)

面板里二选一,右下方就是实时预览:

| 简洁 | 详细 |

简洁只发一句话 + 会话名,一眼扫完;详细会带上问题正文、选项、工具名、用时和回复摘要。

配置项

~/.dsh/dingtalk-notify/config.json,首次启动自动生成模板:

| 键 | 默认 | 说明 |
| enabled | true | 总开关 |
| webhook | "" | 机器人 Webhook 地址(必填) |
| secret | "" | 加签密钥 SECxxx;用「自定义关键词」模式则留空 |
| detailLevel | detailed | brief 简洁(一句话)/ detailed 详细(问题正文、选项、工具名、用时) |
| gating | away | away / mobileOnly / always |
| presenceTtlSeconds | 300 | 心跳有效期(60–3600 秒) |
| notifyOnQuestion | true | 需要你选择时通知 |
| notifyOnApproval | true | 需要你审批时通知 |
| notifyOnTurnEnd | true | 任务完成时通知 |
| notifyOnError | true | 轮次失败时通知 |
| notifyOnAbort | false | 轮次被中断时通知 |
| minTurnSeconds | 5 | 短于此秒数的轮次不发;0 = 每轮都发 |
| includeSubagents | false | 子任务的轮次也发 |
| atMobiles | [] | 要 @ 的手机号(正文会自动补 @手机号 文本,否则钉钉不会真的 @) |
| atAll | false | @ 所有人 |
| dndEnabled | false | 免打扰时段开关 |
| dndFrom / dndTo | 23:30 / 07:30 | 免打扰区间,可跨零点 |
| dndExceptErrors | true | 免打扰时段内出错仍通知 |
| mergeWindowSeconds | 3 | 同一轮同类提醒合并窗口;0 = 不合并 |
| retryOnFail | true | 失败自动重试一次;被限流则冷却 60 秒 |
| maxMessagesPerMinute | 18 | 每分钟上限(钉钉官方 20) |

发送诊断日志:~/.dsh/dingtalk-notify/log.ndjson,每行一条 JSON(sent / skip / error)。面板的「诊断」区也能看最近 20 条决策和跳过原因。

高级设置

面板接口(宿主侧)

| 方法 | 路径 | 说明 |
| GET | /api/dsh-dingtalk-notify/config | 读脱敏配置 + 当前门控判定 |
| POST | /api/dsh-dingtalk-notify/config | 写配置(null 表示清除该键) |
| POST | /api/dsh-dingtalk-notify/test | 发一条测试消息 |
| POST | /api/dsh-dingtalk-notify/presence | 设备心跳 |
| GET | /api/dsh-dingtalk-notify/status | 在线设备 + 发送历史 |
| POST | /api/dsh-dingtalk-notify/log | {action:"clear"} 清空内存历史 |

除 presence 外均为仅回环可访问;presence 只写在线表、不读配置。加签密钥永不回传浏览器,只显示是否已配置。

自检

node bin/selftest.mjs # 配置读写 / 掩码 / 门控 / 消息组装 / 浏览器半区,不发消息
node bin/smoke-test.mjs --dry # 桩上下文加载插件,验监听器与面板接口
node bin/dingtalk-test.mjs # 真发一条自检消息到群里

卸载 / 临时停用

dsh plugin --profile web remove dsh-dingtalk-notify

临时安静:面板关「总开关」,或把 config.json 的 enabled 改成 false。

改了 lib/ 下任何文件(宿主半区 index.js、浏览器半区 client.js)都要重启 dsh web 才生效——运行中的进程不重载插件源码。

排障

| 现象 | 原因 |
| 设置里没有「钉钉通知」 | 没重启 dsh web;面板名册在启动时扫描 |
| 钉钉没收到,面板显示「已跳过」 | 看跳过原因:有人正看着页面 / 手机不在线 / 免打扰 / 没填 Webhook |
| 面板显示「发送失败」 | 错误码已翻译成人话;310000 = 关键词或加签不匹配 |
| 只有完成通知、没有选择通知 | 问题可能被 dsh-auto-review 之类的回答者直接接走了,诊断区有记录 |

更新日志

见 CHANGELOG.md。

许可

MIT
预览分享卡片长什么样 ↓LapStdy/dsh-dingtalk-notify
分享 · DeepSeek Harness Hub
LapStdy/dsh-dingtalk-notify

任务完成或需审批时推送到钉钉群提醒你

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部