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

插件更新提醒 stuarthu/dsh-update-notifier

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

每小时检查已装插件更新,弹窗勾选即可升级

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 73 天前
档位由哪些信号合成

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
  • 读取本地文件
    lib/index.js:95
    return JSON.parse(readFileSync(join(nodeModules, pkg, "package.json"), "utf8"));
  • 发起网络请求
    lib/index.js:134
    const res = await fetch(url, { signal: ac.signal, headers: { accept: "application/json" } });
  • 读取本地文件
    lib/index.js:163
    const parsed = JSON.parse(readFileSync(stateFile, "utf8"))?.declines;
  • 写入本地文件
    lib/index.js:182
    writeFileSync(tmp, JSON.stringify({ declines }, null, 2));
  • 写入本地文件
    lib/index.js:183
    renameSync(tmp, stateFile);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 每小时检查插件新版本
  • 弹窗勾选升级

每小时检查 npm 上已安装 dsh 插件有没有新版本,弹出确认气泡问你要升级哪些

README

由 DeepSeek 最新模型翻译生成
dsh-update-notifier 每小时——或按需,通过 /check-updates——检查你已安装的 DeepSeek Harness(dsh)插件是否有更新版本,并通过一个一键批准气泡来升级它们。 dsh 中没有任何东西会告诉你已安装的插件有了新版本;你只能靠自己记得运行 npm view 才能发现。这个插件填补了这一空白:它每小时将每个已安装的插件与注册表进行一次比对,当有更新的版本时,它会以会话中真实问题气泡的形式询问你——要升级哪些插件。勾选你想要的,智能体就会在你眼前执行升级。它从不自行升级任何东西。 行为 每小时一次(可配置),对于每个支撑已加载插件的 npm 包: - 查询注册表的 latest,并将其与你配置文件的 node_modules 中安装的版本进行比较。比较是严格符合 semver 的——预发布版本排序正确,从不建议降级——并且不是严格 X.Y.Z 格式的版本会被跳过,而不是靠猜测处理。 - 在一个气泡中询问。 任何更新的版本都会变成一个由 dsh 自身渲染的多选问题(dsh-chrome 0.1.2 -> 0.1.3,每个插件一个选项),附加到你最近活跃的会话上。它不消耗模型轮次,也不消耗 token,并且如果你重新连接,它会被重放。
展开完整文档(README 剩余 1 节)
dsh-update-notifier

每小时——或按需,通过 /check-updates——检查你已安装的 DeepSeek Harness(dsh)插件是否有更新版本,并通过一个一键批准气泡来升级它们。

dsh 中没有任何东西会告诉你已安装的插件有了新版本;你只能靠自己记得运行 npm view 才能发现。这个插件填补了这一空白:它每小时将每个已安装的插件与注册表进行一次比对,当有更新的版本时,它会以会话中真实问题气泡的形式询问你——要升级哪些插件。勾选你想要的,智能体就会在你眼前执行升级。它从不自行升级任何东西。

行为

每小时一次(可配置),对于每个支撑已加载插件的 npm 包:

- 查询注册表的 latest,并将其与你配置文件的 node_modules 中安装的版本进行比较。比较是严格符合 semver 的——预发布版本排序正确,从不建议降级——并且不是严格 X.Y.Z 格式的版本会被跳过,而不是靠猜测处理。
- 在一个气泡中询问。 任何更新的版本都会变成一个由 dsh 自身渲染的多选问题(dsh-chrome 0.1.2 -> 0.1.3,每个插件一个选项),附加到你最近活跃的会话上。它不消耗模型轮次,也不消耗 token,并且如果你重新连接,它会被重放。
- 将勾选的插件交给智能体,作为一条后续消息,告诉它运行

pnpm --dir add @ ...

智能体会立即被唤醒,你可以看着升级发生。将其与 dsh-hot-reload 搭配使用,新版本会实时生效,无需重启 dsh。

/check-updates

不想等到整点?在会话中输入 /check-updates:

/check-updates
check-updates · 2 updates — see the question above (7 plugins checked)

它会立即针对你输入它的那个会话运行一个完整周期,并且一旦注册表扫描完成,该行就会结算——它弹出的气泡是一个普通气泡,随时可以回答,刷新后依然存在。在完全无法显示气泡的情况下,结算结果会附带 pnpm ... add 命令,因此答案永远不会只是“你做不到”。

注册表无法访问的包——网络故障、超时、5xx、速率限制,或返回结果中没有版本号——会被计入结算结果,而不是被当作已是最新版本。如果一次扫描中所有包都无法访问,则会以错误结算,而不是“无更新”。两个计数相加:5 plugins checked, 2 unreachable 意味着扫描了七个包。取消该行会停止扫描,因此你取消的检查不会在一分钟后突然弹出一个气泡。

手动检查忽略下面的拒绝记忆:既然你主动询问了,你就会得到完整列表,包括你之前未勾选的版本。它不会干扰每小时的调度,并且在气泡存在时——会附带原因地——拒绝运行。
已经打开,或者检查已在进行中。

该命令出现在 dsh 组合命令注册表的任何地方——@deepseek-ai/dsh-base 就是这样做的,因此任何基于它构建的 profile 都有 /check-updates。它通过 ctx.inject 注册,因此即使是没有该服务的无头 profile 也仍会加载该插件并保留其每小时检查。

