检测当前安装方式并安全升级到最新版本
27/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add CypherNaught-0x/dsh-updater该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 61 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 28 处,展示前 25 条)
- 读取本地文件lib/index.js:38
return JSON.parse(readFileSync(file, 'utf8')) - 读取本地文件lib/index.js:88
if (existsSync(join(directory, '.git')) - 读取本地文件lib/index.js:89
&& existsSync(join(directory, 'pnpm-workspace.yaml')) - 执行外部命令来自配置/变量lib/index.js:96
const result = spawnSync(program, args, { - 读取本地文件lib/index.js:148
if (existsSync(join(projectRoot, 'pnpm-lock.yaml'))) return 'pnpm' - 读取本地文件lib/index.js:149
if (existsSync(join(projectRoot, 'bun.lock')) || existsSync(join(projectRoot, 'bun.lockb'))) return 'bun' - 读取本地文件lib/index.js:150
if (existsSync(join(projectRoot, 'yarn.lock'))) return 'yarn' - 执行外部命令来自配置/变量lib/index.js:473
const child = spawn(program, args, { - 执行外部命令固定命令lib/index.js:493
spawnSync('taskkill', [ - 写入本地文件lib/index.js:606
writeFileSync(file, `${JSON.stringify({ startedAt: new Date().toISOString(), from: install.currentRef ?? null })}\n`, { - 删除本地文件lib/index.js:617
unlinkSync(file) - 发起网络请求lib/client.js:65
function createClientController(fetchImpl = (...args) => fetch(...args), options = {}) { - 写入剪贴板lib/client.js:282
await globalThis.navigator.clipboard.writeText(prompt) - 执行外部命令固定命令lib/candidate.js:65
spawnSync('taskkill', ['/pid', String(child.pid), '/t', ...(signal === 'SIGKILL' ? ['/f'] : [])], { - 执行外部命令来自配置/变量lib/candidate.js:98
const child = spawn(program, args, { - 读取本地文件lib/candidate.js:296
const actual = createHash(algorithm).update(readFileSync(file)).digest('base64') - 写入本地文件lib/candidate.js:305
writeFileSync(file, bytes, { mode: 0o400 }) - 读取本地文件lib/candidate.js:309
const manifest = JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8')) - 删除本地文件递归lib/candidate.js:385
const cleanup = () => rmSync(root, { recursive: true, force: true }) - 写入本地文件lib/candidate.js:386
mkdirSync(hooks, { recursive: true, mode: 0o700 }) - 删除本地文件递归lib/candidate.js:448
cleanup() { rmSync(root, { recursive: true, force: true }) }, - 写入本地文件lib/candidate.js:459
mkdirSync(env.HOME, { recursive: true, mode: 0o700 }) - 写入本地文件lib/candidate.js:460
mkdirSync(env.DSH_HOME, { recursive: true, mode: 0o700 }) - 写入本地文件lib/candidate.js:461
mkdirSync(env.DSH_AGENTS_HOME, { recursive: true, mode: 0o700 }) - 删除本地文件递归lib/candidate.js:538
dispose: staged?.cleanup ?? (() => rmSync(root, { recursive: true, force: true })),
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 检测当前安装方式
- 检查版本更新
- 安全升级到最新版
DeepSeek Harness 插件,检查当前安装的 DSH 版本是否有更新,支持多种安装方式。
README
由 DeepSeek 最新模型翻译生成dsh-updater
一个能感知安装方式的更新插件,用于 DeepSeek Harness Web 配置档。它会检查与当前 DSH 安装相匹配的发布源,在每种受支持的 TUI/Web 模式下单独测试候选版本,并提供 AI 恢复交接,最终目标是让新版本在本地跑起来。
功能
- 从运行中的命令行入口检测 DSH 包和版本,而不是从工作目录检测。
- 识别 npx、全局和项目本地的 npm/pnpm/Yarn/Bun 安装,以及 Git 源码检出。
- 稳定版安装使用 npm 的 latest dist-tag,预发布版安装使用 next。
- 源码运行使用源码检出配置的 Git upstream。
- 在验证或应用之前显示发布说明,优先使用所选 npm 版本元数据中的 changelog 字段,找不到时回退到对应的 DeepSeek Harness GitHub Release。
- 在 shell.overlay 中显示更新横幅,在侧边栏底部显示常驻操作项,并提供完整的 Settings → DSH Updater 页面。
- 把每个候选版本暂存在当前安装之外,在启用更新操作之前,对发布实际提供的每种 TUI/Web 模式运行阻塞式启动检查。
展开完整文档(README 剩余 1 节)
dsh-updater 一个能感知安装方式的更新插件,用于 DeepSeek Harness Web 配置档。它会检查与当前 DSH 安装相匹配的发布源,在每种受支持的 TUI/Web 模式下单独测试候选版本,并提供 AI 恢复交接,最终目标是让新版本在本地跑起来。 功能 - 从运行中的命令行入口检测 DSH 包和版本,而不是从工作目录检测。 - 识别 npx、全局和项目本地的 npm/pnpm/Yarn/Bun 安装,以及 Git 源码检出。 - 稳定版安装使用 npm 的 latest dist-tag,预发布版安装使用 next。 - 源码运行使用源码检出配置的 Git upstream。 - 在验证或应用之前显示发布说明,优先使用所选 npm 版本元数据中的 changelog 字段,找不到时回退到对应的 DeepSeek Harness GitHub Release。 - 在 shell.overlay 中显示更新横幅,在侧边栏底部显示常驻操作项,并提供完整的 Settings → DSH Updater 页面。 - 把每个候选版本暂存在当前安装之外,在启用更新操作之前,对发布实际提供的每种 TUI/Web 模式运行阻塞式启动检查。 - 在回环端口 0 上启动 Web,等待稳定的 dsh web: URL,验证其浏览器 token 交换和已认证的根响应,然后干净地关闭候选进程。 - 发布中缺失的 TUI 配置档报告为 Not shipped;TUI 存在但崩溃、候选安装/构建失败、或 Web 启动失败仍然阻塞,并保持当前安装不变。 - 提供用户可控的 AI 恢复提示词,包含候选路径、安装上下文和有界诊断信息;智能体会被引导先修复本地配置或插件兼容性,必要时才升级到 DSH 发布修复,应用可用的更新,重启 DSH,并验证新版本确实在运行。 - 在 GUI 中即时报告检查、验证和更新进度、成功完成、已是最新结果,以及请求失败。 - 只运行 Host 选定的固定验证和更新计划;浏览器无法提交命令或路径。 - 拒绝非回环传输和跨源更新操作。受信任的回环反向代理可以通过 DSH_UPDATER_TRUSTED_ORIGINS 允许精确的浏览器源;任意重绑定主机名仍然拒绝。 - 拒绝拉取有未提交改动、领先、处于 detached 状态、或没有 upstream 的源码检出。 - 从更新子进程中清除携带密钥的环境变量,并限制保留的输出量。 要求 - 带 Web 配置档的 DeepSeek Harness - 安装插件需要 pnpm - 拥有当前 DSH 安装的包管理器 - 源码检出还需要:Git、pnpm、配置好的 upstream 分支,以及干净的检出 安装 从这个检出安装: dsh plugin --profile web add ./dsh-updater 发布之后: dsh plugin --profile web add dsh-updater 重启 dsh web,然后刷新浏览器。更新器会出现在侧边栏 Settings 上方,也会出现在 Settings → DSH Updater。升级这个插件后,客户端热重载可能先于 Host 路由到达;这种情况下,界面会提示重启 DSH,绝不会把缺失的路由报成候选失败。 候选验证门禁 有可用版本时,不再立即应用。工作流如下: 1. 更新横幅和设置页会在验证或应用之前显示发布说明。Host 会从选中的 npm 版本里读取非空的 releaseNotes、release_notes、changelog、dsh.releaseNotes 或 dsh.changelog 字段;npm 里没有时,就去请求对应的 dsh-v<version> GitHub Release。说明缺失或暂时取不到,都不会挡住安全门禁,GitHub Releases 链接也始终可用。 2. Test candidate 会下载 registry tarball,校验它发布的 integrity digest,再把这个本地归档安装到私有的临时 prefix 里。源码候选会克隆 checkout,不用硬链接,在取到的那个 40 位 commit 上 detach,并且只在这个克隆里运行 pnpm install --frozen-lockfile 和 pnpm run build。包依赖解析期间,GUI 会报告当前阶段;npm 缓存是冷的时候,这一步可能要几分钟。 3. 候选运行时使用全新的 HOME、DSH_HOME、DSH_AGENTS_HOME 目录,不继承 API key、token、密码,也不继承当前会话数据库。 4. 版本提供 TUI 配置档时,TUI 检查会用 dsh --profile tui 启动真正的候选,要求终端输出非空,并且进程在受控关闭前存活一段有限时间。明确报告配置档不存在时,显示为 Not shipped;其他任何提前退出或静默挂起都会挡住更新。 5. Web 检查会用 dsh web --host 127.0.0.1 --port 0 启动真正的候选,等它给出完整的浏览器 token URL,而不是去探测故意未授权的裸根路径;拿到 token 后换取会话 cookie,再要求已认证的根路径返回非空 HTTP 200 HTML。 6. 只有针对确切 tarball integrity 或源码 commit 的结果通过,才会启用 Apply verified update。包管理器升级消费同一个已验证的本地归档;源码升级只快进到已验证的 commit。目标或 digest 一变,之前的通过结果就作废。 当前 DSH 版本自带 Web 和无头配置档,但没有内置 TUI 配置档。更新器会把这种确切的启动器结果记为 Not shipped,而不是谎称 TUI 通过,也不会因此永久挡住其他方面都有效的纯 Web 版本。如果将来的候选提供了真正的 tui 配置档,那个进程必须通过启动冒烟测试。 验证被阻断时,设置页会显示 TUI/Web 矩阵,以及可选的 Ask AI to finish update 操作。该操作通过按钮手势请求确认,然后把一段有边界的恢复提示词放进当前会话的输入框;如果没有可用会话,则在剪贴板可访问时复制这段提示词。智能体端到端负责这次更新:先诊断本地配置、配置档、更新器和插件兼容性,再判断是不是发布版本的问题;只有当候选版本本身有缺陷时,才发布并重新发现替代版本;把可用的目标应用到拥有当前运行进程的那份安装;重启 DSH;确认运行版本与所选包版本或已验证的源码提交一致。放入提示词只是把任务交接出去,并不代表恢复已完成。重新验证时总会再次暂存权威发布版本,所以对已下载包的本地修改只用于诊断。 支持的更新方案 | 检测到的安装方式 | 检查来源 | 候选版本验证后的操作 | | npx / npm exec 缓存 | npm latest 或 next dist-tag | 用 npm exec 预取确切版本;用插件显示的确切版本重启 | | npm 全局 | npm registry | npm install --global @deepseek-ai/dsh@<version> | | pnpm 全局 | npm registry | pnpm add --global @deepseek-ai/dsh@<version> | | Yarn Classic 全局 | npm registry | yarn global add @deepseek-ai/dsh@<version> | | Bun 全局 | npm registry | bun add --global @deepseek-ai/dsh@<version> | | npm 项目 | npm registry | 在所属项目里执行 npm install @deepseek-ai/dsh@<version> | | pnpm 项目 | npm registry | 在所属项目里执行 pnpm update @deepseek-ai/dsh@<version> | | Yarn 项目 | npm registry | 在所属项目里执行 yarn add @deepseek-ai/dsh@<version> | | Bun 项目 | npm registry | 在所属项目里执行 bun update @deepseek-ai/dsh@<version> | | Git 源码检出 | 已配置的上游分支 | 快进拉取、pnpm install --frozen-lockfile、pnpm run build | Yarn 和 Bun 通过已发布的 npm 包元数据工作,但不是 DSH 的一等安装方式。无法识别的包布局仍然可以检查,但插件不会去猜更新命令。 常规的 Apply verified update 操作会改动磁盘上的文件;当前运行的 Node 进程不会被替换,所以之后要重启 DSH。AI 恢复交接的终点更严格:它必须把操作推进到那次重启之后,并验证更新器的 Running 值和 dsh --version 都与所选目标一致。npx 操作会在 npm 的执行缓存里准备发布版本,因为临时调用没有可替换的持久安装。 源码检出安全 只有以下条件全部成立时,才会执行源码更新: - 运行中的包属于某个仓库,且该仓库包含 .git、pnpm-workspace.yaml 和 apps/cli/package.json; - 分支已附加,并且有上游远程分支; - git status --porcelain 输出为空; - 本地分支没有领先其上游。 检查会拉取配置的上游分支,并比较 HEAD...FETCH_HEAD。已分叉、有未提交改动、处于 detached 状态、没有上游的检出,都会显示可用更新,但更新按钮不可用。更新源码之前,插件会在检出的 Git 元数据里记录一个修复标记,快进到经过验证的确切提交,并再次校验 HEAD,然后才宣告成功。如果依赖安装或 Web 构建失败——或者进程在更新中途停止——下一次检查会恢复修复状态,但只要存在任何已跟踪或未跟踪的源码改动,自动重试就仍然禁用。 配置 这个 bundle 无需配置即可工作。需要时,在 ~/.dsh/profiles/web/cordis.patch.yml 中覆盖它所在的行: yaml - id: dsh-updater config: checkIntervalMinutes: 360 registryUrl: https://registry.npmjs.org/ requestTimeoutMs: 15000 candidateInstaller: auto candidateTimeoutMinutes: 20 startupTimeoutSeconds: 60 updateTimeoutMinutes: 20 | 字段 | 默认值 | 用途 | | checkIntervalMinutes | 360 | Host 侧两次检查之间的间隔;最小 5 分钟 | | registryUrl | npm registry | 安装包时使用的 HTTPS registry | | requestTimeoutMs | 15000 | registry 与 Git 检查的超时时间 | | candidateInstaller | auto | 优先用 pnpm 做快速、完整的候选暂存,pnpm 不可用时回退到 npm;接受 auto、pnpm 或 npm | | candidateTimeoutMinutes | 20 | 暂存、安装或构建候选时的单条命令超时时间 | | startupTimeoutSeconds | 60 | 每次候选 TUI 或 Web 启动检查的最长等待时间 | | updateTimeoutMinutes | 20 | 当前安装更新计划的单条命令超时时间 | 浏览器每分钟刷新一次 Host 状态,页面变为可见时刷新一次,候选验证运行期间每两秒刷新一次,让当前阶段保持可见。只有 Host 执行发布检查和更新命令。 安全模型 Host 暴露四个固定端点: - GET /dsh-updater/status - POST /dsh-updater/check - POST /dsh-updater/validate - POST /dsh-updater/update 所有端点都要求回环客户端。会修改状态的端点还要求同源请求。校验和更新端点不接受来自浏览器的任何命令、版本、路径、包名、提示词或环境数据。Host 会暂存精确发现的版本或 Git commit,更新时若该精确目标没有通过门禁就拒绝执行。Registry 和 GitHub changelog 文本上限为 64 KiB,按纯文本渲染而非 HTML;它永远无法控制更新命令。候选启动只接收一份小型环境允许列表,外加隔离的状态目录;它不继承服务商凭据。更新子进程使用 Host 选定的固定参数数组,在 POSIX 上运行于自有进程组,取消时终止整棵进程树,并剔除包含 KEY、SECRET、TOKEN 或 PASSWORD 的环境变量键。Windows 通过系统命令处理器调用活跃包管理器的 .cmd shim,但没有任何浏览器可控的命令文本能到达它。 候选执行与活跃安装的状态目录、环境凭据、包文件和源码工作树相互隔离;它不是操作系统级安全沙箱。候选代码仍以 updater 的操作系统用户身份运行,且必须来自可信的 DSH registry 或 Git 上游。 这套防护假设的是正常的直连回环 DSH Web 服务器。不要通过反向代理暴露 updater,让远程流量看起来来自回环;插件不会给 DSH 增加用户认证。 禁用或卸载 sh dsh plugin --profile web remove dsh-updater 另一种做法是在 Web 配置档补丁中用 disabled: true 覆盖 dsh-updater 那一行。 开发 插件直接发布纯 JavaScript,无需构建步骤: text dsh-updater/ ├── lib/ │ ├── index.js # Host detection, gate state, update plans, and HTTP endpoints │ ├── candidate.js # Isolated staging plus TUI/Web startup smoke checks │ └── client.js # Overlay, sidebar action, settings page, and AI recovery UX ├── test/ ├── cordis.patch.yml └── package.json 安装依赖并运行检查: sh pnpm install pnpm test 要在 DSH 中测试当前 checkout: sh dsh plugin --profile web add ./dsh-updater License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
CypherNaught-0x/dsh-updater
检测当前安装方式并安全升级到最新版本
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目