DSH 通知与远程控制平面:28 条出站通道、6 项入站控制、原生通知与控制 UI、实时热应用、零运行时依赖。
54.1/100
综合分
55
GitHub 星标
563
npm 周下载
—/5
用户评分
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-notifiernpm 源 · dsh-notifier 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-notifier @ 0.13.1
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 22:37:49
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 62 处,展示前 46 条)
- 写入本地文件src/index.mjs:457
mkdirSync(stateDir, { recursive: true }) - 删除本地文件src/index.mjs:459
try { unlinkSync(BOOTSTRAP_CODE_FILE) } catch { } - 写入本地文件src/index.mjs:460
writeFileSync(BOOTSTRAP_CODE_FILE, `${code}\n`, { encoding: 'utf8', mode: 0o600 }) - 写入本地文件src/index.mjs:462
try { chmodSync(BOOTSTRAP_CODE_FILE, 0o600) } catch { } - 删除本地文件src/index.mjs:471
try { unlinkSync(BOOTSTRAP_CODE_FILE) } catch { } - 读取本地文件src/ledger.mjs:77
if (existsSync(file)) { - 读取本地文件src/ledger.mjs:78
entryCount = readFileSync(file, 'utf8').split('\n').filter((line) => line.trim() !== '').length - 写入本地文件src/ledger.mjs:83
try { mkdirSync(dir, { recursive: true }) } catch { } - 写入本地文件src/ledger.mjs:101
appendFileSync(file, `${JSON.stringify(entry)}\n`) - 写入本地文件src/ledger.mjs:104
try { chmodSync(file, 0o600) } catch { } - 读取本地文件src/ledger.mjs:115
const lines = readFileSync(file, 'utf8').split('\n').filter((line) => line.trim() !== '') - 写入本地文件src/ledger.mjs:122
writeFileSync(tmp, `${kept.map((line) => `${line}\n`).join('')}`) - 写入本地文件src/ledger.mjs:123
try { chmodSync(tmp, 0o600) } catch { } - 写入本地文件src/ledger.mjs:124
renameSync(tmp, file) - 读取本地文件src/ledger.mjs:132
if (!existsSync(file)) return [] - 读取本地文件src/ledger.mjs:133
const lines = readFileSync(file, 'utf8').split('\n') - 读取本地文件src/ledger.mjs:173
if (n === 0 || !existsSync(file)) return [] - 读取本地文件src/inbound/store.mjs:57
if (!existsSync(filePath)) return {} - 读取本地文件src/inbound/store.mjs:64
const mode = statSync(filePath).mode & 0o777 - 写入本地文件src/inbound/store.mjs:68
chmodSync(filePath, 0o600) - 读取本地文件src/inbound/store.mjs:74
raw = readFileSync(filePath, 'utf8') - 读取本地文件src/inbound/store.mjs:99
try { sizeBytes = statSync(filePath).size } catch { } - 写入本地文件src/inbound/store.mjs:108
copyFileSync(filePath, backup) - 读取本地文件src/inbound/store.mjs:129
if (!existsSync(filePath)) return { ok: true, value: {}, missing: true } - 读取本地文件src/inbound/store.mjs:131
try { raw = readFileSync(filePath, 'utf8') } catch { return { ok: false, reason: 'read-failed' } } - 写入本地文件src/inbound/store.mjs:201
try { mkdirSync(dirname(filePath), { recursive: true }) } catch { } - 删除本地文件src/inbound/store.mjs:204
try { unlinkSync(lockPath) } catch { } - 删除本地文件src/inbound/store.mjs:219
if (readFileSync(lockPath, 'utf8') === ownerId) unlinkSync(lockPath) - 删除本地文件src/inbound/store.mjs:225
if (readFileSync(lockPath, 'utf8') === '') unlinkSync(lockPath) - 删除本地文件src/inbound/store.mjs:231
try { unlinkSync(lockPath) } catch { } - 删除本地文件src/inbound/store.mjs:239
try { unlinkSync(lockPath) } catch { } - 写入本地文件src/inbound/store.mjs:299
mkdirSync(dirname(filePath), { recursive: true }) - 写入本地文件src/inbound/store.mjs:307
renameSync(filePath, backup) - 写入本地文件src/inbound/store.mjs:323
writeFileSync(tmp, JSON.stringify(draft), { encoding: 'utf8', mode: 0o600 }) - 删除本地文件src/inbound/store.mjs:333
if (tmp !== null) try { unlinkSync(tmp) } catch { } - 写入本地文件src/admin/api.mjs:406
mkdirSync(dirname(auditFile), { recursive: true }) - 读取本地文件src/admin/api.mjs:408
if (statSync(auditFile).size > AUDIT_MAX_BYTES) { - 删除本地文件src/admin/api.mjs:409
try { unlinkSync(`${auditFile}.1`) } catch { } - 写入本地文件src/admin/api.mjs:410
renameSync(auditFile, `${auditFile}.1`) - 写入本地文件src/admin/api.mjs:413
appendFileSync(auditFile, `${JSON.stringify({ time: new Date().toISOString(), action, detail: redactDiagnosticValue(detail) })}\n`, 'utf8') - 写入本地文件src/admin/api.mjs:415
try { chmodSync(auditFile, 0o600) } catch { } - 读取本地文件src/admin/api.mjs:1299
try { return readFileSync(file, 'utf8') } catch { return '' } - 发起网络请求src/adapters/_shared.mjs:166
? await fetch(url, { ...init, redirect: 'manual' }) - 发起网络请求src/inbound/feishu-bot.mjs:58
request: (options) => base.request(opts(options)), - 发起网络请求src/adapters/_engine.mjs:79
const request = spec.request(resolved, msg) - 发起网络请求src/security/network-policy.mjs:225
const request = client.request(target.url, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-session给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
6 张 · 点击查看大图功能亮点
- 28条出站通道
- 6项入站控制
- 原生通知与控制UI
最近更新
在 GitHub 查看全部 →v0.13.12026-09-26
v0.13.1 是 v0.13 的后续版本。
亮点:
· 收尾管理界面的双语资源与证据边界后续工作
· 更新 npm 文档允许列表和 README 展示图
· 包含六张视口尺寸的管理控制台截图,覆盖桌面和窄屏/移动端布局
· 已通过 2011 项自动化测试、发布守卫、28 通道矩阵和 Host 兼容性检查验证
真实 DSH 设备、服务商账号和端到端交付证据仍明确待补,详见 docs/memory/risks.md。
v0.13.02026-09-26
架构收敛发布。
· Native 与 Admin 共用 canonical outbound config 和运行时服务。
· provider handshake/deadline、durable cursor、epoch/revision 生命周期与结构化 RPC 错误完成收口。
· npm test:1984 pass,0 fail,0 skip。
· npm run verify:release 与 28 渠道矩阵检查通过。
· 本次未新增真机 DSH、真实 provider 账号或真实投递回执验证,外部证据缺口见 docs/memory/risks.md。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-notifier
Your agent, in your pocket.
把 DeepSeek Harness 放进手机里:28 个出站通知渠道、6 个入站控制渠道,通知、审批、提问、远程会话和任务/Session 控制统一收口。
English · 快速指南 · 排障 · 兼容性
dsh-notifier@0.13.1 · test/ 2011 个测试 · 2011 个自动化契约测试
它解决什么
dsh-notifier 是 DeepSeek Harness 的通知与远程操作层。最核心的使用场景很简单:你离开 DSH 窗口以后,仍然知道 Agent 在干什么;需要你时,直接从手机处理。
- 随时收到通知:任务完成、审批、错误、长任务状态,以及模型主动触发的通知。
- 手机直接处理:批准/拒绝、回答 ask_user、继续对话、纠偏正在执行的任务、切换任务或 Session。
- 日常管理留在 DSH:Native 「通知与控制」 是主入口;高级管理台只负责成员、绑定、Session、诊断和 Recovery。
- 失败尽量局部化:未知/未绑定的入站操作 fail-closed;单个通知渠道失败不拖垮其他渠道。
展开完整文档(README 剩余 1 节)
dsh-notifier Your agent, in your pocket. 把 DeepSeek Harness 放进手机里:28 个出站通知渠道、6 个入站控制渠道,通知、审批、提问、远程会话和任务/Session 控制统一收口。 English · 快速指南 · 排障 · 兼容性 dsh-notifier@0.13.1 · test/ 2011 个测试 · 2011 个自动化契约测试 它解决什么 dsh-notifier 是 DeepSeek Harness 的通知与远程操作层。最核心的使用场景很简单:你离开 DSH 窗口以后,仍然知道 Agent 在干什么;需要你时,直接从手机处理。 - 随时收到通知:任务完成、审批、错误、长任务状态,以及模型主动触发的通知。 - 手机直接处理:批准/拒绝、回答 ask_user、继续对话、纠偏正在执行的任务、切换任务或 Session。 - 日常管理留在 DSH:Native 「通知与控制」 是主入口;高级管理台只负责成员、绑定、Session、诊断和 Recovery。 - 失败尽量局部化:未知/未绑定的入站操作 fail-closed;单个通知渠道失败不拖垮其他渠道。 界面预览 安装 一句话让 AI 帮你装 把下面这句话发给能操作当前机器终端的 AI / Agent: 请帮我在这台机器上安装或升级 dsh-notifier 最新稳定版。先自动识别当前正在使用的 DSH profile 和现有安装来源,确认 DSH / Node 版本兼容,并保护已有配置;不要修改无关插件,也不要打印任何 Token / Secret。使用官方发布包完成安装,重启对应 DSH Host 一次,确认实际安装版本和 「通知与控制」 入口,最后把你执行过的命令、结果和仍存在的异常汇报给我。项目:https://github.com/THEWOLFWALKER/dsh-notifier 更完整、适合直接交给 Codex / Claude Code / Cursor / 终端 Agent 的版本见:AI 安装指南。 自己安装 dsh plugin add dsh-notifier@latest --profile <profile名> 安装后重启 DSH 一次,让新的 Host 插件和 client.js 装载。然后: 1. 从 DSH 侧栏打开 「通知与控制」,或进入 Plugins → dsh-notifier; 2. 选一个你已经在用的通知渠道; 3. 填凭证,点 「保存并测试」; 4. 如果提供方只确认 API 已接受请求,而没有端到端 receipt,请到手机实际确认;“provider accepted”不会被写成“确认送达”。 装好以后,出站配置修改会 Hot Apply。入站 SDK / WebSocket / 长轮询如果页面显示 「等待重启」,仍需要重启来重建连接。 你需要哪一种用法 | 你的目标 | 从这里开始 | | 只想收到任务通知 | 在「通知与控制」配置一个出站渠道 | | 想在手机批准 / 回答问题 | 再配置一个支持的入站渠道,然后完成成员配对 | | 想直接在手机和 Agent 对话 | 配对后,在机器人私聊直接发文字 | | 想中途纠偏正在执行的任务 | 在已绑定私聊发送 ! <补充指令> | | 想管理成员、绑定、Session、Recovery | 从 Native 打开「高级管理台」 | | Headless / 自动化部署 | 看 完整指南 的 YAML / CLI 部分 | 支持的渠道 出站 28 个: Bark、Bell、Chanify、Desktop、钉钉、Discord、飞书、Google Chat、Gotify、iGot、Mattermost、ntfy、OneBot 11、PushDeer、Pushover、PushPlus、Qmsg、QQ 官方机器人、Server酱、Slack、Microsoft Teams、Telegram、Webhook、企业微信群机器人、企业微信应用、WPS Bot、WxPusher、息知。 入站控制 6 个: Telegram、飞书、QQ 官方机器人、WxPusher、微信 iLink、钉钉。 不同 provider 的按钮、附件、送达回执、重连、账号额度并不一样。项目只按真实证据等级声明能力,详见 兼容性矩阵。 常用私聊命令 | 命令 | 用途 | | /help | 查看命令 | | /whoami | 查看身份 / 配对状态 | | /status | 当前路由 / Session 状态 | | /tasks / /use … | 查看或选择活跃任务 | | /sessions | Session 概览 | | /stop | 停止当前 turn | | /route | 查看双向路由 | | /quiet … / /unquiet … | 静默 / 恢复通知 | | /pair <码> / /unpair | 配对 / 解绑入站身份 | | /log [N] | 有界、脱敏的近期通知摘要;默认关闭且仅 owner | 普通文字会继续和 Agent 对话;前缀 ! 会纠偏当前正在执行的 turn。群聊默认不开放高风险远程控制语义。 工作方式 DSH 事件 / notify() / 其它插件 │ ▼ dsh-notifier core ┌────────┴────────┐ ▼ ▼ 28 个出站 health / activity │ │ ▼ │ 手机 │ │ │ └─ 6 个入站 ──────┘ │ ▼ identity + Control Core 审批 · ask_user · 会话 · 任务/Session 控制 Native UI、notifier runtime、高级管理台和测试尽量围绕同一份真实状态工作,不维护“页面看起来已经改了、运行时其实没改”的第二套真相。 遇到问题:先让 AI 帮你定位,再上报 不要一上来就把一大段日志贴进 Issue。 推荐支持流程: 1. 把 AI 排障提示词 发给能读当前终端/日志的 AI; 2. 先做只读诊断:确认实际安装版本、DSH profile / 版本、安装来源、问题属于哪个子系统,并做最小复现;全程脱敏; 3. 如果只是旧包、错误 profile、残留 file: 安装、漏重启、凭证或 provider 配置问题,让 AI 协助本地解决并重新验证; 4. 如果仍解决不了,让 AI 按 定位与诊断指南 生成一份短小、可复现的报告; 5. 再把这份报告发到 GitHub Issue / QQ 群 / 邮箱。 这样维护者拿到的是“已经排除常见环境问题后的证据”,不是聊天记录和猜测。 文档 | 文档 | 用来干什么 | | 完整指南 | 安装、首访、出站/入站、配对、日常使用 | | AI 安装 | 一句话 / 完整提示词,让终端 Agent 安全安装 | | 排障指南 | 人类 + AI 的第一轮问题定位 | | 定位与诊断 | 收集证据、生成 Support Report | | 兼容性 | DSH / 可选 SDK / provider 的证据等级 | | 升级指南 | 更新、确认实际版本、清理残留、回滚 | | 插件 API | ctx.notifier 消费方接口 | | 架构 | 内部设计与运行时权威 | | 变更记录 | 版本历史 | 联系方式 可稳定复现的产品问题,优先走AI 预排障后的 GitHub Issue。 - QQ:3622976831 - 邮箱:3622976831@qq.com - QQ 群:947656156 不要通过 Issue、QQ 或邮件发送 Bot Token、Webhook Secret、Admin Token、完整 state.json 或未脱敏的私聊内容。 维护公告:至 2026-10-01 前作者因考试,回复可能较慢。 开发信息 Node.js 22+、ESM、零强制运行时依赖。部分 provider 的扫码/接入能力使用 optional dependency,仅在需要时加载。 开发、验证和发布规则见 AGENTS.md、OPERATIONS 和仓库测试。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
THEWOLFWALKER/dsh-notifier
DSH 通知与远程控制平面:28 条出站通道、6 项入站控制、原生通知与控制 UI、实时热应用、零运行时依赖。
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7