只询问一次

对于给定版本,你只会被询问一次(由每小时周期触发——上述命令会覆盖此行为):

- 未勾选的即为拒绝,记录在 /.dsh-update-notifier.json 中,并且不会再被提供——跨重启也是如此——直到注册表的 latest 变为另一个仍优于你已安装版本的版本。删除该文件即可重新询问。
- 批准不会被记录:升级成功会使该版本成为当前版本,而升级失败则值得在重启后重新提供。
- 你从未回答的气泡(会话结束、dsh 停止)不算拒绝——你会再次被询问。

如果还没有活动会话,该提议会被保留:它会在你的下一条消息之后以及下一个每小时周期重试。在完全无法渲染气泡的地方也会被保留——例如无头 profile,或者组合了 userQuestions 服务但没有为其注册任何 UI 的 profile——在那里,可用更新和确切的升级命令也会写入日志,因为你的任何消息都不会让气泡出现。

安装

dsh plugin --profile web add dsh-update-notifier

然后重启 dsh 一次(bundle 补丁层在启动时加载)。适用于任何 profile——将 web 替换为你使用的任何 profile;它会检查自己加载到的 profile。需要 Node 18+,以使用全局 fetch;任何 dsh 宿主都有它。

兼容性

针对 dsh 0.1.0-rc.6(Node 22 / 24)构建并测试。它只使用公共宿主服务,因此如果某个服务缺失,它会降级而不是崩溃:

| 宿主接口 | 用途 |
| loader.entries() | 查找哪些包支撑已加载的插件 |
| userQuestions.ask() | 渲染批准气泡 |
| userQuestions.provider | 不承诺没有 UI 注册来渲染的气泡 |
| agents.get(sessionId) | 解析会话的活动 agent |
| agent.followup() | 唤醒该 agent 以运行升级 |
| session/event (user/message) | 跟踪最近活跃的会话 |
| agent.disposed | 撤回其会话已终止的气泡 |
| commands.register() | /check-updates 命令 |
| agents.roots() | 不承诺 ask() 会拒绝的气泡 |

userQuestions 和 commands 在需要时解析,而不是声明为依赖项,因此该插件仍会在两者都不具备的无头 profile 中加载。

选择退出

不希望被提供升级的插件可以在自己的 package.json 中声明:

{ "dsh": { "updateNotifier": false } }

使用 exclude(见下文)来静默你无法控制的插件。

配置

在你的 profile 的 cordis.patch.yml 中的 update-notifier 行上设置:
| 键 | 默认值 | 含义 |
| interval | 3600000 | 检查之间的毫秒数(被限制为最小 60000) |
| initialDelay | 10000 | 启动后首次检查前的毫秒数 |
| registry | https://registry.npmjs.org | 要查询的兼容 npm 的注册表 |
| exclude | [] | 永不检查或提及的包名 |
| fetchTimeout | 10000 | 每次请求注册表的超时时间,毫秒(最小 1000) |
| profileDir | 自动 | 配置文件目录的绝对路径(若省略则从加载器基础 URL 自动检测) |

安全

- 未经你点击,不会升级任何内容。 此插件从不启动包管理器。它组合气泡,并在获得批准后,由智能体在众目睽睽之下执行指令。
- 注册表中的文本不会进入 UI 或模型。 只有从你自己的配置文件中读取的包名,以及通过 /^[0-9A-Za-z.+-]{1,64}$/ 校验的版本字符串,才会被放入气泡或智能体消息中——绝不会是从注册表获取的描述、README 或变更日志。
- 后续消息带有 source.kind: "plugin",准确列出已批准的包,并告知智能体不要触碰其他任何内容。

限制——请阅读此部分

- 它只询问;它不验证。 一旦你批准,升级就由智能体来运行。失败会在会话中可见,但此插件既不会重试,也不会在之后检查新版本是否真的已安装。
- 只能看到从注册表安装的插件。 从本地检出链接的插件,或内置于 dsh 的插件,在配置文件的 node_modules 下没有对应的包,会被静默跳过——没有气泡,也没有日志行。
- 只查询 latest dist-tag。 不支持固定版本范围、next/beta 通道,或将某个包保持在某个主版本;如果你永远不想要某个插件的最新版本,应使用 exclude。
- 一次只显示一个气泡。 当气泡等待回答时,每小时的检查会跳过——并且 /check-updates 会以“已有一个升级问题待处理”为由拒绝——因此在此期间发布的任何内容都会在你回答后的第一个周期被拾取。
- 拒绝是针对那个确切版本的,而不是“直到该版本为止的任何版本”:如果注册表的 latest 变为一个仍然高于你的不同版本——包括取消发布后的更低版本——你会再次被询问。
- 气泡需要一个 dsh 可以附加问题的会话。注册表故障、加载器状态降级以及状态文件不可写都会降级为日志记录;只有两件事会彻底禁用该插件——上下文中没有插件加载器,以及它无法定位配置文件目录——并且它会在日志中说明是哪一种。

许可证

MIT © Stuart Hu
预览分享卡片长什么样 ↓stuarthu/dsh-update-notifier
分享 · DeepSeek Harness Hub
stuarthu/dsh-update-notifier

每小时检查已装插件更新,弹窗勾选即可升级

这是你的仓库?认领条目

回到顶部